openSUSE Commits
Threads by month
- ----- 2025 -----
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
August 2017
- 1 participants
- 2097 discussions
Hello community,
here is the log from the commit of package ghc-friendly-time for openSUSE:Factory checked in at 2017-08-31 20:47:03
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-friendly-time (Old)
and /work/SRC/openSUSE:Factory/.ghc-friendly-time.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-friendly-time"
Thu Aug 31 20:47:03 2017 rev:2 rq:513243 version:0.4.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-friendly-time/ghc-friendly-time.changes 2017-04-12 18:06:29.232498637 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-friendly-time.new/ghc-friendly-time.changes 2017-08-31 20:47:05.474382706 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 14:06:50 UTC 2017 - psimons(a)suse.com
+
+- Update to version 0.4.1 revision 1.
+
+-------------------------------------------------------------------
Old:
----
friendly-time-0.4.tar.gz
New:
----
friendly-time-0.4.1.tar.gz
friendly-time.cabal
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-friendly-time.spec ++++++
--- /var/tmp/diff_new_pack.OuvUKc/_old 2017-08-31 20:47:06.586226642 +0200
+++ /var/tmp/diff_new_pack.OuvUKc/_new 2017-08-31 20:47:06.590226080 +0200
@@ -19,13 +19,14 @@
%global pkg_name friendly-time
%bcond_with tests
Name: ghc-%{pkg_name}
-Version: 0.4
+Version: 0.4.1
Release: 0
Summary: Print time information in friendly ways
License: BSD-3-Clause
Group: Development/Languages/Other
Url: https://hackage.haskell.org/package/%{pkg_name}
Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{ve…
+Source1: https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/1.cabal…
BuildRequires: ghc-Cabal-devel
BuildRequires: ghc-old-locale-devel
BuildRequires: ghc-rpm-macros
@@ -51,6 +52,7 @@
%prep
%setup -q -n %{pkg_name}-%{version}
+cp -p %{SOURCE1} %{pkg_name}.cabal
%build
%ghc_lib_build
++++++ friendly-time-0.4.tar.gz -> friendly-time-0.4.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/friendly-time-0.4/friendly-time.cabal new/friendly-time-0.4.1/friendly-time.cabal
--- old/friendly-time-0.4/friendly-time.cabal 2015-05-04 18:58:31.000000000 +0200
+++ new/friendly-time-0.4.1/friendly-time.cabal 2017-07-21 19:29:16.000000000 +0200
@@ -1,36 +1,49 @@
-name: friendly-time
-version: 0.4
-author: Pat Brisbin <pbrisbin(a)gmail.com>
-maintainer: Pat Brisbin <pbrisbin(a)gmail.com>
-category: Web, Yesod
-license: BSD3
-license-file: LICENSE
-synopsis: Print time information in friendly ways
-description: Print time information in friendly ways
-build-type: Simple
-cabal-version: >= 1.10
-build-type: Simple
+-- This file has been generated from package.yaml by hpack version 0.17.0.
+--
+-- see: https://github.com/sol/hpack
+
+name: friendly-time
+version: 0.4.1
+synopsis: Print time information in friendly ways
+description: Print time information in friendly ways
+category: Web, Yesod
+author: Pat Brisbin <pbrisbin(a)gmail.com>
+maintainer: Pat Brisbin <pbrisbin(a)gmail.com>
+license: BSD3
+license-file: LICENSE
+build-type: Simple
+cabal-version: >= 1.10
+
+source-repository head
+ type: git
+ location: git://github.com/pbrisbin/friendly-time.git
library
- default-language: Haskell2010
- hs-source-dirs: src
- ghc-options: -Wall
- exposed-modules: Data.Time.Format.Human
- build-depends: base >= 4 && < 5
- , time >= 1.4
- , old-locale
+ hs-source-dirs:
+ src
+ ghc-options: -Wall
+ build-depends:
+ time >=1.4
+ , old-locale
+ , base >=4 && <5
+ exposed-modules:
+ Data.Time.Format.Human
+ Data.Time.Format.Human.Locales
+ other-modules:
+ Paths_friendly_time
+ default-language: Haskell2010
test-suite spec
- type: exitcode-stdio-1.0
- default-language: Haskell2010
- hs-source-dirs: test
- main-is: Spec.hs
- build-depends: base
- , hspec
- , friendly-time
- , time >= 1.4
- , old-locale
-
-source-repository head
- type: git
- location: git://github.com/pbrisbin/friendly-time.git
+ type: exitcode-stdio-1.0
+ main-is: Spec.hs
+ hs-source-dirs:
+ test
+ build-depends:
+ time >=1.4
+ , old-locale
+ , base
+ , hspec
+ , friendly-time
+ other-modules:
+ Data.Time.Format.HumanSpec
+ default-language: Haskell2010
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/friendly-time-0.4/src/Data/Time/Format/Human/Locales.hs new/friendly-time-0.4.1/src/Data/Time/Format/Human/Locales.hs
--- old/friendly-time-0.4/src/Data/Time/Format/Human/Locales.hs 1970-01-01 01:00:00.000000000 +0100
+++ new/friendly-time-0.4.1/src/Data/Time/Format/Human/Locales.hs 2017-07-21 19:19:48.000000000 +0200
@@ -0,0 +1,62 @@
+module Data.Time.Format.Human.Locales
+ ( spanishHumanTimeLocale
+ ) where
+
+import Data.Time
+import Data.Time.Format.Human
+
+-- | Spanish human time locale.
+spanishHumanTimeLocale :: HumanTimeLocale
+spanishHumanTimeLocale = HumanTimeLocale
+ { justNow = "Justo ahora"
+ , secondsAgo = \f x -> (dir f ++ " " ++ x ++ " segundos")
+ , oneMinuteAgo = \f -> dir f ++ " un minuto"
+ , minutesAgo = \f x -> (dir f ++ " " ++ x ++ " minutos")
+ , oneHourAgo = \f -> dir f ++ " una hora"
+ , aboutHoursAgo = \f x -> dir f ++ " aproximadamente " ++ x ++ " horas"
+ , at = \_ -> ("El " ++)
+ , daysAgo = \f x -> (dir f ++ " " ++ x ++ " dias")
+ , weekAgo = \f x -> (dir f ++ " " ++ x ++ " semana")
+ , weeksAgo = \f x -> (dir f ++ " " ++ x ++ " semanas")
+ , onYear = ("En " ++)
+ , locale = spanishTimeLocale
+ , timeZone = utc
+ , dayOfWeekFmt = "%A a las %l:%M %p"
+ , thisYearFmt = "%b/%e"
+ , prevYearFmt = "%Y/%b/%e"
+ }
+ where
+ dir True = "Dentro de"
+ dir False = "Hace"
+ spanishTimeLocale = TimeLocale {
+ wDays = [("Domingo", "Dom"), ("Lunes", "Lun"),
+ ("Martes", "Mar"), ("Miercoles", "Mie"),
+ ("Jueves", "Jue"), ("Viernes", "Vie"),
+ ("Sabado", "Sab")],
+
+ months = [("Enero", "Ene"), ("Febrero", "Feb"),
+ ("Marzo", "Mar"), ("Abril", "Abr"),
+ ("Mayo", "May"), ("Junio", "Jun"),
+ ("Julio", "Jul"), ("Agosto", "Ago"),
+ ("Septiembre", "Sep"), ("Octubre", "Oct"),
+ ("Noviembre", "Nov"), ("Diciembre", "Dec")],
+
+ amPm = ("AM", "PM"),
+ dateTimeFmt = "%a %b %e %H:%M:%S %Z %Y",
+ dateFmt = "%y/%m/%d",
+ timeFmt = "%H:%M:%S",
+ time12Fmt = "%I:%M:%S %p",
+ knownTimeZones =
+ [
+ TimeZone 0 False "UT",
+ TimeZone 0 False "GMT",
+ TimeZone (-5 * 60) False "EST",
+ TimeZone (-4 * 60) True "EDT",
+ TimeZone (-6 * 60) False "CST",
+ TimeZone (-5 * 60) True "CDT",
+ TimeZone (-7 * 60) False "MST",
+ TimeZone (-6 * 60) True "MDT",
+ TimeZone (-8 * 60) False "PST",
+ TimeZone (-7 * 60) True "PDT"
+ ]
+ }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/friendly-time-0.4/test/Data/Time/Format/HumanSpec.hs new/friendly-time-0.4.1/test/Data/Time/Format/HumanSpec.hs
--- old/friendly-time-0.4/test/Data/Time/Format/HumanSpec.hs 1970-01-01 01:00:00.000000000 +0100
+++ new/friendly-time-0.4.1/test/Data/Time/Format/HumanSpec.hs 2017-07-21 19:19:48.000000000 +0200
@@ -0,0 +1,98 @@
+{-# LANGUAGE CPP #-}
+
+module Data.Time.Format.HumanSpec
+ ( main
+ , spec
+ ) where
+
+import Test.Hspec
+import Data.Time.Format.Human
+
+import Data.Maybe (fromJust)
+import Data.Time
+
+#if !MIN_VERSION_time(1,5,0)
+import System.Locale (defaultTimeLocale)
+parseTimeM _ = parseTime
+#endif
+
+
+main :: IO ()
+main = hspec spec
+
+spec :: Spec
+spec = describe "humanReadableTime'" $ do
+ it "returns just now for near times" $ do
+ let n = parseTime' "2015-01-01 01:00:00.1"
+ t = parseTime' "2015-01-01 01:00:00"
+
+ humanReadableTime' n t `shouldBe` "just now"
+ humanReadableTime' t n `shouldBe` "just now"
+
+ it "returns seconds for times less than a minute" $ do
+ let n = parseTime' "2015-01-01 01:00:59"
+ let t = parseTime' "2015-01-01 01:00:00"
+
+ humanReadableTime' n t `shouldBe` "59 seconds ago"
+ humanReadableTime' t n `shouldBe` "59 seconds from now"
+
+ it "returns minutes for times less than an hour" $ do
+ let n = parseTime' "2015-01-01 01:59:00"
+ let t = parseTime' "2015-01-01 01:00:00"
+
+ humanReadableTime' n t `shouldBe` "59 minutes ago"
+ humanReadableTime' t n `shouldBe` "59 minutes from now"
+
+ it "returns hours for times less than a day" $ do
+ let n = parseTime' "2015-01-01 23:59:00"
+ let t = parseTime' "2015-01-01 01:00:00"
+
+ humanReadableTime' n t `shouldBe` "about 22 hours ago"
+ humanReadableTime' t n `shouldBe` "about 22 hours from now"
+
+ context "when less than 5 days " $ do
+ let n = parseTime' "2015-01-04 01:00:00"
+ let t = parseTime' "2015-01-01 01:00:00"
+
+ it "returns day of week in EDT" $ do
+ let l = defaultHumanTimeLocale { timeZone = read "EDT" }
+
+ humanReadableTimeI18N' l n t `shouldBe` "at 9:00 PM on Wednesday"
+ humanReadableTimeI18N' l t n `shouldBe` "at 9:00 PM on Saturday"
+
+ it "returns day of week in India" $ do
+ let l = defaultHumanTimeLocale { timeZone = read "+0530" }
+
+ humanReadableTimeI18N' l n t `shouldBe` "at 6:30 AM on Thursday"
+ humanReadableTimeI18N' l t n `shouldBe` "at 6:30 AM on Sunday"
+
+ it "returns days for times less than 10 days" $ do
+ let n = parseTime' "2015-01-10 01:00:00"
+ let t = parseTime' "2015-01-01 01:00:00"
+
+ humanReadableTime' n t `shouldBe` "9 days ago"
+ humanReadableTime' t n `shouldBe` "9 days from now"
+
+ it "returns weeks for times less than 5 weeks" $ do
+ let n = parseTime' "2015-01-29 01:00:00"
+ let t = parseTime' "2015-01-01 01:00:00"
+
+ humanReadableTime' n t `shouldBe` "4 weeks ago"
+ humanReadableTime' t n `shouldBe` "4 weeks from now"
+
+ it "returns a date string without year for this year" $ do
+ let n = parseTime' "2015-12-30 01:00:00"
+ let t = parseTime' "2015-01-01 01:00:00"
+
+ humanReadableTime' n t `shouldBe` "on Jan 1" -- TODO: spacing
+ humanReadableTime' t n `shouldBe` "on Dec 30"
+
+ it "returns a date string including the year for previous years" $ do
+ let n = parseTime' "2025-12-30 01:00:00"
+ let t = parseTime' "2015-01-01 01:00:00"
+
+ humanReadableTime' n t `shouldBe` "on Jan 1, 2015" -- TODO: spacing
+ humanReadableTime' t n `shouldBe` "on Dec 30, 2025"
+
+parseTime' :: String -> UTCTime
+parseTime' = fromJust . parseTimeM True defaultTimeLocale "%F %T%Q"
++++++ friendly-time.cabal ++++++
-- This file has been generated from package.yaml by hpack version 0.17.0.
--
-- see: https://github.com/sol/hpack
name: friendly-time
version: 0.4.1
x-revision: 1
synopsis: Print time information in friendly ways
description: Print time information in friendly ways
category: Web, Yesod
author: Pat Brisbin <pbrisbin(a)gmail.com>
maintainer: Pat Brisbin <pbrisbin(a)gmail.com>
license: BSD3
license-file: LICENSE
build-type: Simple
cabal-version: >= 1.10
source-repository head
type: git
location: git://github.com/pbrisbin/friendly-time.git
library
hs-source-dirs:
src
ghc-options: -Wall
build-depends:
time >=1.5
, old-locale
, base >=4 && <5
exposed-modules:
Data.Time.Format.Human
Data.Time.Format.Human.Locales
other-modules:
Paths_friendly_time
default-language: Haskell2010
test-suite spec
type: exitcode-stdio-1.0
main-is: Spec.hs
hs-source-dirs:
test
build-depends:
time >=1.4
, old-locale
, base
, hspec
, friendly-time
other-modules:
Data.Time.Format.HumanSpec
default-language: Haskell2010
1
0
Hello community,
here is the log from the commit of package ghc-fay for openSUSE:Factory checked in at 2017-08-31 20:46:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-fay (Old)
and /work/SRC/openSUSE:Factory/.ghc-fay.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-fay"
Thu Aug 31 20:46:58 2017 rev:3 rq:513241 version:0.23.1.16
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-fay/ghc-fay.changes 2017-06-21 13:55:18.643289374 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-fay.new/ghc-fay.changes 2017-08-31 20:47:00.863029976 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 03:01:32 UTC 2017 - psimons(a)suse.com
+
+- Update to version 0.23.1.16 revision 8.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-fay.spec ++++++
--- /var/tmp/diff_new_pack.Upvwtr/_old 2017-08-31 20:47:03.266692587 +0200
+++ /var/tmp/diff_new_pack.Upvwtr/_new 2017-08-31 20:47:03.270692026 +0200
@@ -25,7 +25,7 @@
Group: Development/Languages/Other
Url: https://hackage.haskell.org/package/%{pkg_name}
Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{ve…
-Source1: https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/7.cabal…
+Source1: https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/8.cabal…
BuildRequires: chrpath
BuildRequires: ghc-Cabal-devel
BuildRequires: ghc-aeson-devel
++++++ fay.cabal ++++++
--- /var/tmp/diff_new_pack.Upvwtr/_old 2017-08-31 20:47:03.346681360 +0200
+++ /var/tmp/diff_new_pack.Upvwtr/_new 2017-08-31 20:47:03.350680799 +0200
@@ -1,6 +1,6 @@
name: fay
version: 0.23.1.16
-x-revision: 7
+x-revision: 8
synopsis: A compiler for Fay, a Haskell subset that compiles to JavaScript.
description: Fay is a proper subset of Haskell which is type-checked
with GHC, and compiled to JavaScript. It is lazy, pure, has a Fay monad,
@@ -136,7 +136,7 @@
Paths_fay
build-depends:
- base >= 4.5 && < 4.10
+ base >= 4.5 && < 4.11
, base-compat >= 0.8 && < 0.10
, aeson > 0.6 && < 1.3
, bytestring >= 0.9 && < 0.11
1
0
Hello community,
here is the log from the commit of package ghc-extensible for openSUSE:Factory checked in at 2017-08-31 20:46:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-extensible (Old)
and /work/SRC/openSUSE:Factory/.ghc-extensible.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-extensible"
Thu Aug 31 20:46:56 2017 rev:2 rq:513240 version:0.4.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-extensible/ghc-extensible.changes 2017-04-12 18:06:18.314042444 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-extensible.new/ghc-extensible.changes 2017-08-31 20:46:58.095418451 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 14:02:33 UTC 2017 - psimons(a)suse.com
+
+- Update to version 0.4.2.
+
+-------------------------------------------------------------------
Old:
----
extensible-0.3.7.tar.gz
New:
----
extensible-0.4.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-extensible.spec ++++++
--- /var/tmp/diff_new_pack.vxNewE/_old 2017-08-31 20:46:58.951298316 +0200
+++ /var/tmp/diff_new_pack.vxNewE/_new 2017-08-31 20:46:58.959297193 +0200
@@ -18,25 +18,30 @@
%global pkg_name extensible
Name: ghc-%{pkg_name}
-Version: 0.3.7
+Version: 0.4.2
Release: 0
-Summary: Extensible, efficient, optics-friendly data types
+Summary: Extensible, efficient, optics-friendly data types and effects
License: BSD-3-Clause
Group: Development/Languages/Other
Url: https://hackage.haskell.org/package/%{pkg_name}
Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{ve…
BuildRequires: ghc-Cabal-devel
+BuildRequires: ghc-comonad-devel
BuildRequires: ghc-constraints-devel
+BuildRequires: ghc-deepseq-devel
BuildRequires: ghc-monad-skeleton-devel
+BuildRequires: ghc-mtl-devel
+BuildRequires: ghc-primitive-devel
BuildRequires: ghc-profunctors-devel
BuildRequires: ghc-rpm-macros
+BuildRequires: ghc-semigroups-devel
BuildRequires: ghc-tagged-devel
BuildRequires: ghc-template-haskell-devel
BuildRequires: ghc-transformers-devel
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
-Poly-kinded extensible records and variants.
+Poly-kinded extensible records, variants, effects, tangles.
%package devel
Summary: Haskell %{pkg_name} library development files
++++++ extensible-0.3.7.tar.gz -> extensible-0.4.2.tar.gz ++++++
++++ 4227 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package ghc-ersatz for openSUSE:Factory checked in at 2017-08-31 20:46:54
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-ersatz (Old)
and /work/SRC/openSUSE:Factory/.ghc-ersatz.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-ersatz"
Thu Aug 31 20:46:54 2017 rev:2 rq:513237 version:0.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-ersatz/ghc-ersatz.changes 2017-04-12 18:06:14.654559873 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-ersatz.new/ghc-ersatz.changes 2017-08-31 20:46:55.779743490 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 14:05:54 UTC 2017 - psimons(a)suse.com
+
+- Update to version 0.4.
+
+-------------------------------------------------------------------
Old:
----
ersatz-0.3.1.tar.gz
New:
----
ersatz-0.4.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-ersatz.spec ++++++
--- /var/tmp/diff_new_pack.pSLY3R/_old 2017-08-31 20:46:56.727610443 +0200
+++ /var/tmp/diff_new_pack.pSLY3R/_new 2017-08-31 20:46:56.731609882 +0200
@@ -19,7 +19,7 @@
%global pkg_name ersatz
%bcond_with tests
Name: ghc-%{pkg_name}
-Version: 0.3.1
+Version: 0.4
Release: 0
Summary: A monad for expressing SAT or QSAT problems using observable sharing
License: BSD-3-Clause
@@ -29,7 +29,9 @@
BuildRequires: chrpath
BuildRequires: ghc-Cabal-devel
BuildRequires: ghc-array-devel
+BuildRequires: ghc-attoparsec-devel
BuildRequires: ghc-bytestring-devel
+BuildRequires: ghc-cabal-doctest-devel
BuildRequires: ghc-containers-devel
BuildRequires: ghc-data-default-devel
BuildRequires: ghc-lens-devel
@@ -79,8 +81,9 @@
'ersatz-regexp-grid'
-This solves the "regular crossword puzzle" (<grid.pdf>) from the 2013 MIT
-mystery hunt.
+This solves the "regular crossword puzzle"
+(<https://github.com/ekmett/ersatz/raw/master/notes/grid.pdf grid.pdf>) from
+the 2013 MIT mystery hunt.
> % time ersatz-regexp-grid
++++++ ersatz-0.3.1.tar.gz -> ersatz-0.4.tar.gz ++++++
++++ 1675 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package ghc-email-validate for openSUSE:Factory checked in at 2017-08-31 20:46:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-email-validate (Old)
and /work/SRC/openSUSE:Factory/.ghc-email-validate.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-email-validate"
Thu Aug 31 20:46:52 2017 rev:4 rq:513234 version:2.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-email-validate/ghc-email-validate.changes 2017-07-11 08:26:12.156424440 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-email-validate.new/ghc-email-validate.changes 2017-08-31 20:46:53.372081440 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 14:07:12 UTC 2017 - psimons(a)suse.com
+
+- Update to version 2.3.
+
+-------------------------------------------------------------------
Old:
----
email-validate-2.2.1.1.tar.gz
New:
----
email-validate-2.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-email-validate.spec ++++++
--- /var/tmp/diff_new_pack.4ua4mI/_old 2017-08-31 20:46:54.183967480 +0200
+++ /var/tmp/diff_new_pack.4ua4mI/_new 2017-08-31 20:46:54.187966919 +0200
@@ -19,7 +19,7 @@
%global pkg_name email-validate
%bcond_with tests
Name: ghc-%{pkg_name}
-Version: 2.2.1.1
+Version: 2.3
Release: 0
Summary: Email address validation
License: BSD-3-Clause
@@ -30,13 +30,12 @@
BuildRequires: ghc-attoparsec-devel
BuildRequires: ghc-bytestring-devel
BuildRequires: ghc-rpm-macros
+BuildRequires: ghc-template-haskell-devel
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%if %{with tests}
-BuildRequires: ghc-HUnit-devel
BuildRequires: ghc-QuickCheck-devel
-BuildRequires: ghc-test-framework-devel
-BuildRequires: ghc-test-framework-hunit-devel
-BuildRequires: ghc-test-framework-quickcheck2-devel
+BuildRequires: ghc-doctest-devel
+BuildRequires: ghc-hspec-devel
%endif
%description
++++++ email-validate-2.2.1.1.tar.gz -> email-validate-2.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/email-validate-2.2.1.1/email-validate.cabal new/email-validate-2.3/email-validate.cabal
--- old/email-validate-2.2.1.1/email-validate.cabal 2017-06-26 01:32:54.000000000 +0200
+++ new/email-validate-2.3/email-validate.cabal 2017-06-26 08:49:19.000000000 +0200
@@ -1,5 +1,5 @@
name: email-validate
-version: 2.2.1.1
+version: 2.3
cabal-version: >=1.10
build-type: Simple
license: BSD3
@@ -20,17 +20,18 @@
source-repository this
type: git
location: git://github.com/Porges/email-validate-hs.git
- tag: v2.2.1.1
+ tag: v2.3
library
exposed-modules:
- Text.Domain.Parser
+ Text.Email.QuasiQuotation
Text.Email.Validate
Text.Email.Parser
build-depends:
base >=4.4 && <5,
attoparsec >=0.10.0 && <0.14,
- bytestring >=0.9 && <0.11
+ bytestring >=0.9 && <0.11,
+ template-haskell >=2.11.1.0 && <2.12
default-language: Haskell2010
hs-source-dirs: src
ghc-options: -Wall
@@ -39,13 +40,20 @@
type: exitcode-stdio-1.0
main-is: Main.hs
build-depends:
+ email-validate ==2.3.*,
base ==4.*,
- HUnit >=1.2 && <2,
- email-validate >=2.2.1.1 && <2.3,
+ hspec >=2.4.3 && <2.5,
QuickCheck >=2.4 && <2.11,
- test-framework >=0.4.1 && <0.9,
- test-framework-quickcheck2 >=0.3.0.4 && <0.4,
- test-framework-hunit >=0.3.0.2 && <0.4,
bytestring >=0.9 && <0.11
default-language: Haskell2010
hs-source-dirs: tests
+ ghc-options: -threaded
+test-suite doctests
+ type: exitcode-stdio-1.0
+ main-is: doctests.hs
+ build-depends:
+ base >=4.9.1.0 && <4.10,
+ doctest >=0.8 && <0.12
+ default-language: Haskell2010
+ hs-source-dirs: tests
+ ghc-options: -threaded
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/email-validate-2.2.1.1/src/Text/Domain/Parser.hs new/email-validate-2.3/src/Text/Domain/Parser.hs
--- old/email-validate-2.2.1.1/src/Text/Domain/Parser.hs 2017-06-26 01:25:25.000000000 +0200
+++ new/email-validate-2.3/src/Text/Domain/Parser.hs 1970-01-01 01:00:00.000000000 +0100
@@ -1,41 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable, DeriveGeneric #-}
-
-module Text.Domain.Parser
- ( domainParser
- )
-where
-
-import Control.Applicative
-import Control.Monad (guard)
-import Data.Attoparsec.ByteString.Char8
-import qualified Data.ByteString.Char8 as BS
-import Data.ByteString (ByteString)
-
-domainParser :: Parser ByteString
-domainParser = do
- domain <- fst <$> match (label `sepBy1` char '.' >> optional (char '.'))
-
- -- trim off the excess '.' if it is there
- let trimmed =
- case BS.last domain of
- '.' -> BS.init domain
- _ -> domain
-
- -- domain name must be no greater than 253 chars
- guard (BS.length trimmed <= 253)
- return trimmed
-
-label :: Parser ByteString
-label = do
- lbl <- fst <$> match (alphaNum >> skipWhile isAlphaNumHyphen)
-
- -- label must be no greater than 63 chars and cannot end with '-'
- guard (BS.length lbl <= 63 && BS.last lbl /= '-')
- return lbl
-
-alphaNum :: Parser Char
-alphaNum = satisfy isAlphaNum
- where isAlphaNum x = isDigit x || isAlpha_ascii x
-
-isAlphaNumHyphen :: Char -> Bool
-isAlphaNumHyphen x = isDigit x || isAlpha_ascii x || x == '-'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/email-validate-2.2.1.1/src/Text/Email/Parser.hs new/email-validate-2.3/src/Text/Email/Parser.hs
--- old/email-validate-2.2.1.1/src/Text/Email/Parser.hs 2017-06-26 01:25:25.000000000 +0200
+++ new/email-validate-2.3/src/Text/Email/Parser.hs 2017-06-26 08:45:38.000000000 +0200
@@ -11,7 +11,7 @@
where
import Control.Applicative
-import Control.Monad (void)
+import Control.Monad (guard, void, when)
import Data.Attoparsec.ByteString.Char8
import Data.ByteString (ByteString)
import qualified Data.ByteString.Char8 as BS
@@ -19,8 +19,6 @@
import GHC.Generics (Generic)
import qualified Text.Read as Read
-import Text.Domain.Parser (domainParser)
-
-- | Represents an email address.
data EmailAddress = EmailAddress ByteString ByteString
deriving (Eq, Ord, Data, Typeable, Generic)
@@ -57,7 +55,19 @@
-- | A parser for email addresses.
addrSpec :: Parser EmailAddress
-addrSpec = unsafeEmailAddress <$> local <* char '@' <*> domain
+addrSpec = do
+ l <- local
+
+ -- Maximum length of local-part is 64, per RFC3696
+ when (BS.length l > 64) (fail "local-part of email is too long (more than 64 octets)")
+
+ _ <- char '@' <?> "at sign"
+ d <- domain
+
+ -- Maximum length is 254, per Erratum 1690 on RFC3696
+ when (BS.length l + BS.length d + 1 > 254) (fail "email address is too long (more than 254 octets)")
+
+ return (unsafeEmailAddress l d)
local :: Parser ByteString
local = dottedAtoms
@@ -67,10 +77,28 @@
domainName :: Parser ByteString
domainName = do
- raw <- BS.append <$> dottedAtoms <*> option BS.empty (string (BS.pack "."))
- case parseOnly (domainParser <* endOfInput) raw of
- Left err -> fail err
- Right result -> return result
+ parsedDomain <- BS.intercalate (BS.singleton '.') <$>
+ domainLabel `sepBy1` char '.' <* optional (char '.')
+
+ -- Domain name must be no greater than 253 chars, per RFC1035
+ guard (BS.length parsedDomain <= 253)
+ return parsedDomain
+
+domainLabel :: Parser ByteString
+domainLabel = do
+ content <- between1 (optional cfws) (fst <$> match (alphaNum >> skipWhile isAlphaNumHyphen))
+
+ -- Per RFC1035:
+ -- label must be no greater than 63 chars and cannot end with '-'
+ -- (we already enforced that it does not start with '-')
+ guard (BS.length content <= 63 && BS.last content /= '-')
+ return content
+
+alphaNum :: Parser Char
+alphaNum = satisfy isAlphaNum
+
+isAlphaNumHyphen :: Char -> Bool
+isAlphaNumHyphen x = isDigit x || isAlpha_ascii x || x == '-'
dottedAtoms :: Parser ByteString
dottedAtoms = BS.intercalate (BS.singleton '.') <$>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/email-validate-2.2.1.1/src/Text/Email/QuasiQuotation.hs new/email-validate-2.3/src/Text/Email/QuasiQuotation.hs
--- old/email-validate-2.2.1.1/src/Text/Email/QuasiQuotation.hs 1970-01-01 01:00:00.000000000 +0100
+++ new/email-validate-2.3/src/Text/Email/QuasiQuotation.hs 2017-06-26 08:45:38.000000000 +0200
@@ -0,0 +1,42 @@
+{-# LANGUAGE CPP #-}
+#if __GLASGOW_HASKELL__ >= 800
+{-# LANGUAGE TemplateHaskellQuotes #-}
+#else
+{-# LANGUAGE TemplateHaskell #-}
+#endif
+
+module Text.Email.QuasiQuotation
+ ( email
+ ) where
+
+import qualified Data.ByteString.Char8 as BS8
+
+import Language.Haskell.TH.Quote (QuasiQuoter(..))
+
+import Text.Email.Validate (validate, localPart, domainPart, unsafeEmailAddress)
+
+-- | A QuasiQuoter for email addresses.
+--
+-- Use it like this:
+--
+-- >>> :set -XQuasiQuotes
+-- >>> [email|someone(a)example.com|]
+-- "someone(a)example.com"
+email :: QuasiQuoter
+email = QuasiQuoter
+ { quoteExp = quoteEmail emailToExp
+ , quotePat = error "email is not supported as a pattern"
+ , quoteDec = error "email is not supported at top-level"
+ , quoteType = error "email is not supported as a type"
+ }
+ where
+
+ quoteEmail p s =
+ case validate (BS8.pack s) of
+ Left err -> error ("Invalid quasi-quoted email address: " ++ err)
+ Right e -> p e
+
+ emailToExp e =
+ let lp = BS8.unpack (localPart e) in
+ let dp = BS8.unpack (domainPart e) in
+ [| unsafeEmailAddress (BS8.pack lp) (BS8.pack dp) |]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/email-validate-2.2.1.1/src/Text/Email/Validate.hs new/email-validate-2.3/src/Text/Email/Validate.hs
--- old/email-validate-2.2.1.1/src/Text/Email/Validate.hs 2017-06-26 01:25:25.000000000 +0200
+++ new/email-validate-2.3/src/Text/Email/Validate.hs 2017-06-26 08:45:38.000000000 +0200
@@ -1,21 +1,32 @@
module Text.Email.Validate
- ( isValid
- , validate
- , emailAddress
- , canonicalizeEmail
- , EmailAddress -- re-exported
- , unsafeEmailAddress
- , localPart
- , domainPart
- , toByteString
- )
+ ( isValid
+ , validate
+ , emailAddress
+ , canonicalizeEmail
+
+ -- Re-exports:
+ , EmailAddress
+ , domainPart
+ , localPart
+ , toByteString
+ , unsafeEmailAddress
+ )
where
-import Data.Attoparsec.ByteString (endOfInput, parseOnly)
-import Data.ByteString (ByteString)
+import Data.Attoparsec.ByteString (endOfInput, parseOnly)
+import Data.ByteString (ByteString)
-import Text.Email.Parser (EmailAddress, addrSpec, domainPart,
- localPart, toByteString, unsafeEmailAddress)
+import Text.Email.Parser
+ ( EmailAddress
+ , addrSpec
+ , domainPart
+ , localPart
+ , toByteString
+ , unsafeEmailAddress)
+
+-- $setup
+-- This is required for all examples:
+-- >>> :set -XOverloadedStrings
-- | Smart constructor for an email address
emailAddress :: ByteString -> Maybe EmailAddress
@@ -23,6 +34,10 @@
-- | Checks that an email is valid and returns a version of it
-- where comments and whitespace have been removed.
+--
+-- Example:
+-- >>> canonicalizeEmail "spaces. are. allowed(a)example.com"
+-- Just "spaces.are.allowed(a)example.com"
canonicalizeEmail :: ByteString -> Maybe ByteString
canonicalizeEmail = fmap toByteString . emailAddress
@@ -33,5 +48,12 @@
-- | If you want to find out *why* a particular string is not
-- an email address, use this.
+--
+-- Examples:
+-- >>> validate "example(a)example.com"
+-- Right "example(a)example.com"
+-- >>> validate "not.good"
+-- Left "at sign > @: not enough input"
validate :: ByteString -> Either String EmailAddress
validate = parseOnly (addrSpec >>= \r -> endOfInput >> return r)
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/email-validate-2.2.1.1/tests/Main.hs new/email-validate-2.3/tests/Main.hs
--- old/email-validate-2.2.1.1/tests/Main.hs 2017-06-26 01:25:25.000000000 +0200
+++ new/email-validate-2.3/tests/Main.hs 2017-06-26 08:45:39.000000000 +0200
@@ -1,19 +1,21 @@
{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE OverloadedStrings #-}
module Main where
+import Control.Exception (evaluate)
+import Control.Monad (forM_)
import Data.ByteString (ByteString)
import qualified Data.ByteString.Char8 as BS
-import Data.Maybe (Maybe(..), isNothing)
+import Data.List (isInfixOf)
+import Data.Maybe (Maybe(..), isNothing, fromJust)
+import Data.Monoid ((<>))
-import Test.Framework as TF (defaultMain, testGroup, Test)
-import Test.Framework.Providers.HUnit (testCase)
-import Test.Framework.Providers.QuickCheck2 (testProperty)
-
-import Test.HUnit ((@?=), assert)
-import Test.QuickCheck (Arbitrary(..), suchThat)
+import Test.Hspec (hspec, context, describe, errorCall, it, parallel, shouldBe, shouldSatisfy)
+import Test.QuickCheck (Arbitrary(..), suchThat, property)
+import Text.Email.QuasiQuotation (email)
import Text.Email.Validate
( EmailAddress
, canonicalizeEmail
@@ -27,56 +29,78 @@
)
main :: IO ()
-main = defaultMain testGroups
-
-{- Tests -}
+main = hspec $ parallel $ do
-testGroups :: [Test]
-testGroups =
- [ showAndRead
- , canonicalization
- , exampleTests
- , specificFailures
- , simpleAccessors
- ]
+ showAndRead
+ canonicalization
+ exampleTests
+ specificFailures
+ simpleAccessors
+ quasiQuotationTests
canonicalization =
- testGroup "QuickCheck Text.Email.Validate"
- [ testProperty "doubleCanonicalize" prop_doubleCanonicalize
- ]
+ describe "emailAddress" $ do
+ it "is idempotent" $
+ property prop_doubleCanonicalize
exampleTests =
- testGroup "Unit tests Text.Email.Validate" (concatMap exampleTest examples)
- where
- exampleTest Example{example, valid, reason} =
- if valid
- then
- [ testCase ("Ensure valid " ++ name) (assert (isValid example))
- , testCase ("doubleCanonicalize test " ++ name) (assert (case emailAddress example of { Just ok -> prop_doubleCanonicalize ok; Nothing -> False }))
- ]
- else
- [ testCase ("Ensure invalid " ++ name) (assert (not (isValid example))) ]
-
- where name = show example ++ (if null reason then "" else " (" ++ reason ++ ")")
+ describe "Examples" $ do
+ forM_ examples $ \Example{example, exampleValid, exampleWhy, errorContains} -> do
+ context (show example ++ (if null exampleWhy then "" else " (" ++ exampleWhy ++ ")")) $ do
+ if exampleValid
+ then do
+ it "should be valid" $
+ isValid example `shouldBe` True
+
+ it "passes double-canonicalization test" $
+ prop_doubleCanonicalize (fromJust (emailAddress example))
+
+ else do
+ it "should be invalid" $
+ isValid example `shouldBe` False
+
+ case (errorContains, validate example) of
+ (Just err, Left errMessage) ->
+ it "should have correct error message" $
+ errMessage `shouldSatisfy` (err `isInfixOf`)
+ (_, _) -> return ()
showAndRead =
- testGroup "EmailAddress Show/Read instances"
- [ testProperty "showLikeByteString" prop_showLikeByteString
- , testProperty "showAndReadBackWithoutQuoteFails" prop_showAndReadBackWithoutQuoteFails
- , testProperty "showAndReadBack" prop_showAndReadBack
- ]
+ describe "show/read instances" $ do
-specificFailures =
- testGroup "Specifics"
- [ testCase "Issue #12" (let (Right em) = validate (BS.pack "\"\"@1") in em @?= read (show em))
- , testCase "Check canonicalization of trailing dot" (canonicalizeEmail "foo(a)bar.com." @?= Just "foo(a)bar.com")
- ]
+ it "can roundtrip" $
+ property prop_showAndReadBack
-simpleAccessors =
- testGroup "Simple accessors"
- [ testCase "local-part" (localPart (unsafeEmailAddress "local" undefined) @?= "local")
- , testCase "domain-part" (domainPart (unsafeEmailAddress undefined "domain") @?= "domain")
- ]
+ it "shows in the same way as ByteString" $
+ property prop_showLikeByteString
+
+ it "should fail if read back without a quote" $
+ property prop_showAndReadBackWithoutQuoteFails
+
+specificFailures = do
+ describe "GitHub issue #12" $ do
+ it "is fixed" $
+ let (Right em) = validate (BS.pack "\"\"@1") in
+ em `shouldBe` read (show em)
+
+ describe "Trailing dot" $ do
+ it "is canonicalized" $
+ canonicalizeEmail "foo(a)bar.com." `shouldBe` Just "foo(a)bar.com"
+
+simpleAccessors = do
+ describe "localPart" $
+ it "extracts local part" $
+ localPart (unsafeEmailAddress "local" undefined) `shouldBe` "local"
+
+
+ describe "domainPart" $
+ it "extracts domain part" $
+ domainPart (unsafeEmailAddress undefined "domain") `shouldBe` "domain"
+
+quasiQuotationTests =
+ describe "QuasiQuoter" $ do
+ it "works as expected" $
+ [email|local(a)domain.com|] `shouldBe` unsafeEmailAddress "local" "domain.com"
instance Arbitrary ByteString where
arbitrary = fmap BS.pack arbitrary
@@ -115,241 +139,262 @@
{- Examples -}
-data Example = Example { example :: ByteString, valid :: Bool, reason :: String }
+data Example = Example
+ { example :: ByteString
+ , exampleValid :: Bool
+ , exampleWhy :: String
+ , errorContains :: Maybe String }
+
+valid, invalid :: ByteString -> Example
+valid e = Example e True "" Nothing
+invalid e = Example e False "" Nothing
+
+why :: Example -> String -> Example
+why ex str = ex { exampleWhy = str }
+
+errorShouldContain :: Example -> String -> Example
+errorShouldContain ex str = ex { errorContains = Just str }
+
examples :: [Example]
examples =
- map (\(e, v, r) -> Example e v r)
- [ ("first.last(a)example.com", True, "")
- , ("first.last(a)example.com.", True, "Dot allowed on end of domain")
- , ("local(a)exam_ple.com", False, "Underscore not permitted in domain")
- , ("1234567890123456789012345678901234567890123456789012345678901234(a)example.com", True, "")
- , ("\"first last\"@example.com", True, "")
- , ("\"first\\\"last\"@example.com", True, "")
- , ("first\\@last@example.com", False, "Escaping can only happen within a quoted string")
- , ("\"first@last\"@example.com", True, "")
- , ("\"first\\\\last\"@example.com", True, "")
- , ("x@x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23", True, "Max length is 253")
- , ("x@x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23.", True, "Trailing dot doesn't increase length")
- , ("x@x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x234", False, "Max length is 253")
- , ("123456789012345678901234567890123456789012345678901234567890@12345678901234567890123456789012345678901234567890123456789.12345678901234567890123456789012345678901234567890123456789.123456789012345678901234567890123456789012345678901234567890123.example.com", True, "")
- , ("first.last(a)[12.34.56.78]", True, "")
- , ("first.last@[IPv6:::12.34.56.78]", True, "")
- , ("first.last@[IPv6:1111:2222:3333::4444:12.34.56.78]", True, "")
- , ("first.last@[IPv6:1111:2222:3333:4444:5555:6666:12.34.56.78]", True, "")
- , ("first.last@[IPv6:::1111:2222:3333:4444:5555:6666]", True, "")
- , ("first.last@[IPv6:1111:2222:3333::4444:5555:6666]", True, "")
- , ("first.last@[IPv6:1111:2222:3333:4444:5555:6666::]", True, "")
- , ("first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777:8888]", True, "")
- , ("first.last@x23456789012345678901234567890123456789012345678901234567890123.example.com", True, "")
- , ("first.last(a)1xample.com", True, "")
- , ("first.last(a)123.example.com", True, "")
- , ("first.last", False, "No @")
- , (".first.last(a)example.com", False, "Local part starts with a dot")
- , ("first.last.(a)example.com", False, "Local part ends with a dot")
- , ("first..last(a)example.com", False, "Local part has consecutive dots")
- , ("\"first\"last\"@example.com", False, "Local part contains unescaped excluded characters")
- , ("\"first\\last\"@example.com", True, "Any character can be escaped in a quoted string")
- , ("\"\"\"@example.com", False, "Local part contains unescaped excluded characters")
- , ("\"\\\"@example.com", False, "Local part cannot end with a backslash")
- , ("first\\\\@last@example.com", False, "Local part contains unescaped excluded characters")
- , ("first.last@", False, "No domain")
- , ("\"Abc\\@def\"@example.com", True, "")
- , ("\"Fred\\ Bloggs\"@example.com", True, "")
- , ("\"Joe.\\\\Blow\"@example.com", True, "")
- , ("\"Abc@def\"@example.com", True, "")
- , ("\"Fred Bloggs\"@example.com", True, "")
- , ("user+mailbox(a)example.com", True, "")
- , ("customer/department=shipping(a)example.com", True, "")
- , ("$A12345(a)example.com", True, "")
- , ("!def!xyz%abc(a)example.com", True, "")
- , ("_somename(a)example.com", True, "")
- , ("dclo(a)us.ibm.com", True, "")
- , ("abc\\@def@example.com", False, "This example from RFC3696 was corrected in an erratum")
- , ("abc\\\\(a)example.com", False, "This example from RFC3696 was corrected in an erratum")
- , ("peter.piper(a)example.com", True, "")
- , ("Doug\\ \\\"Ace\\\"\\ Lovell(a)example.com", False, "Escaping can only happen in a quoted string")
- , ("\"Doug \\\"Ace\\\" L.\"@example.com", True, "")
- , ("abc@def@example.com", False, "Doug Lovell says this should fail")
- , ("abc\\\\@def@example.com", False, "Doug Lovell says this should fail")
- , ("abc\\(a)example.com", False, "Doug Lovell says this should fail")
- , ("@example.com", False, "No local part")
- , ("doug@", False, "Doug Lovell says this should fail")
- , ("\"qu(a)example.com", False, "Doug Lovell says this should fail")
- , ("ote\"@example.com", False, "Doug Lovell says this should fail")
- , (".dot(a)example.com", False, "Doug Lovell says this should fail")
- , ("dot.(a)example.com", False, "Doug Lovell says this should fail")
- , ("two..dot(a)example.com", False, "Doug Lovell says this should fail")
- , ("\"Doug \"Ace\" L.\"@example.com", False, "Doug Lovell says this should fail")
- , ("Doug\\ \\\"Ace\\\"\\ L\\.(a)example.com", False, "Doug Lovell says this should fail")
- , ("hello world(a)example.com", False, "Doug Lovell says this should fail")
- , ("gatsby(a)f.sc.ot.t.f.i.tzg.era.l.d.", True, "")
- , ("test(a)example.com", True, "")
- , ("TEST(a)example.com", True, "")
- , ("1234567890(a)example.com", True, "")
- , ("test+test(a)example.com", True, "")
- , ("test-test(a)example.com", True, "")
- , ("t*est(a)example.com", True, "")
- , ("+1~1+(a)example.com", True, "")
- , ("{_test_}(a)example.com", True, "")
- , ("\"[[ test ]]\"@example.com", True, "")
- , ("test.test(a)example.com", True, "")
- , ("\"test.test\"@example.com", True, "")
- , ("test.\"test\"@example.com", True, "Obsolete form, but documented in RFC2822")
- , ("\"test@test\"@example.com", True, "")
- , ("test(a)123.123.123.x123", True, "")
- , ("test(a)[123.123.123.123]", True, "")
- , ("test(a)example.example.com", True, "")
- , ("test(a)example.example.example.com", True, "")
- , ("test.example.com", False, "")
- , ("test.(a)example.com", False, "")
- , ("test..test(a)example.com", False, "")
- , (".test(a)example.com", False, "")
- , ("test@test@example.com", False, "")
- , ("test@@example.com", False, "")
- , ("-- test --(a)example.com", False, "No spaces allowed in local part")
- , ("[test](a)example.com", False, "Square brackets only allowed within quotes")
- , ("\"test\\test\"@example.com", True, "Any character can be escaped in a quoted string")
- , ("\"test\"test\"@example.com", False, "Quotes cannot be nested")
- , ("()[]\\;:,><@example.com", False, "Disallowed Characters")
- , ("test@.", False, "Dave Child says so")
- , ("test@example.", True, "")
- , ("test@.org", False, "Dave Child says so")
- , ("test(a)[123.123.123.123", False, "Dave Child says so")
- , ("test(a)123.123.123.123]", False, "Dave Child says so")
- , ("NotAnEmail", False, "Phil Haack says so")
- , ("@NotAnEmail", False, "Phil Haack says so")
- , ("\"test\\\\blah\"@example.com", True, "")
- , ("\"test\\blah\"@example.com", True, "Any character can be escaped in a quoted string")
- , ("\"test\\\rblah\"@example.com", True, "Quoted string specifically excludes carriage returns unless escaped")
- , ("\"test\rblah\"@example.com", False, "Quoted string specifically excludes carriage returns")
- , ("\"test\\\"blah\"@example.com", True, "")
- , ("\"test\"blah\"@example.com", False, "Phil Haack says so")
- , ("customer/department(a)example.com", True, "")
- , ("_Yosemite.Sam(a)example.com", True, "")
- , ("~(a)example.com", True, "")
- , (".wooly(a)example.com", False, "Phil Haack says so")
- , ("wo..oly(a)example.com", False, "Phil Haack says so")
- , ("pootietang.(a)example.com", False, "Phil Haack says so")
- , (".(a)example.com", False, "Phil Haack says so")
- , ("\"Austin@Powers\"@example.com", True, "")
- , ("Ima.Fool(a)example.com", True, "")
- , ("\"Ima.Fool\"@example.com", True, "")
- , ("\"Ima Fool\"@example.com", True, "")
- , ("Ima Fool(a)example.com", False, "Phil Haack says so")
- , ("phil.h\\@\\@ck@haacked.com", False, "Escaping can only happen in a quoted string")
- , ("\"first\".\"last\"@example.com", True, "")
- , ("\"first\".middle.\"last\"@example.com", True, "")
- , ("\"first\\\\\"last\"@example.com", False, "Contains an unescaped quote")
- , ("\"first\".last(a)example.com", True, "obs-local-part form as described in RFC 2822")
- , ("first.\"last\"@example.com", True, "obs-local-part form as described in RFC 2822")
- , ("\"first\".\"middle\".\"last\"@example.com", True, "obs-local-part form as described in RFC 2822")
- , ("\"first.middle\".\"last\"@example.com", True, "obs-local-part form as described in RFC 2822")
- , ("\"first.middle.last\"@example.com", True, "obs-local-part form as described in RFC 2822")
- , ("\"first..last\"@example.com", True, "obs-local-part form as described in RFC 2822")
- , ("foo(a)[\\1.2.3.4]", False, "RFC 5321 specifies the syntax for address-literal and does not allow escaping")
- , ("\"first\\\\\\\"last\"@example.com", True, "")
- , ("first.\"mid\\dle\".\"last\"@example.com", True, "Backslash can escape anything but must escape something")
- , ("Test.\r\n Folding.\r\n Whitespace(a)example.com", True, "")
- , ("first\\last(a)example.com", False, "Unquoted string must be an atom")
- , ("Abc\\@def@example.com", False, "Was incorrectly given as a valid address in the original RFC3696")
- , ("Fred\\ Bloggs(a)example.com", False, "Was incorrectly given as a valid address in the original RFC3696")
- , ("Joe.\\\\Blow(a)example.com", False, "Was incorrectly given as a valid address in the original RFC3696")
- , ("\"test\\\r\n blah\"@example.com", False, "Folding white space can\'t appear within a quoted pair")
- , ("\"test\r\n blah\"@example.com", True, "This is a valid quoted string with folding white space")
- , ("{^c\\@**Dog^}@cartoon.com", False, "This is a throwaway example from Doug Lovell\'s article. Actually it\'s not a valid address.")
- , ("(foo)cal(bar)(a)(baz)iamcal.com(quux)", True, "A valid address containing comments")
- , ("cal(a)iamcal(woo).(yay)com", True, "A valid address containing comments")
- , ("cal(woo(yay)hoopla)(a)iamcal.com", True, "A valid address containing comments")
- , ("cal(foo\\@bar)@iamcal.com", True, "A valid address containing comments")
- , ("cal(foo\\)bar)(a)iamcal.com", True, "A valid address containing comments and an escaped parenthesis")
- , ("cal(foo(bar)(a)iamcal.com", False, "Unclosed parenthesis in comment")
- , ("cal(foo)bar)(a)iamcal.com", False, "Too many closing parentheses")
- , ("cal(foo\\)(a)iamcal.com", False, "Backslash at end of comment has nothing to escape")
- , ("first().last(a)example.com", True, "A valid address containing an empty comment")
- , ("first.(\r\n middle\r\n )last(a)example.com", True, "Comment with folding white space")
- , ("first(12345678901234567890123456789012345678901234567890)last@(1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890)example.com", False, "Too long with comments, not too long without")
- , ("first(Welcome to\r\n the (\"wonderful\" (!)) world\r\n of email)(a)example.com", True, "Silly example from my blog post")
- , ("pete(his account)(a)silly.test(his host)", True, "Canonical example from RFC5322")
- , ("c@(Chris\'s host.)public.example", True, "Canonical example from RFC5322")
- , ("jdoe@machine(comment). example", True, "Canonical example from RFC5322")
- , ("1234 @ local(blah) .machine .example", True, "Canonical example from RFC5322")
- , ("first(middle)last(a)example.com", False, "Can\'t have a comment or white space except at an element boundary")
- , ("first(abc.def).last(a)example.com", True, "Comment can contain a dot")
- , ("first(a\"bc.def).last(a)example.com", True, "Comment can contain double quote")
- , ("first.(\")middle.last(\")(a)example.com", True, "Comment can contain a quote")
- , ("first(abc(\"def\".ghi).mno)middle(abc(\"def\".ghi).mno).last@(abc(\"def\".ghi).mno)example(abc(\"def\".ghi).mno).(abc(\"def\".ghi).mno)com(abc(\"def\".ghi).mno)", False, "Can\'t have comments or white space except at an element boundary")
- , ("first(abc\\(def)(a)example.com", True, "Comment can contain quoted-pair")
- , ("first.last@x(1234567890123456789012345678901234567890123456789012345678901234567890).com", True, "Label is longer than 63 octets, but not with comment removed")
- , ("a(a(b(c)d(e(f))g)h(i)j)(a)example.com", True, "")
- , ("a(a(b(c)d(e(f))g)(h(i)j)(a)example.com", False, "Braces are not properly matched")
- , ("name.lastname(a)domain.com", True, "")
- , (".@", False, "")
- , ("@bar.com", False, "")
- , ("@@bar.com", False, "")
- , ("a(a)bar.com", True, "")
- , ("aaa.com", False, "")
- , ("aaa@.com", False, "")
- , ("aaa@.123", False, "")
- , ("aaa(a)[123.123.123.123]", True, "")
- , ("aaa(a)[123.123.123.123]a", False, "extra data outside ip")
- , ("a(a)bar.com.", True, "")
- , ("a-b(a)bar.com", True, "")
- , ("+(a)b.c", True, "TLDs can be any length")
- , ("+(a)b.com", True, "")
- , ("-@..com", False, "")
- , ("-@a..com", False, "")
- , ("a(a)b.co-foo.uk", True, "")
- , ("\"hello my name is\"@stutter.com", True, "")
- , ("\"Test \\\"Fail\\\" Ing\"@example.com", True, "")
- , ("valid(a)special.museum", True, "")
- , ("shaitan(a)my-domain.thisisminekthx", True, "Disagree with Paul Gregg here")
- , ("test@...........com", False, "......")
- , ("\"Joe\\\\Blow\"@example.com", True, "")
- , ("Invalid \\\n Folding \\\n Whitespace(a)example.com", False, "This isn\'t FWS so Dominic Sayers says it\'s invalid")
- , ("HM2Kinsists@(that comments are allowed)this.is.ok", True, "")
- , ("user%uucp!path(a)somehost.edu", True, "")
- , ("\"first(last)\"@example.com", True, "")
- , (" \r\n (\r\n x \r\n ) \r\n first\r\n ( \r\n x\r\n ) \r\n .\r\n ( \r\n x) \r\n last \r\n ( x \r\n ) \r\n @example.com", True, "")
- , ("test.\r\n \r\n obs(a)syntax.com", True, "obs-fws allows multiple lines")
- , ("test. \r\n \r\n obs(a)syntax.com", True, "obs-fws allows multiple lines (test 2: space before break)")
- , ("test.\r\n\r\n obs(a)syntax.com", False, "obs-fws must have at least one WSP per line")
- , ("\"null \\\0\"@char.com", True, "can have escaped null character")
- , ("\"null \0\"@char.com", False, "cannot have unescaped null character")
+ let domain249 = BS.intercalate "." (take 25 (repeat (BS.replicate 9 'x'))) in
+ [ valid "first.last(a)example.com"
+ , valid "first.last(a)example.com." `why` "Dot allowed on end of domain"
+ , invalid "local(a)exam_ple.com" `why` "Underscore not permitted in domain"
+ , valid "1234567890123456789012345678901234567890123456789012345678901234(a)example.com"
+ , valid "\"first last\"@example.com" `why` "Contains quoted spaces"
+ , valid "\"first\\\"last\"@example.com" `why` "Contains quoted escaped quote"
+ , invalid "first\\@last@example.com" `why` "Escaping can only happen within a quoted string"
+ , valid "\"first@last\"@example.com" `why` "Contains quoted at-sign"
+ , valid "\"first\\\\last\"@example.com" `why` "Contains quoted escaped backslash"
+ , valid ("1234@" <> domain249)
+ `why` "Maximum length is 254, this is 254 exactly"
+ , valid ("1234@" <> domain249 <> ".")
+ `why` "Trailing dot doesn't increase length"
+ , invalid ("12345@" <> domain249)
+ `why` "Maximum length is 254, this is 255"
+ `errorShouldContain` "too long"
+ , valid "first.last(a)[12.34.56.78]" `why` "IP address"
+ , valid "first.last@[IPv6:::12.34.56.78]" `why` "IPv6 address"
+ , valid "first.last@[IPv6:1111:2222:3333::4444:12.34.56.78]"
+ , valid "first.last@[IPv6:1111:2222:3333:4444:5555:6666:12.34.56.78]"
+ , valid "first.last@[IPv6:::1111:2222:3333:4444:5555:6666]"
+ , valid "first.last@[IPv6:1111:2222:3333::4444:5555:6666]"
+ , valid "first.last@[IPv6:1111:2222:3333:4444:5555:6666::]"
+ , valid "first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777:8888]"
+ , valid "first.last@x23456789012345678901234567890123456789012345678901234567890123.example.com"
+ , valid "first.last(a)1xample.com"
+ , valid "first.last(a)123.example.com"
+ , invalid "first.last" `why` "no at sign" `errorShouldContain` "at sign"
+ , invalid ".first.last(a)example.com" `why` "Local part starts with a dot"
+ , invalid "first.last.(a)example.com" `why` "Local part ends with a dot"
+ , invalid "first..last(a)example.com" `why` "Local part has consecutive dots"
+ , invalid "\"first\"last\"@example.com" `why` "Local part contains unescaped excluded characters"
+ , valid "\"first\\last\"@example.com" `why` "Any character can be escaped in a quoted string"
+ , invalid "\"\"\"@example.com" `why` "Local part contains unescaped excluded characters"
+ , invalid "\"\\\"@example.com" `why` "Local part cannot end with a backslash"
+ , invalid "first\\\\@last@example.com" `why` "Local part contains unescaped excluded characters"
+ , invalid "first.last@" `why` "No domain"
+ , valid "\"Abc\\@def\"@example.com"
+ , valid "\"Fred\\ Bloggs\"@example.com"
+ , valid "\"Joe.\\\\Blow\"@example.com"
+ , valid "\"Abc@def\"@example.com"
+ , valid "\"Fred Bloggs\"@example.com"
+ , valid "user+mailbox(a)example.com"
+ , valid "customer/department=shipping(a)example.com"
+ , valid "$A12345(a)example.com"
+ , valid "!def!xyz%abc(a)example.com"
+ , valid "_somename(a)example.com"
+ , valid "dclo(a)us.ibm.com"
+ , invalid "abc\\@def@example.com" `why` "This example from RFC3696 was corrected in an erratum"
+ , invalid "abc\\\\(a)example.com" `why` "This example from RFC3696 was corrected in an erratum"
+ , valid "peter.piper(a)example.com"
+ , invalid "Doug\\ \\\"Ace\\\"\\ Lovell(a)example.com" `why` "Escaping can only happen in a quoted string"
+ , valid "\"Doug \\\"Ace\\\" L.\"@example.com"
+ , invalid "abc@def@example.com" `why` "Doug Lovell says this should fail"
+ , invalid "abc\\\\@def@example.com" `why` "Doug Lovell says this should fail"
+ , invalid "abc\\(a)example.com" `why` "Doug Lovell says this should fail"
+ , invalid "@example.com" `why` "no local part"
+ , invalid "doug@" `why` "no domain part"
+ , invalid "\"qu(a)example.com" `why` "Doug Lovell says this should fail"
+ , invalid "ote\"@example.com" `why` "Doug Lovell says this should fail"
+ , invalid ".dot(a)example.com" `why` "Doug Lovell says this should fail"
+ , invalid "dot.(a)example.com" `why` "Doug Lovell says this should fail"
+ , invalid "two..dot(a)example.com" `why` "Doug Lovell says this should fail"
+ , invalid "\"Doug \"Ace\" L.\"@example.com" `why` "Doug Lovell says this should fail"
+ , invalid "Doug\\ \\\"Ace\\\"\\ L\\.(a)example.com" `why` "Doug Lovell says this should fail"
+ , invalid "hello world(a)example.com" `why` "Doug Lovell says this should fail"
+ , valid "gatsby(a)f.sc.ot.t.f.i.tzg.era.l.d."
+ , valid "test(a)example.com"
+ , valid "TEST(a)example.com"
+ , valid "1234567890(a)example.com"
+ , valid "test+test(a)example.com"
+ , valid "test-test(a)example.com"
+ , valid "t*est(a)example.com"
+ , valid "+1~1+(a)example.com"
+ , valid "{_test_}(a)example.com"
+ , valid "\"[[ test ]]\"@example.com"
+ , valid "test.test(a)example.com"
+ , valid "\"test.test\"@example.com"
+ , valid "test.\"test\"@example.com" `why` "Obsolete form, but documented in RFC2822"
+ , valid "\"test@test\"@example.com"
+ , valid "test(a)123.123.123.x123"
+ , valid "test(a)[123.123.123.123]"
+ , valid "test(a)example.example.com"
+ , valid "test(a)example.example.example.com"
+ , invalid "test.example.com"
+ , invalid "test.(a)example.com"
+ , invalid "test..test(a)example.com"
+ , invalid ".test(a)example.com"
+ , invalid "test@test@example.com"
+ , invalid "test@@example.com"
+ , invalid "-- test --(a)example.com" `why` "No spaces allowed in local part"
+ , invalid "[test](a)example.com" `why` "Square brackets only allowed within quotes"
+ , valid "\"test\\test\"@example.com" `why` "Any character can be escaped in a quoted string"
+ , invalid "\"test\"test\"@example.com" `why` "Quotes cannot be nested"
+ , invalid "()[]\\;:,><@example.com" `why` "Disallowed Characters"
+ , invalid "test@." `why` "Dave Child says so"
+ , valid "test@example."
+ , invalid "test@.org" `why` "Dave Child says so"
+ , invalid "test(a)[123.123.123.123" `why` "Dave Child says so"
+ , invalid "test(a)123.123.123.123]" `why` "Dave Child says so"
+ , invalid "NotAnEmail" `why` "Phil Haack says so"
+ , invalid "@NotAnEmail" `why` "Phil Haack says so"
+ , valid "\"test\\\\blah\"@example.com"
+ , valid "\"test\\blah\"@example.com" `why` "Any character can be escaped in a quoted string"
+ , valid "\"test\\\rblah\"@example.com" `why` "Quoted string specifically excludes carriage returns unless escaped"
+ , invalid "\"test\rblah\"@example.com" `why` "Quoted string specifically excludes carriage returns"
+ , valid "\"test\\\"blah\"@example.com"
+ , invalid "\"test\"blah\"@example.com" `why` "Phil Haack says so"
+ , valid "customer/department(a)example.com"
+ , valid "_Yosemite.Sam(a)example.com"
+ , valid "~(a)example.com"
+ , invalid ".wooly(a)example.com" `why` "Phil Haack says so"
+ , invalid "wo..oly(a)example.com" `why` "Phil Haack says so"
+ , invalid "pootietang.(a)example.com" `why` "Phil Haack says so"
+ , invalid ".(a)example.com" `why` "Phil Haack says so"
+ , valid "\"Austin@Powers\"@example.com"
+ , valid "Ima.Fool(a)example.com"
+ , valid "\"Ima.Fool\"@example.com"
+ , valid "\"Ima Fool\"@example.com"
+ , invalid "Ima Fool(a)example.com" `why` "Phil Haack says so"
+ , invalid "phil.h\\@\\@ck@haacked.com" `why` "Escaping can only happen in a quoted string"
+ , valid "\"first\".\"last\"@example.com"
+ , valid "\"first\".middle.\"last\"@example.com"
+ , invalid "\"first\\\\\"last\"@example.com" `why` "Contains an unescaped quote"
+ , valid "\"first\".last(a)example.com" `why` "obs-local-part form as described in RFC 2822"
+ , valid "first.\"last\"@example.com" `why` "obs-local-part form as described in RFC 2822"
+ , valid "\"first\".\"middle\".\"last\"@example.com" `why` "obs-local-part form as described in RFC 2822"
+ , valid "\"first.middle\".\"last\"@example.com" `why` "obs-local-part form as described in RFC 2822"
+ , valid "\"first.middle.last\"@example.com" `why` "obs-local-part form as described in RFC 2822"
+ , valid "\"first..last\"@example.com" `why` "obs-local-part form as described in RFC 2822"
+ , invalid "foo(a)[\\1.2.3.4]" `why` "RFC 5321 specifies the syntax for address-literal and does not allow escaping"
+ , valid "\"first\\\\\\\"last\"@example.com"
+ , valid "first.\"mid\\dle\".\"last\"@example.com" `why` "Backslash can escape anything but must escape something"
+ , valid "Test.\r\n Folding.\r\n Whitespace(a)example.com"
+ , invalid "first\\last(a)example.com" `why` "Unquoted string must be an atom"
+ , invalid "Abc\\@def@example.com" `why` "Was incorrectly given as a valid address in the original RFC3696"
+ , invalid "Fred\\ Bloggs(a)example.com" `why` "Was incorrectly given as a valid address in the original RFC3696"
+ , invalid "Joe.\\\\Blow(a)example.com" `why` "Was incorrectly given as a valid address in the original RFC3696"
+ , invalid "\"test\\\r\n blah\"@example.com" `why` "Folding white space can\'t appear within a quoted pair"
+ , valid "\"test\r\n blah\"@example.com" `why` "This is a valid quoted string with folding white space"
+ , invalid "{^c\\@**Dog^}@cartoon.com" `why` "This is a throwaway example from Doug Lovell\'s article. Actually it\'s not a valid address."
+ , valid "(foo)cal(bar)(a)(baz)iamcal.com(quux)" `why` "A valid address containing comments"
+ , valid "cal(a)iamcal(woo).(yay)com" `why` "A valid address containing comments"
+ , valid "cal(woo(yay)hoopla)(a)iamcal.com" `why` "A valid address containing comments"
+ , valid "cal(foo\\@bar)@iamcal.com" `why` "A valid address containing comments"
+ , valid "cal(foo\\)bar)(a)iamcal.com" `why` "A valid address containing comments and an escaped parenthesis"
+ , invalid "cal(foo(bar)(a)iamcal.com" `why` "Unclosed parenthesis in comment"
+ , invalid "cal(foo)bar)(a)iamcal.com" `why` "Too many closing parentheses"
+ , invalid "cal(foo\\)(a)iamcal.com" `why` "Backslash at end of comment has nothing to escape"
+ , valid "first().last(a)example.com" `why` "A valid address containing an empty comment"
+ , valid "first.(\r\n middle\r\n )last(a)example.com" `why` "Comment with folding white space"
+ , invalid "first(12345678901234567890123456789012345678901234567890)last@(1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890)example.com" `why` "Too long with comments, not too long without"
+ , valid "first(Welcome to\r\n the (\"wonderful\" (!)) world\r\n of email)(a)example.com" `why` "Silly example from my blog post"
+ , valid "pete(his account)(a)silly.test(his host)" `why` "Canonical example from RFC5322"
+ , valid "c@(Chris\'s host.)public.example" `why` "Canonical example from RFC5322"
+ , valid "jdoe@machine(comment). example" `why` "Canonical example from RFC5322"
+ , valid "1234 @ local(blah) .machine .example" `why` "Canonical example from RFC5322"
+ , invalid "first(middle)last(a)example.com" `why` "Can\'t have a comment or white space except at an element boundary"
+ , valid "first(abc.def).last(a)example.com" `why` "Comment can contain a dot"
+ , valid "first(a\"bc.def).last(a)example.com" `why` "Comment can contain double quote"
+ , valid "first.(\")middle.last(\")(a)example.com" `why` "Comment can contain a quote"
+ , invalid "first(abc(\"def\".ghi).mno)middle(abc(\"def\".ghi).mno).last@(abc(\"def\".ghi).mno)example(abc(\"def\".ghi).mno).(abc(\"def\".ghi).mno)com(abc(\"def\".ghi).mno)" `why` "Can\'t have comments or white space except at an element boundary"
+ , valid "first(abc\\(def)(a)example.com" `why` "Comment can contain quoted-pair"
+ , valid "first.last@x(1234567890123456789012345678901234567890123456789012345678901234567890).com" `why` "Label is longer than 63 octets, but not with comment removed"
+ , valid "a(a(b(c)d(e(f))g)h(i)j)(a)example.com"
+ , invalid "a(a(b(c)d(e(f))g)(h(i)j)(a)example.com" `why` "Braces are not properly matched"
+ , valid "name.lastname(a)domain.com"
+ , invalid ".@"
+ , invalid "@bar.com"
+ , invalid "@@bar.com"
+ , valid "a(a)bar.com"
+ , invalid "aaa.com"
+ , invalid "aaa@.com"
+ , invalid "aaa@.123"
+ , valid "aaa(a)[123.123.123.123]"
+ , invalid "aaa(a)[123.123.123.123]a" `why` "extra data outside ip"
+ , valid "a(a)bar.com."
+ , valid "a-b(a)bar.com"
+ , valid "+(a)b.c" `why` "TLDs can be any length"
+ , valid "+(a)b.com"
+ , invalid "-@..com"
+ , invalid "-@a..com"
+ , valid "a(a)b.co-foo.uk"
+ , valid "\"hello my name is\"@stutter.com"
+ , valid "\"Test \\\"Fail\\\" Ing\"@example.com"
+ , valid "valid(a)special.museum"
+ , valid "shaitan(a)my-domain.thisisminekthx" `why` "Disagree with Paul Gregg here"
+ , invalid "test@...........com" `why` "......"
+ , valid "\"Joe\\\\Blow\"@example.com"
+ , invalid "Invalid \\\n Folding \\\n Whitespace(a)example.com" `why` "This isn\'t FWS so Dominic Sayers says it\'s invalid"
+ , valid "HM2Kinsists@(that comments are allowed)this.is.ok"
+ , valid "user%uucp!path(a)somehost.edu"
+ , valid "\"first(last)\"@example.com"
+ , valid " \r\n (\r\n x \r\n ) \r\n first\r\n ( \r\n x\r\n ) \r\n .\r\n ( \r\n x) \r\n last \r\n ( x \r\n ) \r\n @example.com"
+ , valid "test.\r\n \r\n obs(a)syntax.com" `why` "obs-fws allows multiple lines"
+ , valid "test. \r\n \r\n obs(a)syntax.com" `why` "obs-fws allows multiple lines (test 2: space before break)"
+ , invalid "test.\r\n\r\n obs(a)syntax.com" `why` "obs-fws must have at least one WSP per line"
+ , valid "\"null \\\0\"@char.com" `why` "can have escaped null character"
+ , invalid "\"null \0\"@char.com" `why` "cannot have unescaped null character"
-- items below here are invalid according to other RFCs (or opinions)
- --, ("\"\"@example.com", False, "Local part is effectively empty")
- --, ("foobar(a)192.168.0.1", False, "ip need to be []")
- --, ("first.last(a)[.12.34.56.78]", False, "Only char that can precede IPv4 address is \':\'")
- --, ("first.last(a)[12.34.56.789]", False, "Can\'t be interpreted as IPv4 so IPv6 tag is missing")
- --, ("first.last@[::12.34.56.78]", False, "IPv6 tag is missing")
- --, ("first.last@[IPv5:::12.34.56.78]", False, "IPv6 tag is wrong")
- --, ("first.last@[IPv6:1111:2222:3333::4444:5555:12.34.56.78]", False, "Too many IPv6 groups (4 max)")
- --, ("first.last@[IPv6:1111:2222:3333:4444:5555:12.34.56.78]", False, "Not enough IPv6 groups")
- --, ("first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777:12.34.56.78]", False, "Too many IPv6 groups (6 max)")
- --, ("first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777]", False, "Not enough IPv6 groups")
- --, ("first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777:8888:9999]", False, "Too many IPv6 groups (8 max)")
- --, ("first.last@[IPv6:1111:2222::3333::4444:5555:6666]", False, "Too many \'::\' (can be none or one)")
- --, ("first.last@[IPv6:1111:2222:3333::4444:5555:6666:7777]", False, "Too many IPv6 groups (6 max)")
- --, ("first.last@[IPv6:1111:2222:333x::4444:5555]", False, "x is not valid in an IPv6 address")
- --, ("first.last@[IPv6:1111:2222:33333::4444:5555]", False, "33333 is not a valid group in an IPv6 address")
- --, ("first.last(a)example.123", False, "TLD can\'t be all digits")
- --, ("aaa(a)[123.123.123.333]", False, "not a valid IP")
- --, ("first.last@[IPv6:1111:2222:3333:4444:5555:6666:12.34.567.89]", False, "IPv4 part contains an invalid octet")
- --, ("a@b", False, "")
- --, ("a@bar", False, "")
- , ("invalid(a)special.museum-", False, "")
- , ("a(a)-b.com", False, "")
- , ("a(a)b-.com", False, "")
- --, ("\"foo\"(yay)(a)(hoopla)[1.2.3.4]", False, "Address literal can\'t be commented (RFC5321)")
- --, ("first.\"\".last(a)example.com", False, "Contains a zero-length element")
- --, ("test@example", False, "Dave Child says so")
- --, ("12345678901234567890123456789012345678901234567890123456789012345(a)example.com", False, "Local part more than 64 characters")
- , ("x@x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456", False, "Domain exceeds 255 chars")
- , ("test@123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012.com", False, "255 characters is maximum length for domain. This is 256.")
- --, ("123456789012345678901234567890123456789012345678901234567890@12345678901234567890123456789012345678901234567890123456789.12345678901234567890123456789012345678901234567890123456789.12345678901234567890123456789012345678901234567890123456789.1234.example.com", False, "Entire address is longer than 256 characters")
- --, ("test(a)123.123.123.123", False, "Top Level Domain won\'t be all-numeric (see RFC3696 Section 2). I disagree with Dave Child on this one.")
- , ("first.last@x234567890123456789012345678901234567890123456789012345678901234.example.com", False, "Label can\'t be longer than 63 octets")
- --, ("first.last@com", False, "Mail host must be second- or lower level")
- , ("first.last(a)-xample.com", False, "Label can\'t begin with a hyphen")
- , ("first.last(a)exampl-.com", False, "Label can\'t end with a hyphen")
+ --, invalid "\"\"@example.com" `why` "Local part is effectively empty"
+ --, invalid "foobar(a)192.168.0.1" `why` "ip need to be []"
+ --, invalid "first.last(a)[.12.34.56.78]" `why` "Only char that can precede IPv4 address is \':\'"
+ --, invalid "first.last(a)[12.34.56.789]" `why` "Can\'t be interpreted as IPv4 so IPv6 tag is missing"
+ --, invalid "first.last@[::12.34.56.78]" `why` "IPv6 tag is missing"
+ --, invalid "first.last@[IPv5:::12.34.56.78]" `why` "IPv6 tag is wrong"
+ --, invalid "first.last@[IPv6:1111:2222:3333::4444:5555:12.34.56.78]" `why` "Too many IPv6 groups (4 max)"
+ --, invalid "first.last@[IPv6:1111:2222:3333:4444:5555:12.34.56.78]" `why` "Not enough IPv6 groups"
+ --, invalid "first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777:12.34.56.78]" `why` "Too many IPv6 groups (6 max)"
+ --, invalid "first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777]" `why` "Not enough IPv6 groups"
+ --, invalid "first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777:8888:9999]" `why` "Too many IPv6 groups (8 max)"
+ --, invalid "first.last@[IPv6:1111:2222::3333::4444:5555:6666]" `why` "Too many \'::\' (can be none or one)"
+ --, invalid "first.last@[IPv6:1111:2222:3333::4444:5555:6666:7777]" `why` "Too many IPv6 groups (6 max)"
+ --, invalid "first.last@[IPv6:1111:2222:333x::4444:5555]" `why` "x is not valid in an IPv6 address"
+ --, invalid "first.last@[IPv6:1111:2222:33333::4444:5555]" `why` "33333 is not a valid group in an IPv6 address"
+ --, invalid "first.last(a)example.123" `why` "TLD can\'t be all digits"
+ --, invalid "aaa(a)[123.123.123.333]" `why` "not a valid IP"
+ --, invalid "first.last@[IPv6:1111:2222:3333:4444:5555:6666:12.34.567.89]" `why` "IPv4 part contains an invalid octet"
+ , valid "a@b"
+ , valid "a@bar"
+ , invalid "invalid(a)special.museum-" `why` "domain can't end with hyphen"
+ , invalid "a(a)-b.com" `why` "domain can't start with hyphen"
+ , invalid "a(a)b-.com" `why` "domain label can't end with hyphen"
+ --, invalid "\"foo\"(yay)(a)(hoopla)[1.2.3.4]" `why` "Address literal can\'t be commented (RFC5321)"
+ --, invalid "first.\"\".last(a)example.com" `why` "Contains a zero-length element"
+ --, invalid "test@example" `why` "Dave Child says so"
+ , invalid (BS.replicate 65 'x' <> "@x") `why` "local-part longer than 64 octets" `errorShouldContain` "too long"
+ , invalid "x@x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456" `why` "Domain exceeds 255 chars"
+ , invalid "test@123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012.com" `why` "255 characters is maximum length for domain. This is 256."
+ , invalid "123456789012345678901234567890123456789012345678901234567890@12345678901234567890123456789012345678901234567890123456789.12345678901234567890123456789012345678901234567890123456789.12345678901234567890123456789012345678901234567890123456789.1234.example.com" `why` "Entire address is longer than 254 characters (this is 257)"
+ , invalid "123456789012345678901234567890123456789012345678901234567890@12345678901234567890123456789012345678901234567890123456789.12345678901234567890123456789012345678901234567890123456789.12345678901234567890123456789012345678901234567890123456789.123.example.com" `why` "Entire address is longer than 254 characters (this is 256)"
+ , invalid "123456789012345678901234567890123456789012345678901234567890@12345678901234567890123456789012345678901234567890123456789.12345678901234567890123456789012345678901234567890123456789.12345678901234567890123456789012345678901234567890123456789.12.example.com" `why` "Entire address is longer than 254 characters (this is 255)"
+ , valid "123456789012345678901234567890123456789012345678901234567890@12345678901234567890123456789012345678901234567890123456789.12345678901234567890123456789012345678901234567890123456789.12345678901234567890123456789012345678901234567890123456789.1.example.com" `why` "Entire address is 254 characters"
+ --, invalid "test(a)123.123.123.123" `why` "Top Level Domain won\'t be all-numeric (see RFC3696 Section 2). I disagree with Dave Child on this one."
+ , invalid "first.last@x234567890123456789012345678901234567890123456789012345678901234.example.com" `why` "Label can\'t be longer than 63 octets"
+ --, invalid "first.last@com" `why` "Mail host must be second- or lower level"
+ , invalid "first.last(a)e.-xample.com" `why` "Label can\'t begin with a hyphen"
+ , invalid "first.last(a)exampl-.e.com" `why` "Label can\'t end with a hyphen"
]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/email-validate-2.2.1.1/tests/doctests.hs new/email-validate-2.3/tests/doctests.hs
--- old/email-validate-2.2.1.1/tests/doctests.hs 1970-01-01 01:00:00.000000000 +0100
+++ new/email-validate-2.3/tests/doctests.hs 2017-06-26 08:45:39.000000000 +0200
@@ -0,0 +1,7 @@
+import Test.DocTest
+
+main = doctest
+ [ "-isrc"
+ , "src/Text/Email/QuasiQuotation.hs"
+ , "src/Text/Email/Validate.hs"
+ ]
1
0
Hello community,
here is the log from the commit of package ghc-distributed-process for openSUSE:Factory checked in at 2017-08-31 20:46:50
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-distributed-process (Old)
and /work/SRC/openSUSE:Factory/.ghc-distributed-process.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-distributed-process"
Thu Aug 31 20:46:50 2017 rev:2 rq:513231 version:0.6.6
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-distributed-process/ghc-distributed-process.changes 2017-04-12 18:06:01.700391513 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-distributed-process.new/ghc-distributed-process.changes 2017-08-31 20:46:52.424214487 +0200
@@ -1,0 +2,5 @@
+Fri Jul 28 09:56:13 UTC 2017 - psimons(a)suse.com
+
+- Relax over-specified version constraint on syb.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-distributed-process.spec ++++++
--- /var/tmp/diff_new_pack.U79zl2/_old 2017-08-31 20:46:53.160111193 +0200
+++ /var/tmp/diff_new_pack.U79zl2/_new 2017-08-31 20:46:53.172109509 +0200
@@ -72,6 +72,7 @@
%prep
%setup -q -n %{pkg_name}-%{version}
cp -p %{SOURCE1} %{pkg_name}.cabal
+cabal-tweak-dep-ver syb '< 0.7' ' < 0.8'
%build
%ghc_lib_build
1
0
Hello community,
here is the log from the commit of package ghc-diagrams-contrib for openSUSE:Factory checked in at 2017-08-31 20:46:47
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-diagrams-contrib (Old)
and /work/SRC/openSUSE:Factory/.ghc-diagrams-contrib.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-diagrams-contrib"
Thu Aug 31 20:46:47 2017 rev:2 rq:513230 version:1.4.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-diagrams-contrib/ghc-diagrams-contrib.changes 2017-05-29 22:18:41.056169060 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-diagrams-contrib.new/ghc-diagrams-contrib.changes 2017-08-31 20:46:50.180529420 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 14:05:42 UTC 2017 - psimons(a)suse.com
+
+- Update to version 1.4.1.
+
+-------------------------------------------------------------------
Old:
----
diagrams-contrib-1.4.0.1.tar.gz
diagrams-contrib.cabal
New:
----
diagrams-contrib-1.4.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-diagrams-contrib.spec ++++++
--- /var/tmp/diff_new_pack.YlnjER/_old 2017-08-31 20:46:51.236381216 +0200
+++ /var/tmp/diff_new_pack.YlnjER/_new 2017-08-31 20:46:51.248379532 +0200
@@ -19,14 +19,13 @@
%global pkg_name diagrams-contrib
%bcond_with tests
Name: ghc-%{pkg_name}
-Version: 1.4.0.1
+Version: 1.4.1
Release: 0
Summary: Collection of user contributions to diagrams EDSL
License: BSD-3-Clause
Group: Development/Languages/Other
Url: https://hackage.haskell.org/package/%{pkg_name}
Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{ve…
-Source1: https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/4.cabal…
BuildRequires: ghc-Cabal-devel
BuildRequires: ghc-MonadRandom-devel
BuildRequires: ghc-circle-packing-devel
@@ -79,7 +78,6 @@
%prep
%setup -q -n %{pkg_name}-%{version}
-cp -p %{SOURCE1} %{pkg_name}.cabal
%build
%ghc_lib_build
++++++ diagrams-contrib-1.4.0.1.tar.gz -> diagrams-contrib-1.4.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/diagrams-contrib-1.4.0.1/CHANGES.markdown new/diagrams-contrib-1.4.1/CHANGES.markdown
--- old/diagrams-contrib-1.4.0.1/CHANGES.markdown 2016-11-14 04:07:55.000000000 +0100
+++ new/diagrams-contrib-1.4.1/CHANGES.markdown 2017-07-03 20:37:22.000000000 +0200
@@ -1,7 +1,19 @@
+1.4.1 (3 July 2017)
+---------------------
+
+- allow QuickCheck-2.10
+- allow base-4.10 (for GHC-8.2)
+- allow MonadRandom-0.5
+- export some things inadvertently unexported from Diagrams.TwoD.Grid (#68)
+
1.4.0.1 (13 November 2016)
--------------------------
- allow `cubicbezier-0.5`
+- allow `HUnit-1.6` (Hackage revision 2, 21 March 2017)
+
+- Revision 2 on Hackage requires `cubicbezier-0.6` (which has some
+ relevant bug fixes).
1.4 (2016-10-26)
----------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/diagrams-contrib-1.4.0.1/diagrams-contrib.cabal new/diagrams-contrib-1.4.1/diagrams-contrib.cabal
--- old/diagrams-contrib-1.4.0.1/diagrams-contrib.cabal 2016-11-14 04:07:55.000000000 +0100
+++ new/diagrams-contrib-1.4.1/diagrams-contrib.cabal 2017-07-03 20:37:22.000000000 +0200
@@ -1,5 +1,5 @@
name: diagrams-contrib
-version: 1.4.0.1
+version: 1.4.1
synopsis: Collection of user contributions to diagrams EDSL
description: A collection of user contributions for diagrams,
an embedded domain-specific language for generation
@@ -15,7 +15,7 @@
cabal-version: >=1.10
extra-source-files: README.markdown, CHANGES.markdown, diagrams/*.svg, CONTRIBUTORS
extra-doc-files: diagrams/*.svg
-tested-with: GHC == 7.8.4, GHC == 7.10.2, GHC == 8.0.1
+tested-with: GHC == 7.8.4, GHC == 7.10.2, GHC == 8.0.1, GHC == 8.2.1
Source-repository head
type: git
location: http://github.com/diagrams/diagrams-contrib.git
@@ -50,7 +50,7 @@
Diagrams.TwoD.Path.Metafont.Internal
Diagrams.TwoD.Path.Metafont.Combinators
Diagrams.TwoD.Path.Metafont.Parser
- build-depends: base >= 4.2 && < 4.10,
+ build-depends: base >= 4.2 && < 4.11,
mtl >= 2.0 && < 2.3,
mtl-compat >= 0.2.1 && < 0.3,
containers > 0.4 && < 0.6,
@@ -65,14 +65,14 @@
linear >= 1.11.3 && < 1.21,
force-layout >= 0.4 && < 0.5,
data-default >= 0.5.2 && < 0.8,
- MonadRandom >= 0.1.8 && < 0.5,
+ MonadRandom >= 0.1.8 && < 0.6,
random >= 1.0 && < 1.2,
circle-packing >= 0.1 && < 0.2,
parsec >= 3.1 && < 3.2,
text >= 0.11 && < 1.3,
data-default-class < 0.2,
semigroups >= 0.3.4 && < 0.19,
- cubicbezier >= 0.4.0.1 && < 0.6,
+ cubicbezier >= 0.6 && < 0.7,
hashable >= 0.1.2 && < 1.3,
mfsolve >= 0.3 && < 0.4
hs-source-dirs: src
@@ -86,14 +86,14 @@
other-modules: Diagrams.TwoD.Path.Turtle.Tests
- build-depends: HUnit >= 1.2 && < 1.6,
- QuickCheck >= 2.4 && < 2.10,
+ build-depends: HUnit >= 1.2 && < 1.7,
+ QuickCheck >= 2.4 && < 2.11,
containers >= 0.3 && < 0.6,
test-framework >= 0.4 && < 0.9,
test-framework-hunit >= 0.2 && < 0.4,
test-framework-quickcheck2 >= 0.2 && < 0.4,
- base >= 4.2 && < 4.10,
+ base,
diagrams-lib >= 1.4 && < 1.5
default-language: Haskell2010
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/diagrams-contrib-1.4.0.1/src/Diagrams/TwoD/Grid.hs new/diagrams-contrib-1.4.1/src/Diagrams/TwoD/Grid.hs
--- old/diagrams-contrib-1.4.0.1/src/Diagrams/TwoD/Grid.hs 2016-11-14 04:07:55.000000000 +0100
+++ new/diagrams-contrib-1.4.1/src/Diagrams/TwoD/Grid.hs 2017-07-03 20:37:20.000000000 +0200
@@ -92,8 +92,18 @@
, gridWithHalves'
, annotate
, gridLine
+ , gridLine'
, gridLines
, placeDiagramOnGrid
+
+ -- * Options
+
+ , GridOpts(..)
+ , gridLineWidth, gridYColour, gridXColour, gridLL, gridLR, gridUL
+
+ , HighlightLineOpts(..)
+ , highLightLineColour, highLightLineWidth
+ , highLightLineDashingOnOff, highLightLineDashingOffset
) where
import Diagrams.Prelude
1
0
Hello community,
here is the log from the commit of package ghc-dejafu for openSUSE:Factory checked in at 2017-08-31 20:46:45
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-dejafu (Old)
and /work/SRC/openSUSE:Factory/.ghc-dejafu.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-dejafu"
Thu Aug 31 20:46:45 2017 rev:3 rq:513229 version:0.7.0.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-dejafu/ghc-dejafu.changes 2017-04-20 20:55:44.247345584 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-dejafu.new/ghc-dejafu.changes 2017-08-31 20:46:47.284935858 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 14:04:32 UTC 2017 - psimons(a)suse.com
+
+- Update to version 0.7.0.2.
+
+-------------------------------------------------------------------
Old:
----
dejafu-0.4.0.0.tar.gz
New:
----
dejafu-0.7.0.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-dejafu.spec ++++++
--- /var/tmp/diff_new_pack.peJcV8/_old 2017-08-31 20:46:48.344787093 +0200
+++ /var/tmp/diff_new_pack.peJcV8/_new 2017-08-31 20:46:48.352785970 +0200
@@ -18,7 +18,7 @@
%global pkg_name dejafu
Name: ghc-%{pkg_name}
-Version: 0.4.0.0
+Version: 0.7.0.2
Release: 0
Summary: Systematic testing for Haskell concurrency
License: MIT
@@ -29,10 +29,10 @@
BuildRequires: ghc-concurrency-devel
BuildRequires: ghc-containers-devel
BuildRequires: ghc-deepseq-devel
-BuildRequires: ghc-dpor-devel
BuildRequires: ghc-exceptions-devel
-BuildRequires: ghc-monad-loops-devel
+BuildRequires: ghc-leancheck-devel
BuildRequires: ghc-mtl-devel
+BuildRequires: ghc-random-devel
BuildRequires: ghc-ref-fd-devel
BuildRequires: ghc-rpm-macros
BuildRequires: ghc-semigroups-devel
@@ -55,41 +55,6 @@
concurrency> package by enabling you to systematically and deterministically
test your concurrent programs.
-== Déjà Fu with 'IO':
-
-The core assumption underlying Déjà Fu is that any apparent nondeterminism
-arises purely from the scheduling behaviour. To put it another way, a given
-computation, parametrised with a fixed set of scheduling decisions, is
-deterministic.
-
-Whilst this assumption may not hold in general when 'IO' is involved, you
-should strive to produce test cases where it does.
-
-== Memory Model
-
-The testing functionality supports a few different memory models, for
-computations which use non-synchronised `CRef` operations. The supported models
-are:
-
-* __Sequential Consistency:__ A program behaves as a simple interleaving of the
-actions in different threads. When a CRef is written to, that write is
-immediately visible to all threads.
-
-* __Total Store Order (TSO):__ Each thread has a write buffer. A thread sees
-its writes immediately, but other threads will only see writes when they are
-committed, which may happen later. Writes are committed in the same order that
-they are created.
-
-* __Partial Store Order (PSO):__ Each CRef has a write buffer. A thread sees
-its writes immediately, but other threads will only see writes when they are
-committed, which may happen later. Writes to different CRefs are not
-necessarily committed in the same order that they are created.
-
-If a testing function does not take the memory model as a parameter, it uses
-TSO.
-
-See the <https://github.com/barrucadu/dejafu README> for more details.
-
%package devel
Summary: Haskell %{pkg_name} library development files
Group: Development/Libraries/Other
@@ -122,5 +87,6 @@
%files devel -f %{name}-devel.files
%defattr(-,root,root,-)
+%doc CHANGELOG.markdown README.markdown
%changelog
++++++ dejafu-0.4.0.0.tar.gz -> dejafu-0.7.0.2.tar.gz ++++++
++++ 6131 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package ghc-cryptonite for openSUSE:Factory checked in at 2017-08-31 20:46:43
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-cryptonite (Old)
and /work/SRC/openSUSE:Factory/.ghc-cryptonite.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-cryptonite"
Thu Aug 31 20:46:43 2017 rev:7 rq:513225 version:0.23
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-cryptonite/ghc-cryptonite.changes 2017-02-03 17:38:54.998378505 +0100
+++ /work/SRC/openSUSE:Factory/.ghc-cryptonite.new/ghc-cryptonite.changes 2017-08-31 20:46:44.949263703 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 14:07:54 UTC 2017 - psimons(a)suse.com
+
+- Update to version 0.23.
+
+-------------------------------------------------------------------
Old:
----
cryptonite-0.21.tar.gz
New:
----
cryptonite-0.23.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-cryptonite.spec ++++++
--- /var/tmp/diff_new_pack.weQEKZ/_old 2017-08-31 20:46:46.361065536 +0200
+++ /var/tmp/diff_new_pack.weQEKZ/_new 2017-08-31 20:46:46.409058800 +0200
@@ -19,7 +19,7 @@
%global pkg_name cryptonite
%bcond_with tests
Name: ghc-%{pkg_name}
-Version: 0.21
+Version: 0.23
Release: 0
Summary: Cryptography Primitives sink
License: BSD-3-Clause
@@ -29,11 +29,11 @@
BuildRequires: ghc-Cabal-devel
BuildRequires: ghc-bytestring-devel
BuildRequires: ghc-deepseq-devel
+BuildRequires: ghc-foundation-devel
BuildRequires: ghc-memory-devel
BuildRequires: ghc-rpm-macros
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%if %{with tests}
-BuildRequires: ghc-byteable-devel
BuildRequires: ghc-tasty-devel
BuildRequires: ghc-tasty-hunit-devel
BuildRequires: ghc-tasty-kat-devel
@@ -46,14 +46,15 @@
* Symmetric ciphers: AES, DES, 3DES, Blowfish, Camellia, RC4, Salsa, XSalsa,
ChaCha.
-* Hash: SHA1, SHA2, SHA3, MD2, MD4, MD5, Keccak, Skein, Ripemd, Tiger,
+* Hash: SHA1, SHA2, SHA3, SHAKE, MD2, MD4, MD5, Keccak, Skein, Ripemd, Tiger,
Whirlpool, Blake2
* MAC: HMAC, Poly1305
-* Asymmetric crypto: DSA, RSA, DH, ECDH, ECDSA, ECC, Curve25519, Ed25519, Ed448
+* Asymmetric crypto: DSA, RSA, DH, ECDH, ECDSA, ECC, Curve25519, Curve448,
+Ed25519
-* Key Derivation Function: PBKDF2, Scrypt, HKDF
+* Key Derivation Function: PBKDF2, Scrypt, HKDF, Argon2
* Cryptographic Random generation: System Entropy, Deterministic Random
Generator
++++++ cryptonite-0.21.tar.gz -> cryptonite-0.23.tar.gz ++++++
++++ 27963 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package ghc-crypto-enigma for openSUSE:Factory checked in at 2017-08-31 20:46:41
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-crypto-enigma (Old)
and /work/SRC/openSUSE:Factory/.ghc-crypto-enigma.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-crypto-enigma"
Thu Aug 31 20:46:41 2017 rev:2 rq:513224 version:0.0.2.8
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-crypto-enigma/ghc-crypto-enigma.changes 2017-04-12 18:05:47.962333986 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-crypto-enigma.new/ghc-crypto-enigma.changes 2017-08-31 20:46:43.173512954 +0200
@@ -1,0 +2,5 @@
+Sun Jul 30 03:01:25 UTC 2017 - psimons(a)suse.com
+
+- Update to version 0.0.2.8 revision 4.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-crypto-enigma.spec ++++++
--- /var/tmp/diff_new_pack.MrVqar/_old 2017-08-31 20:46:44.577315911 +0200
+++ /var/tmp/diff_new_pack.MrVqar/_new 2017-08-31 20:46:44.621309735 +0200
@@ -26,7 +26,7 @@
Group: Development/Languages/Other
Url: https://hackage.haskell.org/package/%{pkg_name}
Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{ve…
-Source1: https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/1.cabal…
+Source1: https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/4.cabal…
BuildRequires: ghc-Cabal-devel
BuildRequires: ghc-MissingH-devel
BuildRequires: ghc-containers-devel
++++++ crypto-enigma.cabal ++++++
--- /var/tmp/diff_new_pack.MrVqar/_old 2017-08-31 20:46:44.733294017 +0200
+++ /var/tmp/diff_new_pack.MrVqar/_new 2017-08-31 20:46:44.733294017 +0200
@@ -4,7 +4,7 @@
-- | | +----- non-breaking API additions
-- | | | +--- code changes with no API change
version: 0.0.2.8
-x-revision: 1
+x-revision: 4
synopsis: An Enigma machine simulator with display.
description: The crypto-enigma package is an Enigma machine simulator
with rich display and machine state details.
@@ -29,7 +29,7 @@
license-file: LICENSE
author: Roy Levien
maintainer: royl(a)aldaron.com
-copyright: (c) 2014-2016 Roy Levien
+copyright: (c) 2014-2017 Roy Levien
category: Cryptography, Education
build-type: Simple
extra-source-files: CHANGELOG.md
@@ -54,7 +54,7 @@
Crypto.Enigma.Display
other-modules: Crypto.Enigma.Utils
-- other-extensions:
- build-depends: base >=4.8.1.0 && <=4.9.1.0,
+ build-depends: base >=4.8.1.0 && <=4.9.10,
containers >=0.5.5.1,
split >=0.2.2,
mtl >=2.2,
@@ -66,7 +66,7 @@
type: exitcode-stdio-1.0
hs-source-dirs: test
main-is: Check.hs
- build-depends: base >=4.8.1.0 && <=4.9.1.0,
+ build-depends: base >=4.8.1.0 && <=4.9.10,
QuickCheck >=2.8,
crypto-enigma
-- ghc-options: -threaded -rtsopts -with-rtsopts=-N
@@ -76,8 +76,8 @@
type: exitcode-stdio-1.0
hs-source-dirs: test
main-is: Test.hs
- build-depends: base >=4.8.1.0 && <=4.9.1.0,
+ build-depends: base >=4.8.1.0 && <=4.9.10,
HUnit >=1.3,
crypto-enigma
-- ghc-options: -threaded -rtsopts -with-rtsopts=-N
- default-language: Haskell2010
+ default-language: Haskell2010
\ No newline at end of file
1
0
Hello community,
here is the log from the commit of package ghc-concurrency for openSUSE:Factory checked in at 2017-08-31 20:46:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-concurrency (Old)
and /work/SRC/openSUSE:Factory/.ghc-concurrency.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-concurrency"
Thu Aug 31 20:46:39 2017 rev:2 rq:513222 version:1.1.2.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-concurrency/ghc-concurrency.changes 2017-04-12 18:05:41.711217852 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-concurrency.new/ghc-concurrency.changes 2017-08-31 20:46:40.993818905 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 14:07:09 UTC 2017 - psimons(a)suse.com
+
+- Update to version 1.1.2.1.
+
+-------------------------------------------------------------------
Old:
----
concurrency-1.0.0.0.tar.gz
concurrency.cabal
New:
----
concurrency-1.1.2.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-concurrency.spec ++++++
--- /var/tmp/diff_new_pack.TCq7Y6/_old 2017-08-31 20:46:42.397621862 +0200
+++ /var/tmp/diff_new_pack.TCq7Y6/_new 2017-08-31 20:46:42.417619055 +0200
@@ -18,14 +18,13 @@
%global pkg_name concurrency
Name: ghc-%{pkg_name}
-Version: 1.0.0.0
+Version: 1.1.2.1
Release: 0
Summary: Typeclasses, functions, and data types for concurrency and STM
License: MIT
Group: Development/Languages/Other
Url: https://hackage.haskell.org/package/%{pkg_name}
Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{ve…
-Source1: https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/1.cabal…
BuildRequires: ghc-Cabal-devel
BuildRequires: ghc-array-devel
BuildRequires: ghc-atomic-primops-devel
@@ -45,48 +44,6 @@
all the imports from Control.Concurrent.* to Control.Concurrent.Classy.* and
fix the type errors.
-A brief list of supported functionality:
-
-* Threads: the 'forkIO*' and 'forkOn*' functions, although bound threads are
-not supported.
-
-* Getting and setting capablities.
-
-* Yielding and delaying.
-
-* Mutable state: STM, 'MVar', and 'IORef'.
-
-* Atomic compare-and-swap for 'IORef'.
-
-* Exceptions.
-
-* All of the data structures in Control.Concurrent.* and
-Control.Concurrent.STM.* have typeclass-abstracted equivalents.
-
-This is quite a rich set of functionality, although it is not complete.
-If there is something else you need, file an issue!
-
-This used to be part of dejafu, but with the dejafu-0.4.0.0 release, it was
-split out into its own package.
-
-== Why this and not something else?
-
-* Why not base: like lifted-base, concurrency uses typeclasses to make function
-types more generic. This automatically eliminates calls to `lift` in many
-cases, resulting in clearer and simpler code.
-
-* Why not lifted-base: fundamentally, lifted-base is still using actual threads
-and actual mutable variables. When using a concurrency-specific typeclass, this
-isn't necessarily the case. The dejafu library provides non-IO-based
-implementations to allow testing concurrent programs.
-
-* Why not IOSpec: IOSpec provides many of the operations this library does,
-however it uses a free monad to do so, which has extra allocation overhead.
-Furthermore, it does not expose enough of the internals in order to accurately
-test real-execution semantics, such as relaxed memory.
-
-See the <https://github.com/barrucadu/dejafu README> for more details.
-
%package devel
Summary: Haskell %{pkg_name} library development files
Group: Development/Libraries/Other
@@ -100,7 +57,6 @@
%prep
%setup -q -n %{pkg_name}-%{version}
-cp -p %{SOURCE1} %{pkg_name}.cabal
%build
%ghc_lib_build
@@ -120,5 +76,6 @@
%files devel -f %{name}-devel.files
%defattr(-,root,root,-)
+%doc CHANGELOG.markdown README.markdown
%changelog
++++++ concurrency-1.0.0.0.tar.gz -> concurrency-1.1.2.1.tar.gz ++++++
++++ 2618 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package ghc-cmark-lucid for openSUSE:Factory checked in at 2017-08-31 20:46:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-cmark-lucid (Old)
and /work/SRC/openSUSE:Factory/.ghc-cmark-lucid.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-cmark-lucid"
Thu Aug 31 20:46:37 2017 rev:2 rq:513221 version:0.1.0.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-cmark-lucid/ghc-cmark-lucid.changes 2017-04-12 18:05:38.651650454 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-cmark-lucid.new/ghc-cmark-lucid.changes 2017-08-31 20:46:38.614152925 +0200
@@ -1,0 +2,5 @@
+Tue Jul 25 03:01:26 UTC 2017 - psimons(a)suse.com
+
+- Update to version 0.1.0.0 revision 1.
+
+-------------------------------------------------------------------
New:
----
cmark-lucid.cabal
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-cmark-lucid.spec ++++++
--- /var/tmp/diff_new_pack.6BUlTx/_old 2017-08-31 20:46:40.081946899 +0200
+++ /var/tmp/diff_new_pack.6BUlTx/_new 2017-08-31 20:46:40.121941285 +0200
@@ -25,6 +25,7 @@
Group: Development/Languages/Other
Url: https://hackage.haskell.org/package/%{pkg_name}
Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{ve…
+Source1: https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/1.cabal…
BuildRequires: ghc-Cabal-devel
BuildRequires: ghc-cmark-devel
BuildRequires: ghc-lucid-devel
@@ -32,7 +33,7 @@
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
-Use cmark with Lucid.
+A package for rendering Markdown (parsed via cmark) to Lucid's HTML.
%package devel
Summary: Haskell %{pkg_name} library development files
@@ -47,6 +48,7 @@
%prep
%setup -q -n %{pkg_name}-%{version}
+cp -p %{SOURCE1} %{pkg_name}.cabal
%build
%ghc_lib_build
++++++ cmark-lucid.cabal ++++++
name: cmark-lucid
version: 0.1.0.0
x-revision: 1
synopsis: Use cmark with Lucid
description:
A package for rendering Markdown (parsed via cmark) to Lucid's HTML.
homepage: http://github.com/aelve/cmark-lucid
bug-reports: http://github.com/aelve/cmark-lucid/issues
license: BSD3
license-file: LICENSE
author: Artyom
maintainer: yom(a)artyom.me
-- copyright:
category: Web
tested-with: GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.1, GHC == 8.2.1
build-type: Simple
extra-source-files: CHANGELOG.md
cabal-version: >=1.10
source-repository head
type: git
location: git://github.com/aelve/cmark-lucid.git
library
exposed-modules: CMark.Lucid
-- other-modules:
-- other-extensions:
build-depends: base >=4.7 && <5
, cmark
, lucid == 2.*
ghc-options: -Wall -fno-warn-unused-do-bind
hs-source-dirs: lib
default-language: Haskell2010
1
0
Hello community,
here is the log from the commit of package ghc-cheapskate-lucid for openSUSE:Factory checked in at 2017-08-31 20:46:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-cheapskate-lucid (Old)
and /work/SRC/openSUSE:Factory/.ghc-cheapskate-lucid.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-cheapskate-lucid"
Thu Aug 31 20:46:34 2017 rev:2 rq:513220 version:0.1.0.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-cheapskate-lucid/ghc-cheapskate-lucid.changes 2017-03-28 15:18:45.243038094 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-cheapskate-lucid.new/ghc-cheapskate-lucid.changes 2017-08-31 20:46:36.686423508 +0200
@@ -1,0 +2,5 @@
+Tue Jul 25 03:01:26 UTC 2017 - psimons(a)suse.com
+
+- Update to version 0.1.0.0 revision 1.
+
+-------------------------------------------------------------------
New:
----
cheapskate-lucid.cabal
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-cheapskate-lucid.spec ++++++
--- /var/tmp/diff_new_pack.Mfzzx4/_old 2017-08-31 20:46:37.902252850 +0200
+++ /var/tmp/diff_new_pack.Mfzzx4/_new 2017-08-31 20:46:37.906252289 +0200
@@ -1,7 +1,7 @@
#
# spec file for package ghc-cheapskate-lucid
#
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2017 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
@@ -22,20 +22,19 @@
Release: 0
Summary: Use cheapskate with Lucid
License: BSD-3-Clause
-Group: System/Libraries
+Group: Development/Languages/Other
Url: https://hackage.haskell.org/package/%{pkg_name}
Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{ve…
+Source1: https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/1.cabal…
BuildRequires: ghc-Cabal-devel
-# Begin cabal-rpm deps:
BuildRequires: ghc-blaze-html-devel
BuildRequires: ghc-cheapskate-devel
BuildRequires: ghc-lucid-devel
BuildRequires: ghc-rpm-macros
BuildRoot: %{_tmppath}/%{name}-%{version}-build
-# End cabal-rpm deps
%description
-Use cheapskate with Lucid.
+A package for rendering Markdown (parsed via cheapskate) to Lucid's HTML.
%package devel
Summary: Haskell %{pkg_name} library development files
@@ -51,16 +50,14 @@
%prep
%setup -q -n %{pkg_name}-%{version}
-
+cp -p %{SOURCE1} %{pkg_name}.cabal
%build
%ghc_lib_build
-
%install
%ghc_lib_install
-
%post devel
%ghc_pkg_recache
++++++ cheapskate-lucid.cabal ++++++
name: cheapskate-lucid
version: 0.1.0.0
x-revision: 1
synopsis: Use cheapskate with Lucid
description:
A package for rendering Markdown (parsed via cheapskate) to Lucid's HTML.
homepage: http://github.com/aelve/cheapskate-lucid
bug-reports: http://github.com/aelve/cheapskate-lucid/issues
license: BSD3
license-file: LICENSE
author: Artyom
maintainer: yom(a)artyom.me
-- copyright:
category: Web
tested-with: GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.1, GHC == 8.2.1
build-type: Simple
extra-source-files: CHANGELOG.md
cabal-version: >=1.10
source-repository head
type: git
location: git://github.com/aelve/cheapskate-lucid.git
library
exposed-modules: Cheapskate.Lucid
-- other-modules:
-- other-extensions:
build-depends: base >=4.7 && <5
, blaze-html >= 0.5
, cheapskate == 0.1.*
, lucid == 2.*
ghc-options: -Wall -fno-warn-unused-do-bind
hs-source-dirs: lib
default-language: Haskell2010
1
0
Hello community,
here is the log from the commit of package ghc-carray for openSUSE:Factory checked in at 2017-08-31 20:46:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-carray (Old)
and /work/SRC/openSUSE:Factory/.ghc-carray.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-carray"
Thu Aug 31 20:46:33 2017 rev:6 rq:513219 version:0.1.6.8
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-carray/ghc-carray.changes 2017-07-23 12:14:17.836614221 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-carray.new/ghc-carray.changes 2017-08-31 20:46:34.634711495 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 14:06:46 UTC 2017 - psimons(a)suse.com
+
+- Update to version 0.1.6.8.
+
+-------------------------------------------------------------------
Old:
----
carray-0.1.6.7.tar.gz
carray.cabal
New:
----
carray-0.1.6.8.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-carray.spec ++++++
--- /var/tmp/diff_new_pack.VSzces/_old 2017-08-31 20:46:35.942527924 +0200
+++ /var/tmp/diff_new_pack.VSzces/_new 2017-08-31 20:46:35.966524557 +0200
@@ -19,14 +19,13 @@
%global pkg_name carray
%bcond_with tests
Name: ghc-%{pkg_name}
-Version: 0.1.6.7
+Version: 0.1.6.8
Release: 0
Summary: A C-compatible array library
License: BSD-3-Clause
Group: Development/Languages/Other
Url: https://hackage.haskell.org/package/%{pkg_name}
Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{ve…
-Source1: https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/1.cabal…
BuildRequires: ghc-Cabal-devel
BuildRequires: ghc-QuickCheck-devel
BuildRequires: ghc-array-devel
@@ -57,7 +56,6 @@
%prep
%setup -q -n %{pkg_name}-%{version}
-cp -p %{SOURCE1} %{pkg_name}.cabal
%build
%ghc_lib_build
++++++ carray-0.1.6.7.tar.gz -> carray-0.1.6.8.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/carray-0.1.6.7/Makefile new/carray-0.1.6.8/Makefile
--- old/carray-0.1.6.7/Makefile 2017-06-16 12:01:07.000000000 +0200
+++ new/carray-0.1.6.8/Makefile 2017-07-18 20:35:44.000000000 +0200
@@ -2,5 +2,5 @@
runhaskell Setup configure --user --enable-tests --enable-benchmarks
runhaskell Setup build
runhaskell Setup haddock
- ./dist/build/test/test
+ runhaskell Setup test --show-details=always
(cd tests; sh runtests.sh)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/carray-0.1.6.7/carray.cabal new/carray-0.1.6.8/carray.cabal
--- old/carray-0.1.6.7/carray.cabal 2017-06-16 12:01:07.000000000 +0200
+++ new/carray-0.1.6.8/carray.cabal 2017-07-18 20:35:44.000000000 +0200
@@ -1,5 +1,5 @@
name: carray
-version: 0.1.6.7
+version: 0.1.6.8
synopsis: A C-compatible array library.
description:
A C-compatible array library.
@@ -21,7 +21,7 @@
Makefile
source-repository this
- tag: 0.1.6.7
+ tag: 0.1.6.8
type: darcs
location: http://hub.darcs.net/thielema/carray/
@@ -30,36 +30,15 @@
location: http://hub.darcs.net/thielema/carray/
-flag splitBase
- description: array was in base < 3
- default: True
-flag bytestringInBase
- description: bytestring was included in base for 2.0 and 2.1
- default: False
-flag base4
- description: syb was split from base >= 4
- default: True
-
library
build-depends:
+ array >=0.1 && <0.6,
ix-shapable >=0.1 && <0.2,
binary >=0.5 && <0.9,
- QuickCheck >=2.4 && <3
-
- if flag(bytestringInBase)
- build-depends: base >=2.0 && <2.2
- else
- build-depends: base <2.0 || >=3, bytestring >=0.9 && <0.11
-
- if flag(splitBase)
- build-depends: base >=3, array >=0.1 && <0.6
- else
- build-depends: base <3
-
- if flag(base4)
- build-depends: base >=4 && <5, syb >=0.1 && <0.8
- else
- build-depends: base <4
+ bytestring >=0.9 && <0.11,
+ QuickCheck >=2.4 && <3,
+ syb >=0.1 && <0.8,
+ base>=4.4 && <5
exposed-modules:
Data.Array.CArray
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/carray-0.1.6.7/tests/meteor-contest-c.hs new/carray-0.1.6.8/tests/meteor-contest-c.hs
--- old/carray-0.1.6.7/tests/meteor-contest-c.hs 2017-06-16 12:01:07.000000000 +0200
+++ new/carray-0.1.6.8/tests/meteor-contest-c.hs 2017-07-18 20:35:44.000000000 +0200
@@ -34,6 +34,7 @@
cellAt :: Int -> Int -> Int
cellAt x y = x + n_col * y
+-- swap
coordOf :: Int -> (Int, Int)
coordOf i = snd &&& fst $ i `quotRem` n_col
1
0
Hello community,
here is the log from the commit of package ghc-cacophony for openSUSE:Factory checked in at 2017-08-31 20:46:30
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-cacophony (Old)
and /work/SRC/openSUSE:Factory/.ghc-cacophony.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-cacophony"
Thu Aug 31 20:46:30 2017 rev:3 rq:513218 version:0.10.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-cacophony/ghc-cacophony.changes 2017-04-17 10:25:37.376063018 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-cacophony.new/ghc-cacophony.changes 2017-08-31 20:46:32.183055618 +0200
@@ -1,0 +2,10 @@
+Sun Jul 30 03:01:26 UTC 2017 - psimons(a)suse.com
+
+- Update to version 0.10.0 revision 1.
+
+-------------------------------------------------------------------
+Thu Jul 27 14:04:38 UTC 2017 - psimons(a)suse.com
+
+- Update to version 0.10.0.
+
+-------------------------------------------------------------------
Old:
----
cacophony-0.9.2.tar.gz
New:
----
cacophony-0.10.0.tar.gz
cacophony.cabal
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-cacophony.spec ++++++
--- /var/tmp/diff_new_pack.zplyMh/_old 2017-08-31 20:46:33.494871487 +0200
+++ /var/tmp/diff_new_pack.zplyMh/_new 2017-08-31 20:46:33.514868680 +0200
@@ -19,13 +19,14 @@
%global pkg_name cacophony
%bcond_with tests
Name: ghc-%{pkg_name}
-Version: 0.9.2
+Version: 0.10.0
Release: 0
Summary: A library implementing the Noise protocol
License: SUSE-Public-Domain
Group: Development/Languages/Other
Url: https://hackage.haskell.org/package/%{pkg_name}
Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{ve…
+Source1: https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/1.cabal…
BuildRequires: ghc-Cabal-devel
BuildRequires: ghc-bytestring-devel
BuildRequires: ghc-cryptonite-devel
@@ -41,7 +42,7 @@
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%if %{with tests}
BuildRequires: ghc-aeson-devel
-BuildRequires: ghc-async-devel
+BuildRequires: ghc-attoparsec-devel
BuildRequires: ghc-base16-bytestring-devel
BuildRequires: ghc-directory-devel
BuildRequires: ghc-hlint-devel
@@ -49,8 +50,7 @@
%endif
%description
-This library implements the
-<https://github.com/trevp/noise/blob/master/noise.md Noise> protocol.
+This library implements the <https://noiseprotocol.org Noise> protocol.
%package devel
Summary: Haskell %{pkg_name} library development files
@@ -65,6 +65,7 @@
%prep
%setup -q -n %{pkg_name}-%{version}
+cp -p %{SOURCE1} %{pkg_name}.cabal
%build
%ghc_lib_build
@@ -87,6 +88,6 @@
%files devel -f %{name}-devel.files
%defattr(-,root,root,-)
-%doc README.md changelog.md examples
+%doc README.md changelog.md
%changelog
++++++ cacophony-0.9.2.tar.gz -> cacophony-0.10.0.tar.gz ++++++
++++ 56144 lines of diff (skipped)
++++++ cacophony.cabal ++++++
-- This file has been generated from package.yaml by hpack version 0.17.0.
--
-- see: https://github.com/sol/hpack
name: cacophony
version: 0.10.0
x-revision: 1
synopsis: A library implementing the Noise protocol.
description: This library implements the <https://noiseprotocol.org Noise> protocol.
category: Cryptography
homepage: https://github.com/centromere/cacophony#readme
bug-reports: https://github.com/centromere/cacophony/issues
maintainer: John Galt <jgalt(a)centromere.net>
license: PublicDomain
license-file: LICENSE
build-type: Simple
cabal-version: >= 1.10
extra-source-files:
.travis.yml
changelog.md
LICENSE
package.yaml
README.md
stack.yaml
tests/.hlint
tools/pretty-print/format-vectors.py
tools/pretty-print/vector-template.jinja
vectors/cacophony.txt
source-repository head
type: git
location: https://github.com/centromere/cacophony
flag build-tools
description: Build tools
manual: True
default: False
library
hs-source-dirs:
src
default-extensions: OverloadedStrings
ghc-options: -Wall
build-depends:
base >= 4.9 && < 4.11
, bytestring
, cryptonite
, exceptions
, free
, lens
, memory
, monad-coroutine
, mtl
, safe-exceptions
, transformers
exposed-modules:
Crypto.Noise
Crypto.Noise.Cipher
Crypto.Noise.Cipher.AESGCM
Crypto.Noise.Cipher.ChaChaPoly1305
Crypto.Noise.DH
Crypto.Noise.DH.Curve25519
Crypto.Noise.DH.Curve448
Crypto.Noise.Exception
Crypto.Noise.HandshakePatterns
Crypto.Noise.Hash
Crypto.Noise.Hash.BLAKE2b
Crypto.Noise.Hash.BLAKE2s
Crypto.Noise.Hash.SHA256
Crypto.Noise.Hash.SHA512
Crypto.Noise.Internal.CipherState
Crypto.Noise.Internal.Handshake.Interpreter
Crypto.Noise.Internal.Handshake.Pattern
Crypto.Noise.Internal.Handshake.State
Crypto.Noise.Internal.Handshake.Validation
Crypto.Noise.Internal.NoiseState
Crypto.Noise.Internal.SymmetricState
Crypto.Noise.Validation
other-modules:
Paths_cacophony
default-language: Haskell2010
executable noise-repl
main-is: Main.hs
hs-source-dirs:
tools/noise-repl
default-extensions: OverloadedStrings
ghc-options: -Wall -O2 -rtsopts -threaded -with-rtsopts=-N
if flag(build-tools)
build-depends:
attoparsec
, base
, base16-bytestring
, base64-bytestring
, bytestring
, cacophony
, haskeline
, network
, process
else
buildable: False
other-modules:
Client
Options
Pipe
Socket
Types
default-language: Haskell2010
test-suite hlint
type: exitcode-stdio-1.0
main-is: hlint.hs
hs-source-dirs:
tests/hlint
ghc-options: -Wall -O2 -rtsopts -threaded -with-rtsopts=-N
build-depends:
base >= 4.9 && < 4.10
, hlint
default-language: Haskell2010
test-suite vectors
type: exitcode-stdio-1.0
main-is: Main.hs
hs-source-dirs:
tests/vectors
default-extensions: OverloadedStrings
ghc-options: -Wall -O2 -rtsopts -threaded -with-rtsopts=-N
build-depends:
aeson
, attoparsec
, base >= 4.9 && < 4.10
, base16-bytestring
, bytestring
, cacophony
, directory
, text
other-modules:
Generate
Keys
Types
VectorFile
Verify
default-language: Haskell2010
benchmark bench
type: exitcode-stdio-1.0
main-is: Main.hs
hs-source-dirs:
benchmarks
default-extensions: OverloadedStrings
ghc-options: -Wall -O2 -rtsopts -threaded -with-rtsopts=-N
build-depends:
async
, base >= 4.9 && < 4.10
, base16-bytestring
, bytestring
, cacophony
, criterion
, deepseq
other-modules:
Keys
Types
default-language: Haskell2010
1
0
Hello community,
here is the log from the commit of package ghc-bytes for openSUSE:Factory checked in at 2017-08-31 20:46:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-bytes (Old)
and /work/SRC/openSUSE:Factory/.ghc-bytes.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-bytes"
Thu Aug 31 20:46:28 2017 rev:3 rq:513217 version:0.15.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-bytes/ghc-bytes.changes 2017-06-04 01:52:19.951746037 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-bytes.new/ghc-bytes.changes 2017-08-31 20:46:30.351312729 +0200
@@ -1,0 +2,5 @@
+Sat Jul 29 03:02:07 UTC 2017 - psimons(a)suse.com
+
+- Update to version 0.15.3 revision 1.
+
+-------------------------------------------------------------------
New:
----
bytes.cabal
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-bytes.spec ++++++
--- /var/tmp/diff_new_pack.Oms7io/_old 2017-08-31 20:46:31.759115124 +0200
+++ /var/tmp/diff_new_pack.Oms7io/_new 2017-08-31 20:46:31.779112317 +0200
@@ -26,6 +26,7 @@
Group: Development/Languages/Other
Url: https://hackage.haskell.org/package/%{pkg_name}
Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{ve…
+Source1: https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/1.cabal…
BuildRequires: ghc-Cabal-devel
BuildRequires: ghc-binary-devel
BuildRequires: ghc-bytestring-devel
@@ -65,6 +66,7 @@
%prep
%setup -q -n %{pkg_name}-%{version}
+cp -p %{SOURCE1} %{pkg_name}.cabal
%build
%ghc_lib_build
++++++ bytes.cabal ++++++
name: bytes
category: Data, Serialization
version: 0.15.3
x-revision: 1
license: BSD3
cabal-version: >= 1.8
license-file: LICENSE
author: Edward A. Kmett
maintainer: Edward A. Kmett <ekmett(a)gmail.com>
stability: experimental
homepage: https://github.com/ekmett/bytes
bug-reports: https://github.com/ekmett/bytes/issues
copyright: Copyright (C) 2013-2015 Edward A. Kmett
build-type: Custom
tested-with: GHC == 7.4.2, GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.1
synopsis: Sharing code for serialization between binary and cereal
description: Sharing code for serialization between binary and cereal
extra-source-files:
.travis.yml
.ghci
.gitignore
.vim.custom
travis/cabal-apt-install
travis/config
AUTHORS.markdown
README.markdown
CHANGELOG.markdown
source-repository head
type: git
location: git://github.com/ekmett/bytes.git
-- You can disable the doctests test suite with -f-test-doctests
flag test-doctests
description: Enable (or disable via f-test-doctests) the doctest suite when
using the enable-tests option for cabal.
default: True
manual: True
custom-setup
-- any should do
setup-depends:
base >= 4.5 && <5,
Cabal >= 1.14,
cabal-doctest >= 1 && <1.1
library
build-depends:
base >= 4.5 && < 5,
binary >= 0.5.1 && < 0.9,
bytestring >= 0.9 && < 0.11,
cereal >= 0.3.5 && < 0.6,
containers >= 0.3 && < 1,
hashable >= 1.0.1.1 && < 1.4,
mtl >= 2.0 && < 2.3,
text >= 0.2 && < 1.3,
time >= 1.2 && < 1.9,
transformers >= 0.2 && < 0.6,
transformers-compat >= 0.3 && < 1,
unordered-containers >= 0.2 && < 0.3,
scientific >= 0.0 && < 1,
void >= 0.6 && < 1
if impl(ghc >= 7.4 && < 7.6)
build-depends: ghc-prim
exposed-modules:
Data.Bytes.Get
Data.Bytes.Put
Data.Bytes.Serial
Data.Bytes.Signed
Data.Bytes.VarInt
ghc-options: -Wall -fwarn-tabs -O2
c-sources: cbits/i2d.c
hs-source-dirs: src
test-suite doctests
type: exitcode-stdio-1.0
main-is: doctests.hs
ghc-options: -Wall -threaded
hs-source-dirs: tests
if !flag(test-doctests)
buildable: False
else
build-depends:
base,
bytes,
directory >= 1.0,
doctest >= 0.11.1 && <0.13,
filepath >= 1.2
1
0
Hello community,
here is the log from the commit of package ghc-bits for openSUSE:Factory checked in at 2017-08-31 20:46:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-bits (Old)
and /work/SRC/openSUSE:Factory/.ghc-bits.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-bits"
Thu Aug 31 20:46:26 2017 rev:4 rq:513212 version:0.5.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-bits/ghc-bits.changes 2017-06-04 01:52:14.224555201 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-bits.new/ghc-bits.changes 2017-08-31 20:46:28.635553559 +0200
@@ -1,0 +2,5 @@
+Sat Jul 29 03:02:01 UTC 2017 - psimons(a)suse.com
+
+- Update to version 0.5.1 revision 1.
+
+-------------------------------------------------------------------
New:
----
bits.cabal
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-bits.spec ++++++
--- /var/tmp/diff_new_pack.paYTRD/_old 2017-08-31 20:46:29.939370550 +0200
+++ /var/tmp/diff_new_pack.paYTRD/_new 2017-08-31 20:46:29.955368305 +0200
@@ -26,6 +26,7 @@
Group: Development/Languages/Other
Url: https://hackage.haskell.org/package/%{pkg_name}
Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{ve…
+Source1: https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/1.cabal…
BuildRequires: ghc-Cabal-devel
BuildRequires: ghc-bytes-devel
BuildRequires: ghc-cabal-doctest-devel
@@ -53,6 +54,7 @@
%prep
%setup -q -n %{pkg_name}-%{version}
+cp -p %{SOURCE1} %{pkg_name}.cabal
%build
%ghc_lib_build
++++++ bits.cabal ++++++
name: bits
category: Data, Serialization
version: 0.5.1
x-revision: 1
license: BSD3
cabal-version: >= 1.8
license-file: LICENSE
author: Edward A. Kmett
maintainer: Edward A. Kmett <ekmett(a)gmail.com>
stability: experimental
homepage: http://github.com/ekmett/bits
bug-reports: http://github.com/ekmett/bits/issues
copyright: Copyright (C) 2013 Edward A. Kmett
build-type: Custom
tested-with: GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.1
synopsis: Various bit twiddling and bitwise serialization primitives
description: Various bit twiddling and bitwise serialization primitives
extra-source-files:
.travis.yml
.ghci
.gitignore
.vim.custom
travis/cabal-apt-install
travis/config
AUTHORS.markdown
README.markdown
CHANGELOG.markdown
source-repository head
type: git
location: git://github.com/ekmett/bits.git
custom-setup
setup-depends:
base >= 4 && < 5,
Cabal,
cabal-doctest >= 1 && < 1.1
-- You can disable the doctests test suite with -f-test-doctests
flag test-doctests
default: True
manual: True
library
build-depends:
base >= 4.7 && < 5,
bytes >= 0.11 && < 1,
mtl >= 2.0 && < 2.3,
transformers >= 0.2 && < 0.6
exposed-modules:
Data.Bits.Coding
Data.Bits.Coded
Data.Bits.Extras
c-sources: cbits/debruijn.c
ghc-options: -Wall -fwarn-tabs -O2
hs-source-dirs: src
test-suite doctests
type: exitcode-stdio-1.0
main-is: doctests.hs
ghc-options: -Wall -threaded
hs-source-dirs: tests
c-sources: cbits/debruijn.c
if !flag(test-doctests)
buildable: False
else
build-depends:
base,
bits,
doctest >= 0.11.1 && < 0.13
1
0
Hello community,
here is the log from the commit of package ghc-binary-parser for openSUSE:Factory checked in at 2017-08-31 20:46:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-binary-parser (Old)
and /work/SRC/openSUSE:Factory/.ghc-binary-parser.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-binary-parser"
Thu Aug 31 20:46:24 2017 rev:2 rq:513211 version:0.5.5
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-binary-parser/ghc-binary-parser.changes 2017-02-28 23:47:24.420055769 +0100
+++ /work/SRC/openSUSE:Factory/.ghc-binary-parser.new/ghc-binary-parser.changes 2017-08-31 20:46:25.723962241 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 14:06:03 UTC 2017 - psimons(a)suse.com
+
+- Update to version 0.5.5 revision 3.
+
+-------------------------------------------------------------------
Old:
----
binary-parser-0.5.2.tar.gz
New:
----
binary-parser-0.5.5.tar.gz
binary-parser.cabal
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-binary-parser.spec ++++++
--- /var/tmp/diff_new_pack.mQGf1o/_old 2017-08-31 20:46:27.431722533 +0200
+++ /var/tmp/diff_new_pack.mQGf1o/_new 2017-08-31 20:46:27.443720850 +0200
@@ -1,7 +1,7 @@
#
# spec file for package ghc-binary-parser
#
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2017 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
@@ -17,24 +17,31 @@
%global pkg_name binary-parser
+%bcond_with tests
Name: ghc-%{pkg_name}
-Version: 0.5.2
+Version: 0.5.5
Release: 0
Summary: A highly-efficient but limited parser API specialised for bytestrings
License: MIT
-Group: System/Libraries
+Group: Development/Languages/Other
Url: https://hackage.haskell.org/package/%{pkg_name}
Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{ve…
+Source1: https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/3.cabal…
BuildRequires: ghc-Cabal-devel
-# Begin cabal-rpm deps:
BuildRequires: ghc-base-prelude-devel
BuildRequires: ghc-bytestring-devel
+BuildRequires: ghc-mtl-devel
BuildRequires: ghc-rpm-macros
-BuildRequires: ghc-success-devel
BuildRequires: ghc-text-devel
BuildRequires: ghc-transformers-devel
BuildRoot: %{_tmppath}/%{name}-%{version}-build
-# End cabal-rpm deps
+%if %{with tests}
+BuildRequires: ghc-quickcheck-instances-devel
+BuildRequires: ghc-rerebase-devel
+BuildRequires: ghc-tasty-devel
+BuildRequires: ghc-tasty-hunit-devel
+BuildRequires: ghc-tasty-quickcheck-devel
+%endif
%description
A highly-efficient but limited parser API specialised for bytestrings.
@@ -52,15 +59,16 @@
%prep
%setup -q -n %{pkg_name}-%{version}
-
+cp -p %{SOURCE1} %{pkg_name}.cabal
%build
%ghc_lib_build
-
%install
%ghc_lib_install
+%check
+%cabal_test
%post devel
%ghc_pkg_recache
++++++ binary-parser-0.5.2.tar.gz -> binary-parser-0.5.5.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/binary-parser-0.5.2/binary-parser.cabal new/binary-parser-0.5.5/binary-parser.cabal
--- old/binary-parser-0.5.2/binary-parser.cabal 2016-02-12 09:00:10.000000000 +0100
+++ new/binary-parser-0.5.5/binary-parser.cabal 2017-04-08 21:51:54.000000000 +0200
@@ -1,15 +1,15 @@
name:
binary-parser
version:
- 0.5.2
+ 0.5.5
synopsis:
A highly-efficient but limited parser API specialised for bytestrings
category:
Parser, Binary
homepage:
- https://github.com/nikita-volkov/binary-parser
+ https://github.com/nikita-volkov/binary-parser
bug-reports:
- https://github.com/nikita-volkov/binary-parser/issues
+ https://github.com/nikita-volkov/binary-parser/issues
author:
Nikita Volkov <nikita.y.volkov(a)mail.ru>
maintainer:
@@ -25,19 +25,17 @@
cabal-version:
>=1.10
-
source-repository head
type:
git
location:
git://github.com/nikita-volkov/binary-parser.git
-
library
hs-source-dirs:
library
default-extensions:
- Arrows, BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFunctor, DeriveGeneric, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, ImpredicativeTypes, LambdaCase, LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TupleSections, TypeFamilies, TypeOperators, UnboxedTuples
+ Arrows, BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFoldable, DeriveFunctor, DeriveGeneric, DeriveTraversable, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, LambdaCase, LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TupleSections, TypeFamilies, TypeOperators, UnboxedTuples
default-language:
Haskell2010
other-modules:
@@ -46,10 +44,31 @@
BinaryParser
build-depends:
-- data:
- success >= 0.2 && < 0.3,
bytestring >= 0.10 && < 0.11,
text >= 1 && < 2,
-- general:
- transformers >= 0.3 && < 0.6,
- base-prelude < 2
+ mtl == 2.*,
+ transformers >= 0.4 && < 0.6,
+ base-prelude < 2,
+ base >= 4.7 && < 5
+test-suite tests
+ type:
+ exitcode-stdio-1.0
+ hs-source-dirs:
+ tests
+ main-is:
+ Main.hs
+ default-extensions:
+ Arrows, BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFoldable, DeriveFunctor, DeriveGeneric, DeriveTraversable, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, LambdaCase, LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TupleSections, TypeFamilies, TypeOperators, UnboxedTuples
+ default-language:
+ Haskell2010
+ build-depends:
+ binary-parser,
+ -- testing:
+ tasty == 0.11.*,
+ tasty-quickcheck == 0.8.*,
+ tasty-hunit == 0.9.*,
+ quickcheck-instances >= 0.3.11 && < 0.4,
+ -- general:
+ rerebase == 1.*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/binary-parser-0.5.2/library/BinaryParser/Prelude.hs new/binary-parser-0.5.5/library/BinaryParser/Prelude.hs
--- old/binary-parser-0.5.2/library/BinaryParser/Prelude.hs 2016-02-12 09:00:10.000000000 +0100
+++ new/binary-parser-0.5.5/library/BinaryParser/Prelude.hs 2017-04-08 21:51:54.000000000 +0200
@@ -13,9 +13,22 @@
-- transformers
-------------------------
-import Control.Monad.Trans.State.Strict as Exports hiding (liftCallCC, liftCatch)
-import Control.Monad.Trans.Reader as Exports hiding (liftCallCC, liftCatch)
+import Control.Monad.IO.Class as Exports
import Control.Monad.Trans.Class as Exports
+import Control.Monad.Trans.Cont as Exports hiding (shift, callCC)
+import Control.Monad.Trans.Except as Exports (ExceptT(ExceptT), Except, except, runExcept, runExceptT, mapExcept, mapExceptT, withExcept, withExceptT, throwE, catchE)
+import Control.Monad.Trans.Maybe as Exports
+import Control.Monad.Trans.Reader as Exports (Reader, runReader, mapReader, withReader, ReaderT(ReaderT), runReaderT, mapReaderT, withReaderT)
+import Control.Monad.Trans.State.Strict as Exports (State, runState, evalState, execState, mapState, withState, StateT(StateT), runStateT, evalStateT, execStateT, mapStateT, withStateT)
+import Control.Monad.Trans.Writer.Strict as Exports (Writer, runWriter, execWriter, mapWriter, WriterT(..), execWriterT, mapWriterT)
+
+-- mtl
+-------------------------
+import Control.Monad.Cont.Class as Exports
+import Control.Monad.Error.Class as Exports hiding (Error(..))
+import Control.Monad.Reader.Class as Exports
+import Control.Monad.State.Class as Exports
+import Control.Monad.Writer.Class as Exports
-- bytestring
-------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/binary-parser-0.5.2/library/BinaryParser.hs new/binary-parser-0.5.5/library/BinaryParser.hs
--- old/binary-parser-0.5.2/library/BinaryParser.hs 2016-02-12 09:00:10.000000000 +0100
+++ new/binary-parser-0.5.5/library/BinaryParser.hs 2017-04-08 21:51:54.000000000 +0200
@@ -1,22 +1,37 @@
+{-# LANGUAGE CPP #-}
module BinaryParser
(
BinaryParser,
run,
failure,
byte,
+ matchingByte,
bytesOfSize,
+ bytesWhile,
unitOfSize,
unitOfBytes,
+ unitWhile,
remainders,
+ fold,
endOfInput,
sized,
+ -- * Extras
+ storableOfSize,
+ beWord16,
+ leWord16,
+ beWord32,
+ leWord32,
+ beWord64,
+ leWord64,
+ asciiIntegral,
)
where
-import BinaryParser.Prelude
+import BinaryParser.Prelude hiding (fold)
import qualified Data.ByteString as ByteString
import qualified Data.ByteString.Unsafe as ByteString
-import qualified Success.Pure as Success
+import qualified Data.ByteString.Internal as A
+import qualified BinaryParser.Prelude as B
-- |
@@ -28,22 +43,22 @@
-- Does not generate fancy error-messages,
-- which contributes to its efficiency.
newtype BinaryParser a =
- BinaryParser ( StateT ByteString ( Success.Success Text ) a )
- deriving ( Functor , Applicative , Alternative , Monad , MonadPlus )
+ BinaryParser ( StateT ByteString ( Except Text ) a )
+ deriving ( Functor , Applicative , Alternative , Monad , MonadPlus , MonadError Text )
-- |
-- Apply a parser to bytes.
{-# INLINE run #-}
run :: BinaryParser a -> ByteString -> Either Text a
run (BinaryParser parser) input =
- mapLeft fold (Success.asEither (evalStateT parser input))
+ runExcept (evalStateT parser input)
-- |
-- Fail with a message.
{-# INLINE failure #-}
failure :: Text -> BinaryParser a
failure text =
- BinaryParser (lift (Success.failure text))
+ BinaryParser (lift (throwE text))
-- |
-- Consume a single byte.
@@ -52,10 +67,36 @@
byte =
BinaryParser $ StateT $ \remainders ->
if ByteString.null remainders
- then Success.failure "End of input"
+ then throwE "End of input"
else pure (ByteString.unsafeHead remainders, ByteString.unsafeDrop 1 remainders)
-- |
+-- Consume a single byte, which satisfies the predicate.
+{-# INLINE satisfyingByte #-}
+satisfyingByte :: (Word8 -> Bool) -> BinaryParser Word8
+satisfyingByte predicate =
+ BinaryParser $ StateT $ \remainders ->
+ case ByteString.uncons remainders of
+ Nothing -> throwE "End of input"
+ Just (head, tail) ->
+ if predicate head
+ then pure (head, tail)
+ else throwE "Byte doesn't satisfy a predicate"
+
+-- |
+-- Consume a single byte, which satisfies the predicate.
+{-# INLINE matchingByte #-}
+matchingByte :: (Word8 -> Either Text a) -> BinaryParser a
+matchingByte matcher =
+ BinaryParser $ StateT $ \remainders ->
+ case ByteString.uncons remainders of
+ Nothing -> throwE "End of input"
+ Just (head, tail) ->
+ case matcher head of
+ Right result -> pure (result, tail)
+ Left error -> throwE error
+
+-- |
-- Consume an amount of bytes.
{-# INLINE bytesOfSize #-}
bytesOfSize :: Int -> BinaryParser ByteString
@@ -63,7 +104,15 @@
BinaryParser $ StateT $ \remainders ->
if ByteString.length remainders >= size
then return (ByteString.unsafeTake size remainders, ByteString.unsafeDrop size remainders)
- else Success.failure "End of input"
+ else throwE "End of input"
+
+-- |
+-- Consume multiple bytes, which satisfy the predicate.
+{-# INLINE bytesWhile #-}
+bytesWhile :: (Word8 -> Bool) -> BinaryParser ByteString
+bytesWhile predicate =
+ BinaryParser $ StateT $ \remainders ->
+ pure (ByteString.span predicate remainders)
-- |
-- Skip an amount of bytes.
@@ -73,7 +122,7 @@
BinaryParser $ StateT $ \remainders ->
if ByteString.length remainders >= size
then return ((), ByteString.unsafeDrop size remainders)
- else Success.failure "End of input"
+ else throwE "End of input"
-- |
-- Skip specific bytes, while failing if they don't match.
@@ -83,7 +132,15 @@
BinaryParser $ StateT $ \remainders ->
if ByteString.isPrefixOf bytes remainders
then return ((), ByteString.unsafeDrop (ByteString.length bytes) remainders)
- else Success.failure "Bytes don't match"
+ else throwE "Bytes don't match"
+
+-- |
+-- Skip bytes, which satisfy the predicate.
+{-# INLINE unitWhile #-}
+unitWhile :: (Word8 -> Bool) -> BinaryParser ()
+unitWhile predicate =
+ BinaryParser $ StateT $ \remainders ->
+ pure ((), ByteString.dropWhile predicate remainders)
-- |
-- Consume all the remaining bytes.
@@ -99,7 +156,24 @@
endOfInput =
BinaryParser $ StateT $ \case
"" -> return ((), ByteString.empty)
- _ -> Success.failure "Not the end of input"
+ _ -> throwE "Not the end of input"
+
+-- |
+-- Left-fold the bytes, terminating before the byte,
+-- on which the step function returns Nothing.
+{-# INLINE fold #-}
+fold :: (a -> Word8 -> Maybe a) -> a -> BinaryParser a
+fold step init =
+ BinaryParser $ StateT $ return . loop init
+ where
+ loop !accumulator remainders =
+ case ByteString.uncons remainders of
+ Nothing -> (accumulator, remainders)
+ Just (head, tail) ->
+ case step accumulator head of
+ Just newAccumulator ->
+ loop newAccumulator tail
+ Nothing -> (accumulator, remainders)
-- |
-- Run a subparser passing it a chunk of the current input of the specified size.
@@ -111,4 +185,104 @@
then
evalStateT stateT (ByteString.unsafeTake size remainders) &
fmap (\result -> (result, ByteString.unsafeDrop size remainders))
- else Success.failure "End of input"
+ else throwE "End of input"
+
+-- |
+-- Storable value of the given amount of bytes.
+{-# INLINE storableOfSize #-}
+storableOfSize :: Storable a => Int -> BinaryParser a
+storableOfSize size =
+ BinaryParser $ StateT $ \(A.PS payloadFP offset length) ->
+ if length >= size
+ then let result =
+ unsafeDupablePerformIO $ withForeignPtr payloadFP $ \ptr -> peekByteOff (castPtr ptr) offset
+ newRemainder =
+ A.PS payloadFP (offset + size) (length - size)
+ in return (result, newRemainder)
+ else throwE "End of input"
+
+-- | Big-endian word of 2 bytes.
+{-# INLINE beWord16 #-}
+beWord16 :: BinaryParser Word16
+#ifdef WORDS_BIGENDIAN
+beWord16 =
+ storableOfSize 2
+#else
+beWord16 =
+ byteSwap16 <$> storableOfSize 2
+#endif
+
+-- | Little-endian word of 2 bytes.
+{-# INLINE leWord16 #-}
+leWord16 :: BinaryParser Word16
+#ifdef WORDS_BIGENDIAN
+leWord16 =
+ byteSwap16 <$> storableOfSize 2
+#else
+leWord16 =
+ storableOfSize 2
+#endif
+
+-- | Big-endian word of 4 bytes.
+{-# INLINE beWord32 #-}
+beWord32 :: BinaryParser Word32
+#ifdef WORDS_BIGENDIAN
+beWord32 =
+ storableOfSize 4
+#else
+beWord32 =
+ byteSwap32 <$> storableOfSize 4
+#endif
+
+-- | Little-endian word of 4 bytes.
+{-# INLINE leWord32 #-}
+leWord32 :: BinaryParser Word32
+#ifdef WORDS_BIGENDIAN
+leWord32 =
+ byteSwap32 <$> storableOfSize 4
+#else
+leWord32 =
+ storableOfSize 4
+#endif
+
+-- | Big-endian word of 8 bytes.
+{-# INLINE beWord64 #-}
+beWord64 :: BinaryParser Word64
+#ifdef WORDS_BIGENDIAN
+beWord64 =
+ storableOfSize 8
+#else
+beWord64 =
+ byteSwap64 <$> storableOfSize 8
+#endif
+
+-- | Little-endian word of 8 bytes.
+{-# INLINE leWord64 #-}
+leWord64 :: BinaryParser Word64
+#ifdef WORDS_BIGENDIAN
+leWord64 =
+ byteSwap64 <$> storableOfSize 8
+#else
+leWord64 =
+ storableOfSize 8
+#endif
+
+-- |
+-- Integral number encoded in ASCII.
+{-# INLINE asciiIntegral #-}
+asciiIntegral :: Integral a => BinaryParser a
+asciiIntegral =
+ do
+ firstDigit <- matchingByte byteDigit
+ fold step firstDigit
+ where
+ byteDigit byte =
+ case byte - 48 of
+ subtracted ->
+ if subtracted <= 9
+ then Right (fromIntegral subtracted)
+ else Left "Not an ASCII decimal byte"
+ step state byte =
+ case byteDigit byte of
+ Right digit -> Just (state * 10 + digit)
+ _ -> Nothing
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/binary-parser-0.5.2/tests/Main.hs new/binary-parser-0.5.5/tests/Main.hs
--- old/binary-parser-0.5.2/tests/Main.hs 1970-01-01 01:00:00.000000000 +0100
+++ new/binary-parser-0.5.5/tests/Main.hs 2017-04-08 21:51:54.000000000 +0200
@@ -0,0 +1,49 @@
+module Main where
+
+import Prelude
+import Test.QuickCheck.Instances
+import Test.Tasty
+import Test.Tasty.HUnit
+import Test.Tasty.QuickCheck
+import qualified Data.ByteString as A
+import qualified Data.ByteString.Builder as C
+import qualified Data.ByteString.Lazy as D
+import qualified BinaryParser as B
+
+
+main =
+ defaultMain $
+ testGroup "All tests" $
+ [
+ builderIsomporhismProperty "byte" B.byte C.word8
+ ,
+ builderIsomporhismProperty "beWord16" B.beWord16 C.word16BE
+ ,
+ builderIsomporhismProperty "beWord32" B.beWord32 C.word32BE
+ ,
+ expectedResultTest "byte consumes" ((,) <$> B.byte <*> B.beWord32) (49, 4) "1\NUL\NUL\NUL\EOT"
+ ,
+ expectedResultTest "Applicative composition" ((,) <$> B.beWord16 <*> B.beWord16) (1, 2) "\NUL\SOH\NUL\STX"
+ ,
+ let parser =
+ do
+ a <- B.beWord16
+ b <- B.beWord16
+ return (a, b)
+ in expectedResultTest "Monadic composition" parser (1, 2) "\NUL\SOH\NUL\STX"
+ ]
+
+builderIsomporhismProperty details parser valueToBuilder =
+ testProperty name $ \value ->
+ B.run parser (D.toStrict (C.toLazyByteString (valueToBuilder value))) ===
+ Right value
+ where
+ name =
+ "builderIsomporhismProperty: " <> details
+
+expectedResultTest details parser expectedValue input =
+ testCase name $ do
+ assertEqual "" (Right expectedValue) (B.run parser input)
+ where
+ name =
+ "expectedResultTest: " <> details
++++++ binary-parser.cabal ++++++
name:
binary-parser
version:
0.5.5
x-revision: 3
synopsis:
A highly-efficient but limited parser API specialised for bytestrings
category:
Parser, Binary
homepage:
https://github.com/nikita-volkov/binary-parser
bug-reports:
https://github.com/nikita-volkov/binary-parser/issues
author:
Nikita Volkov <nikita.y.volkov(a)mail.ru>
maintainer:
Nikita Volkov <nikita.y.volkov(a)mail.ru>
copyright:
(c) 2015, Nikita Volkov
license:
MIT
license-file:
LICENSE
build-type:
Simple
cabal-version:
>=1.10
source-repository head
type:
git
location:
git://github.com/nikita-volkov/binary-parser.git
library
hs-source-dirs:
library
default-extensions:
Arrows, BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFoldable, DeriveFunctor, DeriveGeneric, DeriveTraversable, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, LambdaCase, LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TupleSections, TypeFamilies, TypeOperators, UnboxedTuples
default-language:
Haskell2010
other-modules:
BinaryParser.Prelude
exposed-modules:
BinaryParser
build-depends:
-- data:
bytestring >= 0.10 && < 0.11,
text >= 1 && < 2,
-- general:
mtl == 2.*,
transformers >= 0.4 && < 0.6,
base-prelude >= 1.2 && < 2,
base >= 4.7 && < 5
test-suite tests
type:
exitcode-stdio-1.0
hs-source-dirs:
tests
main-is:
Main.hs
default-extensions:
Arrows, BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFoldable, DeriveFunctor, DeriveGeneric, DeriveTraversable, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, LambdaCase, LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TupleSections, TypeFamilies, TypeOperators, UnboxedTuples
default-language:
Haskell2010
build-depends:
binary-parser,
-- testing:
tasty == 0.11.*,
tasty-quickcheck == 0.8.*,
tasty-hunit == 0.9.*,
quickcheck-instances >= 0.3.11 && < 0.4,
-- general:
rerebase == 1.*
1
0
Hello community,
here is the log from the commit of package ghc-base-orphans for openSUSE:Factory checked in at 2017-08-31 20:46:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-base-orphans (Old)
and /work/SRC/openSUSE:Factory/.ghc-base-orphans.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-base-orphans"
Thu Aug 31 20:46:22 2017 rev:9 rq:513209 version:0.6
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-base-orphans/ghc-base-orphans.changes 2016-07-21 08:00:32.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-base-orphans.new/ghc-base-orphans.changes 2017-08-31 20:46:23.668250788 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 14:06:31 UTC 2017 - psimons(a)suse.com
+
+- Update to version 0.6.
+
+-------------------------------------------------------------------
Old:
----
base-orphans-0.5.4.tar.gz
New:
----
base-orphans-0.6.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-base-orphans.spec ++++++
--- /var/tmp/diff_new_pack.bNNy0H/_old 2017-08-31 20:46:24.908076762 +0200
+++ /var/tmp/diff_new_pack.bNNy0H/_new 2017-08-31 20:46:24.912076200 +0200
@@ -1,7 +1,7 @@
#
# spec file for package ghc-base-orphans
#
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2017 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,22 +19,20 @@
%global pkg_name base-orphans
%bcond_with tests
Name: ghc-%{pkg_name}
-Version: 0.5.4
+Version: 0.6
Release: 0
Summary: Backwards-compatible orphan instances for base
License: MIT
-Group: System/Libraries
+Group: Development/Languages/Other
Url: https://hackage.haskell.org/package/%{pkg_name}
Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{ve…
BuildRequires: ghc-Cabal-devel
BuildRequires: ghc-rpm-macros
BuildRoot: %{_tmppath}/%{name}-%{version}-build
-# Begin cabal-rpm deps:
%if %{with tests}
BuildRequires: ghc-QuickCheck-devel
BuildRequires: ghc-hspec-devel
%endif
-# End cabal-rpm deps
%description
'base-orphans' defines orphan instances that mimic instances available in later
@@ -60,20 +58,14 @@
%prep
%setup -q -n %{pkg_name}-%{version}
-
%build
%ghc_lib_build
-
%install
%ghc_lib_install
-
%check
-%if %{with tests}
-%{cabal} test
-%endif
-
+%cabal_test
%post devel
%ghc_pkg_recache
@@ -87,6 +79,6 @@
%files devel -f %{name}-devel.files
%defattr(-,root,root,-)
-%doc README.markdown
+%doc CHANGES.markdown README.markdown
%changelog
++++++ base-orphans-0.5.4.tar.gz -> base-orphans-0.6.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/base-orphans-0.5.4/CHANGES.markdown new/base-orphans-0.6/CHANGES.markdown
--- old/base-orphans-0.5.4/CHANGES.markdown 2016-04-11 16:06:11.000000000 +0200
+++ new/base-orphans-0.6/CHANGES.markdown 2017-04-10 15:10:19.000000000 +0200
@@ -1,3 +1,15 @@
+## Changes in 0.6 [2017.04.10]
+ - Backported new instances from GHC 8.2/`base-4.10`
+ (see https://github.com/haskell-compat/base-orphans/issues/39)
+ * `Data` instance for `Const`
+ * `Eq1`, `Ord1`, `Read1`, and `Show1` instances for `NonEmpty`
+ * `Semigroup` instances for `IO`, `Event`, and `Lifetime`
+ - Backported `Typeable` instances for `(:+:)`, `(:*:)`, `(:.:)`, `M1`, `Rec1`,
+ `ArrowMonad`, `Kleisli`, `WrappedArrow`, `WrappedMonad`, and `Any` on GHC
+ 7.6 and earlier
+ - Backported `Data` instances for `(:+:)`, `(:*:)`, `(:.:)`, `M1`, and `Rec1`
+ on GHC 7.6 and earlier
+
## Changes in 0.5.4
- Backported `Bits`, `FiniteBits`, `Floating`, `Fractional`, `Integral`,
`IsString`, `Num`, `Real`, `RealFloat`, and `RealFrac` instances for
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/base-orphans-0.5.4/LICENSE new/base-orphans-0.6/LICENSE
--- old/base-orphans-0.5.4/LICENSE 2016-04-11 16:06:11.000000000 +0200
+++ new/base-orphans-0.6/LICENSE 2017-04-10 15:10:19.000000000 +0200
@@ -1,4 +1,4 @@
-Copyright (c) 2015-2016 Simon Hengel <sol(a)typeful.net>, João Cristóvão <jmacristovao(a)gmail.com>, Ryan Scott <ryan.gl.scott(a)gmail.com>
+Copyright (c) 2015-2017 Simon Hengel <sol(a)typeful.net>, João Cristóvão <jmacristovao(a)gmail.com>, Ryan Scott <ryan.gl.scott(a)gmail.com>
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/base-orphans-0.5.4/README.markdown new/base-orphans-0.6/README.markdown
--- old/base-orphans-0.5.4/README.markdown 2016-04-11 16:06:11.000000000 +0200
+++ new/base-orphans-0.6/README.markdown 2017-04-10 15:10:19.000000000 +0200
@@ -40,13 +40,14 @@
* `Bits` instance for `Bool`
* `Bits`, `Bounded`, and `Integral` instances for `CDev`
* `Bits`, `Bounded`, `Enum`, `FiniteBits`, `Floating`, `Fractional`, `Integral`, `IsString`, `Ix`, `Num`, `Real`, `RealFloat`, `RealFrac`, and `Storable` instances for `Const` and `Identity`
- * `Data` instances for `All` and `Any`
+ * `Data` instances for `All`, `Any`, and `Const`
* `Data`, `MonadFix` and `MonadZip` instances for `Alt`, `Dual`, `First`, `Last`,
`Product`, and `Sum`
* `Data` and `IsList` instances for `Version`
* `Eq` and `Ord` instances for `Control.Exception.ErrorCall`
* `Eq`, `Ord`, `Read`, and `Show` instances for data types in `GHC.Generics`
* `Eq`, `Ord`, `Read`, `Show`, `Foldable`, and `Traversable` instances for `ZipList`
+ * `Eq1`, `Ord1`, `Read1`, and `Show1` instances for `NonEmpty`
* `Foldable` instance for `Either`, `(,)` and `Const`
* `Functor` instance for `Handler`, `ArgOrder`, `OptDescr`, and `ArgDescr`
* `Functor`, `Applicative`, `Alternative`, and `MonadPlus` instances for `ArrowMonad`
@@ -58,6 +59,7 @@
* `Num` instance for `Sum` and `Product`
* `Read` instance for `Fixed`
* `Read` and `Show` instances for `Down`
+ * `Semigroup` instances for `IO`, `Event` and `Lifetime`
* `Show` instance for `Fingerprint`
* `Storable` instance for `()`, `Complex`, and `Ratio`
* `Traversable` instance for `Either`, `(,)` and `Const`
@@ -76,6 +78,8 @@
## Supported versions of GHC/`base`
+ * `ghc-8.2.1` / `base-4.10.0.0`
+ * `ghc-8.0.2` / `base-4.9.1.0`
* `ghc-8.0.1` / `base-4.9.0.0`
* `ghc-7.10.3` / `base-4.8.2.0`
* `ghc-7.10.2` / `base-4.8.1.0`
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/base-orphans-0.5.4/base-orphans.cabal new/base-orphans-0.6/base-orphans.cabal
--- old/base-orphans-0.5.4/base-orphans.cabal 2016-04-11 16:06:11.000000000 +0200
+++ new/base-orphans-0.6/base-orphans.cabal 2017-04-10 15:10:19.000000000 +0200
@@ -1,9 +1,9 @@
--- This file has been generated from package.yaml by hpack version 0.12.0.
+-- This file has been generated from package.yaml by hpack version 0.17.0.
--
-- see: https://github.com/sol/hpack
name: base-orphans
-version: 0.5.4
+version: 0.6
synopsis: Backwards-compatible orphan instances for base
description: @base-orphans@ defines orphan instances that mimic instances available in later versions of @base@ to a wider (older) range of compilers. @base-orphans@ does not export anything except the orphan instances themselves and complements @<http://hackage.haskell.org/package/base-compat base-compat>@.
See the README for what instances are covered: <https://github.com/haskell-compat/base-orphans#readme>. See also the <https://github.com/haskell-compat/base-orphans#what-is-not-covered what is not covered> section.
@@ -16,9 +16,9 @@
maintainer: Simon Hengel <sol(a)typeful.net>,
João Cristóvão <jmacristovao(a)gmail.com>,
Ryan Scott <ryan.gl.scott(a)gmail.com>
-copyright: (c) 2012-2016 Simon Hengel,
- (c) 2014-2016 João Cristóvão,
- (c) 2015-2016 Ryan Scott
+copyright: (c) 2012-2017 Simon Hengel,
+ (c) 2014-2017 João Cristóvão,
+ (c) 2015-2017 Ryan Scott
license: MIT
license-file: LICENSE
build-type: Simple
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/base-orphans-0.5.4/src/Data/Orphans/Prelude.hs new/base-orphans-0.6/src/Data/Orphans/Prelude.hs
--- old/base-orphans-0.5.4/src/Data/Orphans/Prelude.hs 2016-04-11 16:06:11.000000000 +0200
+++ new/base-orphans-0.6/src/Data/Orphans/Prelude.hs 2017-04-10 15:10:19.000000000 +0200
@@ -1,4 +1,9 @@
{-# LANGUAGE CPP #-}
+
+#if __GLASGOW_HASKELL__ >= 706
+{-# LANGUAGE ExplicitNamespaces #-}
+#endif
+
{-# OPTIONS_GHC -fno-warn-deprecations #-}
{-|
@@ -10,7 +15,7 @@
Note that this module does not export any modules that could introduce name clashes.
-}
module Data.Orphans.Prelude
-#if MIN_VERSION_base(4,9,0)
+#if MIN_VERSION_base(4,10,0)
() where
#else
(module OrphansPrelude, realPart, imagPart) where
@@ -25,6 +30,7 @@
import Data.Bits as OrphansPrelude
import Data.Char as OrphansPrelude
import Data.Complex as OrphansPrelude (Complex(..))
+import Data.Data as OrphansPrelude (Data)
import Data.Fixed as OrphansPrelude
import Data.Int as OrphansPrelude
import Data.Ix as OrphansPrelude
@@ -85,7 +91,7 @@
# if MIN_VERSION_base(4,6,0)
import GHC.GHCi as OrphansPrelude
-import GHC.TypeLits as OrphansPrelude
+import GHC.TypeLits as OrphansPrelude hiding (type (*))
# endif
# if MIN_VERSION_base(4,6,0) && !(MIN_VERSION_base(4,8,2))
@@ -106,6 +112,12 @@
import Data.Functor.Identity as OrphansPrelude
# endif
+# if MIN_VERSION_base(4,9,0)
+import Data.Functor.Classes as OrphansPrelude
+import Data.List.NonEmpty as OrphansPrelude (NonEmpty(..))
+import Data.Semigroup as OrphansPrelude (Semigroup(..), stimesMonoid)
+# endif
+
# if MIN_VERSION_base(4,4,0)
realPart, imagPart :: Complex a -> a
#else
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/base-orphans-0.5.4/src/Data/Orphans.hs new/base-orphans-0.6/src/Data/Orphans.hs
--- old/base-orphans-0.5.4/src/Data/Orphans.hs 2016-04-11 16:06:11.000000000 +0200
+++ new/base-orphans-0.6/src/Data/Orphans.hs 2017-04-10 15:10:19.000000000 +0200
@@ -24,6 +24,10 @@
{-# LANGUAGE NullaryTypeClasses #-}
#endif
+#if __GLASGOW_HASKELL__ >= 800
+{-# LANGUAGE TypeInType #-}
+#endif
+
{-# OPTIONS_GHC -fno-warn-deprecations #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
{-|
@@ -65,7 +69,7 @@
# endif
#endif
-#if !(MIN_VERSION_base(4,9,0))
+#if !(MIN_VERSION_base(4,10,0))
import Data.Orphans.Prelude
#endif
@@ -877,17 +881,15 @@
empty = Comp1 empty
Comp1 x <|> Comp1 y = Comp1 (x <|> y)
-# if MIN_VERSION_base(4,7,0)
-deriving instance (Data (f p), Typeable f, Data p) => Data (Rec1 f p)
-deriving instance (Data p, Data (f p), Typeable c, Typeable i, Typeable f)
+deriving instance (Data (f p), Typeable1 f, Data p) => Data (Rec1 f p)
+deriving instance (Data p, Data (f p), Typeable c, Typeable i, Typeable1 f)
=> Data (M1 i c f p)
-deriving instance (Typeable f, Typeable g, Data p, Data (f p), Data (g p))
+deriving instance (Typeable1 f, Typeable1 g, Data p, Data (f p), Data (g p))
=> Data ((f :+: g) p)
-deriving instance (Typeable f, Typeable g, Data p, Data (f p), Data (g p))
+deriving instance (Typeable1 f, Typeable1 g, Data p, Data (f p), Data (g p))
=> Data ((f :*: g) p)
-deriving instance (Typeable f, Typeable g, Data p, Data (f (g p)))
+deriving instance (Typeable1 f, Typeable1 g, Data p, Data (f (g p)))
=> Data ((f :.: g) p)
-# endif
# if MIN_VERSION_base(4,8,0)
instance Bifunctor (K1 i) where
@@ -896,6 +898,46 @@
# endif
#endif
+#if !(MIN_VERSION_base(4,10,0))
+# if MIN_VERSION_base(4,9,0)
+deriving instance (Typeable k, Data a, Typeable (b :: k)) => Data (Const a b)
+# else
+deriving instance (Data a, Data b) => Data (Const a b)
+# endif
+
+# if MIN_VERSION_base(4,9,0)
+instance Eq1 NonEmpty where
+ liftEq eq (a :| as) (b :| bs) = eq a b && liftEq eq as bs
+
+instance Ord1 NonEmpty where
+ liftCompare cmp (a :| as) (b :| bs) = cmp a b <> liftCompare cmp as bs
+
+instance Read1 NonEmpty where
+ liftReadsPrec rdP rdL p s = readParen (p > 5) (\s' -> do
+ (a, s'') <- rdP 6 s'
+ (":|", s''') <- lex s''
+ (as, s'''') <- rdL s'''
+ return (a :| as, s'''')) s
+
+instance Show1 NonEmpty where
+ liftShowsPrec shwP shwL p (a :| as) = showParen (p > 5) $
+ shwP 6 a . showString " :| " . shwL as
+
+instance Semigroup a => Semigroup (IO a) where
+ (<>) = liftA2 (<>)
+
+# if !defined(mingw32_HOST_OS) && !defined(ghcjs_HOST_OS)
+instance Semigroup Event where
+ (<>) = mappend
+ stimes = stimesMonoid
+
+instance Semigroup Lifetime where
+ (<>) = mappend
+ stimes = stimesMonoid
+# endif
+# endif
+#endif
+
#if __GLASGOW_HASKELL__ < 710
deriving instance Typeable All
deriving instance Typeable AnnotationWrapper
@@ -984,6 +1026,83 @@
deriving instance Typeable S
deriving instance Typeable1 U1
deriving instance Typeable1 V1
+
+# if __GLASGOW_HASKELL__ >= 708
+-- Data types which use poly-kinded Typeable...
+deriving instance Typeable (:+:)
+deriving instance Typeable (:*:)
+deriving instance Typeable (:.:)
+deriving instance Typeable M1
+deriving instance Typeable Rec1
+# else
+-- ...but we can hack around that if need be.
+instance (Typeable1 f, Typeable1 g) => Typeable1 (f :+: g) where
+ typeOf1 t = mkTyConApp conSumTyCon [typeOf1 (f t), typeOf1 (g t)]
+ where
+ f :: (f :+: g) p -> f p
+ f = undefined
+
+ g :: (f :+: g) p -> g p
+ g = undefined
+
+conSumTyCon :: TyCon
+conSumTyCon = mkTyCon3 ghcGenericsPackage "GHC.Generics" ":+:"
+
+instance (Typeable1 f, Typeable1 g) => Typeable1 (f :*: g) where
+ typeOf1 t = mkTyConApp conProductTyCon [typeOf1 (f t), typeOf1 (g t)]
+ where
+ f :: (f :*: g) p -> f p
+ f = undefined
+
+ g :: (f :*: g) p -> g p
+ g = undefined
+
+conProductTyCon :: TyCon
+conProductTyCon = mkTyCon3 ghcGenericsPackage "GHC.Generics" ":*:"
+
+instance (Typeable1 f, Typeable1 g) => Typeable1 (f :.: g) where
+ typeOf1 t = mkTyConApp conComposeTyCon [typeOf1 (f t), typeOf1 (g t)]
+ where
+ f :: (f :.: g) p -> f p
+ f = undefined
+
+ g :: (f :.: g) p -> g p
+ g = undefined
+
+conComposeTyCon :: TyCon
+conComposeTyCon = mkTyCon3 ghcGenericsPackage "GHC.Generics" ":.:"
+
+instance (Typeable i, Typeable c, Typeable1 f) => Typeable1 (M1 i c f) where
+ typeOf1 t = mkTyConApp m1TyCon [typeOf (i t), typeOf (c t), typeOf1 (f t)]
+ where
+ i :: M1 i c f p -> i
+ i = undefined
+
+ c :: M1 i c f p -> c
+ c = undefined
+
+ f :: M1 i c f p -> f p
+ f = undefined
+
+m1TyCon :: TyCon
+m1TyCon = mkTyCon3 ghcGenericsPackage "GHC.Generics" "M1"
+
+instance Typeable1 f => Typeable1 (Rec1 f) where
+ typeOf1 t = mkTyConApp rec1TyCon [typeOf1 (f t)]
+ where
+ f :: Rec1 f a -> f a
+ f = undefined
+
+rec1TyCon :: TyCon
+rec1TyCon = mkTyCon3 ghcGenericsPackage "GHC.Generics" "Rec1"
+
+ghcGenericsPackage :: String
+# if MIN_VERSION_base(4,6,0)
+ghcGenericsPackage = "base"
+# else
+ghcGenericsPackage = "ghc-prim"
+# endif
+# endif
# endif
# if MIN_VERSION_base(4,5,0)
@@ -1019,6 +1138,80 @@
# endif
# if __GLASGOW_HASKELL__ >= 708
+-- Data types which use poly-kinded Typeable...
+deriving instance Typeable ArrowMonad
+deriving instance Typeable Kleisli
+deriving instance Typeable WrappedArrow
+deriving instance Typeable WrappedMonad
+deriving instance Typeable Exts.Any
+# else
+-- ...but we can hack around that if need be.
+instance Typeable2 a => Typeable1 (ArrowMonad a) where
+ typeOf1 t = mkTyConApp arrowMonadTyCon [typeOf2 (a t)]
+ where
+ a :: ArrowMonad a b -> a () b
+ a = undefined
+
+arrowMonadTyCon :: TyCon
+# if MIN_VERSION_base(4,4,0)
+arrowMonadTyCon = mkTyCon3 "base" "Control.Arrow" "ArrowMonad"
+# else
+arrowMonadTyCon = mkTyCon "Control.Arrow.ArrowMonad"
+# endif
+
+instance Typeable1 m => Typeable2 (Kleisli m) where
+ typeOf2 t = mkTyConApp kleisliTyCon [typeOf1 (m t)]
+ where
+ m :: Kleisli m a b -> m b
+ m = undefined
+
+kleisliTyCon :: TyCon
+# if MIN_VERSION_base(4,4,0)
+kleisliTyCon = mkTyCon3 "base" "Control.Arrow" "Kleisli"
+# else
+kleisliTyCon = mkTyCon "Control.Arrow.Kleisli"
+# endif
+
+instance Typeable2 a => Typeable2 (WrappedArrow a) where
+ typeOf2 t = mkTyConApp wrappedArrowTyCon [typeOf2 (a t)]
+ where
+ a :: WrappedArrow a b c -> a b c
+ a = undefined
+
+wrappedArrowTyCon :: TyCon
+# if MIN_VERSION_base(4,4,0)
+wrappedArrowTyCon = mkTyCon3 "base" "Control.Applicative" "WrappedArrow"
+# else
+wrappedArrowTyCon = mkTyCon "Control.Applicative.WrappedArrow"
+# endif
+
+instance Typeable1 m => Typeable1 (WrappedMonad m) where
+ typeOf1 t = mkTyConApp wrappedMonadTyCon [typeOf1 (m t)]
+ where
+ m :: WrappedMonad m a -> m a
+ m = undefined
+
+wrappedMonadTyCon :: TyCon
+# if MIN_VERSION_base(4,4,0)
+wrappedMonadTyCon = mkTyCon3 "base" "Control.Applicative" "WrappedMonad"
+# else
+wrappedMonadTyCon = mkTyCon "Control.Applicative.WrappedMonad"
+# endif
+
+-- GHC will get confused if you try deriving a Typeable instance for Any
+-- prior to GHC 7.8, sadly
+instance Typeable Exts.Any where
+ typeOf _ = mkTyConApp anyTyCon []
+
+anyTyCon :: TyCon
+# if MIN_VERSION_base(4,4,0)
+anyTyCon = mkTyCon3 "ghc-prim" "GHC.Prim" "Any"
+# else
+anyTyCon = mkTyCon "GHC.Prim.Any"
+# endif
+# endif
+
+# if __GLASGOW_HASKELL__ >= 708
-- Data types which have more than seven type arguments
deriving instance Typeable (,,,,,,,)
deriving instance Typeable (,,,,,,,,)
@@ -1076,18 +1269,6 @@
deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)
deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)
--- Data types which require PolyKinds
-deriving instance Typeable (:+:)
-deriving instance Typeable (:*:)
-deriving instance Typeable (:.:)
-deriving instance Typeable Exts.Any
-deriving instance Typeable ArrowMonad
-deriving instance Typeable Kleisli
-deriving instance Typeable M1
-deriving instance Typeable Rec1
-deriving instance Typeable WrappedArrow
-deriving instance Typeable WrappedMonad
-
-- Typeclasses
deriving instance Typeable Arrow
deriving instance Typeable ArrowApply
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/base-orphans-0.5.4/test/Data/Version/OrphansSpec.hs new/base-orphans-0.6/test/Data/Version/OrphansSpec.hs
--- old/base-orphans-0.5.4/test/Data/Version/OrphansSpec.hs 2016-04-11 16:06:11.000000000 +0200
+++ new/base-orphans-0.6/test/Data/Version/OrphansSpec.hs 2017-04-10 15:10:19.000000000 +0200
@@ -17,7 +17,12 @@
spec = do
describe "Data Version instance" $
it "allows obtaining a Version constructor" $
- dataTypeName (dataTypeOf (Version [1,2,3] [])) `shouldBe` "Data.Version.Version"
+ dataTypeName (dataTypeOf (Version [1,2,3] [])) `shouldBe`
+#if __GLASGOW_HASKELL__ >= 801
+ "Version"
+#else
+ "Data.Version.Version"
+#endif
#if MIN_VERSION_base(4,7,0)
describe "IsList Version instance" $
1
0
Hello community,
here is the log from the commit of package ghc-avers-server for openSUSE:Factory checked in at 2017-08-31 20:46:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-avers-server (Old)
and /work/SRC/openSUSE:Factory/.ghc-avers-server.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-avers-server"
Thu Aug 31 20:46:20 2017 rev:2 rq:513208 version:0.0.19.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-avers-server/ghc-avers-server.changes 2017-05-17 10:49:43.085958752 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-avers-server.new/ghc-avers-server.changes 2017-08-31 20:46:21.804512389 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 14:08:12 UTC 2017 - psimons(a)suse.com
+
+- Update to version 0.0.19.0.
+
+-------------------------------------------------------------------
Old:
----
avers-server-0.0.18.0.tar.gz
avers-server.cabal
New:
----
avers-server-0.0.19.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-avers-server.spec ++++++
--- /var/tmp/diff_new_pack.IpwynZ/_old 2017-08-31 20:46:22.932354081 +0200
+++ /var/tmp/diff_new_pack.IpwynZ/_new 2017-08-31 20:46:22.952351274 +0200
@@ -18,14 +18,13 @@
%global pkg_name avers-server
Name: ghc-%{pkg_name}
-Version: 0.0.18.0
+Version: 0.0.19.0
Release: 0
Summary: Server implementation of the Avers API
License: MIT
Group: Development/Languages/Other
Url: https://hackage.haskell.org/package/%{pkg_name}
Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{ve…
-Source1: https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/1.cabal…
BuildRequires: ghc-Cabal-devel
BuildRequires: ghc-aeson-devel
BuildRequires: ghc-avers-api-devel
@@ -70,7 +69,6 @@
%prep
%setup -q -n %{pkg_name}-%{version}
-cp -p %{SOURCE1} %{pkg_name}.cabal
%build
%ghc_lib_build
++++++ avers-server-0.0.18.0.tar.gz -> avers-server-0.0.19.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/avers-server-0.0.18.0/avers-server.cabal new/avers-server-0.0.19.0/avers-server.cabal
--- old/avers-server-0.0.18.0/avers-server.cabal 2017-02-06 19:05:06.000000000 +0100
+++ new/avers-server-0.0.19.0/avers-server.cabal 2017-06-26 11:11:10.000000000 +0200
@@ -1,7 +1,7 @@
name: avers-server
-version: 0.0.18.0
+version: 0.0.19.0
synopsis: Server implementation of the Avers API
-description: See README.md
+description: Server implementation of the Avers API
homepage: http://github.com/wereHamster/avers-server
license: MIT
license-file: LICENSE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/avers-server-0.0.18.0/src/Avers/Server.hs new/avers-server-0.0.19.0/src/Avers/Server.hs
--- old/avers-server-0.0.18.0/src/Avers/Server.hs 2017-02-06 18:57:38.000000000 +0100
+++ new/avers-server-0.0.19.0/src/Avers/Server.hs 2017-06-26 11:08:50.000000000 +0200
@@ -218,7 +218,7 @@
----------------------------------------------------------------------------
serveObjectChanges :: Server ObjectChanges
- serveObjectChanges objId _cred req respond = respond $
+ serveObjectChanges objId _cred = Tagged $ \req respond -> respond $
case websocketsApp WS.defaultConnectionOptions wsApp req of
Nothing -> responseLBS status500 [] "Failed"
Just res -> res
@@ -260,7 +260,7 @@
----------------------------------------------------------------------------
serveFeed :: Server Feed
- serveFeed _cred req respond = respond $
+ serveFeed _cred = Tagged $ \req respond -> respond $
case websocketsApp WS.defaultConnectionOptions wsApp req of
Nothing -> responseLBS status500 [] "This is a WebSocket endpoint"
Just res -> res
@@ -293,8 +293,12 @@
----------------------------------------------------------------------------
serveChangeSecret :: Server ChangeSecret
- serveChangeSecret _ _ = do
- throwError err501
+ serveChangeSecret cred ChangeSecretBody{..} = do
+ reqAvers aversH $ do
+ Session{..} <- case cred of
+ SessionIdCredential sId -> lookupSession sId
+
+ updateSecret (SecretId $ unObjId sessionObjId) csbNewSecret
----------------------------------------------------------------------------
1
0
Hello community,
here is the log from the commit of package ghc-avers for openSUSE:Factory checked in at 2017-08-31 20:46:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-avers (Old)
and /work/SRC/openSUSE:Factory/.ghc-avers.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-avers"
Thu Aug 31 20:46:18 2017 rev:5 rq:513207 version:0.0.17.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-avers/ghc-avers.changes 2017-07-23 12:14:16.360822687 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-avers.new/ghc-avers.changes 2017-08-31 20:46:19.304863248 +0200
@@ -1,0 +2,5 @@
+Fri Jul 28 08:26:17 UTC 2017 - psimons(a)suse.com
+
+- Update to version 0.0.17.1 revision 14.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-avers.spec ++++++
--- /var/tmp/diff_new_pack.Vk2m8H/_old 2017-08-31 20:46:20.320720659 +0200
+++ /var/tmp/diff_new_pack.Vk2m8H/_new 2017-08-31 20:46:20.328719536 +0200
@@ -26,7 +26,7 @@
Group: Development/Languages/Other
Url: https://hackage.haskell.org/package/%{pkg_name}
Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{ve…
-Source1: https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/12.caba…
+Source1: https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/14.caba…
BuildRequires: ghc-Cabal-devel
BuildRequires: ghc-MonadRandom-devel
BuildRequires: ghc-aeson-devel
++++++ avers.cabal ++++++
--- /var/tmp/diff_new_pack.Vk2m8H/_old 2017-08-31 20:46:20.416707186 +0200
+++ /var/tmp/diff_new_pack.Vk2m8H/_new 2017-08-31 20:46:20.416707186 +0200
@@ -1,6 +1,6 @@
name: avers
version: 0.0.17.1
-x-revision: 12
+x-revision: 14
cabal-version: >=1.10
build-type: Simple
license: GPL-3
@@ -42,7 +42,7 @@
build-depends:
aeson >=1.0.2.1 && <1.3,
attoparsec >=0.13.1.0 && <0.14,
- base >=4.9.0.0 && <4.10,
+ base >=4.9.0.0 && <4.11,
bytestring >=0.10.8.1 && <0.11,
clock >=0.7.2 && <0.8,
containers >=0.5.7.1 && <0.6,
@@ -54,7 +54,7 @@
stm >=2.4.4.1 && <2.5,
template-haskell >=2.11.0.0 && <2.12,
text >=1.2.2.1 && <1.3,
- time >=1.6.0.1 && <1.7,
+ time >=1.6.0.1 && <1.9,
unordered-containers >=0.2.7.2 && <0.3,
vector >=0.11.0.0 && <0.13,
MonadRandom >=0.4.2.3 && <0.6,
@@ -76,7 +76,7 @@
aeson >=1.0.2.1 && <1.3,
attoparsec >=0.13.1.0 && <0.14,
avers >=0.0.17.1 && <0.1,
- base >=4.9.0.0 && <4.10,
+ base >=4.9.0.0 && <4.11,
base16-bytestring >=0.1.1.6 && <0.2,
bytestring >=0.10.8.1 && <0.11,
containers >=0.5.7.1 && <0.6,
@@ -89,7 +89,7 @@
scrypt >=0.5.0 && <0.6,
stm >=2.4.4.1 && <2.5,
text >=1.2.2.1 && <1.3,
- time >=1.6.0.1 && <1.7,
+ time >=1.6.0.1 && <1.9,
unordered-containers >=0.2.7.2 && <0.3,
vector >=0.11.0.0 && <0.13
default-language: Haskell2010
@@ -101,7 +101,7 @@
build-depends:
aeson >=1.0.2.1 && <1.3,
avers >=0.0.17.1 && <0.1,
- base >=4.9.0.0 && <4.10,
+ base >=4.9.0.0 && <4.11,
mtl >=2.2.1 && <2.3,
criterion >=1.1.4.0 && <1.3,
resource-pool >=0.2.3.2 && <0.3,
1
0
Hello community,
here is the log from the commit of package ghc-autoexporter for openSUSE:Factory checked in at 2017-08-31 20:46:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-autoexporter (Old)
and /work/SRC/openSUSE:Factory/.ghc-autoexporter.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-autoexporter"
Thu Aug 31 20:46:15 2017 rev:2 rq:513205 version:1.1.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-autoexporter/ghc-autoexporter.changes 2017-05-09 18:15:46.837800817 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-autoexporter.new/ghc-autoexporter.changes 2017-08-31 20:46:17.293145620 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 14:04:55 UTC 2017 - psimons(a)suse.com
+
+- Update to version 1.1.1 revision 1.
+
+-------------------------------------------------------------------
Old:
----
autoexporter-1.0.0.tar.gz
New:
----
autoexporter-1.1.1.tar.gz
autoexporter.cabal
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-autoexporter.spec ++++++
--- /var/tmp/diff_new_pack.k6X2iG/_old 2017-08-31 20:46:18.680950823 +0200
+++ /var/tmp/diff_new_pack.k6X2iG/_new 2017-08-31 20:46:18.684950261 +0200
@@ -18,13 +18,14 @@
%global pkg_name autoexporter
Name: ghc-%{pkg_name}
-Version: 1.0.0
+Version: 1.1.1
Release: 0
Summary: Automatically re-export modules
License: MIT
Group: Development/Languages/Other
Url: https://hackage.haskell.org/package/%{pkg_name}
Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{ve…
+Source1: https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/1.cabal…
BuildRequires: chrpath
BuildRequires: ghc-Cabal-devel
BuildRequires: ghc-directory-devel
@@ -48,6 +49,7 @@
%prep
%setup -q -n %{pkg_name}-%{version}
+cp -p %{SOURCE1} %{pkg_name}.cabal
%build
%ghc_lib_build
++++++ autoexporter-1.0.0.tar.gz -> autoexporter-1.1.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/autoexporter-1.0.0/README.markdown new/autoexporter-1.1.1/README.markdown
--- old/autoexporter-1.0.0/README.markdown 2016-12-30 16:53:13.000000000 +0100
+++ new/autoexporter-1.1.1/README.markdown 2017-07-22 21:36:12.000000000 +0200
@@ -54,11 +54,16 @@
Autoexporter will generally behave as you'd expect, but there are a couple
things to look out for:
-- Only immediate children will be re-exported. If you use this in some module
- `M`, it won't pull in `M.A.B`.
-
- You cannot selectively include or exclude any modules.
+- By default, only immediate children will be re-exported. If you use this in
+ some module `M`, it won't pull in `M.A.B`. If you need deep re-exporting,
+ please pass `--deep` to Autoexporter like this:
+
+```haskell
+{-# OPTIONS_GHC -F -pgmF autoexporter -optF --deep #-}
+```
+
[Autoexporter]: https://github.com/tfausak/autoexporter
[Version badge]: https://www.stackage.org/package/autoexporter/badge/nightly?label=version
[version]: https://www.stackage.org/nightly/package/autoexporter
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/autoexporter-1.0.0/autoexporter.cabal new/autoexporter-1.1.1/autoexporter.cabal
--- old/autoexporter-1.0.0/autoexporter.cabal 2016-12-30 16:55:06.000000000 +0100
+++ new/autoexporter-1.1.1/autoexporter.cabal 2017-07-22 21:37:03.000000000 +0200
@@ -1,9 +1,9 @@
--- This file has been generated from package.yaml by hpack version 0.15.0.
+-- This file has been generated from package.yaml by hpack version 0.17.0.
--
-- see: https://github.com/sol/hpack
name: autoexporter
-version: 1.0.0
+version: 1.1.1
synopsis: Automatically re-export modules.
description: Autoexporter automatically re-exports modules.
category: Utility
@@ -32,7 +32,7 @@
build-depends:
base >=4.7 && <4.10
, Cabal >=1.22 && <1.25
- , directory >=1.2 && <1.4
+ , directory >=1.2.5 && <1.4
, filepath >=1.3 && <1.5
exposed-modules:
Autoexporter
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/autoexporter-1.0.0/package.yaml new/autoexporter-1.1.1/package.yaml
--- old/autoexporter-1.0.0/package.yaml 2016-12-30 16:54:52.000000000 +0100
+++ new/autoexporter-1.1.1/package.yaml 2017-07-22 21:36:12.000000000 +0200
@@ -19,7 +19,7 @@
dependencies:
- base >=4.7 && <4.10
- Cabal >=1.22 && <1.25
- - directory >=1.2 && <1.4
+ - directory >=1.2.5 && <1.4
- filepath >=1.3 && <1.5
source-dirs: source/library
license: MIT
@@ -27,4 +27,4 @@
maintainer: Taylor Fausak
name: autoexporter
synopsis: Automatically re-export modules.
-version: '1.0.0'
+version: '1.1.1'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/autoexporter-1.0.0/source/library/Autoexporter.hs new/autoexporter-1.1.1/source/library/Autoexporter.hs
--- old/autoexporter-1.0.0/source/library/Autoexporter.hs 2016-12-30 16:48:05.000000000 +0100
+++ new/autoexporter-1.1.1/source/library/Autoexporter.hs 2017-07-22 21:36:12.000000000 +0200
@@ -2,12 +2,16 @@
import qualified Data.List as List
import qualified Data.Maybe as Maybe
+import qualified Data.Traversable as Traversable
import qualified Distribution.ModuleName as ModuleName
import qualified Distribution.Text as Text
import qualified System.Directory as Directory
import qualified System.Environment as Environment
import qualified System.FilePath as FilePath
+data ExportScope = ExportScopeShallow
+ | ExportScopeDeep
+
main :: IO ()
main = do
args <- Environment.getArgs
@@ -16,17 +20,39 @@
mainWithArgs :: [String] -> IO ()
mainWithArgs args =
case args of
- [name, inputFile, outputFile] -> autoexport name inputFile outputFile
+ [name, inputFile, outputFile, "--deep"] ->
+ autoexport ExportScopeDeep name inputFile outputFile
+ [name, inputFile, outputFile] ->
+ autoexport ExportScopeShallow name inputFile outputFile
_ -> fail ("unexpected arguments: " ++ show args)
-autoexport :: String -> FilePath -> FilePath -> IO ()
-autoexport name inputFile outputFile = do
+autoexport :: ExportScope -> String -> FilePath -> FilePath -> IO ()
+autoexport exportScope name inputFile outputFile = do
let moduleName = makeModuleName name
let directory = FilePath.dropExtension inputFile
- files <- Directory.getDirectoryContents directory
+ files <- findFiles exportScope directory
let output = makeOutput moduleName directory files
writeFile outputFile output
+findFiles :: ExportScope -> FilePath -> IO [FilePath]
+findFiles exportScope dir =
+ case exportScope of
+ ExportScopeShallow ->
+ fmap (filter isHaskellFile) (Directory.listDirectory dir)
+ ExportScopeDeep ->
+ findFilesDeep dir
+
+findFilesDeep :: FilePath -> IO [FilePath]
+findFilesDeep dir = do
+ rootItems <- Directory.listDirectory dir
+ childItems <- Traversable.for rootItems $ \item -> do
+ let path = dir FilePath.</> item
+ dirExists <- Directory.doesDirectoryExist path
+ if dirExists
+ then fmap (fmap (item FilePath.</>)) (findFilesDeep path)
+ else pure []
+ pure $ mconcat (filter isHaskellFile rootItems : childItems)
+
makeModuleName :: FilePath -> String
makeModuleName name =
let path = FilePath.dropExtension name
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/autoexporter-1.0.0/stack.yaml new/autoexporter-1.1.1/stack.yaml
--- old/autoexporter-1.0.0/stack.yaml 2016-12-30 17:08:53.000000000 +0100
+++ new/autoexporter-1.1.1/stack.yaml 2017-07-22 21:36:12.000000000 +0200
@@ -1 +1 @@
-resolver: lts-7.14
+resolver: lts-8.0
++++++ autoexporter.cabal ++++++
-- This file has been generated from package.yaml by hpack version 0.17.0.
--
-- see: https://github.com/sol/hpack
name: autoexporter
version: 1.1.1
x-revision: 1
synopsis: Automatically re-export modules.
description: Autoexporter automatically re-exports modules.
category: Utility
homepage: https://github.com/tfausak/autoexporter#readme
bug-reports: https://github.com/tfausak/autoexporter/issues
maintainer: Taylor Fausak
license: MIT
license-file: LICENSE.markdown
build-type: Simple
cabal-version: >= 1.10
extra-source-files:
CHANGELOG.markdown
package.yaml
README.markdown
stack.yaml
source-repository head
type: git
location: https://github.com/tfausak/autoexporter
library
hs-source-dirs:
source/library
ghc-options: -Wall
build-depends:
base >=4.8 && <4.10
, Cabal >=1.22 && <1.25
, directory >=1.2.5 && <1.4
, filepath >=1.3 && <1.5
exposed-modules:
Autoexporter
default-language: Haskell2010
executable autoexporter
main-is: Main.hs
hs-source-dirs:
source/executable
ghc-options: -Wall
build-depends:
base
, autoexporter
default-language: Haskell2010
1
0
Hello community,
here is the log from the commit of package ghc-aeson for openSUSE:Factory checked in at 2017-08-31 20:46:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-aeson (Old)
and /work/SRC/openSUSE:Factory/.ghc-aeson.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-aeson"
Thu Aug 31 20:46:12 2017 rev:15 rq:513199 version:1.1.2.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-aeson/ghc-aeson.changes 2017-04-14 13:41:19.984761920 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-aeson.new/ghc-aeson.changes 2017-08-31 20:46:14.337560475 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 14:07:48 UTC 2017 - psimons(a)suse.com
+
+- Update to version 1.1.2.0 revision 1.
+
+-------------------------------------------------------------------
Old:
----
aeson-1.0.2.1.tar.gz
New:
----
aeson-1.1.2.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-aeson.spec ++++++
--- /var/tmp/diff_new_pack.GmhusH/_old 2017-08-31 20:46:15.685371292 +0200
+++ /var/tmp/diff_new_pack.GmhusH/_new 2017-08-31 20:46:15.689370731 +0200
@@ -19,7 +19,7 @@
%global pkg_name aeson
%bcond_with tests
Name: ghc-%{pkg_name}
-Version: 1.0.2.1
+Version: 1.1.2.0
Release: 0
Summary: Fast JSON parsing and encoding
License: BSD-3-Clause
@@ -43,6 +43,7 @@
BuildRequires: ghc-time-devel
BuildRequires: ghc-time-locale-compat-devel
BuildRequires: ghc-unordered-containers-devel
+BuildRequires: ghc-uuid-types-devel
BuildRequires: ghc-vector-devel
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%if %{with tests}
@@ -50,8 +51,11 @@
BuildRequires: ghc-QuickCheck-devel
BuildRequires: ghc-base-orphans-devel
BuildRequires: ghc-base16-bytestring-devel
+BuildRequires: ghc-directory-devel
+BuildRequires: ghc-filepath-devel
BuildRequires: ghc-generic-deriving-devel
BuildRequires: ghc-hashable-time-devel
+BuildRequires: ghc-integer-logarithms-devel
BuildRequires: ghc-quickcheck-instances-devel
BuildRequires: ghc-test-framework-devel
BuildRequires: ghc-test-framework-hunit-devel
++++++ aeson-1.0.2.1.tar.gz -> aeson-1.1.2.0.tar.gz ++++++
++++ 5147 lines of diff (skipped)
++++++ aeson.cabal ++++++
--- /var/tmp/diff_new_pack.GmhusH/_old 2017-08-31 20:46:16.113311225 +0200
+++ /var/tmp/diff_new_pack.GmhusH/_new 2017-08-31 20:46:16.113311225 +0200
@@ -1,227 +1,252 @@
-name: aeson
-version: 1.0.2.1
-x-revision: 1
-license: BSD3
-license-file: LICENSE
-category: Text, Web, JSON
-copyright: (c) 2011-2016 Bryan O'Sullivan
- (c) 2011 MailRank, Inc.
-author: Bryan O'Sullivan <bos(a)serpentine.com>
-maintainer: Adam Bergmark <adam(a)bergmark.nl>
-stability: experimental
-tested-with: GHC == 7.4.2, GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.1
-synopsis: Fast JSON parsing and encoding
-cabal-version: >= 1.10
-homepage: https://github.com/bos/aeson
-bug-reports: https://github.com/bos/aeson/issues
-build-type: Simple
-description:
- A JSON parsing and encoding library optimized for ease of use
- and high performance.
- .
- To get started, see the documentation for the @Data.Aeson@ module
- below.
- .
- Parsing performance on a late 2013 MacBook Pro (2.6GHz Core i7),
- running 64-bit GHC 7.10.1, for mostly-English tweets from Twitter's
- JSON search API:
- .
- * 6.4 KB payloads, English: 7570 msg\/sec (47.6 MB\/sec)
- .
- * 14.6 KB payloads, Japanese: 3261 msg\/sec (46.6 MB\/sec)
- .
- Encoding performance on the same machine and data:
- .
- * 6.4 KB payloads, English: 22738 msg\/sec (142.9 MB\/sec)
- .
- * 14.6 KB payloads, Japanese: 15911 msg\/sec (227.4 MB\/sec)
- .
- (A note on naming: in Greek mythology, Aeson was the father of Jason.)
-
-extra-source-files:
- README.markdown
- benchmarks/*.cabal
- benchmarks/*.hs
- benchmarks/*.py
- benchmarks/Compare/*.hs
- benchmarks/Makefile
- benchmarks/Typed/*.hs
- benchmarks/json-data/*.json
- include/overlapping-compat.h
- include/incoherent-compat.h
- changelog.md
- examples/*.cabal
- examples/*.hs
- examples/Twitter/*.hs
- include/*.h
- cbits/*.c
-
-flag developer
- description: operate in developer mode
- default: False
- manual: True
-
-flag fast
- description: compile without optimizations
- default: False
- manual: True
-
-flag bytestring-builder
- description: Depend on the bytestring-builder package for backwards compatibility.
- default: False
- manual: False
-
-library
- default-language: Haskell2010
-
- exposed-modules:
- Data.Aeson
- Data.Aeson.Encoding
- Data.Aeson.Parser
- Data.Aeson.Text
- Data.Aeson.Types
- Data.Aeson.TH
-
- Data.Aeson.Encoding.Internal
- Data.Aeson.Internal
- Data.Aeson.Internal.Time
-
- -- Deprecated modules
- exposed-modules:
- Data.Aeson.Encode
-
- other-modules:
- Data.Aeson.Encoding.Builder
- Data.Aeson.Internal.Functions
- Data.Aeson.Parser.Internal
- Data.Aeson.Parser.Unescape
- Data.Aeson.Parser.Time
- Data.Aeson.Types.FromJSON
- Data.Aeson.Types.Generic
- Data.Aeson.Types.ToJSON
- Data.Aeson.Types.Class
- Data.Aeson.Types.Internal
-
- build-depends:
- attoparsec >= 0.13.0.1 && < 0.14,
- base >= 4.5 && < 5,
- base-compat >= 0.9.1 && < 0.10,
- containers >= 0.4.2 && < 0.6,
- deepseq >= 1.3 && < 1.5,
- dlist >= 0.6 && < 0.9,
- ghc-prim >= 0.2,
- hashable >= 1.1.2.0 && < 1.3,
- scientific >= 0.3.4.7 && < 0.4,
- tagged >=0.8.3 && <0.9,
- template-haskell >= 2.7 && < 2.12,
- text >= 1.1.1.0 && < 1.3,
- time >= 1.1.1.4 && < 1.7,
- time-locale-compat >= 0.1.1 && < 0.2,
- unordered-containers >= 0.2.5.0 && < 0.3,
- vector >= 0.8 && < 0.13
-
- if flag(bytestring-builder)
- build-depends: bytestring >= 0.9 && < 0.10.4,
- bytestring-builder >= 0.10.4 && < 1
- else
- build-depends: bytestring >= 0.10.4 && < 0.11
-
- if !impl(ghc >= 8.0)
- -- `Data.Semigroup` and `Control.Monad.Fail` and `Control.Monad.IO.Class` are available in base only since GHC 8.0 / base 4.9
- build-depends:
- semigroups >= 0.18.2 && < 0.19,
- transformers >= 0.2.2.0 && < 0.6,
- transformers-compat >= 0.3 && < 0.6,
- fail == 4.9.*
-
- if !impl(ghc >= 7.10)
- -- `Numeric.Natural` is available in base only since GHC 7.10 / base 4.8
- build-depends: nats >= 1 && < 1.2
-
- ghc-options: -Wall
-
- if flag(developer)
- ghc-options: -Werror
- ghc-prof-options: -auto-all
-
- if flag(fast)
- ghc-options: -O0
- else
- ghc-options: -O2
-
- include-dirs: include
- c-sources: cbits/unescape_string.c
-
-test-suite tests
- default-language: Haskell2010
- type: exitcode-stdio-1.0
- hs-source-dirs: tests
- main-is: Tests.hs
- other-modules:
- DataFamilies.Properties
- DataFamilies.Instances
- DataFamilies.Encoders
- DataFamilies.Types
- Encoders
- Functions
- Instances
- Options
- Properties
- Types
- UnitTests
- UnitTests.NullaryConstructors
-
- ghc-options: -Wall -threaded -rtsopts
-
- build-depends:
- HUnit,
- QuickCheck >= 2.7 && <2.9.3,
- aeson,
- attoparsec,
- base,
- base-compat,
- base-orphans >= 0.5.3 && <0.6,
- base16-bytestring,
- containers,
- dlist,
- generic-deriving >= 1.10 && < 1.12,
- ghc-prim >= 0.2,
- hashable >= 1.2.4.0,
- scientific,
- tagged,
- template-haskell,
- test-framework,
- test-framework-hunit,
- test-framework-quickcheck2,
- text,
- time,
- time-locale-compat,
- unordered-containers,
- vector,
- quickcheck-instances >=0.3.12
-
- if flag(bytestring-builder)
- build-depends: bytestring >= 0.9 && < 0.10.4,
- bytestring-builder >= 0.10.4 && < 1
- else
- build-depends: bytestring >= 0.10.4
-
- if !impl(ghc >= 8.0)
- build-depends:
- semigroups >= 0.18.2 && < 0.19,
- transformers >= 0.2.2.0,
- transformers-compat >= 0.3
-
- if !impl(ghc >= 7.10)
- build-depends: nats >=1 && <1.2
-
- if impl(ghc >= 7.8)
- build-depends: hashable-time >= 0.2 && <0.3
-
-source-repository head
- type: git
- location: git://github.com/bos/aeson.git
-
-source-repository head
- type: mercurial
- location: https://bitbucket.org/bos/aeson
+name: aeson
+version: 1.1.2.0
+x-revision: 1
+license: BSD3
+license-file: LICENSE
+category: Text, Web, JSON
+copyright: (c) 2011-2016 Bryan O'Sullivan
+ (c) 2011 MailRank, Inc.
+author: Bryan O'Sullivan <bos(a)serpentine.com>
+maintainer: Adam Bergmark <adam(a)bergmark.nl>
+stability: experimental
+tested-with: GHC == 7.4.2, GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.1
+synopsis: Fast JSON parsing and encoding
+cabal-version: >= 1.10
+homepage: https://github.com/bos/aeson
+bug-reports: https://github.com/bos/aeson/issues
+build-type: Simple
+description:
+ A JSON parsing and encoding library optimized for ease of use
+ and high performance.
+ .
+ To get started, see the documentation for the @Data.Aeson@ module
+ below.
+ .
+ Parsing performance on a late 2013 MacBook Pro (2.6GHz Core i7),
+ running 64-bit GHC 7.10.1, for mostly-English tweets from Twitter's
+ JSON search API:
+ .
+ * 6.4 KB payloads, English: 7570 msg\/sec (47.6 MB\/sec)
+ .
+ * 14.6 KB payloads, Japanese: 3261 msg\/sec (46.6 MB\/sec)
+ .
+ Encoding performance on the same machine and data:
+ .
+ * 6.4 KB payloads, English: 22738 msg\/sec (142.9 MB\/sec)
+ .
+ * 14.6 KB payloads, Japanese: 15911 msg\/sec (227.4 MB\/sec)
+ .
+ (A note on naming: in Greek mythology, Aeson was the father of Jason.)
+
+extra-source-files:
+ *.yaml
+ README.markdown
+ benchmarks/*.cabal
+ benchmarks/*.hs
+ benchmarks/*.py
+ benchmarks/Compare/*.hs
+ benchmarks/Makefile
+ benchmarks/Typed/*.hs
+ benchmarks/json-data/*.json
+ cbits/*.c
+ changelog.md
+ examples/*.cabal
+ examples/*.hs
+ examples/Twitter/*.hs
+ ffi/Data/Aeson/Parser/*.hs
+ include/*.h
+ tests/JSONTestSuite/test_parsing/*.json
+ tests/JSONTestSuite/test_transform/*.json
+ pure/Data/Aeson/Parser/*.hs
+
+flag developer
+ description: operate in developer mode
+ default: False
+ manual: True
+
+flag fast
+ description: compile without optimizations
+ default: False
+ manual: True
+
+flag bytestring-builder
+ description: Depend on the bytestring-builder package for backwards compatibility.
+ default: False
+ manual: False
+
+flag cffi
+ description: Controls whether to include c-ffi bits or pure haskell
+ default: True
+ manual: True
+
+library
+ default-language: Haskell2010
+ hs-source-dirs: .
+
+ exposed-modules:
+ Data.Aeson
+ Data.Aeson.Encoding
+ Data.Aeson.Parser
+ Data.Aeson.Text
+ Data.Aeson.Types
+ Data.Aeson.TH
+
+ Data.Aeson.Encoding.Internal
+ Data.Aeson.Internal
+ Data.Aeson.Internal.Time
+
+ -- Deprecated modules
+ exposed-modules:
+ Data.Aeson.Encode
+
+ other-modules:
+ Data.Aeson.Encoding.Builder
+ Data.Aeson.Internal.Functions
+ Data.Aeson.Parser.Internal
+ Data.Aeson.Parser.Unescape
+ Data.Aeson.Parser.Time
+ Data.Aeson.Types.FromJSON
+ Data.Aeson.Types.Generic
+ Data.Aeson.Types.ToJSON
+ Data.Aeson.Types.Class
+ Data.Aeson.Types.Internal
+
+ build-depends:
+ attoparsec >= 0.13.0.1,
+ base >= 4.5 && < 5,
+ base-compat >= 0.9.1 && < 0.10,
+ containers >= 0.2.4.1,
+ deepseq >= 1.3,
+ dlist >= 0.2,
+ ghc-prim >= 0.2,
+ hashable >= 1.1.2.0,
+ scientific >= 0.3.4.7 && < 0.4,
+ tagged >=0.8.3 && <0.9,
+ template-haskell >= 2.7,
+ text >= 1.1.1.0,
+ time >= 1.1.1.4,
+ time-locale-compat >= 0.1.1 && < 0.2,
+ unordered-containers >= 0.2.5.0,
+ uuid-types >= 1.0.3 && <1.1,
+ vector >= 0.8
+
+ if flag(bytestring-builder)
+ build-depends: bytestring >= 0.9 && < 0.10.4,
+ bytestring-builder >= 0.10.4 && < 1
+ else
+ build-depends: bytestring >= 0.10.4
+
+ if !impl(ghc >= 8.0)
+ -- `Data.Semigroup` and `Control.Monad.Fail` and `Control.Monad.IO.Class` are available in base only since GHC 8.0 / base 4.9
+ build-depends:
+ semigroups >= 0.18.2 && < 0.19,
+ transformers >= 0.2.2.0,
+ transformers-compat >= 0.3,
+ fail == 4.9.*
+
+ if !impl(ghc >= 7.10)
+ -- `Numeric.Natural` is available in base only since GHC 7.10 / base 4.8
+ build-depends: nats >= 1 && < 1.2
+
+ ghc-options: -Wall
+
+ if flag(developer)
+ ghc-options: -Werror
+ ghc-prof-options: -auto-all
+
+ if flag(fast)
+ ghc-options: -O0
+ else
+ ghc-options: -O2
+
+ include-dirs: include
+ if impl(ghcjs) || !flag(cffi)
+ hs-source-dirs: pure
+ other-modules: Data.Aeson.Parser.UnescapePure
+ else
+ c-sources: cbits/unescape_string.c
+ cpp-options: -DCFFI
+ hs-source-dirs: ffi
+ other-modules: Data.Aeson.Parser.UnescapeFFI
+
+test-suite tests
+ default-language: Haskell2010
+ type: exitcode-stdio-1.0
+ hs-source-dirs: tests ffi pure
+ main-is: Tests.hs
+ c-sources: cbits/unescape_string.c
+ ghc-options: -Wall -threaded -rtsopts
+
+ other-modules:
+ Data.Aeson.Parser.UnescapeFFI
+ Data.Aeson.Parser.UnescapePure
+ DataFamilies.Properties
+ DataFamilies.Instances
+ DataFamilies.Encoders
+ DataFamilies.Types
+ Encoders
+ ErrorMessages
+ Functions
+ Instances
+ Options
+ Properties
+ SerializationFormatSpec
+ Types
+ UnitTests
+ UnitTests.NullaryConstructors
+
+ build-depends:
+ HUnit,
+ QuickCheck >= 2.8 && <2.9.3,
+ aeson,
+ integer-logarithms >= 1 && <1.1,
+ attoparsec,
+ base,
+ base-compat,
+ base-orphans >= 0.5.3 && <0.7,
+ base16-bytestring,
+ containers,
+ directory,
+ dlist,
+ filepath,
+ generic-deriving >= 1.10 && < 1.12,
+ ghc-prim >= 0.2,
+ hashable >= 1.2.4.0,
+ scientific,
+ tagged,
+ template-haskell,
+ test-framework,
+ test-framework-hunit,
+ test-framework-quickcheck2,
+ text,
+ time,
+ time-locale-compat,
+ unordered-containers,
+ uuid-types,
+ vector,
+ quickcheck-instances >=0.3.12
+
+ if flag(bytestring-builder)
+ build-depends: bytestring >= 0.9 && < 0.10.4,
+ bytestring-builder >= 0.10.4 && < 1
+ else
+ build-depends: bytestring >= 0.10.4
+
+ if !impl(ghc >= 8.0)
+ build-depends:
+ semigroups >= 0.18.2 && < 0.19,
+ transformers >= 0.2.2.0,
+ transformers-compat >= 0.3
+
+ if !impl(ghc >= 7.10)
+ build-depends: nats >=1 && <1.2
+
+ if impl(ghc >= 7.8)
+ build-depends: hashable-time >= 0.2 && <0.3
+
+ if flag(fast)
+ ghc-options: -fno-enable-rewrite-rules
+
+source-repository head
+ type: git
+ location: git://github.com/bos/aeson.git
1
0
Hello community,
here is the log from the commit of package ghc-accelerate for openSUSE:Factory checked in at 2017-08-31 20:46:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-accelerate (Old)
and /work/SRC/openSUSE:Factory/.ghc-accelerate.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-accelerate"
Thu Aug 31 20:46:10 2017 rev:2 rq:513198 version:1.0.0.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-accelerate/ghc-accelerate.changes 2016-09-25 14:30:56.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-accelerate.new/ghc-accelerate.changes 2017-08-31 20:46:12.337841163 +0200
@@ -1,0 +2,5 @@
+Thu Jul 27 14:07:20 UTC 2017 - psimons(a)suse.com
+
+- Update to version 1.0.0.0 revision 1.
+
+-------------------------------------------------------------------
Old:
----
1.cabal
accelerate-0.15.1.0.tar.gz
New:
----
accelerate-1.0.0.0.tar.gz
accelerate.cabal
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-accelerate.spec ++++++
--- /var/tmp/diff_new_pack.5YgF4u/_old 2017-08-31 20:46:13.809634577 +0200
+++ /var/tmp/diff_new_pack.5YgF4u/_new 2017-08-31 20:46:13.813634016 +0200
@@ -1,7 +1,7 @@
#
# spec file for package ghc-accelerate
#
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2017 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
@@ -18,27 +18,34 @@
%global pkg_name accelerate
Name: ghc-%{pkg_name}
-Version: 0.15.1.0
+Version: 1.0.0.0
Release: 0
Summary: An embedded language for accelerated array processing
License: BSD-3-Clause
-Group: System/Libraries
+Group: Development/Languages/Other
Url: https://hackage.haskell.org/package/%{pkg_name}
Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{ve…
-Source1: https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/1.cabal
+Source1: https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/1.cabal…
BuildRequires: ghc-Cabal-devel
-# Begin cabal-rpm deps:
-BuildRequires: ghc-array-devel
+BuildRequires: ghc-base-orphans-devel
BuildRequires: ghc-containers-devel
+BuildRequires: ghc-deepseq-devel
+BuildRequires: ghc-directory-devel
+BuildRequires: ghc-exceptions-devel
BuildRequires: ghc-fclabels-devel
+BuildRequires: ghc-filepath-devel
BuildRequires: ghc-hashable-devel
BuildRequires: ghc-hashtables-devel
+BuildRequires: ghc-mtl-devel
BuildRequires: ghc-pretty-devel
BuildRequires: ghc-rpm-macros
BuildRequires: ghc-template-haskell-devel
+BuildRequires: ghc-time-devel
+BuildRequires: ghc-transformers-devel
+BuildRequires: ghc-unique-devel
+BuildRequires: ghc-unix-devel
BuildRequires: ghc-unordered-containers-devel
BuildRoot: %{_tmppath}/%{name}-%{version}-build
-# End cabal-rpm deps
%description
'Data.Array.Accelerate' defines an embedded array language for computations for
@@ -58,58 +65,55 @@
Except for the type, this code is almost the same as the corresponding Haskell
code on lists of floats. The types indicate that the computation may be
online-compiled for performance - for example, using
-'Data.Array.Accelerate.CUDA' it may be on-the-fly off-loaded to the GPU.
+'Data.Array.Accelerate.LLVM.PTX' it may be on-the-fly off-loaded to the GPU.
-[/Available backends/]
+[/Additional components/]
-Currently, there are two backends:
+The following supported add-ons are available as separate packages.
+Install them from Hackage with 'cabal install <package>'
-1. An interpreter that serves as a reference implementation of the intended
-semantics of the language, which is included in this package.
+* 'accelerate-llvm-native': Backend supporting parallel execution on multicore
+CPUs.
-2. A CUDA backend generating code for CUDA-capable NVIDIA GPUs:
-<http://hackage.haskell.org/package/accelerate-cuda>
+* 'accelerate-llvm-ptx': Backend supporting parallel execution on CUDA-capable
+NVIDIA GPUs. Requires a GPU with compute capability 2.0 or greater.
+See the following table for supported GPUs:
+<http://en.wikipedia.org/wiki/CUDA#Supported_GPUs>
-Several experimental and/or incomplete backends also exist. If you are
-particularly interested in any of these, especially with helping to finish
-them, please contact us.
+* 'accelerate-cuda': Backend targeting CUDA-enabled NVIDIA GPUs.
+Requires a GPU with compute compatibility 1.2 or greater. /NOTE: This backend
+is being deprecated in favour of 'accelerate-llvm-ptx'./
-1. Cilk/ICC and OpenCL:
-<https://github.com/AccelerateHS/accelerate-backend-kit>
+* 'accelerate-examples': Computational kernels and applications showcasing the
+use of Accelerate as well as a regression test suite, supporting function and
+performance testing.
-2. Another OpenCL backend: <https://github.com/HIPERFIT/accelerate-opencl>
+* 'accelerate-io': Fast conversions between Accelerate arrays and other array
+formats (including vector and repa).
-3. A backend to the Repa array library:
-<https://github.com/blambo/accelerate-repa>
+* 'accelerate-fft': Discrete Fourier transforms, with FFI bindings to optimised
+implementations.
-4. An infrastructure for generating LLVM code, with backends targeting
-multicore CPUs and NVIDIA GPUs:
-<https://github.com/AccelerateHS/accelerate-llvm/>
+* 'accelerate-bignum': Fixed-width large integer arithmetic.
-[/Additional components/]
+* 'colour-accelerate': Colour representations in Accelerate (RGB, sRGB, HSV,
+and HSL).
-The following support packages are available:
-
-1. 'accelerate-cuda': A high-performance parallel backend targeting
-CUDA-enabled NVIDIA GPUs. Requires the NVIDIA CUDA SDK and, for full
-functionality, hardware with compute capability 1.1 or greater. See the table
-on Wikipedia for supported GPUs:
-<http://en.wikipedia.org/wiki/CUDA#Supported_GPUs>
+* 'gloss-accelerate': Generate gloss pictures from Accelerate.
-2. 'accelerate-examples': Computational kernels and applications showcasing
-/Accelerate/, as well as performance and regression tests.
+* 'gloss-raster-accelerate': Parallel rendering of raster images and
+animations.
-3. 'accelerate-io': Fast conversion between /Accelerate/ arrays and other
-formats, including 'vector' and 'repa'.
+* 'lens-accelerate': Lens operators for Accelerate types.
-4. 'accelerate-fft': Computation of Discrete Fourier Transforms.
+* 'linear-accelerate': Linear vector spaces in Accelerate.
-Install them from Hackage with 'cabal install PACKAGE'
+* 'mwc-random-accelerate': Generate Accelerate arrays filled with high quality
+pseudorandom numbers.
[/Examples and documentation/]
-Haddock documentation is included in the package, and a tutorial is available
-on the GitHub wiki: <https://github.com/AccelerateHS/accelerate/wiki>
+Haddock documentation is included in the package
The 'accelerate-examples' package demonstrates a range of computational kernels
and several complete applications, including:
@@ -122,11 +126,20 @@
* An /n/-body simulation of gravitational attraction between solid particles
+* An implementation of the PageRank algorithm
+
+* A simple interactive ray tracer
+
+* A particle based simulation of stable fluid flows
+
* A cellular automata simulation
* A "password recovery" tool, for dictionary lookup of MD5 hashes
-* A simple interactive ray tracer
+'lulesh-accelerate' is an implementation of the Livermore Unstructured
+Lagrangian Explicit Shock Hydrodynamics (LULESH) mini-app. LULESH represents a
+typical hydrodynamics code such as ALE3D, but is highly simplified and
+hard-coded to solve the Sedov blast problem on an unstructured hexahedron mesh.
[/Mailing list and contacts/]
@@ -137,18 +150,7 @@
<http://groups.google.com/group/accelerate-haskell>
* Bug reports and issue tracking:
-<https://github.com/AccelerateHS/accelerate/issues>
-
-[/Hackage note/]
-
-The module documentation list generated by Hackage is incorrect. The only
-exposed modules should be:
-
-* "Data.Array.Accelerate"
-
-* "Data.Array.Accelerate.Interpreter"
-
-* "Data.Array.Accelerate.Data.Complex" .
+<https://github.com/AccelerateHS/accelerate/issues> .
%package devel
Summary: Haskell %{pkg_name} library development files
@@ -165,15 +167,12 @@
%setup -q -n %{pkg_name}-%{version}
cp -p %{SOURCE1} %{pkg_name}.cabal
-
%build
%ghc_lib_build
-
%install
%ghc_lib_install
-
%post devel
%ghc_pkg_recache
++++++ accelerate-0.15.1.0.tar.gz -> accelerate-1.0.0.0.tar.gz ++++++
++++ 29240 lines of diff (skipped)
++++++ accelerate.cabal ++++++
Name: accelerate
Version: 1.0.0.0
x-revision: 1
Cabal-version: >= 1.8
Tested-with: GHC >= 7.8
Build-type: Simple
Synopsis: An embedded language for accelerated array processing
Description:
@Data.Array.Accelerate@ defines an embedded array language for computations
for high-performance computing in Haskell. Computations on multi-dimensional,
regular arrays are expressed in the form of parameterised collective
operations, such as maps, reductions, and permutations. These computations may
then be online compiled and executed on a range of architectures.
.
[/A simple example/]
.
As a simple example, consider the computation of a dot product of two vectors
of floating point numbers:
.
> dotp :: Acc (Vector Float) -> Acc (Vector Float) -> Acc (Scalar Float)
> dotp xs ys = fold (+) 0 (zipWith (*) xs ys)
.
Except for the type, this code is almost the same as the corresponding Haskell
code on lists of floats. The types indicate that the computation may be
online-compiled for performance - for example, using
@Data.Array.Accelerate.LLVM.PTX@ it may be on-the-fly off-loaded to the GPU.
.
[/Additional components/]
.
The following supported add-ons are available as separate packages. Install
them from Hackage with @cabal install \<package\>@
.
* @accelerate-llvm-native@: Backend supporting parallel execution on
multicore CPUs.
.
* @accelerate-llvm-ptx@: Backend supporting parallel execution on
CUDA-capable NVIDIA GPUs. Requires a GPU with compute capability 2.0 or
greater. See the following table for supported GPUs:
<http://en.wikipedia.org/wiki/CUDA#Supported_GPUs>
.
* @accelerate-cuda@: Backend targeting CUDA-enabled NVIDIA GPUs. Requires
a GPU with compute compatibility 1.2 or greater. /NOTE: This backend is
being deprecated in favour of @accelerate-llvm-ptx@./
.
* @accelerate-examples@: Computational kernels and applications showcasing
the use of Accelerate as well as a regression test suite, supporting
function and performance testing.
.
* @accelerate-io@: Fast conversions between Accelerate arrays and other
array formats (including vector and repa).
.
* @accelerate-fft@: Discrete Fourier transforms, with FFI bindings to
optimised implementations.
.
* @accelerate-bignum@: Fixed-width large integer arithmetic.
.
* @colour-accelerate@: Colour representations in Accelerate (RGB, sRGB, HSV,
and HSL).
.
* @gloss-accelerate@: Generate gloss pictures from Accelerate.
.
* @gloss-raster-accelerate@: Parallel rendering of raster images and
animations.
.
* @lens-accelerate@: Lens operators for Accelerate types.
.
* @linear-accelerate@: Linear vector spaces in Accelerate.
.
* @mwc-random-accelerate@: Generate Accelerate arrays filled with high
quality pseudorandom numbers.
.
[/Examples and documentation/]
.
Haddock documentation is included in the package
.
The @accelerate-examples@ package demonstrates a range of computational
kernels and several complete applications, including:
.
* An implementation of the Canny edge detection algorithm
.
* An interactive Mandelbrot set generator
.
* A particle-based simulation of stable fluid flows
.
* An /n/-body simulation of gravitational attraction between solid particles
.
* An implementation of the PageRank algorithm
.
* A simple interactive ray tracer
.
* A particle based simulation of stable fluid flows
.
* A cellular automata simulation
.
* A \"password recovery\" tool, for dictionary lookup of MD5 hashes
.
@lulesh-accelerate@ is an implementation of the Livermore Unstructured
Lagrangian Explicit Shock Hydrodynamics (LULESH) mini-app. LULESH represents a
typical hydrodynamics code such as ALE3D, but is highly simplified and
hard-coded to solve the Sedov blast problem on an unstructured hexahedron
mesh.
.
[/Mailing list and contacts/]
.
* Mailing list: <accelerate-haskell(a)googlegroups.com> (discussion of both
use and development welcome).
.
* Sign up for the mailing list here:
<http://groups.google.com/group/accelerate-haskell>
.
* Bug reports and issue tracking:
<https://github.com/AccelerateHS/accelerate/issues>
.
License: BSD3
License-file: LICENSE
Author: Manuel M T Chakravarty,
Robert Clifton-Everest,
Gabriele Keller,
Ben Lever,
Trevor L. McDonell,
Ryan Newtown,
Sean Seefried
Maintainer: Trevor L. McDonell <tmcdonell(a)cse.unsw.edu.au>
Homepage: https://github.com/AccelerateHS/accelerate/
Bug-reports: https://github.com/AccelerateHS/accelerate/issues
Category: Compilers/Interpreters, Concurrency, Data, Parallelism
Stability: Experimental
Extra-source-files: changelog.md
Flag debug
Default: False
Description:
Enable debug tracing messages. The following options are read from the
environment variable @ACCELERATE_FLAGS@, and via the command-line as:
.
> ./program +ACC ... -ACC
.
Note that a backend may not implement (or be applicable to) all options.
.
The following flags control phases of the compiler. The are enabled with
@-f\<flag\>@ and can be reveresed with @-fno-\<flag\>@:
.
* @acc-sharing@: Enable sharing recovery of array expressions (True).
.
* @exp-sharing@: Enable sharing recovery of scalar expressions (True).
.
* @fusion@: Enable array fusion (True).
.
* @simplify@: Enable program simplification phase (True).
.
* @flush-cache@: Clear any persistent caches on program startup (False).
.
* @fast-math@: Allow algebraically equivalent transformations which may
change floating point results (e.g., reassociate) (True).
.
The following options control debug message output, and are enabled with
@-d\<flag\>@.
.
* @verbose@: Be extra chatty.
.
* @dump-phases@: Print timing information about each phase of the compiler.
Enable GC stats (@+RTS -t@ or otherwise) for memory usage information.
.
* @dump-sharing@: Print information related to sharing recovery.
.
* @dump-simpl-stats@: Print statistics related to fusion & simplification.
.
* @dump-simpl-iterations@: Print a summary after each simplifier iteration.
.
* @dump-vectorisation@: Print information related to the vectoriser.
.
* @dump-dot@: Generate a representation of the program graph in Graphviz
DOT format.
.
* @dump-simpl-dot@: Generate a more compact representation of the program
graph in Graphviz DOT format. In particular, scalar expressions are
elided.
.
* @dump-gc@: Print information related to the Accelerate garbage
collector.
.
* @dump-gc-stats@: Print aggregate garbage collection information at the
end of program execution.
.
* @dubug-cc@: Include debug symbols in the generated and compiled kernels.
.
* @dump-cc@: Print information related to kernel code
generation/compilation. Print the generated code if @verbose@.
.
* @dump-ld@: Print information related to runtime linking.
.
* @dump-asm@: Print information related to kernel assembly. Print the
assembled code if @verbose@.
.
* @dump-exec@: Print information related to program execution.
.
* @dump-sched@: Print information related to execution scheduling.
.
Flag ekg
Default: False
Description:
Enable hooks for monitoring the running application using EKG. Implies
@debug@ mode. In order to view the metrics, your application will need to
initialise the EKG server like so:
.
> import Data.Array.Accelerate.Debug
>
> import System.Metrics
> import System.Remote.Monitoring
>
> main :: IO ()
> main = do
> store <- initAccMetrics
> registerGcMetrics store -- optional
>
> server <- forkServerWith store "localhost" 8000
>
> ...
.
Note that, as with any program utilising EKG, in order to collect Haskell GC
statistics collection, you must either run the program with:
.
> +RTS -T -RTS
.
or compile it with:
.
> -with-rtsopts=-T
.
Flag bounds-checks
Description: Enable bounds checking
Default: True
Flag unsafe-checks
Description: Enable bounds checking in unsafe operations
Default: False
Flag internal-checks
Description: Enable internal consistency checks
Default: False
Library
Build-depends:
base >= 4.7 && < 4.11
, base-orphans >= 0.3
, containers >= 0.3
, deepseq >= 1.3
, directory >= 1.0
, exceptions >= 0.6
, fclabels >= 2.0
, filepath >= 1.0
, ghc-prim
, hashable >= 1.1
, hashtables >= 1.0
, mtl >= 2.0
, pretty >= 1.0
, template-haskell
, time >= 1.4
, transformers >= 0.3
, unique
, unordered-containers >= 0.2
Exposed-modules:
-- The core language and reference implementation
Data.Array.Accelerate
Data.Array.Accelerate.Interpreter
-- Prelude-like
Data.Array.Accelerate.Data.Bits
Data.Array.Accelerate.Data.Complex
Data.Array.Accelerate.Data.Fold
Data.Array.Accelerate.Data.Monoid
-- For backend development
Data.Array.Accelerate.AST
Data.Array.Accelerate.Analysis.Match
Data.Array.Accelerate.Analysis.Shape
Data.Array.Accelerate.Analysis.Stencil
Data.Array.Accelerate.Analysis.Type
Data.Array.Accelerate.Array.Data
Data.Array.Accelerate.Array.Remote
Data.Array.Accelerate.Array.Remote.Class
Data.Array.Accelerate.Array.Remote.LRU
Data.Array.Accelerate.Array.Remote.Table
Data.Array.Accelerate.Array.Representation
Data.Array.Accelerate.Array.Sugar
Data.Array.Accelerate.Array.Unique
Data.Array.Accelerate.Async
Data.Array.Accelerate.Debug
Data.Array.Accelerate.Error
Data.Array.Accelerate.FullList
Data.Array.Accelerate.Lifetime
Data.Array.Accelerate.Pretty
Data.Array.Accelerate.Product
Data.Array.Accelerate.Smart
Data.Array.Accelerate.Trafo
Data.Array.Accelerate.Type
Other-modules:
Data.Atomic
Data.Array.Accelerate.Array.Lifted
Data.Array.Accelerate.Array.Remote.Nursery
Data.Array.Accelerate.Classes
Data.Array.Accelerate.Classes.Bounded
Data.Array.Accelerate.Classes.Enum
Data.Array.Accelerate.Classes.Eq
Data.Array.Accelerate.Classes.Floating
Data.Array.Accelerate.Classes.Fractional
Data.Array.Accelerate.Classes.FromIntegral
Data.Array.Accelerate.Classes.Integral
Data.Array.Accelerate.Classes.Num
Data.Array.Accelerate.Classes.Ord
Data.Array.Accelerate.Classes.Real
Data.Array.Accelerate.Classes.RealFloat
Data.Array.Accelerate.Classes.RealFrac
Data.Array.Accelerate.Classes.ToFloating
Data.Array.Accelerate.Debug.Flags
Data.Array.Accelerate.Debug.Monitoring
Data.Array.Accelerate.Debug.Stats
Data.Array.Accelerate.Debug.Timed
Data.Array.Accelerate.Debug.Trace
Data.Array.Accelerate.Language
Data.Array.Accelerate.Lift
Data.Array.Accelerate.Prelude
Data.Array.Accelerate.Pretty.Graphviz
Data.Array.Accelerate.Pretty.Graphviz.Monad
Data.Array.Accelerate.Pretty.Graphviz.Type
Data.Array.Accelerate.Pretty.Print
Data.Array.Accelerate.Trafo.Algebra
Data.Array.Accelerate.Trafo.Base
Data.Array.Accelerate.Trafo.Fusion
Data.Array.Accelerate.Trafo.Rewrite
Data.Array.Accelerate.Trafo.Sharing
Data.Array.Accelerate.Trafo.Shrink
Data.Array.Accelerate.Trafo.Simplify
Data.Array.Accelerate.Trafo.Substitution
-- Data.Array.Accelerate.Trafo.Vectorise
c-sources: cbits/atomic.c
if flag(debug) || flag(ekg)
cpp-options: -DACCELERATE_DEBUG
if flag(ekg)
cpp-options: -DACCELERATE_MONITORING
build-depends:
async >= 2.0
, ekg >= 0.1
, ekg-core >= 0.1
, text >= 1.0
, time >= 1.4
if flag(bounds-checks)
cpp-options: -DACCELERATE_BOUNDS_CHECKS
if flag(unsafe-checks)
cpp-options: -DACCELERATE_UNSAFE_CHECKS
if flag(internal-checks)
cpp-options: -DACCELERATE_INTERNAL_CHECKS
if os(windows)
cpp-options: -DWIN32
build-depends: Win32
else
cpp-options: -DUNIX
build-depends: unix
ghc-options: -O2 -Wall -funbox-strict-fields -fno-warn-name-shadowing
ghc-prof-options: -caf-all -auto-all
if impl(ghc >= 7.0)
ghc-options: -fspec-constr-count=25
if impl(ghc == 7.*)
ghc-options: -fcontext-stack=35
if impl(ghc >= 8.0)
ghc-options: -freduction-depth=35
-- Don't add the extensions list here. Instead, place individual LANGUAGE
-- pragmas in the files that require a specific extension. This means the
-- project loads in GHCi, and avoids extension clashes.
--
-- Extensions:
source-repository head
Type: git
Location: git://github.com/AccelerateHS/accelerate.git
source-repository this
Type: git
Tag: 1.0.0.0
Location: git://github.com/AccelerateHS/accelerate.git
-- vim: nospell
1
0
31 Aug '17
Hello community,
here is the log from the commit of package ghc-Strafunski-StrategyLib for openSUSE:Factory checked in at 2017-08-31 20:46:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-Strafunski-StrategyLib (Old)
and /work/SRC/openSUSE:Factory/.ghc-Strafunski-StrategyLib.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-Strafunski-StrategyLib"
Thu Aug 31 20:46:08 2017 rev:3 rq:513197 version:5.0.0.10
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-Strafunski-StrategyLib/ghc-Strafunski-StrategyLib.changes 2017-02-03 17:37:48.195833705 +0100
+++ /work/SRC/openSUSE:Factory/.ghc-Strafunski-StrategyLib.new/ghc-Strafunski-StrategyLib.changes 2017-08-31 20:46:09.806196512 +0200
@@ -1,0 +2,5 @@
+Fri Jul 28 03:01:23 UTC 2017 - psimons(a)suse.com
+
+- Update to version 5.0.0.10 revision 1.
+
+-------------------------------------------------------------------
New:
----
Strafunski-StrategyLib.cabal
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-Strafunski-StrategyLib.spec ++++++
--- /var/tmp/diff_new_pack.yWnp3m/_old 2017-08-31 20:46:10.906042134 +0200
+++ /var/tmp/diff_new_pack.yWnp3m/_new 2017-08-31 20:46:10.910041573 +0200
@@ -25,6 +25,7 @@
Group: Development/Languages/Other
Url: https://hackage.haskell.org/package/%{pkg_name}
Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{ve…
+Source1: https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/1.cabal…
BuildRequires: ghc-Cabal-devel
BuildRequires: ghc-directory-devel
BuildRequires: ghc-mtl-devel
@@ -53,6 +54,7 @@
%prep
%setup -q -n %{pkg_name}-%{version}
+cp -p %{SOURCE1} %{pkg_name}.cabal
%build
%ghc_lib_build
++++++ Strafunski-StrategyLib.cabal ++++++
name: Strafunski-StrategyLib
version: 5.0.0.10
x-revision: 1
synopsis: Library for strategic programming
description: This is a version of the StrategyLib library originally shipped with Strafunski, Cabalized and updated to newer versions of GHC. A description of much of StrategyLib can be found in the paper "Design Patterns for Functional Strategic Programming."
license: BSD3
license-file: LICENSE
author: Ralf Laemmel, Joost Visser
maintainer: darmanithird@gmail.com,alan.zimm@gmail.com
category: Generics
build-type: Simple
cabal-version: >=1.8
source-repository head
type: git
location: https://github.com/jkoppel/Strafunski-StrategyLib
library
Extensions:
OverlappingInstances,
FlexibleInstances,
FlexibleContexts,
UndecidableInstances,
MultiParamTypeClasses,
FunctionalDependencies,
Rank2Types
exposed-modules:
Control.Monad.Run,
Data.Generics.Strafunski.StrategyLib.ChaseImports,
Data.Generics.Strafunski.StrategyLib.ContainerTheme,
Data.Generics.Strafunski.StrategyLib.EffectTheme,
Data.Generics.Strafunski.StrategyLib.FixpointTheme,
Data.Generics.Strafunski.StrategyLib.FlowTheme,
Data.Generics.Strafunski.StrategyLib.KeyholeTheme,
Data.Generics.Strafunski.StrategyLib.MetricsTheme,
Data.Generics.Strafunski.StrategyLib.MonadicFunctions,
Data.Generics.Strafunski.StrategyLib.MoreMonoids,
Data.Generics.Strafunski.StrategyLib.NameTheme,
Data.Generics.Strafunski.StrategyLib.OverloadingTheme,
Data.Generics.Strafunski.StrategyLib.PathTheme,
Data.Generics.Strafunski.StrategyLib.RefactoringTheme,
Data.Generics.Strafunski.StrategyLib.StrategyInfix,
Data.Generics.Strafunski.StrategyLib.StrategyLib,
Data.Generics.Strafunski.StrategyLib.StrategyPrelude,
Data.Generics.Strafunski.StrategyLib.TraversalTheme,
Data.Generics.Strafunski.StrategyLib.Models.Deriving.StrategyPrimitives,
Data.Generics.Strafunski.StrategyLib.Models.Deriving.TermRep
-- other-modules:
build-depends:
base > 4.4 && < 4.11,
mtl > 2.2,
syb > 0.3 && < 4.1,
directory > 1.1 && < 1.4,
transformers >= 0.2
1
0