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
May 2019
- 1 participants
- 2232 discussions
Hello community,
here is the log from the commit of package ghc-regex-tdfa for openSUSE:Factory checked in at 2019-05-17 23:43:02
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-regex-tdfa (Old)
and /work/SRC/openSUSE:Factory/.ghc-regex-tdfa.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-regex-tdfa"
Fri May 17 23:43:02 2019 rev:8 rq:703477 version:1.2.3.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-regex-tdfa/ghc-regex-tdfa.changes 2018-10-25 09:03:19.746615326 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-regex-tdfa.new.5148/ghc-regex-tdfa.changes 2019-05-17 23:43:06.709914510 +0200
@@ -1,0 +2,8 @@
+Fri May 10 13:28:35 UTC 2019 - psimons(a)suse.com
+
+- Update regex-tdfa to version 1.2.3.2.
+ # 1.2.3.2
+
+ * Significantly improved documentation (h/t William Yao).
+
+-------------------------------------------------------------------
Old:
----
regex-tdfa-1.2.3.1.tar.gz
New:
----
regex-tdfa-1.2.3.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-regex-tdfa.spec ++++++
--- /var/tmp/diff_new_pack.LxqY2Q/_old 2019-05-17 23:43:09.433913013 +0200
+++ /var/tmp/diff_new_pack.LxqY2Q/_new 2019-05-17 23:43:09.437913011 +0200
@@ -1,7 +1,7 @@
#
# spec file for package ghc-regex-tdfa
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 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,7 +18,7 @@
%global pkg_name regex-tdfa
Name: ghc-%{pkg_name}
-Version: 1.2.3.1
+Version: 1.2.3.2
Release: 0
Summary: Replaces/Enhances Text.Regex
License: BSD-3-Clause
++++++ regex-tdfa-1.2.3.1.tar.gz -> regex-tdfa-1.2.3.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/regex-tdfa-1.2.3.1/CHANGELOG.md new/regex-tdfa-1.2.3.2/CHANGELOG.md
--- old/regex-tdfa-1.2.3.1/CHANGELOG.md 2018-06-22 10:56:03.000000000 +0200
+++ new/regex-tdfa-1.2.3.2/CHANGELOG.md 2019-05-09 11:08:35.000000000 +0200
@@ -1,3 +1,7 @@
+# 1.2.3.2
+
+* Significantly improved documentation (h/t William Yao).
+
# 1.2.3.1
* Compatibility with `containers-0.6`.
@@ -37,7 +41,7 @@
# 1.1.4
-fixed
+fixed
# 1.1.3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/regex-tdfa-1.2.3.1/Text/Regex/TDFA/ByteString/Lazy.hs new/regex-tdfa-1.2.3.2/Text/Regex/TDFA/ByteString/Lazy.hs
--- old/regex-tdfa-1.2.3.1/Text/Regex/TDFA/ByteString/Lazy.hs 2018-06-22 10:38:28.000000000 +0200
+++ new/regex-tdfa-1.2.3.2/Text/Regex/TDFA/ByteString/Lazy.hs 2019-05-08 23:56:36.000000000 +0200
@@ -1,6 +1,6 @@
-{-|
+{-|
This modules provides 'RegexMaker' and 'RegexLike' instances for using
-'ByteString' with the DFA backend ("Text.Regex.Lib.WrapDFAEngine" and
+@ByteString@ with the DFA backend ("Text.Regex.Lib.WrapDFAEngine" and
"Text.Regex.Lazy.DFAEngineFPS"). This module is usually used via
import "Text.Regex.TDFA".
@@ -45,7 +45,7 @@
matchCount r s = length (matchAll r' s)
where r' = r { regex_execOptions = (regex_execOptions r) {captureGroups = False} }
matchTest = Tester.matchTest
- matchOnceText regex source =
+ matchOnceText regex source =
fmap (\ma ->
let (o32,l32) = ma!0
o = fi o32
@@ -64,7 +64,7 @@
let (off0,len0) = x!0
trans pair@(off32,len32) = (L.take (fi len32) (L.drop (fi (off32-i)) t),pair)
t' = L.drop (fi (off0+len0-i)) t
- in amap trans x : seq t' (go (off0+len0) t' xs)
+ in amap trans x : seq t' (go (off0+len0) t' xs)
in go 0 source (matchAll regex source)
fi :: (Integral a, Num b) => a -> b
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/regex-tdfa-1.2.3.1/Text/Regex/TDFA/ByteString.hs new/regex-tdfa-1.2.3.2/Text/Regex/TDFA/ByteString.hs
--- old/regex-tdfa-1.2.3.1/Text/Regex/TDFA/ByteString.hs 2018-06-22 10:38:28.000000000 +0200
+++ new/regex-tdfa-1.2.3.2/Text/Regex/TDFA/ByteString.hs 2019-05-08 23:56:36.000000000 +0200
@@ -1,6 +1,6 @@
-{-|
+{-|
This modules provides 'RegexMaker' and 'RegexLike' instances for using
-'ByteString' with the DFA backend ("Text.Regex.Lib.WrapDFAEngine" and
+@ByteString@ with the DFA backend ("Text.Regex.Lib.WrapDFAEngine" and
"Text.Regex.Lazy.DFAEngineFPS"). This module is usually used via
import "Text.Regex.TDFA".
@@ -44,7 +44,7 @@
matchCount r s = length (matchAll r' s)
where r' = r { regex_execOptions = (regex_execOptions r) {captureGroups = False} }
matchTest = Tester.matchTest
- matchOnceText regex source =
+ matchOnceText regex source =
fmap (\ma -> let (o,l) = ma!0
in (B.take o source
,fmap (\ol@(off,len) -> (B.take len (B.drop off source),ol)) ma
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/regex-tdfa-1.2.3.1/Text/Regex/TDFA/Sequence.hs new/regex-tdfa-1.2.3.2/Text/Regex/TDFA/Sequence.hs
--- old/regex-tdfa-1.2.3.1/Text/Regex/TDFA/Sequence.hs 2018-06-22 10:38:28.000000000 +0200
+++ new/regex-tdfa-1.2.3.2/Text/Regex/TDFA/Sequence.hs 2019-05-08 23:56:36.000000000 +0200
@@ -1,6 +1,6 @@
-{-|
+{-|
This modules provides 'RegexMaker' and 'RegexLike' instances for using
-'ByteString' with the DFA backend ("Text.Regex.Lib.WrapDFAEngine" and
+@ByteString@ with the DFA backend ("Text.Regex.Lib.WrapDFAEngine" and
"Text.Regex.Lazy.DFAEngineFPS"). This module is usually used via
import "Text.Regex.TDFA".
@@ -49,7 +49,7 @@
matchCount r s = length (matchAll r' s)
where r' = r { regex_execOptions = (regex_execOptions r) {captureGroups = False} }
matchTest = Tester.matchTest
- matchOnceText regex source =
+ matchOnceText regex source =
fmap (\ma -> let (o,l) = ma!0
in (before o source
,fmap (\ol -> (extract ol source,ol)) ma
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/regex-tdfa-1.2.3.1/Text/Regex/TDFA.hs new/regex-tdfa-1.2.3.2/Text/Regex/TDFA.hs
--- old/regex-tdfa-1.2.3.1/Text/Regex/TDFA.hs 2018-06-22 10:38:28.000000000 +0200
+++ new/regex-tdfa-1.2.3.2/Text/Regex/TDFA.hs 2019-05-08 23:56:36.000000000 +0200
@@ -1,4 +1,4 @@
-{-|
+{-|
The "Text.Regex.TDFA" module provides a backend for regular
expressions. It provides instances for the classes defined and
@@ -12,13 +12,114 @@
<http://www.haskell.org/haskellwiki/Regex_Posix> for examples of your
OS's bugs.
+= Importing and using
+
+Add to your package.yaml/cabal file:
+
+> dependencies:
+> - regex-tdfa
+
+In modules where you need to use regexes:
+
+> import Text.Regex.TDFA
+
+Note that regex-tdfa does not provide support for @Text@ by default.
+If you need this functionality, add <https://hackage.haskell.org/package/regex-tdfa-text regex-tdfa-text>
+as a dependency and @import Text.Regex.TDFA.Text ()@.
+
+= Basics
+
+@
+λ> let emailRegex = "[a-zA-Z0-9+.\_-]+\(a)[a-zA-Z-]+\\\\.[a-z]+"
+λ> "my email is email(a)email.com" '=~' emailRegex :: Bool
+>>> True
+
+/-- non-monadic/
+λ> \<to-match-against\> '=~' \<regex\>
+
+/-- monadic, uses 'fail' on lack of match/
+λ> \<to-match-against\> '=~~' \<regex\>
+@
+
+('=~') and ('=~~') are polymorphic in their return type. This is so that
+regex-tdfa can pick the most efficient way to give you your result based on
+what you need. For instance, if all you want is to check whether the regex
+matched or not, there's no need to allocate a result string. If you only want
+the first match, rather than all the matches, then the matching engine can stop
+after finding a single hit.
+
+This does mean, though, that you may sometimes have to explicitly specify the
+type you want, especially if you're trying things out at the REPL.
+
+= Common use cases
+
+== Get the first match
+
+@
+/-- returns empty string if no match/
+a '=~' b :: String /-- or ByteString, or Text.../
+
+λ> "alexis-de-tocqueville" '=~' "[a-z]+" :: String
+>>> "alexis"
+
+λ> "alexis-de-tocqueville" '=~' "[0-9]+" :: String
+>>> ""
+@
+
+== Check if it matched at all
+
+@
+a '=~' b :: Bool
+
+λ> "alexis-de-tocqueville" '=~' "[a-z]+" :: Bool
+>>> True
+@
+
+== Get first match + text before/after
+
+@
+/-- if no match, will just return whole/
+/-- string in the first element of the tuple/
+a =~ b :: (String, String, String)
+
+λ> "alexis-de-tocqueville" '=~' "de" :: (String, String, String)
+>>> ("alexis-", "de", "-tocqueville")
+
+λ> "alexis-de-tocqueville" '=~' "kant" :: (String, String, String)
+>>> ("alexis-de-tocqueville", "", "")
+@
+
+== Get first match + submatches
+
+@
+/-- same as above, but also returns a list of just submatches./
+/-- submatch list is empty if regex doesn't match at all/
+a '=~' b :: (String, String, String, [String])
+
+λ> "div[attr=1234]" '=~' "div\\\\[([a-z]+)=([^]]+)\\\\]" :: (String, String, String, [String])
+>>> ("", "div[attr=1234]", "", ["attr","1234"])
+@
+
+== Get /all/ matches
+
+@
+/-- can also return Data.Array instead of List/
+'getAllTextMatches' (a '=~' b) :: [String]
+
+λ> 'getAllTextMatches' ("john anne yifan" '=~' "[a-z]+") :: [String]
+>>> ["john","anne","yifan"]
+@
+
+= Feature support
+
This package does provide captured parenthesized subexpressions.
Depending on the text being searched this package supports Unicode.
-The [Char] and (Seq Char) text types support Unicode. The ByteString
-and ByteString.Lazy text types only support ASCII. It is possible to
-support utf8 encoded ByteString.Lazy by using regex-tdfa and
-regex-tdfa-utf8 packages together (required the utf8-string package).
+The @[Char]@ and @(Seq Char)@ text types support Unicode. The @ByteString@
+and @ByteString.Lazy@ text types only support ASCII. It is possible to
+support utf8 encoded @ByteString.Lazy@ by using regex-tdfa and
+<http://hackage.haskell.org/package/regex-tdfa-utf8 regex-tdfa-utf8>
+packages together (required the utf8-string package).
As of version 1.1.1 the following GNU extensions are recognized, all
anchors:
@@ -47,7 +148,26 @@
package does not provide back references inside regular expressions.
The package does not provide Perl style regular expressions. Please
-look at the regex-pcre and pcre-light packages instead.
+look at the <http://hackage.haskell.org/package/regex-pcre regex-pcre>
+and <http://hackage.haskell.org/package/pcre-light pcre-light> packages instead.
+
+This package does not provide find-and-replace.
+
+= Avoiding backslashes
+
+If you find yourself writing a lot of regexes, take a look at
+<http://hackage.haskell.org/package/raw-strings-qq raw-strings-qq>. It'll
+let you write regexes without needing to escape all your backslashes.
+
+@
+\{\-\# LANGUAGE QuasiQuotes \#\-\}
+
+import Text.RawString.QQ
+import Text.Regex.TDFA
+
+λ> "2 * (3 + 1) / 4" '=~' [r|\\([^)]+\\)|] :: String
+>>> "(3 + 1)"
+@
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/regex-tdfa-1.2.3.1/regex-tdfa.cabal new/regex-tdfa-1.2.3.2/regex-tdfa.cabal
--- old/regex-tdfa-1.2.3.1/regex-tdfa.cabal 2018-06-22 10:56:06.000000000 +0200
+++ new/regex-tdfa-1.2.3.2/regex-tdfa.cabal 2019-05-09 11:07:43.000000000 +0200
@@ -1,5 +1,5 @@
Name: regex-tdfa
-Version: 1.2.3.1
+Version: 1.2.3.2
License: BSD3
License-File: LICENSE
Copyright: Copyright (c) 2007, Christopher Kuklewicz
@@ -11,7 +11,13 @@
Synopsis: Replaces/Enhances Text.Regex
Description: A new all Haskell "tagged" DFA regex engine, inspired by libtre
Category: Text
-Tested-With: GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.1, GHC == 8.2.2, GHC == 8.4.1
+Tested-With: GHC==7.6.3
+ , GHC==7.8.4
+ , GHC==7.10.3
+ , GHC==8.0.2
+ , GHC==8.2.2
+ , GHC==8.4.4
+ , GHC==8.6.4
Build-Type: Simple
extra-source-files:
CHANGELOG.md
@@ -26,7 +32,7 @@
default: False
manual: True
-library
+library
Build-Depends: array >= 0.4 && < 0.6
, base >= 4 && < 5
, bytestring >= 0.10 && < 0.11
1
0
Hello community,
here is the log from the commit of package ghc-profunctors for openSUSE:Factory checked in at 2019-05-17 23:42:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-profunctors (Old)
and /work/SRC/openSUSE:Factory/.ghc-profunctors.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-profunctors"
Fri May 17 23:42:56 2019 rev:10 rq:703476 version:5.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-profunctors/ghc-profunctors.changes 2018-10-25 09:02:45.814636115 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-profunctors.new.5148/ghc-profunctors.changes 2019-05-17 23:42:56.989919848 +0200
@@ -1,0 +2,12 @@
+Sat May 11 02:00:37 UTC 2019 - psimons(a)suse.com
+
+- Update profunctors to version 5.4.
+ 5.4 [2019.05.10]
+ ----------------
+ * Add `wander`-like combinator `roam` to `Mapping`.
+ * Remove illegal `instance Choice (Costar w)`.
+ * Add `strong` combinator #62.
+ * Only depend on `semigroups` before GHC 8.0.
+ * Add `Contravariant` instances for `Star` and `Forget`.
+
+-------------------------------------------------------------------
Old:
----
profunctors-5.3.tar.gz
New:
----
profunctors-5.4.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-profunctors.spec ++++++
--- /var/tmp/diff_new_pack.bI7GFS/_old 2019-05-17 23:42:58.869918816 +0200
+++ /var/tmp/diff_new_pack.bI7GFS/_new 2019-05-17 23:42:58.873918813 +0200
@@ -1,7 +1,7 @@
#
# spec file for package ghc-profunctors
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 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,7 +18,7 @@
%global pkg_name profunctors
Name: ghc-%{pkg_name}
-Version: 5.3
+Version: 5.4
Release: 0
Summary: Profunctors
License: BSD-3-Clause
@@ -32,7 +32,6 @@
BuildRequires: ghc-contravariant-devel
BuildRequires: ghc-distributive-devel
BuildRequires: ghc-rpm-macros
-BuildRequires: ghc-semigroups-devel
BuildRequires: ghc-tagged-devel
BuildRequires: ghc-transformers-devel
++++++ profunctors-5.3.tar.gz -> profunctors-5.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/profunctors-5.3/.hlint.yaml new/profunctors-5.4/.hlint.yaml
--- old/profunctors-5.3/.hlint.yaml 2018-07-03 03:33:59.000000000 +0200
+++ new/profunctors-5.4/.hlint.yaml 2001-09-09 03:46:40.000000000 +0200
@@ -49,6 +49,16 @@
name: Collapse lambdas
within: Data.Profunctor.Unsafe
+- ignore:
+ name: Eta reduce
+ within: Data.Profunctor.Mapping
+
+- ignore:
+ name: "Use tuple-section"
+
+- ignore:
+ name: "Avoid lambda using `infix`"
+
- fixity: "infixr 9 #."
- fixity: "infixl 8 .#"
- fixity: "infixr 0 :->"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/profunctors-5.3/.travis.yml new/profunctors-5.4/.travis.yml
--- old/profunctors-5.3/.travis.yml 2018-07-03 03:33:59.000000000 +0200
+++ new/profunctors-5.4/.travis.yml 2001-09-09 03:46:40.000000000 +0200
@@ -1,151 +1,169 @@
# This Travis job script has been generated by a script via
#
-# runghc make_travis_yml_2.hs '-o' '.travis.yml' '--ghc-head' '--irc-channel=irc.freenode.org#haskell-lens' '--no-no-tests-no-bench' '--no-unconstrained' 'cabal.project'
+# haskell-ci '--output=.travis.yml' '--config=cabal.haskell-ci' 'cabal.project'
#
-# For more information, see https://github.com/hvr/multi-ghc-travis
+# For more information, see https://github.com/haskell-CI/haskell-ci
+#
+# version: 0.3.20190425
#
language: c
-sudo: false
-
+dist: xenial
git:
- submodules: false # whether to recursively clone submodules
-
+ # whether to recursively clone submodules
+ submodules: false
notifications:
irc:
channels:
- - "irc.freenode.org#haskell-lens"
+ - irc.freenode.org#haskell-lens
skip_join: true
template:
- - "\x0313profunctors\x03/\x0306%{branch}\x03 \x0314%{commit}\x03 %{build_url} %{message}"
-
+ - "\"\\x0313profunctors\\x03/\\x0306%{branch}\\x03 \\x0314%{commit}\\x03 %{build_url} %{message}\""
cache:
directories:
- $HOME/.cabal/packages
- $HOME/.cabal/store
-
before_cache:
- - rm -fv $HOME/.cabal/packages/hackage.haskell.org/build-reports.log
+ - rm -fv $CABALHOME/packages/hackage.haskell.org/build-reports.log
# remove files that are regenerated by 'cabal update'
- - rm -fv $HOME/.cabal/packages/hackage.haskell.org/00-index.*
- - rm -fv $HOME/.cabal/packages/hackage.haskell.org/*.json
- - rm -fv $HOME/.cabal/packages/hackage.haskell.org/01-index.cache
- - rm -fv $HOME/.cabal/packages/hackage.haskell.org/01-index.tar
- - rm -fv $HOME/.cabal/packages/hackage.haskell.org/01-index.tar.idx
-
- - rm -rfv $HOME/.cabal/packages/head.hackage
-
+ - rm -fv $CABALHOME/packages/hackage.haskell.org/00-index.*
+ - rm -fv $CABALHOME/packages/hackage.haskell.org/*.json
+ - rm -fv $CABALHOME/packages/hackage.haskell.org/01-index.cache
+ - rm -fv $CABALHOME/packages/hackage.haskell.org/01-index.tar
+ - rm -fv $CABALHOME/packages/hackage.haskell.org/01-index.tar.idx
+ - rm -rfv $CABALHOME/packages/head.hackage
matrix:
include:
- - compiler: "ghc-8.6.1"
+ - compiler: ghc-8.8.1
+ addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-8.8.1","cabal-install-3.0"]}}
env: GHCHEAD=true
- addons: {apt: {packages: [ghc-ppa-tools,cabal-install-head,ghc-8.6.1], sources: [hvr-ghc]}}
- - compiler: "ghc-8.4.3"
- # env: TEST=--disable-tests BENCH=--disable-benchmarks
- addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.2,ghc-8.4.3], sources: [hvr-ghc]}}
- - compiler: "ghc-8.2.2"
- # env: TEST=--disable-tests BENCH=--disable-benchmarks
- addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.2,ghc-8.2.2], sources: [hvr-ghc]}}
- - compiler: "ghc-8.0.2"
- # env: TEST=--disable-tests BENCH=--disable-benchmarks
- addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.2,ghc-8.0.2], sources: [hvr-ghc]}}
- - compiler: "ghc-7.10.3"
- # env: TEST=--disable-tests BENCH=--disable-benchmarks
- addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.2,ghc-7.10.3], sources: [hvr-ghc]}}
- - compiler: "ghc-7.8.4"
- # env: TEST=--disable-tests BENCH=--disable-benchmarks
- addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.2,ghc-7.8.4], sources: [hvr-ghc]}}
- - compiler: "ghc-head"
+ - compiler: ghc-8.6.5
+ addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-8.6.5","cabal-install-2.4"]}}
+ - compiler: ghc-8.4.4
+ addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-8.4.4","cabal-install-2.4"]}}
+ - compiler: ghc-8.2.2
+ addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-8.2.2","cabal-install-2.4"]}}
+ - compiler: ghc-8.0.2
+ addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-8.0.2","cabal-install-2.4"]}}
+ - compiler: ghc-7.10.3
+ addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-7.10.3","cabal-install-2.4"]}}
+ - compiler: ghc-7.8.4
+ addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-7.8.4","cabal-install-2.4"]}}
+ - compiler: ghc-head
+ addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-head","cabal-install-head"]}}
env: GHCHEAD=true
- addons: {apt: {packages: [ghc-ppa-tools,cabal-install-head,ghc-head], sources: [hvr-ghc]}}
-
allow_failures:
- - compiler: "ghc-head"
- - compiler: "ghc-8.6.1"
-
+ - compiler: ghc-head
+ - compiler: ghc-8.8.1
before_install:
- - HC=${CC}
- - HCPKG=${HC/ghc/ghc-pkg}
+ - HC=$(echo "/opt/$CC/bin/ghc" | sed 's/-/\//')
+ - HCPKG="$HC-pkg"
- unset CC
- - export HLINTVER=2.1.3
- - mkdir ~/.hlint
- - curl -L https://github.com/ndmitchell/hlint/releases/download/v$HLINTVER/hlint-$HLI… | tar -xz --strip-components=1 -C ~/.hlint
- - ROOTDIR=$(pwd)
- - mkdir -p $HOME/.local/bin
- - "PATH=~/.hlint:/opt/ghc/bin:/opt/ghc-ppa-tools/bin:$HOME/local/bin:$PATH"
+ - CABAL=/opt/ghc/bin/cabal
+ - CABALHOME=$HOME/.cabal
+ - export PATH="$CABALHOME/bin:$PATH"
+ - TOP=$(pwd)
- HCNUMVER=$(( $(${HC} --numeric-version|sed -E 's/([0-9]+)\.([0-9]+)\.([0-9]+).*/\1 * 10000 + \2 * 100 + \3/') ))
- echo $HCNUMVER
-
+ - CABAL="$CABAL -vnormal+nowrap+markoutput"
+ - set -o pipefail
+ - |
+ echo 'function blue(s) { printf "\033[0;34m" s "\033[0m " }' >> .colorful.awk
+ echo 'BEGIN { state = "output"; }' >> .colorful.awk
+ echo '/^-----BEGIN CABAL OUTPUT-----$/ { state = "cabal" }' >> .colorful.awk
+ echo '/^-----END CABAL OUTPUT-----$/ { state = "output" }' >> .colorful.awk
+ echo '!/^(-----BEGIN CABAL OUTPUT-----|-----END CABAL OUTPUT-----)/ {' >> .colorful.awk
+ echo ' if (state == "cabal") {' >> .colorful.awk
+ echo ' print blue($0)' >> .colorful.awk
+ echo ' } else {' >> .colorful.awk
+ echo ' print $0' >> .colorful.awk
+ echo ' }' >> .colorful.awk
+ echo '}' >> .colorful.awk
+ - cat .colorful.awk
+ - |
+ color_cabal_output () {
+ awk -f $TOP/.colorful.awk
+ }
+ - echo text | color_cabal_output
install:
- - cabal --version
+ - ${CABAL} --version
- echo "$(${HC} --version) [$(${HC} --print-project-git-commit-id 2> /dev/null || echo '?')]"
- - BENCH=${BENCH---enable-benchmarks}
- - TEST=${TEST---enable-tests}
- - HADDOCK=${HADDOCK-true}
- - UNCONSTRAINED=${UNCONSTRAINED-true}
- - NOINSTALLEDCONSTRAINTS=${NOINSTALLEDCONSTRAINTS-false}
+ - TEST=--enable-tests
+ - BENCH=--enable-benchmarks
- GHCHEAD=${GHCHEAD-false}
- - travis_retry cabal update -v
- - "sed -i.bak 's/^jobs:/-- jobs:/' ${HOME}/.cabal/config"
- - rm -fv cabal.project cabal.project.local
- # Overlay Hackage Package Index for GHC HEAD: https://github.com/hvr/head.hackage
+ - rm -f $CABALHOME/config
+ - |
+ echo "verbose: normal +nowrap +markoutput" >> $CABALHOME/config
+ echo "remote-build-reporting: anonymous" >> $CABALHOME/config
+ echo "remote-repo-cache: $CABALHOME/packages" >> $CABALHOME/config
+ echo "logs-dir: $CABALHOME/logs" >> $CABALHOME/config
+ echo "world-file: $CABALHOME/world" >> $CABALHOME/config
+ echo "extra-prog-path: $CABALHOME/bin" >> $CABALHOME/config
+ echo "symlink-bindir: $CABALHOME/bin" >> $CABALHOME/config
+ echo "installdir: $CABALHOME/bin" >> $CABALHOME/config
+ echo "build-summary: $CABALHOME/logs/build.log" >> $CABALHOME/config
+ echo "store-dir: $CABALHOME/store" >> $CABALHOME/config
+ echo "install-dirs user" >> $CABALHOME/config
+ echo " prefix: $CABALHOME" >> $CABALHOME/config
+ echo "repository hackage.haskell.org" >> $CABALHOME/config
+ echo " url: http://hackage.haskell.org/" >> $CABALHOME/config
- |
if $GHCHEAD; then
- sed -i 's/-- allow-newer: .*/allow-newer: *:base/' ${HOME}/.cabal/config
- for pkg in $($HCPKG list --simple-output); do pkg=$(echo $pkg | sed 's/-[^-]*$//'); sed -i "s/allow-newer: /allow-newer: *:$pkg, /" ${HOME}/.cabal/config; done
-
- echo 'repository head.hackage' >> ${HOME}/.cabal/config
- echo ' url: http://head.hackage.haskell.org/' >> ${HOME}/.cabal/config
- echo ' secure: True' >> ${HOME}/.cabal/config
- echo ' root-keys: 07c59cb65787dedfaef5bd5f987ceb5f7e5ebf88b904bbd4c5cbdeb2ff71b740' >> ${HOME}/.cabal/config
- echo ' 2e8555dde16ebd8df076f1a8ef13b8f14c66bad8eafefd7d9e37d0ed711821fb' >> ${HOME}/.cabal/config
- echo ' 8f79fd2389ab2967354407ec852cbe73f2e8635793ac446d09461ffb99527f6e' >> ${HOME}/.cabal/config
- echo ' key-threshold: 3' >> ${HOME}/.cabal.config
-
- grep -Ev -- '^\s*--' ${HOME}/.cabal/config | grep -Ev '^\s*$'
-
- cabal new-update head.hackage -v
+ echo "allow-newer: $($HCPKG list --simple-output | sed -E 's/([a-zA-Z-]+)-[0-9.]+/*:\1/g')" >> $CABALHOME/config
+
+ echo "repository head.hackage" >> $CABALHOME/config
+ echo " url: http://head.hackage.haskell.org/" >> $CABALHOME/config
+ echo " secure: True" >> $CABALHOME/config
+ echo " root-keys: 07c59cb65787dedfaef5bd5f987ceb5f7e5ebf88b904bbd4c5cbdeb2ff71b740" >> $CABALHOME/config
+ echo " 2e8555dde16ebd8df076f1a8ef13b8f14c66bad8eafefd7d9e37d0ed711821fb" >> $CABALHOME/config
+ echo " 8f79fd2389ab2967354407ec852cbe73f2e8635793ac446d09461ffb99527f6e" >> $CABALHOME/config
+ echo " key-threshold: 3" >> $CABALHOME/config
fi
- - grep -Ev -- '^\s*--' ${HOME}/.cabal/config | grep -Ev '^\s*$'
- - "printf 'packages: \".\"\\n' > cabal.project"
- - touch cabal.project.local
- - "if ! $NOINSTALLEDCONSTRAINTS; then for pkg in $($HCPKG list --simple-output); do echo $pkg | sed 's/^/constraints: /' | sed 's/-[^-]*$/ installed/' >> cabal.project.local; done; fi"
+ - cat $CABALHOME/config
+ - rm -fv cabal.project cabal.project.local cabal.project.freeze
+ - travis_retry ${CABAL} v2-update -v
+ - if [ $HCNUMVER -eq 80801 ] ; then ${CABAL} v2-install -w ${HC} -j2 hlint --constraint='hlint ==2.1.*' | color_cabal_output ; fi
+ # Generate cabal.project
+ - rm -rf cabal.project cabal.project.local cabal.project.freeze
+ - touch cabal.project
+ - |
+ echo 'packages: "."' >> cabal.project
+ - |
+ echo "write-ghc-environment-files: always" >> cabal.project
+ - "for pkg in $($HCPKG list --simple-output); do echo $pkg | sed 's/-[^-]*$//' | grep -vE -- '^(profunctors)$' | sed 's/^/constraints: /' | sed 's/$/ installed/' >> cabal.project.local; done"
- cat cabal.project || true
- cat cabal.project.local || true
- - if [ -f "./configure.ac" ]; then
- (cd "." && autoreconf -i);
- fi
- - rm -f cabal.project.freeze
- - cabal new-build -w ${HC} ${TEST} ${BENCH} --project-file="cabal.project" --dep -j2 all
- - rm -rf .ghc.environment.* "."/dist
- - DISTDIR=$(mktemp -d /tmp/dist-test.XXXX)
-
-# Here starts the actual work to be performed for the package under test;
-# any command which exits with a non-zero exit code causes the build to fail.
+ - if [ -f "./configure.ac" ]; then (cd "." && autoreconf -i); fi
+ - ${CABAL} v2-freeze -w ${HC} ${TEST} ${BENCH} | color_cabal_output
+ - "cat cabal.project.freeze | sed -E 's/^(constraints: *| *)//' | sed 's/any.//'"
+ - rm cabal.project.freeze
+ - ${CABAL} v2-build -w ${HC} ${TEST} ${BENCH} --dep -j2 all | color_cabal_output
script:
- # test that source-distributions can be generated
- - (cd "." && cabal sdist)
- - mv "."/dist/profunctors-*.tar.gz ${DISTDIR}/
+ - DISTDIR=$(mktemp -d /tmp/dist-test.XXXX)
+ # Packaging...
+ - ${CABAL} v2-sdist all | color_cabal_output
+ # Unpacking...
+ - mv dist-newstyle/sdist/*.tar.gz ${DISTDIR}/
- cd ${DISTDIR} || false
- find . -maxdepth 1 -name '*.tar.gz' -exec tar -xvf '{}' \;
- - "printf 'packages: profunctors-*/*.cabal\\n' > cabal.project"
- - touch cabal.project.local
- - "if ! $NOINSTALLEDCONSTRAINTS; then for pkg in $($HCPKG list --simple-output); do echo $pkg | sed 's/^/constraints: /' | sed 's/-[^-]*$/ installed/' >> cabal.project.local; done; fi"
+ # Generate cabal.project
+ - rm -rf cabal.project cabal.project.local cabal.project.freeze
+ - touch cabal.project
+ - |
+ echo 'packages: "profunctors-*/*.cabal"' >> cabal.project
+ - |
+ echo "write-ghc-environment-files: always" >> cabal.project
+ - "for pkg in $($HCPKG list --simple-output); do echo $pkg | sed 's/-[^-]*$//' | grep -vE -- '^(profunctors)$' | sed 's/^/constraints: /' | sed 's/$/ installed/' >> cabal.project.local; done"
- cat cabal.project || true
- cat cabal.project.local || true
-
+ # Building with tests and benchmarks...
# build & run tests, build benchmarks
- - cabal new-build -w ${HC} ${TEST} ${BENCH} all
-
- # cabal check
- - (cd profunctors-* && cabal check)
-
- # haddock
- - rm -rf ./dist-newstyle
- - if $HADDOCK; then cabal new-haddock -w ${HC} ${TEST} ${BENCH} all; else echo "Skipping haddock generation";fi
-
- # hlint
- - hlint --version
- - (cd profunctors-* && hlint src)
+ - ${CABAL} v2-build -w ${HC} ${TEST} ${BENCH} all | color_cabal_output
+ # HLint..
+ - if [ $HCNUMVER -eq 80801 ] ; then (cd profunctors-* && hlint --cpp-ansi --cpp-define=HLINT src) ; fi
+ # cabal check...
+ - (cd profunctors-* && ${CABAL} -vnormal check)
+ # haddock...
+ - ${CABAL} v2-haddock -w ${HC} ${TEST} ${BENCH} all | color_cabal_output
-# REGENDATA ["-o",".travis.yml","--ghc-head","--irc-channel=irc.freenode.org#haskell-lens","--no-no-tests-no-bench","--no-unconstrained","cabal.project"]
+# REGENDATA ["--output=.travis.yml","--config=cabal.haskell-ci","cabal.project"]
# EOF
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/profunctors-5.3/CHANGELOG.markdown new/profunctors-5.4/CHANGELOG.markdown
--- old/profunctors-5.3/CHANGELOG.markdown 2018-07-03 03:33:59.000000000 +0200
+++ new/profunctors-5.4/CHANGELOG.markdown 2001-09-09 03:46:40.000000000 +0200
@@ -1,3 +1,11 @@
+5.4 [2019.05.10]
+----------------
+* Add `wander`-like combinator `roam` to `Mapping`.
+* Remove illegal `instance Choice (Costar w)`.
+* Add `strong` combinator #62.
+* Only depend on `semigroups` before GHC 8.0.
+* Add `Contravariant` instances for `Star` and `Forget`.
+
5.3 [2018.07.02]
----------------
* Generalize the types of `(#.)` and `(.#)`. Before, they were:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/profunctors-5.3/profunctors.cabal new/profunctors-5.4/profunctors.cabal
--- old/profunctors-5.3/profunctors.cabal 2018-07-03 03:33:59.000000000 +0200
+++ new/profunctors-5.4/profunctors.cabal 2001-09-09 03:46:40.000000000 +0200
@@ -1,6 +1,6 @@
name: profunctors
category: Control, Categories
-version: 5.3
+version: 5.4
license: BSD3
cabal-version: >= 1.10
license-file: LICENSE
@@ -16,8 +16,9 @@
, GHC == 7.10.3
, GHC == 8.0.2
, GHC == 8.2.2
- , GHC == 8.4.3
- , GHC == 8.6.1
+ , GHC == 8.4.4
+ , GHC == 8.6.5
+ , GHC == 8.8.1
build-type: Simple
extra-source-files:
.ghci
@@ -40,10 +41,12 @@
comonad >= 4 && < 6,
contravariant >= 1 && < 2,
distributive >= 0.4.4 && < 1,
- semigroups >= 0.11 && < 0.19,
tagged >= 0.4.4 && < 1,
transformers >= 0.2 && < 0.6
+ if !impl(ghc >= 8.0)
+ build-depends: semigroups >= 0.11 && < 0.20
+
exposed-modules:
Data.Profunctor
Data.Profunctor.Adjunction
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/profunctors-5.3/src/Data/Profunctor/Adjunction.hs new/profunctors-5.4/src/Data/Profunctor/Adjunction.hs
--- old/profunctors-5.3/src/Data/Profunctor/Adjunction.hs 2018-07-03 03:33:59.000000000 +0200
+++ new/profunctors-5.4/src/Data/Profunctor/Adjunction.hs 2001-09-09 03:46:40.000000000 +0200
@@ -1,5 +1,4 @@
{-# LANGUAGE TypeOperators #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE FunctionalDependencies #-}
{-# LANGUAGE RankNTypes #-}
-----------------------------------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/profunctors-5.3/src/Data/Profunctor/Choice.hs new/profunctors-5.4/src/Data/Profunctor/Choice.hs
--- old/profunctors-5.3/src/Data/Profunctor/Choice.hs 2018-07-03 03:33:59.000000000 +0200
+++ new/profunctors-5.4/src/Data/Profunctor/Choice.hs 2001-09-09 03:46:40.000000000 +0200
@@ -128,13 +128,6 @@
right' = right
{-# INLINE right' #-}
--- NB: This instance is highly questionable
-instance Traversable w => Choice (Costar w) where
- left' (Costar wab) = Costar (either Right Left . fmap wab . traverse (either Right Left))
- {-# INLINE left' #-}
- right' (Costar wab) = Costar (fmap wab . sequence)
- {-# INLINE right' #-}
-
instance Choice Tagged where
left' (Tagged b) = Tagged (Left b)
{-# INLINE left' #-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/profunctors-5.3/src/Data/Profunctor/Closed.hs new/profunctors-5.4/src/Data/Profunctor/Closed.hs
--- old/profunctors-5.3/src/Data/Profunctor/Closed.hs 2018-07-03 03:33:59.000000000 +0200
+++ new/profunctors-5.4/src/Data/Profunctor/Closed.hs 2001-09-09 03:46:40.000000000 +0200
@@ -67,10 +67,10 @@
closed = (.)
instance Functor f => Closed (Costar f) where
- closed (Costar fab) = Costar $ \fxa x -> fab (fmap ($x) fxa)
+ closed (Costar fab) = Costar $ \fxa x -> fab (fmap ($ x) fxa)
instance Functor f => Closed (Cokleisli f) where
- closed (Cokleisli fab) = Cokleisli $ \fxa x -> fab (fmap ($x) fxa)
+ closed (Cokleisli fab) = Cokleisli $ \fxa x -> fab (fmap ($ x) fxa)
instance Distributive f => Closed (Star f) where
closed (Star afb) = Star $ \xa -> distribute $ \x -> afb (xa x)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/profunctors-5.3/src/Data/Profunctor/Mapping.hs new/profunctors-5.4/src/Data/Profunctor/Mapping.hs
--- old/profunctors-5.3/src/Data/Profunctor/Mapping.hs 2018-07-03 03:33:59.000000000 +0200
+++ new/profunctors-5.4/src/Data/Profunctor/Mapping.hs 2001-09-09 03:46:40.000000000 +0200
@@ -1,6 +1,7 @@
{-# LANGUAGE CPP #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE DeriveFunctor #-}
-----------------------------------------------------------------------------
-- |
-- Copyright : (C) 2015-2018 Edward Kmett
@@ -15,6 +16,8 @@
( Mapping(..)
, CofreeMapping(..)
, FreeMapping(..)
+ -- * Traversing in terms of Mapping
+ , wanderMapping
-- * Closed in terms of Mapping
, traverseMapping
, closedMapping
@@ -44,16 +47,45 @@
-- 'dimap' 'Data.Functor.Identity.Identity' 'Data.Functor.Identity.runIdentity' '.' 'map'' ≡ 'id'
-- @
map' :: Functor f => p a b -> p (f a) (f b)
+ map' = roam collect
+
+ roam :: (forall f. (Distributive f, Applicative f)
+ => (a -> f b) -> s -> f t)
+ -> p a b -> p s t
+ roam f = dimap (\s -> Bar $ \afb -> f afb s) lent . map'
+
+newtype Bar t b a = Bar
+ { runBar :: forall f. (Distributive f, Applicative f)
+ => (a -> f b) -> f t }
+ deriving Functor
+
+lent :: Bar t a a -> t
+lent m = runIdentity (runBar m Identity)
instance Mapping (->) where
map' = fmap
+ roam f g = runIdentity #. f (Identity #. g)
instance (Monad m, Distributive m) => Mapping (Kleisli m) where
map' (Kleisli f) = Kleisli (collect f)
+#if __GLASGOW_HASKELL__ >= 710
+ roam f = Kleisli #. f .# runKleisli
+#endif
+{-
+For earlier versions, we'd like to use something like
+
+ roam f = (Kleisli . (unwrapMonad .)) #. f .# ((WrapMonad .) . runKleisli)
+
+but it seems WrappedMonad doesn't have a Distributive instance.
+-}
-- see <https://github.com/ekmett/distributive/issues/12>
instance (Applicative m, Distributive m) => Mapping (Star m) where
map' (Star f) = Star (collect f)
+ roam f = Star #. f .# runStar
+
+wanderMapping :: Mapping p => (forall f. Applicative f => (a -> f b) -> s -> f t) -> p a b -> p s t
+wanderMapping f = roam f
traverseMapping :: (Mapping p, Functor f) => p a b -> p (f a) (f b)
traverseMapping = map'
@@ -79,10 +111,15 @@
instance Profunctor p => Traversing (CofreeMapping p) where
traverse' = map'
+ wander f = roam f
instance Profunctor p => Mapping (CofreeMapping p) where
-- !@(#*&() Compose isn't representational in its second arg or we could use #. and .#
map' (CofreeMapping p) = CofreeMapping (dimap Compose getCompose p)
+ roam f (CofreeMapping p) =
+ CofreeMapping $
+ dimap (Compose #. fmap (\s -> Bar $ \afb -> f afb s))
+ (fmap lent .# getCompose) p
instance ProfunctorFunctor CofreeMapping where
promap f (CofreeMapping p) = CofreeMapping (f p)
@@ -113,6 +150,7 @@
instance Traversing (FreeMapping p) where
traverse' = map'
+ wander f = roam f
instance Mapping (FreeMapping p) where
map' (FreeMapping l m r) = FreeMapping (fmap l .# getCompose) m (Compose #. fmap r)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/profunctors-5.3/src/Data/Profunctor/Rep.hs new/profunctors-5.4/src/Data/Profunctor/Rep.hs
--- old/profunctors-5.3/src/Data/Profunctor/Rep.hs 2018-07-03 03:33:59.000000000 +0200
+++ new/profunctors-5.4/src/Data/Profunctor/Rep.hs 2001-09-09 03:46:40.000000000 +0200
@@ -139,7 +139,7 @@
-- | Default definition for 'closed' given that @p@ is 'Corepresentable'
closedCorep :: Corepresentable p => p a b -> p (x -> a) (x -> b)
-closedCorep p = cotabulate $ \fs x -> cosieve p (fmap ($x) fs)
+closedCorep p = cotabulate $ \fs x -> cosieve p (fmap ($ x) fs)
instance Corepresentable (->) where
type Corep (->) = Identity
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/profunctors-5.3/src/Data/Profunctor/Sieve.hs new/profunctors-5.4/src/Data/Profunctor/Sieve.hs
--- old/profunctors-5.3/src/Data/Profunctor/Sieve.hs 2018-07-03 03:33:59.000000000 +0200
+++ new/profunctors-5.4/src/Data/Profunctor/Sieve.hs 2001-09-09 03:46:40.000000000 +0200
@@ -1,7 +1,6 @@
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE FlexibleContexts #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE FunctionalDependencies #-}
{-# LANGUAGE Trustworthy #-}
-----------------------------------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/profunctors-5.3/src/Data/Profunctor/Strong.hs new/profunctors-5.4/src/Data/Profunctor/Strong.hs
--- old/profunctors-5.3/src/Data/Profunctor/Strong.hs 2018-07-03 03:33:59.000000000 +0200
+++ new/profunctors-5.4/src/Data/Profunctor/Strong.hs 2001-09-09 03:46:40.000000000 +0200
@@ -19,6 +19,7 @@
-- * Strength
Strong(..)
, uncurry'
+ , strong
, Tambara(..)
, tambara, untambara
, Pastro(..)
@@ -60,7 +61,7 @@
-- This describes profunctor strength with respect to the product structure
-- of Hask.
--
--- <http://www-kb.is.s.u-tokyo.ac.jp/~asada/papers/arrStrMnd.pdf>
+-- <http://www.riec.tohoku.ac.jp/~asada/papers/arrStrMnd.pdf>
--
class Profunctor p => Strong p where
-- | Laws:
@@ -68,7 +69,7 @@
-- @
-- 'first'' ≡ 'dimap' 'swap' 'swap' '.' 'second''
-- 'lmap' 'fst' ≡ 'rmap' 'fst' '.' 'first''
- -- 'lmap' ('second' f) '.' 'first'' ≡ 'rmap' ('second' f) '.' 'first'
+ -- 'lmap' ('second'' f) '.' 'first'' ≡ 'rmap' ('second'' f) '.' 'first''
-- 'first'' '.' 'first'' ≡ 'dimap' assoc unassoc '.' 'first'' where
-- assoc ((a,b),c) = (a,(b,c))
-- unassoc (a,(b,c)) = ((a,b),c)
@@ -81,7 +82,7 @@
-- @
-- 'second'' ≡ 'dimap' 'swap' 'swap' '.' 'first''
-- 'lmap' 'snd' ≡ 'rmap' 'snd' '.' 'second''
- -- 'lmap' ('first' f) '.' 'second'' ≡ 'rmap' ('first' f) '.' 'second''
+ -- 'lmap' ('first'' f) '.' 'second'' ≡ 'rmap' ('first'' f) '.' 'second''
-- 'second'' '.' 'second'' ≡ 'dimap' unassoc assoc '.' 'second'' where
-- assoc ((a,b),c) = (a,(b,c))
-- unassoc (a,(b,c)) = ((a,b),c)
@@ -95,6 +96,9 @@
uncurry' = rmap (\(f,x) -> f x) . first'
{-# INLINE uncurry' #-}
+strong :: Strong p => (a -> b -> c) -> p a b -> p a c
+strong f x = dimap (\a -> (a, a)) (\(b, a) -> f a b) (first' x)
+
instance Strong (->) where
first' ab ~(a, c) = (ab a, c)
{-# INLINE first' #-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/profunctors-5.3/src/Data/Profunctor/Types.hs new/profunctors-5.4/src/Data/Profunctor/Types.hs
--- old/profunctors-5.3/src/Data/Profunctor/Types.hs 2018-07-03 03:33:59.000000000 +0200
+++ new/profunctors-5.4/src/Data/Profunctor/Types.hs 2001-09-09 03:46:40.000000000 +0200
@@ -39,6 +39,7 @@
import Data.Coerce (Coercible, coerce)
import Data.Distributive
import Data.Foldable
+import Data.Functor.Contravariant
import Data.Monoid hiding (Product)
import Data.Profunctor.Unsafe
import Data.Traversable
@@ -98,6 +99,10 @@
id = Star return
Star f . Star g = Star $ g >=> f
+instance Contravariant f => Contravariant (Star f a) where
+ contramap f (Star g) = Star (contramap f . g)
+ {-# INLINE contramap #-}
+
------------------------------------------------------------------------------
-- Costar
------------------------------------------------------------------------------
@@ -214,3 +219,7 @@
instance Traversable (Forget r a) where
traverse _ (Forget k) = pure (Forget k)
{-# INLINE traverse #-}
+
+instance Contravariant (Forget r a) where
+ contramap _ (Forget k) = Forget k
+ {-# INLINE contramap #-}
1
0
Hello community,
here is the log from the commit of package ghc-parser-combinators for openSUSE:Factory checked in at 2019-05-17 23:42:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-parser-combinators (Old)
and /work/SRC/openSUSE:Factory/.ghc-parser-combinators.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-parser-combinators"
Fri May 17 23:42:52 2019 rev:5 rq:703475 version:1.0.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-parser-combinators/ghc-parser-combinators.changes 2019-04-28 20:13:16.910424876 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-parser-combinators.new.5148/ghc-parser-combinators.changes 2019-05-17 23:42:52.169922495 +0200
@@ -1,0 +2,11 @@
+Sat May 11 02:00:52 UTC 2019 - psimons(a)suse.com
+
+- Update parser-combinators to version 1.0.3.
+ ## Parser combinators 1.0.3
+
+ * Dropped support for GHC 7.10.
+
+ * Added a test suite as a separate package called
+ `parser-combinators-tests`.
+
+-------------------------------------------------------------------
Old:
----
parser-combinators-1.0.2.tar.gz
New:
----
parser-combinators-1.0.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-parser-combinators.spec ++++++
--- /var/tmp/diff_new_pack.aMvxsI/_old 2019-05-17 23:42:52.961922061 +0200
+++ /var/tmp/diff_new_pack.aMvxsI/_new 2019-05-17 23:42:52.961922061 +0200
@@ -18,7 +18,7 @@
%global pkg_name parser-combinators
Name: ghc-%{pkg_name}
-Version: 1.0.2
+Version: 1.0.3
Release: 0
Summary: Lightweight package providing commonly useful parser combinators
License: BSD-3-Clause
++++++ parser-combinators-1.0.2.tar.gz -> parser-combinators-1.0.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/parser-combinators-1.0.2/CHANGELOG.md new/parser-combinators-1.0.3/CHANGELOG.md
--- old/parser-combinators-1.0.2/CHANGELOG.md 2019-04-05 21:22:07.000000000 +0200
+++ new/parser-combinators-1.0.3/CHANGELOG.md 2019-05-10 20:51:37.000000000 +0200
@@ -1,3 +1,10 @@
+## Parser combinators 1.0.3
+
+* Dropped support for GHC 7.10.
+
+* Added a test suite as a separate package called
+ `parser-combinators-tests`.
+
## Parser combinators 1.0.2
* Defined `liftA2` for `Permutation` manually. The new definition should be
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/parser-combinators-1.0.2/Control/Applicative/Combinators.hs new/parser-combinators-1.0.3/Control/Applicative/Combinators.hs
--- old/parser-combinators-1.0.2/Control/Applicative/Combinators.hs 2019-04-05 21:22:07.000000000 +0200
+++ new/parser-combinators-1.0.3/Control/Applicative/Combinators.hs 2019-05-10 20:51:37.000000000 +0200
@@ -43,7 +43,6 @@
-- composite parsers in @try@ to achieve correct behavior.
{-# LANGUAGE BangPatterns #-}
-{-# LANGUAGE CPP #-}
module Control.Applicative.Combinators
( -- * Re-exports from "Control.Applicative"
@@ -81,11 +80,8 @@
where
import Control.Applicative
-import Data.Foldable
-
-#if MIN_VERSION_base(4,9,0)
import Control.Monad (replicateM, replicateM_)
-#endif
+import Data.Foldable
----------------------------------------------------------------------------
-- Re-exports from "Control.Applicative"
@@ -156,11 +152,7 @@
-- See also: 'skipCount', 'count''.
count :: Applicative m => Int -> m a -> m [a]
-#if MIN_VERSION_base(4,9,0)
count = replicateM
-#else
-count n p = sequenceA (replicate n p)
-#endif
{-# INLINE count #-}
-- | @'count'' m n p@ parses from @m@ to @n@ occurrences of @p@. If @n@ is
@@ -298,11 +290,7 @@
-- @since 0.3.0
skipCount :: Applicative m => Int -> m a -> m ()
-#if MIN_VERSION_base(4,9,0)
skipCount = replicateM_
-#else
-skipCount n p = sequenceA_ (replicate n p)
-#endif
{-# INLINE skipCount #-}
-- | @'skipManyTill' p end@ applies the parser @p@ /zero/ or more times
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/parser-combinators-1.0.2/LICENSE.md new/parser-combinators-1.0.3/LICENSE.md
--- old/parser-combinators-1.0.2/LICENSE.md 2019-04-05 21:22:07.000000000 +0200
+++ new/parser-combinators-1.0.3/LICENSE.md 2019-05-10 20:51:37.000000000 +0200
@@ -1,4 +1,4 @@
-Copyright © 2017–2018 Mark Karpov
+Copyright © 2017–2019 Mark Karpov
All rights reserved.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/parser-combinators-1.0.2/README.md new/parser-combinators-1.0.3/README.md
--- old/parser-combinators-1.0.2/README.md 2019-04-05 21:22:07.000000000 +0200
+++ new/parser-combinators-1.0.3/README.md 2019-05-10 20:51:37.000000000 +0200
@@ -9,8 +9,7 @@
The package provides common parser combinators defined in terms of
`Applicative` and `Alternative` without any dependencies but `base`. There
are also more efficient versions of the combinators defined in terms of
-`Monad` and `MonadPlus`. Test suite and benchmarks can be found in the
-[Megaparsec repo](https://github.com/mrkkrp/megaparsec).
+`Monad` and `MonadPlus`.
## Contribution
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/parser-combinators-1.0.2/parser-combinators.cabal new/parser-combinators-1.0.3/parser-combinators.cabal
--- old/parser-combinators-1.0.2/parser-combinators.cabal 2019-04-05 21:22:07.000000000 +0200
+++ new/parser-combinators-1.0.3/parser-combinators.cabal 2019-05-10 20:51:37.000000000 +0200
@@ -1,7 +1,7 @@
name: parser-combinators
-version: 1.0.2
+version: 1.0.3
cabal-version: 1.18
-tested-with: GHC==7.10.3, GHC==8.0.2, GHC==8.2.2, GHC==8.4.4, GHC==8.6.4
+tested-with: GHC==8.0.2, GHC==8.2.2, GHC==8.4.4, GHC==8.6.5
license: BSD3
license-file: LICENSE.md
author: Mark Karpov <markkarpov92(a)gmail.com>
@@ -26,11 +26,7 @@
default: False
library
- build-depends: base >= 4.8 && < 5.0
-
- if !impl(ghc >= 8.0)
- build-depends: semigroups == 0.18.*
-
+ build-depends: base >= 4.9 && < 5.0
exposed-modules: Control.Applicative.Combinators
, Control.Applicative.Combinators.NonEmpty
, Control.Applicative.Permutations
@@ -41,7 +37,7 @@
ghc-options: -Wall -Werror
else
ghc-options: -O2 -Wall
- if flag(dev) && impl(ghc >= 8.0)
+ if flag(dev)
ghc-options: -Wcompat
-Wincomplete-record-updates
-Wincomplete-uni-patterns
1
0
Hello community,
here is the log from the commit of package ghc-hslua for openSUSE:Factory checked in at 2019-05-17 23:42:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-hslua (Old)
and /work/SRC/openSUSE:Factory/.ghc-hslua.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-hslua"
Fri May 17 23:42:48 2019 rev:14 rq:703474 version:1.0.3.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-hslua/ghc-hslua.changes 2019-05-12 11:35:34.970253552 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-hslua.new.5148/ghc-hslua.changes 2019-05-17 23:42:50.825923234 +0200
@@ -1,0 +2,14 @@
+Thu May 9 02:01:19 UTC 2019 - psimons(a)suse.com
+
+- Update hslua to version 1.0.3.1.
+ ### 1.0.3.1
+
+ Released 2019-05-08.
+
+ - Prevent filenames being treated as strings in debug messages.
+ Lua's `loadbuffer` takes a `source` description as an argument,
+ which is used for debug messages. The `loadfile` function now
+ adds a special prefix (`@`) to `source`, thus marking it as a
+ filename.
+
+-------------------------------------------------------------------
Old:
----
hslua-1.0.3.tar.gz
New:
----
hslua-1.0.3.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-hslua.spec ++++++
--- /var/tmp/diff_new_pack.safLFj/_old 2019-05-17 23:42:51.729922738 +0200
+++ /var/tmp/diff_new_pack.safLFj/_new 2019-05-17 23:42:51.733922735 +0200
@@ -19,7 +19,7 @@
%global pkg_name hslua
%bcond_with tests
Name: ghc-%{pkg_name}
-Version: 1.0.3
+Version: 1.0.3.1
Release: 0
Summary: Bindings to Lua, an embeddable scripting language
License: MIT
++++++ hslua-1.0.3.tar.gz -> hslua-1.0.3.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hslua-1.0.3/CHANGELOG.md new/hslua-1.0.3.1/CHANGELOG.md
--- old/hslua-1.0.3/CHANGELOG.md 1970-01-01 01:00:00.000000000 +0100
+++ new/hslua-1.0.3.1/CHANGELOG.md 1970-01-01 01:00:00.000000000 +0100
@@ -1,5 +1,15 @@
## Changelog
+### 1.0.3.1
+
+Released 2019-05-08.
+
+- Prevent filenames being treated as strings in debug messages.
+ Lua's `loadbuffer` takes a `source` description as an argument,
+ which is used for debug messages. The `loadfile` function now
+ adds a special prefix (`@`) to `source`, thus marking it as a
+ filename.
+
### 1.0.3
Released 2019-05-04.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hslua-1.0.3/hslua.cabal new/hslua-1.0.3.1/hslua.cabal
--- old/hslua-1.0.3/hslua.cabal 1970-01-01 01:00:00.000000000 +0100
+++ new/hslua-1.0.3.1/hslua.cabal 1970-01-01 01:00:00.000000000 +0100
@@ -1,5 +1,5 @@
name: hslua
-version: 1.0.3
+version: 1.0.3.1
synopsis: Bindings to Lua, an embeddable scripting language
description: HsLua provides bindings, wrappers, types, and helper
functions to bridge Haskell and <https://www.lua.org/ Lua>.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hslua-1.0.3/src/Foreign/Lua/Core/Auxiliary.hsc new/hslua-1.0.3.1/src/Foreign/Lua/Core/Auxiliary.hsc
--- old/hslua-1.0.3/src/Foreign/Lua/Core/Auxiliary.hsc 1970-01-01 01:00:00.000000000 +0100
+++ new/hslua-1.0.3.1/src/Foreign/Lua/Core/Auxiliary.hsc 1970-01-01 01:00:00.000000000 +0100
@@ -1,4 +1,5 @@
{-# LANGUAGE CPP #-}
+{-# LANGUAGE OverloadedStrings #-}
{-|
Module : Foreign.Lua.Core.Auxiliary
Copyright : © 2007–2012 Gracjan Polak,
@@ -35,6 +36,7 @@
import Control.Exception (IOException, try)
import Data.ByteString (ByteString)
+import Data.Monoid ((<>))
import Foreign.C ( CChar, CInt (CInt), CSize (CSize), CString
, withCString, peekCString )
import Foreign.Lua.Core.Constants (multret, registryindex)
@@ -182,7 +184,7 @@
loadfile :: FilePath -- ^ filename
-> Lua Status
loadfile fp = Lua.liftIO contentOrError >>= \case
- Right script -> loadbuffer script fp
+ Right script -> loadbuffer script ("@" <> fp)
Left e -> do
Lua.pushstring (Utf8.fromString (show e))
return Lua.ErrFile
1
0
Hello community,
here is the log from the commit of package ghc-dbus for openSUSE:Factory checked in at 2019-05-17 23:42:45
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-dbus (Old)
and /work/SRC/openSUSE:Factory/.ghc-dbus.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-dbus"
Fri May 17 23:42:45 2019 rev:9 rq:703473 version:1.2.7
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-dbus/ghc-dbus.changes 2019-05-09 10:09:54.213112822 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-dbus.new.5148/ghc-dbus.changes 2019-05-17 23:42:48.597924457 +0200
@@ -1,0 +2,6 @@
+Mon May 13 02:02:23 UTC 2019 - psimons(a)suse.com
+
+- Update dbus to version 1.2.7.
+ Upstream does not provide a change log file.
+
+-------------------------------------------------------------------
Old:
----
dbus-1.2.6.tar.gz
New:
----
dbus-1.2.7.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-dbus.spec ++++++
--- /var/tmp/diff_new_pack.bNvIhp/_old 2019-05-17 23:42:49.197924128 +0200
+++ /var/tmp/diff_new_pack.bNvIhp/_new 2019-05-17 23:42:49.201924126 +0200
@@ -19,7 +19,7 @@
%global pkg_name dbus
%bcond_with tests
Name: ghc-%{pkg_name}
-Version: 1.2.6
+Version: 1.2.7
Release: 0
Summary: A client library for the D-Bus IPC system
License: Apache-2.0
++++++ dbus-1.2.6.tar.gz -> dbus-1.2.7.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dbus-1.2.6/dbus.cabal new/dbus-1.2.7/dbus.cabal
--- old/dbus-1.2.6/dbus.cabal 2019-04-28 04:40:44.000000000 +0200
+++ new/dbus-1.2.7/dbus.cabal 2019-05-13 02:06:36.000000000 +0200
@@ -1,6 +1,6 @@
cabal-version: >=1.8
name: dbus
-version: 1.2.6
+version: 1.2.7
license: Apache-2.0
license-file: license.txt
maintainer: Andrey Sverdlichenko <blaze(a)ruddy.ru>
@@ -100,7 +100,7 @@
exceptions <0.11,
filepath <1.5,
lens <4.18,
- network >=2.8.0.0 && <2.9 || >=3.0.1.0 && <3.1,
+ network >=2.8.0.0 && <2.9 || >=3.0.1.0 && <3.2,
parsec <3.2,
random <1.2,
split <0.3,
@@ -147,7 +147,7 @@
directory <1.4,
extra <1.7,
filepath <1.5,
- network <2.9,
+ network >=2.8.0.0 && <2.9 || >=3.0.1.0 && <3.2,
parsec <3.2,
process <1.7,
QuickCheck <2.14,
1
0
Hello community,
here is the log from the commit of package ghc-constraints for openSUSE:Factory checked in at 2019-05-17 23:42:41
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-constraints (Old)
and /work/SRC/openSUSE:Factory/.ghc-constraints.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-constraints"
Fri May 17 23:42:41 2019 rev:3 rq:703472 version:0.11
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-constraints/ghc-constraints.changes 2018-10-25 08:23:50.151870908 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-constraints.new.5148/ghc-constraints.changes 2019-05-17 23:42:43.057927501 +0200
@@ -1,0 +2,9 @@
+Sat May 11 02:00:35 UTC 2019 - psimons(a)suse.com
+
+- Update constraints to version 0.11.
+ Upstream has edited the change log file since the last release in
+ a non-trivial way, i.e. they did more than just add a new entry
+ at the top. You can review the file at:
+ http://hackage.haskell.org/package/constraints-0.11/src/CHANGELOG.markdown
+
+-------------------------------------------------------------------
Old:
----
constraints-0.10.1.tar.gz
New:
----
constraints-0.11.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-constraints.spec ++++++
--- /var/tmp/diff_new_pack.HvG7GY/_old 2019-05-17 23:42:44.237926852 +0200
+++ /var/tmp/diff_new_pack.HvG7GY/_new 2019-05-17 23:42:44.237926852 +0200
@@ -1,7 +1,7 @@
#
# spec file for package ghc-constraints
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
%global pkg_name constraints
%bcond_with tests
Name: ghc-%{pkg_name}
-Version: 0.10.1
+Version: 0.11
Release: 0
Summary: Constraint manipulation
License: BSD-2-Clause
++++++ constraints-0.10.1.tar.gz -> constraints-0.11.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/constraints-0.10.1/CHANGELOG.markdown new/constraints-0.11/CHANGELOG.markdown
--- old/constraints-0.10.1/CHANGELOG.markdown 2018-07-03 02:15:10.000000000 +0200
+++ new/constraints-0.11/CHANGELOG.markdown 2001-09-09 03:46:40.000000000 +0200
@@ -1,3 +1,18 @@
+0.11 [2019.05.10]
+-----------------
+* Introduce a `HasDict` type class for types that witness evidence of
+ constraints, such as `Dict`, `(:-)`, `Coercion`, `(:~:)`, `(:~~:)`, and
+ `TypeRep`.
+* Generalize the types of `withDict` and `(\\)` to be polymorphic over
+ any `HasDict` instance.
+* Add `type (⊢) = (:-)`.
+* Fix unsafe mistakes in the statements of `dividesDef` and `timesDiv` in
+ `Data.Constraint.Nat`.
+* Make the implementations of `Min` and `Max` reduce on more inputs in
+ `Data.Constraint.Nat`.
+* Add `minusNat` and `minusZero` functions to `Data.Constraint.Nat`.
+* Support `hashable-1.3.*` and `semigroups-0.19.*`.
+
0.10.1 [2018.07.02]
-------------------
* Allow building with GHC 8.6.
@@ -41,7 +56,7 @@
when a type mismatch error is thrown
* Add `defer_` and `deferEither_`, counterparts to `defer` and `deferEither`
which do not require proxy arguments
- * Enable `PolyKinds`. This allows the `Deferrable (a ~ b` instance to be
+ * Enable `PolyKinds`. This allows the `Deferrable (a ~ b)` instance to be
polykinded on all supported versions of GHC _except_ 7.10, where the kinds
must be `*` due to an old GHC bug
* Introduce a heterogeneous equality type `(:~~:)`, and use it to define a
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/constraints-0.10.1/constraints.cabal new/constraints-0.11/constraints.cabal
--- old/constraints-0.10.1/constraints.cabal 2018-07-03 02:15:10.000000000 +0200
+++ new/constraints-0.11/constraints.cabal 2001-09-09 03:46:40.000000000 +0200
@@ -1,6 +1,6 @@
name: constraints
category: Constraints
-version: 0.10.1
+version: 0.11
license: BSD2
cabal-version: >= 1.10
license-file: LICENSE
@@ -21,8 +21,9 @@
, GHC == 7.10.3
, GHC == 8.0.2
, GHC == 8.2.2
- , GHC == 8.4.3
- , GHC == 8.6.1
+ , GHC == 8.4.4
+ , GHC == 8.6.5
+ , GHC == 8.8.1
extra-source-files: README.markdown
, CHANGELOG.markdown
@@ -51,9 +52,9 @@
binary >= 0.7.1 && < 0.9,
deepseq >= 1.3 && < 1.5,
ghc-prim,
- hashable >= 1.2 && < 1.3,
+ hashable >= 1.2 && < 1.4,
mtl >= 2.1.2 && < 2.3,
- semigroups >= 0.17 && < 0.19,
+ semigroups >= 0.17 && < 0.20,
transformers >= 0.3.0.0 && < 0.6,
transformers-compat >= 0.5 && < 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/constraints-0.10.1/src/Data/Constraint/Forall.hs new/constraints-0.11/src/Data/Constraint/Forall.hs
--- old/constraints-0.10.1/src/Data/Constraint/Forall.hs 2018-07-03 02:15:10.000000000 +0200
+++ new/constraints-0.11/src/Data/Constraint/Forall.hs 2001-09-09 03:46:40.000000000 +0200
@@ -40,6 +40,12 @@
import Data.Constraint
import Unsafe.Coerce (unsafeCoerce)
+#if __GLASGOW_HASKELL__ >= 806
+# define KVS(kvs) kvs
+#else
+# define KVS(kvs)
+#endif
+
{- The basic trick of this module is to use "skolem" types as test candidates
- for whether a class predicate holds, and if so assume that it holds for all
- types, unsafely coercing the typeclass dictionary.
@@ -143,7 +149,7 @@
instance Forall (Q p t) => ForallT p t
-- | Instantiate a quantified @'ForallT' p t@ constraint at types @f@ and @a@.
-instT :: forall (p :: k4 -> Constraint) (t :: (k1 -> k2) -> k3 -> k4) (f :: k1 -> k2) (a :: k3). ForallT p t :- p (t f a)
+instT :: forall KVS(k1 k2 k3 k4) (p :: k4 -> Constraint) (t :: (k1 -> k2) -> k3 -> k4) (f :: k1 -> k2) (a :: k3). ForallT p t :- p (t f a)
instT = Sub $
case inst :: Forall (Q p t) :- Q p t f of { Sub Dict ->
case inst :: Forall (R p t f) :- R p t f a of
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/constraints-0.10.1/src/Data/Constraint/Nat.hs new/constraints-0.11/src/Data/Constraint/Nat.hs
--- old/constraints-0.10.1/src/Data/Constraint/Nat.hs 2018-07-03 02:15:10.000000000 +0200
+++ new/constraints-0.11/src/Data/Constraint/Nat.hs 2001-09-09 03:46:40.000000000 +0200
@@ -10,6 +10,7 @@
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE Trustworthy #-}
+{-# LANGUAGE UndecidableInstances #-}
#if __GLASGOW_HASKELL__ >= 805
{-# LANGUAGE NoStarIsType #-}
#endif
@@ -18,8 +19,8 @@
-- This module is only available on GHC 8.0 or later.
module Data.Constraint.Nat
( Min, Max, Lcm, Gcd, Divides, Div, Mod
- , plusNat, timesNat, powNat, minNat, maxNat, gcdNat, lcmNat, divNat, modNat
- , plusZero, timesZero, timesOne, powZero, powOne, maxZero, minZero, gcdZero, gcdOne, lcmZero, lcmOne
+ , plusNat, minusNat, timesNat, powNat, minNat, maxNat, gcdNat, lcmNat, divNat, modNat
+ , plusZero, minusZero, timesZero, timesOne, powZero, powOne, maxZero, minZero, gcdZero, gcdOne, lcmZero, lcmOne
, plusAssociates, timesAssociates, minAssociates, maxAssociates, gcdAssociates, lcmAssociates
, plusCommutes, timesCommutes, minCommutes, maxCommutes, gcdCommutes, lcmCommutes
, plusDistributesOverTimes, timesDistributesOverPow, timesDistributesOverGcd, timesDistributesOverLcm
@@ -47,13 +48,14 @@
import Data.Constraint
import Data.Proxy
+import Data.Type.Bool
import GHC.TypeLits
import Unsafe.Coerce
type family Min (m::Nat) (n::Nat) :: Nat where
- Min m m = m
+ Min m n = If (n <=? m) n m
type family Max (m::Nat) (n::Nat) :: Nat where
- Max m m = m
+ Max m n = If (n <=? m) m n
#if !(MIN_VERSION_base(4,11,0))
type family Div (m::Nat) (n::Nat) :: Nat where
Div m 1 = m
@@ -114,6 +116,9 @@
plusNat :: forall n m. (KnownNat n, KnownNat m) :- KnownNat (n + m)
plusNat = magic (+)
+minusNat :: forall n m. (KnownNat n, KnownNat m, m <= n) :- KnownNat (n - m)
+minusNat = Sub $ case magic @n @m (-) of Sub r -> r
+
minNat :: forall n m. (KnownNat n, KnownNat m) :- KnownNat (Min n m)
minNat = magic min
@@ -135,6 +140,9 @@
plusZero :: forall n. Dict ((n + 0) ~ n)
plusZero = Dict
+minusZero :: forall n. Dict ((n - 0) ~ n)
+minusZero = Dict
+
timesZero :: forall n. Dict ((n * 0) ~ 0)
timesZero = Dict
@@ -142,10 +150,10 @@
timesOne = Dict
minZero :: forall n. Dict (Min n 0 ~ 0)
-minZero = axiom
+minZero = Dict
maxZero :: forall n. Dict (Max n 0 ~ n)
-maxZero = axiom
+maxZero = Dict
powZero :: forall n. Dict ((n ^ 0) ~ 1)
powZero = Dict
@@ -324,13 +332,13 @@
dividesMax :: (Divides a b, Divides a c) :- Divides a (Max b c)
dividesMax = Sub axiom
-dividesDef :: forall a b. Divides a b :- ((a * Div b a) ~ a)
+dividesDef :: forall a b. Divides a b :- ((a * Div b a) ~ b)
dividesDef = Sub axiom
dividesPow :: (1 <= n, Divides a b) :- Divides a (b^n)
dividesPow = Sub axiom
-timesDiv :: forall a b. Dict ((a * Div b a) <= a)
+timesDiv :: forall a b. Dict ((a * Div b a) <= b)
timesDiv = axiom
-- (<=) is an internal category in the category of constraints.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/constraints-0.10.1/src/Data/Constraint.hs new/constraints-0.11/src/Data/Constraint.hs
--- old/constraints-0.10.1/src/Data/Constraint.hs 2018-07-03 02:15:10.000000000 +0200
+++ new/constraints-0.11/src/Data/Constraint.hs 2001-09-09 03:46:40.000000000 +0200
@@ -11,12 +11,17 @@
{-# LANGUAGE EmptyDataDecls #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE TypeOperators #-}
+{-# LANGUAGE UnicodeSyntax #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE Trustworthy #-}
{-# LANGUAGE Rank2Types #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE CPP #-}
+#if __GLASGOW_HASKELL__ >= 706
+{-# LANGUAGE PolyKinds #-}
+#endif
#if __GLASGOW_HASKELL__ >= 800
+{-# LANGUAGE TypeInType #-}
{-# LANGUAGE UndecidableSuperClasses #-}
#endif
#if __GLASGOW_HASKELL__ >= 708 && __GLASGOW_HASKELL__ < 710
@@ -56,10 +61,12 @@
Constraint
-- * Dictionary
, Dict(Dict)
+ , HasDict(..)
, withDict
+ , (\\)
-- * Entailment
, (:-)(Sub)
- , (\\)
+ , type (⊢)
, weaken1, weaken2, contract
, strengthen1, strengthen2
, (&&&), (***)
@@ -78,11 +85,14 @@
import Control.DeepSeq
import Control.Monad
import Data.Complex
+#if __GLASGOW_HASKELL__ >= 800 && __GLASGOW_HASKELL__ < 806
+import Data.Kind
+#endif
import Data.Ratio
#if !MIN_VERSION_base(4,11,0)
import Data.Semigroup
#endif
-import Data.Data
+import Data.Data hiding (TypeRep)
import qualified GHC.Exts as Exts (Any)
import GHC.Exts (Constraint)
import Data.Bits (Bits)
@@ -93,6 +103,12 @@
#if !MIN_VERSION_base(4,8,0)
import Data.Word (Word)
#endif
+import Data.Coerce (Coercible)
+import Data.Type.Coercion(Coercion(..))
+#if MIN_VERSION_base(4,10,0)
+import Data.Type.Equality (type (~~))
+import Type.Reflection (TypeRep, typeRepKind, withTypeable)
+#endif
-- | Values of type @'Dict' p@ capture a dictionary for a constraint of type @p@.
--
@@ -136,17 +152,58 @@
instance NFData (Dict c) where
rnf Dict = ()
+-- | Witnesses that a value of type @e@ contains evidence of the constraint @c@.
+--
+-- Mainly intended to allow ('\\') to be overloaded, since it's a useful operator.
+class HasDict c e | e -> c where
+ evidence :: e -> Dict c
+
+instance HasDict a (Dict a) where
+ evidence = Prelude.id
+
+instance a => HasDict b (a :- b) where
+ evidence (Sub x) = x
+
+instance HasDict (Coercible a b) (Coercion a b) where
+ evidence Coercion = Dict
+
+instance HasDict (a ~ b) (a :~: b) where
+ evidence Refl = Dict
+
+#if MIN_VERSION_base(4,10,0)
+instance HasDict (a ~~ b) (a :~~: b) where
+ evidence HRefl = Dict
+
+instance HasDict (Typeable k, Typeable a) (TypeRep (a :: k)) where
+ evidence tr = withTypeable tr $ withTypeable (typeRepKind tr) Dict
+#endif
+
-- | From a 'Dict', takes a value in an environment where the instance
-- witnessed by the 'Dict' is in scope, and evaluates it.
--
-- Essentially a deconstruction of a 'Dict' into its continuation-style
-- form.
--
-withDict :: Dict a -> (a => r) -> r
-withDict d r = case d of
+-- Can also be used to deconstruct an entailment, @a ':-' b@, using a context @a@.
+--
+-- @
+-- withDict :: 'Dict' c -> (c => r) -> r
+-- withDict :: a => (a ':-' c) -> (c => r) -> r
+-- @
+withDict :: HasDict c e => e -> (c => r) -> r
+withDict d r = case evidence d of
Dict -> r
+infixl 1 \\ -- required comment
+
+-- | Operator version of 'withDict', with the arguments flipped
+(\\) :: HasDict c e => (c => r) -> e -> r
+r \\ d = withDict d r
+
infixr 9 :-
+infixr 9 ⊢
+
+type (⊢) = (:-)
-- | This is the type of entailment.
--
@@ -245,12 +302,6 @@
instance a => NFData (a :- b) where
rnf (Sub Dict) = ()
-infixl 1 \\ -- required comment
-
--- | Given that @a :- b@, derive something that needs a context @b@, using the context @a@
-(\\) :: a => (b => r) -> (a :- b) -> r
-r \\ Sub Dict = r
-
--------------------------------------------------------------------------------
-- Constraints form a Category
--------------------------------------------------------------------------------
1
0
Hello community,
here is the log from the commit of package ghc-ansi-wl-pprint for openSUSE:Factory checked in at 2019-05-17 23:42:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-ansi-wl-pprint (Old)
and /work/SRC/openSUSE:Factory/.ghc-ansi-wl-pprint.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-ansi-wl-pprint"
Fri May 17 23:42:38 2019 rev:8 rq:703471 version:0.6.9
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-ansi-wl-pprint/ghc-ansi-wl-pprint.changes 2019-02-17 12:20:50.844208706 +0100
+++ /work/SRC/openSUSE:Factory/.ghc-ansi-wl-pprint.new.5148/ghc-ansi-wl-pprint.changes 2019-05-17 23:42:39.681929355 +0200
@@ -1,0 +2,9 @@
+Mon May 13 02:02:14 UTC 2019 - psimons(a)suse.com
+
+- Update ansi-wl-pprint to version 0.6.9.
+ ## 0.6.9
+
+ - All modules are explicitly `Safe`.
+ - Support GHC-7.0 ... GHC-8.8
+
+-------------------------------------------------------------------
Old:
----
ansi-wl-pprint-0.6.8.2.tar.gz
ansi-wl-pprint.cabal
New:
----
ansi-wl-pprint-0.6.9.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-ansi-wl-pprint.spec ++++++
--- /var/tmp/diff_new_pack.GJA1U0/_old 2019-05-17 23:42:40.185929078 +0200
+++ /var/tmp/diff_new_pack.GJA1U0/_new 2019-05-17 23:42:40.189929076 +0200
@@ -1,7 +1,7 @@
#
# spec file for package ghc-ansi-wl-pprint
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 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,14 +18,13 @@
%global pkg_name ansi-wl-pprint
Name: ghc-%{pkg_name}
-Version: 0.6.8.2
+Version: 0.6.9
Release: 0
Summary: The Wadler/Leijen Pretty Printer for colored ANSI terminal output
License: BSD-3-Clause
Group: Development/Libraries/Haskell
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-ansi-terminal-devel
BuildRequires: ghc-rpm-macros
@@ -49,7 +48,6 @@
%prep
%setup -q -n %{pkg_name}-%{version}
-cp -p %{SOURCE1} %{pkg_name}.cabal
%build
%ghc_lib_build
++++++ ansi-wl-pprint-0.6.8.2.tar.gz -> ansi-wl-pprint-0.6.9.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansi-wl-pprint-0.6.8.2/Changelog.md new/ansi-wl-pprint-0.6.9/Changelog.md
--- old/ansi-wl-pprint-0.6.8.2/Changelog.md 2018-01-09 13:45:13.000000000 +0100
+++ new/ansi-wl-pprint-0.6.9/Changelog.md 2001-09-09 03:46:40.000000000 +0200
@@ -1,3 +1,8 @@
+## 0.6.9
+
+- All modules are explicitly `Safe`.
+- Support GHC-7.0 ... GHC-8.8
+
## 0.6.8.2
- Allow `ansi-terminal-0.8`
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansi-wl-pprint-0.6.8.2/Text/PrettyPrint/ANSI/Leijen.hs new/ansi-wl-pprint-0.6.9/Text/PrettyPrint/ANSI/Leijen.hs
--- old/ansi-wl-pprint-0.6.8.2/Text/PrettyPrint/ANSI/Leijen.hs 2018-01-09 13:45:13.000000000 +0100
+++ new/ansi-wl-pprint-0.6.9/Text/PrettyPrint/ANSI/Leijen.hs 2001-09-09 03:46:40.000000000 +0200
@@ -166,7 +166,6 @@
import Data.Monoid (Monoid, mappend, mconcat, mempty, (<>))
#else
import Data.Monoid (Monoid, mappend, mconcat, mempty)
-infixr 6 <>
#endif
-- $DocumentAlgebra
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansi-wl-pprint-0.6.8.2/ansi-wl-pprint.cabal new/ansi-wl-pprint-0.6.9/ansi-wl-pprint.cabal
--- old/ansi-wl-pprint-0.6.8.2/ansi-wl-pprint.cabal 2018-01-09 13:45:13.000000000 +0100
+++ new/ansi-wl-pprint-0.6.9/ansi-wl-pprint.cabal 2001-09-09 03:46:40.000000000 +0200
@@ -1,11 +1,12 @@
name: ansi-wl-pprint
-version: 0.6.8.2
+version: 0.6.9
cabal-version: >= 1.10
category: User Interfaces, Text
synopsis: The Wadler/Leijen Pretty Printer for colored ANSI terminal output
description: {
-This is a pretty printing library based on Wadler's paper ["A Prettier Printer"](https://homepages.inf.ed.ac.uk/wadler/papers/prettier/prettier.pdf). It has been enhanced with support for ANSI terminal colored output using the [ansi-terminal](https://hackage.haskell.org/package/ansi-terminal) package.
+This is a pretty printing library based on Wadler's paper ["A Prettier Printer"](https://homepages.inf.ed.ac.uk/wadler/papers/prettier/prettier.pdf).
+It has been enhanced with support for ANSI terminal colored output using the [ansi-terminal](https://hackage.haskell.org/package/ansi-terminal) package.
}
license: BSD3
@@ -16,7 +17,7 @@
bug-reports: http://github.com/ekmett/ansi-wl-pprint/issues
homepage: http://github.com/ekmett/ansi-wl-pprint
build-type: Simple
-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, GHC==8.4.1, GHC==8.5.*
+tested-with: GHC==7.0.2, GHC==7.2.2, GHC==7.4.2, GHC==7.6.3, GHC==7.8.4, GHC==7.10.3, GHC==8.0.2, GHC==8.2.2, GHC==8.4.3, GHC==8.6.5, GHC==8.8.1
source-repository head
type: git
@@ -36,13 +37,21 @@
-- See https://ghc.haskell.org/trac/ghc/wiki/Migration/8.0#base-4.9.0.0
if impl(ghc >= 8.0)
- ghc-options: -Wcompat -Wnoncanonical-monad-instances -Wnoncanonical-monadfail-instances
+ ghc-options: -Wcompat -Wnoncanonical-monad-instances
+ if impl(ghc < 8.8)
+ ghc-options: -Wnoncanonical-monadfail-instances
else
-- see also notes in Text.PrettyPrint.ANSI.Leijen
- build-depends: semigroups >= 0.1 && < 0.19
+ build-depends: semigroups >= 0.18.5 && < 0.20
- build-depends: ansi-terminal >= 0.4.0 && < 0.9
- build-depends: base >= 4.5 && < 5
+ build-depends: ansi-terminal >= 0.9.1 && < 0.10
+ build-depends: base >= 4.3 && < 5
+
+ if impl(ghc >= 7.4)
+ default-extensions: Safe
+ else
+ if impl(ghc >= 7.2)
+ default-extensions: Trustworthy
executable ansi-wl-pprint-example
default-language: Haskell2010
1
0
Hello community,
here is the log from the commit of package ghc-ansi-terminal for openSUSE:Factory checked in at 2019-05-17 23:42:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-ansi-terminal (Old)
and /work/SRC/openSUSE:Factory/.ghc-ansi-terminal.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-ansi-terminal"
Fri May 17 23:42:35 2019 rev:12 rq:703470 version:0.9.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-ansi-terminal/ghc-ansi-terminal.changes 2019-02-17 12:19:52.456224752 +0100
+++ /work/SRC/openSUSE:Factory/.ghc-ansi-terminal.new.5148/ghc-ansi-terminal.changes 2019-05-17 23:42:37.681930453 +0200
@@ -1,0 +2,10 @@
+Mon May 13 02:02:17 UTC 2019 - psimons(a)suse.com
+
+- Update ansi-terminal to version 0.9.1.
+ Version 0.9.1
+ -------------
+
+ * Flag modules with GHC's 'Safe Haskell' language extensions (from GHC 7.2.1).
+ * Improvements and corrections to Haddock documentation.
+
+-------------------------------------------------------------------
Old:
----
ansi-terminal-0.9.tar.gz
New:
----
ansi-terminal-0.9.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-ansi-terminal.spec ++++++
--- /var/tmp/diff_new_pack.g4aSCJ/_old 2019-05-17 23:42:38.221930157 +0200
+++ /var/tmp/diff_new_pack.g4aSCJ/_new 2019-05-17 23:42:38.225930155 +0200
@@ -18,7 +18,7 @@
%global pkg_name ansi-terminal
Name: ghc-%{pkg_name}
-Version: 0.9
+Version: 0.9.1
Release: 0
Summary: Simple ANSI terminal support, with Windows compatibility
License: BSD-3-Clause
++++++ ansi-terminal-0.9.tar.gz -> ansi-terminal-0.9.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansi-terminal-0.9/CHANGELOG.md new/ansi-terminal-0.9.1/CHANGELOG.md
--- old/ansi-terminal-0.9/CHANGELOG.md 2019-01-26 20:56:34.000000000 +0100
+++ new/ansi-terminal-0.9.1/CHANGELOG.md 2019-05-12 20:55:57.000000000 +0200
@@ -1,6 +1,12 @@
Changes
=======
+Version 0.9.1
+-------------
+
+* Flag modules with GHC's 'Safe Haskell' language extensions (from GHC 7.2.1).
+* Improvements and corrections to Haddock documentation.
+
Version 0.9
-----------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansi-terminal-0.9/ansi-terminal.cabal new/ansi-terminal-0.9.1/ansi-terminal.cabal
--- old/ansi-terminal-0.9/ansi-terminal.cabal 2019-01-26 20:49:22.000000000 +0100
+++ new/ansi-terminal-0.9.1/ansi-terminal.cabal 2019-05-12 20:56:56.000000000 +0200
@@ -1,5 +1,5 @@
Name: ansi-terminal
-Version: 0.9
+Version: 0.9.1
Cabal-Version: >= 1.8
Category: User Interfaces
Synopsis: Simple ANSI terminal support, with Windows compatibility
@@ -16,6 +16,7 @@
Extra-Source-Files: src/includes/Common-Include.hs
src/includes/Common-Include-Emulator.hs
src/includes/Common-Include-Enabled.hs
+ src/includes/Common-Safe-Haskell.hs
src/includes/Exports-Include.hs
CHANGELOG.md
README.md
@@ -37,7 +38,7 @@
Include-Dirs: src/includes
Build-Depends: base >= 4.3.0.0 && < 5
- , colour
+ , colour >=2.1.0
if os(windows)
Build-Depends: containers >= 0.5.0.0
, mintty
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansi-terminal-0.9/src/System/Console/ANSI/Codes.hs new/ansi-terminal-0.9.1/src/System/Console/ANSI/Codes.hs
--- old/ansi-terminal-0.9/src/System/Console/ANSI/Codes.hs 2019-01-26 19:23:26.000000000 +0100
+++ new/ansi-terminal-0.9.1/src/System/Console/ANSI/Codes.hs 2019-05-12 20:48:27.000000000 +0200
@@ -1,19 +1,21 @@
--- | This module exports functions that return 'String' values containing codes
--- in accordance with the \'ANSI\' standards for control character sequences
--- described in the documentation of module "System.Console.ANSI".
---
--- The module "System.Console.ANSI" exports functions with the same names as
--- those in this module. On some versions of Windows, the terminal in use may
--- not be ANSI-capable. When that is the case, the same-named functions exported
--- by module "System.Console.ANSI" return \"\", for the reasons set out in the
--- documentation of that module.
---
--- Consequently, if module "System.Console.ANSI" is also imported, this module
--- is intended to be imported qualified, to avoid name clashes with those
--- functions. For example:
---
--- > import qualified System.Console.ANSI.Codes as ANSI
---
+#include "Common-Safe-Haskell.hs"
+
+{-| This module exports functions that return 'String' values containing codes
+in accordance with the \'ANSI\' standards for control character sequences
+described in the documentation of module "System.Console.ANSI".
+
+The module "System.Console.ANSI" exports functions with the same names as those
+in this module. On some versions of Windows, the terminal in use may not be
+ANSI-capable. When that is the case, the same-named functions exported by module
+"System.Console.ANSI" return \"\", for the reasons set out in the documentation
+of that module.
+
+Consequently, if module "System.Console.ANSI" is also imported, this module is
+intended to be imported qualified, to avoid name clashes with those functions.
+For example:
+
+> import qualified System.Console.ANSI.Codes as ANSI
+-}
module System.Console.ANSI.Codes
(
-- * Basic data types
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansi-terminal-0.9/src/System/Console/ANSI/Types.hs new/ansi-terminal-0.9.1/src/System/Console/ANSI/Types.hs
--- old/ansi-terminal-0.9/src/System/Console/ANSI/Types.hs 2019-01-26 19:23:26.000000000 +0100
+++ new/ansi-terminal-0.9.1/src/System/Console/ANSI/Types.hs 2019-05-12 20:48:27.000000000 +0200
@@ -1,13 +1,15 @@
--- | The \'ANSI\' standards refer to the visual style of displaying characters
--- as their \'graphic rendition\'. The style includes the color of a character
--- or its background, the intensity (bold, normal or faint) of a character, or
--- whether the character is italic or underlined (single or double), blinking
--- (slowly or rapidly) or visible or not. The \'ANSI\' codes to establish the
--- graphic rendition for subsequent text are referred to as SELECT GRAPHIC
--- RENDITION (SGR).
---
--- This module exports types and functions used to represent SGR aspects. See
--- also 'System.Console.ANSI.setSGR' and related functions.
+#include "Common-Safe-Haskell.hs"
+
+{-| The \'ANSI\' standards refer to the visual style of displaying characters as
+their \'graphic rendition\'. The style includes the color of a character or its
+background, the intensity (bold, normal or faint) of a character, or whether the
+character is italic or underlined (single or double), blinking (slowly or
+rapidly) or visible or not. The \'ANSI\' codes to establish the graphic
+rendition for subsequent text are referred to as SELECT GRAPHIC RENDITION (SGR).
+
+This module exports types and functions used to represent SGR aspects. See also
+'System.Console.ANSI.setSGR' and related functions.
+-}
module System.Console.ANSI.Types
(
-- * Types used to represent SGR aspects
@@ -137,7 +139,7 @@
-- colors. Throws an error if any of the red, green or blue channels is outside
-- the range 0 to 5. An example of use is:
--
--- >>> setSGR [ SetRGBColor $ xterm6LevelRGB 5 2 0 ] -- Dark Orange
+-- >>> setSGR [ SetPaletteColor $ xterm6LevelRGB 5 2 0 ] -- Dark Orange
--
-- @since 0.9
xterm6LevelRGB :: Int -> Int -> Int -> Word8
@@ -155,7 +157,7 @@
-- gray (0) to near white (23) (black and white are themselves excluded). Throws
-- an error if the gray is outside of the range 0 to 23. An example of use is:
--
--- >>> setSGR [ SetRGBColor $ xterm24LevelGray 12 ] -- Gray50
+-- >>> setSGR [ SetPaletteColor $ xterm24LevelGray 12 ] -- Gray50
--
-- @since 0.9
xterm24LevelGray :: Int -> Word8
@@ -171,7 +173,7 @@
-- standard, or \'system\', colors (eight colors in two intensities). An example
-- of use is:
--
--- >>> setSGR [ SetRGBColor $ xtermSystem Vivid Green ]
+-- >>> setSGR [ SetPaletteColor $ xtermSystem Vivid Green ]
--
-- @since 0.9
xtermSystem :: ColorIntensity -> Color -> Word8
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansi-terminal-0.9/src/System/Console/ANSI/Unix.hs new/ansi-terminal-0.9.1/src/System/Console/ANSI/Unix.hs
--- old/ansi-terminal-0.9/src/System/Console/ANSI/Unix.hs 2019-01-26 19:39:24.000000000 +0100
+++ new/ansi-terminal-0.9.1/src/System/Console/ANSI/Unix.hs 2019-05-12 14:54:10.000000000 +0200
@@ -1,3 +1,4 @@
+#include "Common-Safe-Haskell.hs"
{-# OPTIONS_HADDOCK hide #-}
module System.Console.ANSI.Unix
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansi-terminal-0.9/src/System/Console/ANSI/Windows/Detect.hs new/ansi-terminal-0.9.1/src/System/Console/ANSI/Windows/Detect.hs
--- old/ansi-terminal-0.9/src/System/Console/ANSI/Windows/Detect.hs 2018-09-08 18:58:56.000000000 +0200
+++ new/ansi-terminal-0.9.1/src/System/Console/ANSI/Windows/Detect.hs 2019-05-12 20:48:27.000000000 +0200
@@ -1,3 +1,4 @@
+{-# LANGUAGE Trustworthy #-}
{-# OPTIONS_HADDOCK hide #-}
module System.Console.ANSI.Windows.Detect
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansi-terminal-0.9/src/System/Console/ANSI/Windows/Emulator/Codes.hs new/ansi-terminal-0.9.1/src/System/Console/ANSI/Windows/Emulator/Codes.hs
--- old/ansi-terminal-0.9/src/System/Console/ANSI/Windows/Emulator/Codes.hs 2018-03-03 13:19:27.000000000 +0100
+++ new/ansi-terminal-0.9.1/src/System/Console/ANSI/Windows/Emulator/Codes.hs 2019-05-12 20:48:27.000000000 +0200
@@ -1,3 +1,4 @@
+#include "Common-Safe-Haskell.hs"
{-# OPTIONS_HADDOCK hide #-}
module System.Console.ANSI.Windows.Emulator.Codes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansi-terminal-0.9/src/System/Console/ANSI/Windows/Emulator.hs new/ansi-terminal-0.9.1/src/System/Console/ANSI/Windows/Emulator.hs
--- old/ansi-terminal-0.9/src/System/Console/ANSI/Windows/Emulator.hs 2019-01-26 19:39:24.000000000 +0100
+++ new/ansi-terminal-0.9.1/src/System/Console/ANSI/Windows/Emulator.hs 2019-05-12 20:48:27.000000000 +0200
@@ -1,3 +1,4 @@
+{-# LANGUAGE Trustworthy #-}
{-# OPTIONS_HADDOCK hide #-}
module System.Console.ANSI.Windows.Emulator
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansi-terminal-0.9/src/System/Console/ANSI/Windows/Foreign.hs new/ansi-terminal-0.9.1/src/System/Console/ANSI/Windows/Foreign.hs
--- old/ansi-terminal-0.9/src/System/Console/ANSI/Windows/Foreign.hs 2018-03-03 13:19:27.000000000 +0100
+++ new/ansi-terminal-0.9.1/src/System/Console/ANSI/Windows/Foreign.hs 2019-05-12 20:48:27.000000000 +0200
@@ -1,9 +1,11 @@
-{-# OPTIONS_HADDOCK hide #-}
-{-# LANGUAGE RankNTypes #-}
+#include "Common-Safe-Haskell.hs"
+{-# OPTIONS_HADDOCK hide #-}
+{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE DeriveDataTypeable #-}
--- | "System.Win32.Console" is really very impoverished, so I have had to do all
--- the FFI myself.
+{-| "System.Win32.Console" is really very impoverished, so I have had to do all
+the FFI myself.
+-}
module System.Console.ANSI.Windows.Foreign
(
-- Re-exports from Win32.Types
@@ -58,8 +60,9 @@
import Data.Char (chr, ord)
import Data.Typeable (Typeable)
import Foreign.C.Types (CInt (..), CWchar (..))
-import Foreign.Marshal (alloca, allocaArray, maybeWith, peekArray, with,
- withArrayLen)
+import Foreign.Marshal.Alloc (alloca)
+import Foreign.Marshal.Array (allocaArray, peekArray, withArrayLen)
+import Foreign.Marshal.Utils (maybeWith, with)
import Foreign.Ptr (Ptr, castPtr, plusPtr)
import Foreign.Storable (Storable (..))
-- `SHORT` and `withHandleToHANDLE` are not both available before Win32-2.5.1.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansi-terminal-0.9/src/System/Console/ANSI/Windows.hs new/ansi-terminal-0.9.1/src/System/Console/ANSI/Windows.hs
--- old/ansi-terminal-0.9/src/System/Console/ANSI/Windows.hs 2019-01-26 19:39:24.000000000 +0100
+++ new/ansi-terminal-0.9.1/src/System/Console/ANSI/Windows.hs 2019-05-12 14:54:10.000000000 +0200
@@ -1,3 +1,4 @@
+#include "Common-Safe-Haskell.hs"
{-# OPTIONS_HADDOCK hide #-}
module System.Console.ANSI.Windows
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansi-terminal-0.9/src/System/Console/ANSI.hs new/ansi-terminal-0.9.1/src/System/Console/ANSI.hs
--- old/ansi-terminal-0.9/src/System/Console/ANSI.hs 2019-01-26 19:23:26.000000000 +0100
+++ new/ansi-terminal-0.9.1/src/System/Console/ANSI.hs 2019-05-12 20:48:27.000000000 +0200
@@ -1,102 +1,103 @@
--- | Through this module, this library provides platform-independent support
--- for control character sequences following the \'ANSI\' standards (see further
--- below) for terminal software that supports those sequences, running on a
--- Unix-like operating system or Windows.
---
--- The sequences of control characters (also referred to as \'escape\' sequences
--- or codes) provide a rich range of functionality for terminal control, which
--- includes:
---
--- * Colored text output, with control over both foreground and background
--- colors
---
--- * Clearing parts of a line or the screen
---
--- * Hiding or showing the cursor
---
--- * Moving the cursor around
---
--- * Reporting the position of the cursor
---
--- * Scrolling the screen up or down
---
--- * Changing the title of the terminal
---
--- The functions moving the cursor to an absolute position are 0-based (the
--- top-left corner is considered to be at row 0 column 0) (see
--- 'setCursorPosition') and so is 'getCursorPosition0'. The \'ANSI\' standards
--- themselves are 1-based (that is, the top-left corner is considered to be at
--- row 1 column 1) and some functions reporting the position of the cursor are
--- too (see 'reportCursorPosition').
---
--- The native terminal software on Windows is \'Command Prompt\' or
--- \`PowerShell\`. Before Windows 10 version 1511 (known as the \'November
--- [2015] Update\' or \'Threshold 2\') that software did not support such
--- control sequences. For that software, this library also provides support for
--- such sequences by using emulation.
---
--- Terminal software other than the native software exists for Windows. One
--- example is the \'mintty\' terminal emulator for \'Cygwin\', \'MSYS\' or
--- \'MSYS2\', and dervied projects, and for \'WSL\' (Windows Subsystem for
--- Linux).
---
--- The \'ANSI\' standards refer to (1) standard ECMA-48 \`Control Functions for
--- Coded Character Sets\' (5th edition, 1991); (2) extensions in ITU-T
--- Recommendation (previously CCITT Recommendation) T.416 (03/93) \'Information
--- Technology – Open Document Architecture (ODA) and Interchange Format:
--- Character Content Architectures\` (also published as ISO/IEC International
--- Standard 8613-6); and (3) further extensions used by \'XTerm\', a terminal
--- emulator for the X Window System. The escape codes are described in a
--- Wikipedia article at <http://en.wikipedia.org/wiki/ANSI_escape_code> and
--- those codes supported on current versions of Windows at
--- <https://docs.microsoft.com/en-us/windows/console/console-virtual-terminal-s…>.
---
--- The whole of the \'ANSI\' standards are not supported by this library but
--- most (if not all) of the parts that are popular and well-supported by
--- terminal software are supported. Every function exported by this module comes
--- in three variants, namely:
---
--- * A variant that has an @IO ()@ type and doesn't take a @Handle@ (for
--- example, @clearScreen :: IO ()@). This variant just outputs the \`ANSI\`
--- command directly to the standard output channel ('stdout') and any
--- terminal corresponding to it. Commands issued like this should work as you
--- expect on both Unix-like operating systems and Windows.
---
--- * An \'@h@...\' variant that has an @IO ()@ type but takes a @Handle@ (for
--- example, @hClearScreen :: Handle -> IO ()@). This variant outputs the
--- \`ANSI\` command to the supplied handle and any terminal corresponding to
--- it. Commands issued like this should also work as you expect on both
--- Unix-like operating systems and Windows.
---
--- * A \'...@Code@\' variant that has a @String@ type (for example,
--- @clearScreenCode :: String@). This variant outputs the sequence of control
--- characters as a 'String', which can be added to any other bit of text
--- before being output. The use of these codes is generally discouraged
--- because they will not work on legacy versions of Windows where the
--- terminal in use is not ANSI-enabled (see further above). On Windows, where
--- emulation has been necessary, these variants will always output the empty
--- string. That is done so that it is possible to use them portably; for
--- example, coloring console output on the understanding that you will see
--- colors only if you are running on a Unix-like operating system or a
--- version of Windows where emulation has not been necessary. If the control
--- characters are always required, see module "System.Console.ANSI.Codes".
---
--- Example:
---
--- > module Main where
--- >
--- > import System.Console.ANSI
--- >
--- > -- Set colors and write some text in those colors.
--- > main = do
--- > setSGR [SetColor Foreground Vivid Red]
--- > setSGR [SetColor Background Vivid Blue]
--- > putStrLn "Red-On-Blue"
--- > setSGR [Reset] -- Reset to default colour scheme
--- > putStrLn "Default colors."
---
--- For many more examples, see the project's extensive
--- <https://github.com/feuerbach/ansi-terminal/blob/master/app/Example.hs Example.hs> file.
+#include "Common-Safe-Haskell.hs"
+
+{-| Through this module, this library provides platform-independent support for
+control character sequences following the \'ANSI\' standards (see further below)
+for terminal software that supports those sequences, running on a Unix-like
+operating system or Windows.
+
+The sequences of control characters (also referred to as \'escape\' sequences or
+codes) provide a rich range of functionality for terminal control, which
+includes:
+
+ * Colored text output, with control over both foreground and background colors
+
+ * Clearing parts of a line or the screen
+
+ * Hiding or showing the cursor
+
+ * Moving the cursor around
+
+ * Reporting the position of the cursor
+
+ * Scrolling the screen up or down
+
+ * Changing the title of the terminal
+
+The functions moving the cursor to an absolute position are 0-based (the
+top-left corner is considered to be at row 0 column 0) (see 'setCursorPosition')
+and so is 'getCursorPosition0'. The \'ANSI\' standards themselves are 1-based
+(that is, the top-left corner is considered to be at row 1 column 1) and some
+functions reporting the position of the cursor are too (see
+'reportCursorPosition').
+
+The native terminal software on Windows is \'Command Prompt\' or \`PowerShell\`.
+Before Windows 10 version 1511 (known as the \'November [2015] Update\' or
+\'Threshold 2\') that software did not support such control sequences. For that
+software, this library also provides support for such sequences by using
+emulation.
+
+Terminal software other than the native software exists for Windows. One example
+is the \'mintty\' terminal emulator for \'Cygwin\', \'MSYS\' or \'MSYS2\', and
+dervied projects, and for \'WSL\' (Windows Subsystem for Linux).
+
+The \'ANSI\' standards refer to (1) standard ECMA-48 \`Control Functions for
+Coded Character Sets\' (5th edition, 1991); (2) extensions in ITU-T
+Recommendation (previously CCITT Recommendation) T.416 (03/93) \'Information
+Technology – Open Document Architecture (ODA) and Interchange Format: Character
+Content Architectures\` (also published as ISO/IEC International Standard
+8613-6); and (3) further extensions used by \'XTerm\', a terminal emulator for
+the X Window System. The escape codes are described in a Wikipedia article at
+<http://en.wikipedia.org/wiki/ANSI_escape_code> and those codes supported on
+current versions of Windows at
+<https://docs.microsoft.com/en-us/windows/console/console-virtual-terminal-s…>.
+
+The whole of the \'ANSI\' standards are not supported by this library but most
+(if not all) of the parts that are popular and well-supported by terminal
+software are supported. Every function exported by this module comes in three
+variants, namely:
+
+ * A variant that has an @IO ()@ type and doesn't take a @Handle@ (for example,
+ @clearScreen :: IO ()@). This variant just outputs the \`ANSI\` command
+ directly to the standard output channel ('stdout') and any terminal
+ corresponding to it. Commands issued like this should work as you expect on
+ both Unix-like operating systems and Windows.
+
+ * An \'@h@...\' variant that has an @IO ()@ type but takes a @Handle@ (for
+ example, @hClearScreen :: Handle -> IO ()@). This variant outputs the
+ \`ANSI\` command to the supplied handle and any terminal corresponding to it.
+ Commands issued like this should also work as you expect on both Unix-like
+ operating systems and Windows.
+
+ * A \'...@Code@\' variant that has a @String@ type (for example,
+ @clearScreenCode :: String@). This variant outputs the sequence of control
+ characters as a 'String', which can be added to any other bit of text before
+ being output. The use of these codes is generally discouraged because they
+ will not work on legacy versions of Windows where the terminal in use is not
+ ANSI-enabled (see further above). On Windows, where emulation has been
+ necessary, these variants will always output the empty string. That is done
+ so that it is possible to use them portably; for example, coloring console
+ output on the understanding that you will see colors only if you are running
+ on a Unix-like operating system or a version of Windows where emulation has
+ not been necessary. If the control characters are always required, see module
+ "System.Console.ANSI.Codes".
+
+Example:
+
+> module Main where
+>
+> import System.Console.ANSI
+>
+> -- Set colors and write some text in those colors.
+> main = do
+> setSGR [SetColor Foreground Vivid Red]
+> setSGR [SetColor Background Vivid Blue]
+> putStrLn "Red-On-Blue"
+> setSGR [Reset] -- Reset to default colour scheme
+> putStrLn "Default colors."
+
+For many more examples, see the project's extensive
+<https://github.com/feuerbach/ansi-terminal/blob/master/app/Example.hs Example.hs> file.
+-}
#if defined(WINDOWS)
module System.Console.ANSI
(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansi-terminal-0.9/src/System/Win32/Compat.hs new/ansi-terminal-0.9.1/src/System/Win32/Compat.hs
--- old/ansi-terminal-0.9/src/System/Win32/Compat.hs 2018-03-03 13:19:27.000000000 +0100
+++ new/ansi-terminal-0.9.1/src/System/Win32/Compat.hs 2019-05-12 20:48:27.000000000 +0200
@@ -1,8 +1,9 @@
+#include "Common-Safe-Haskell.hs"
{-# OPTIONS_HADDOCK hide #-}
{-| The Win32 library ships with GHC. Win32-2.1 first shipped with GHC 6.6
-(released October 2006). Win32-2.5.4.1 first shipped with GHC 8.2.1
-(released July 2017), replacing Win32-2.3.1.1.
+(released October 2006). Win32-2.5.4.1 first shipped with GHC 8.2.1 (released
+July 2017), replacing Win32-2.3.1.1.
The ansi-terminal library makes use of functionality in Win32-2.1 and other
functionality first added to Win32-2.5.0.0 or Win32-2.5.1.0 (from ansi-terminal
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansi-terminal-0.9/src/includes/Common-Include.hs new/ansi-terminal-0.9.1/src/includes/Common-Include.hs
--- old/ansi-terminal-0.9/src/includes/Common-Include.hs 2019-01-26 19:40:00.000000000 +0100
+++ new/ansi-terminal-0.9.1/src/includes/Common-Include.hs 2019-05-12 14:54:10.000000000 +0200
@@ -137,6 +137,8 @@
-- | Some terminals (e.g. Emacs) are not fully ANSI compliant but can support
-- ANSI colors. This can be used in such cases, if colors are all that is
-- needed.
+--
+-- @since 0.9
hSupportsANSIColor :: Handle -> IO Bool
hSupportsANSIColor h = (||) <$> hSupportsANSI h <*> isEmacsTerm
where
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ansi-terminal-0.9/src/includes/Common-Safe-Haskell.hs new/ansi-terminal-0.9.1/src/includes/Common-Safe-Haskell.hs
--- old/ansi-terminal-0.9/src/includes/Common-Safe-Haskell.hs 1970-01-01 01:00:00.000000000 +0100
+++ new/ansi-terminal-0.9.1/src/includes/Common-Safe-Haskell.hs 2019-05-12 14:54:10.000000000 +0200
@@ -0,0 +1,5 @@
+#if __GLASGOW_HASKELL__ >= 704
+{-# LANGUAGE Safe #-}
+#elif __GLASGOW_HASKELL__ >= 702
+{-# LANGUAGE Trustworthy #-}
+#endif
1
0
Hello community,
here is the log from the commit of package os-autoinst for openSUSE:Factory checked in at 2019-05-17 23:42:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/os-autoinst (Old)
and /work/SRC/openSUSE:Factory/.os-autoinst.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "os-autoinst"
Fri May 17 23:42:29 2019 rev:59 rq:703173 version:4.5.1557827957.ce72694e
Changes:
--------
--- /work/SRC/openSUSE:Factory/os-autoinst/os-autoinst-test.changes 2019-05-14 13:43:25.468647293 +0200
+++ /work/SRC/openSUSE:Factory/.os-autoinst.new.5148/os-autoinst-test.changes 2019-05-17 23:42:32.133933501 +0200
@@ -1,0 +2,6 @@
+Wed May 15 14:33:28 UTC 2019 - okurz(a)suse.com
+
+- Update to version 4.5.1557827957.ce72694e:
+ * Add debug output before 'flushing frames'
+
+-------------------------------------------------------------------
os-autoinst.changes: same change
Old:
----
os-autoinst-4.5.1557391016.927f3d85.obscpio
New:
----
os-autoinst-4.5.1557827957.ce72694e.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ os-autoinst-test.spec ++++++
--- /var/tmp/diff_new_pack.y6s8Op/_old 2019-05-17 23:42:33.753932611 +0200
+++ /var/tmp/diff_new_pack.y6s8Op/_new 2019-05-17 23:42:33.753932611 +0200
@@ -19,7 +19,7 @@
%define name_ext -test
%define short_name os-autoinst
Name: %{short_name}%{?name_ext}
-Version: 4.5.1557391016.927f3d85
+Version: 4.5.1557827957.ce72694e
Release: 0
Summary: test package for os-autoinst
License: GPL-2.0-or-later
++++++ os-autoinst.spec ++++++
--- /var/tmp/diff_new_pack.y6s8Op/_old 2019-05-17 23:42:33.769932602 +0200
+++ /var/tmp/diff_new_pack.y6s8Op/_new 2019-05-17 23:42:33.773932600 +0200
@@ -17,7 +17,7 @@
Name: os-autoinst
-Version: 4.5.1557391016.927f3d85
+Version: 4.5.1557827957.ce72694e
Release: 0
Summary: OS-level test automation
License: GPL-2.0-or-later
++++++ os-autoinst-4.5.1557391016.927f3d85.obscpio -> os-autoinst-4.5.1557827957.ce72694e.obscpio ++++++
/work/SRC/openSUSE:Factory/os-autoinst/os-autoinst-4.5.1557391016.927f3d85.obscpio /work/SRC/openSUSE:Factory/.os-autoinst.new.5148/os-autoinst-4.5.1557827957.ce72694e.obscpio differ: char 50, line 1
++++++ os-autoinst.obsinfo ++++++
--- /var/tmp/diff_new_pack.y6s8Op/_old 2019-05-17 23:42:33.817932576 +0200
+++ /var/tmp/diff_new_pack.y6s8Op/_new 2019-05-17 23:42:33.817932576 +0200
@@ -1,5 +1,5 @@
name: os-autoinst
-version: 4.5.1557391016.927f3d85
-mtime: 1557391016
-commit: 927f3d85e5440290d6aaa294b88c81a319abb99f
+version: 4.5.1557827957.ce72694e
+mtime: 1557827957
+commit: ce72694e9743fa6841fe470f9505a7db76f880cf
1
0
Hello community,
here is the log from the commit of package python-requests-futures for openSUSE:Factory checked in at 2019-05-17 23:42:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-requests-futures (Old)
and /work/SRC/openSUSE:Factory/.python-requests-futures.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-requests-futures"
Fri May 17 23:42:26 2019 rev:3 rq:701329 version:0.9.9
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-requests-futures/python-requests-futures.changes 2018-01-06 18:48:21.773548366 +0100
+++ /work/SRC/openSUSE:Factory/.python-requests-futures.new.5148/python-requests-futures.changes 2019-05-17 23:42:27.689935942 +0200
@@ -1,0 +2,6 @@
+Tue May 7 12:54:06 UTC 2019 - pgajdos(a)suse.com
+
+- version update to 0.9.9
+ * no upstream changelog
+
+-------------------------------------------------------------------
Old:
----
requests-futures-0.9.7.tar.gz
New:
----
requests-futures-0.9.9.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-requests-futures.spec ++++++
--- /var/tmp/diff_new_pack.4gDrlX/_old 2019-05-17 23:42:28.837935312 +0200
+++ /var/tmp/diff_new_pack.4gDrlX/_new 2019-05-17 23:42:28.877935290 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-requests-futures
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 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
@@ -12,31 +12,28 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
-
%define short_name requests-futures
Name: python-%{short_name}
-Version: 0.9.7
+Version: 0.9.9
Release: 0
Summary: Asynchronous Python HTTP Requests for Humans using Futures
License: Apache-2.0
Group: Development/Languages/Python
-Url: https://github.com/ross/%{short_name}
-Source: https://files.pythonhosted.org/packages/2c/f0/d9a6d4472286405956dd5ac6279fe…
+URL: https://github.com/ross/%{short_name}
+Source: https://files.pythonhosted.org/packages/source/r/%{short_name}/%{short_name…
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
+Requires: python-requests >= 1.2.0
BuildArch: noarch
%ifpython2
Requires: python-futures >= 2.1.3
%endif
-Requires: python-requests >= 1.2.0
-
%python_subpackages
%description
@@ -53,9 +50,13 @@
%python_install
%python_expand %fdupes -s %{buildroot}%{$python_sitelib}
-%files %python_files
-%defattr(-,root,root,-)
-%doc LICENSE README.rst
+%check
+# online tests
+# %%python_exec -m unittest test_requests_futures
+
+%files %{python_files}
+%license LICENSE
+%doc README.rst
%{python_sitelib}/*
%changelog
++++++ requests-futures-0.9.7.tar.gz -> requests-futures-0.9.9.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requests-futures-0.9.7/PKG-INFO new/requests-futures-0.9.9/PKG-INFO
--- old/requests-futures-0.9.7/PKG-INFO 2016-02-12 04:06:30.000000000 +0100
+++ new/requests-futures-0.9.9/PKG-INFO 2018-12-02 23:50:49.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: requests-futures
-Version: 0.9.7
+Version: 0.9.9
Summary: Asynchronous Python HTTP for Humans.
Home-page: https://github.com/ross/requests-futures
Author: Ross McFarland
@@ -45,7 +45,7 @@
session = FuturesSession()
# first request is started in background
future_one = session.get('http://httpbin.org/get')
- # second requests is started immediately
+ # second requests is started immediately
future_two = session.get('http://httpbin.org/get?foo=bar')
# wait for the first request to complete, if it hasn't already
response_one = future_one.result()
@@ -90,13 +90,31 @@
are shifted (thrown) to the future.result() call so try/except blocks should be
moved there.
+ Canceling queued requests (a.k.a cleaning up after yourself)
+ =========================
+
+ If you know that you won't be needing any additional responses from futures that
+ haven't yet resolved, it's a good idea to cancel those requests. You can do this
+ by using the session as a context manager:
+
+ .. code-block:: python
+
+ from requests_futures.sessions import FuturesSession
+ with FuturesSession(max_workers=1) as session:
+ future = session.get('https://httpbin.org/get')
+ future2 = session.get('https://httpbin.org/delay/10')
+ future3 = session.get('https://httpbin.org/delay/10')
+ response = future.result()
+
+ In this example, the second or third request will be skipped, saving time and
+ resources that would otherwise be wasted.
+
Working in the Background
=========================
- There is one additional parameter to the various request functions,
- background_callback, which allows you to work with the Response objects in the
- background thread. This can be useful for shifting work out of the foreground,
- for a simple example take json parsing.
+ Additional processing can be done in the background using requests's hooks_
+ functionality. This can be useful for shifting work out of the foreground, for
+ a simple example take json parsing.
.. code-block:: python
@@ -105,17 +123,136 @@
session = FuturesSession()
- def bg_cb(sess, resp):
+ def response_hook(resp, *args, **kwargs):
# parse the json storing the result on the response object
resp.data = resp.json()
- future = session.get('http://httpbin.org/get', background_callback=bg_cb)
+ future = session.get('http://httpbin.org/get', hooks={
+ 'response': response_hook,
+ })
# do some other stuff, send some more requests while this one works
response = future.result()
print('response status {0}'.format(response.status_code))
# data will have been attached to the response object in the background
pprint(response.data)
+ Hooks can also be applied to the session.
+
+ .. code-block:: python
+
+ from pprint import pprint
+ from requests_futures.sessions import FuturesSession
+
+ def response_hook(resp, *args, **kwargs):
+ # parse the json storing the result on the response object
+ resp.data = resp.json()
+
+ session = FuturesSession()
+ session.hooks['response'] = response_hook
+
+ future = session.get('http://httpbin.org/get')
+ # do some other stuff, send some more requests while this one works
+ response = future.result()
+ print('response status {0}'.format(response.status_code))
+ # data will have been attached to the response object in the background
+ pprint(response.data) pprint(response.data)
+
+ A more advanced example that adds an `elapsed` property to all requests.
+
+ .. code-block:: python
+
+ from pprint import pprint
+ from requests_futures.sessions import FuturesSession
+ from time import time
+
+
+ class ElapsedFuturesSession(FuturesSession):
+
+ def request(self, method, url, hooks={}, *args, **kwargs):
+ start = time()
+
+ def timing(r, *args, **kwargs):
+ r.elapsed = time() - start
+
+ try:
+ if isinstance(hooks['response'], (list, tuple)):
+ # needs to be first so we don't time other hooks execution
+ hooks['response'].prepend(timing)
+ else:
+ hooks['response'] = [timing, hooks['response']]
+ except KeyError:
+ hooks['response'] = timing
+
+ return super(ElapsedFuturesSession, self) \
+ .request(method, url, hooks=hooks, *args, **kwargs)
+
+
+
+ session = ElapsedFuturesSession()
+ future = session.get('http://httpbin.org/get')
+ # do some other stuff, send some more requests while this one works
+ response = future.result()
+ print('response status {0}'.format(response.status_code))
+ print('response elapsed {0}'.format(response.elapsed))
+
+ Using ProcessPoolExecutor
+ =========================
+
+ Similarly to `ThreadPoolExecutor`, it is possible to use an instance of
+ `ProcessPoolExecutor`. As the name suggest, the requests will be executed
+ concurrently in separate processes rather than threads.
+
+ .. code-block:: python
+
+ from concurrent.futures import ProcessPoolExecutor
+ from requests_futures.sessions import FuturesSession
+
+ session = FuturesSession(executor=ProcessPoolExecutor(max_workers=10))
+ # ... use as before
+
+ .. HINT::
+ Using the `ProcessPoolExecutor` is useful, in cases where memory
+ usage per request is very high (large response) and cycling the interpretor
+ is required to release memory back to OS.
+
+ A base requirement of using `ProcessPoolExecutor` is that the `Session.request`,
+ `FutureSession` all be pickle-able.
+
+ This means that only Python 3.5 is fully supported, while Python versions
+ 3.4 and above REQUIRE an existing `requests.Session` instance to be passed
+ when initializing `FutureSession`. Python 2.X and < 3.4 are currently not
+ supported.
+
+ .. code-block:: python
+
+ # Using python 3.4
+ from concurrent.futures import ProcessPoolExecutor
+ from requests import Session
+ from requests_futures.sessions import FuturesSession
+
+ session = FuturesSession(executor=ProcessPoolExecutor(max_workers=10),
+ session=Session())
+ # ... use as before
+
+ In case pickling fails, an exception is raised pointing to this documentation.
+
+ .. code-block:: python
+
+ # Using python 2.7
+ from concurrent.futures import ProcessPoolExecutor
+ from requests import Session
+ from requests_futures.sessions import FuturesSession
+
+ session = FuturesSession(executor=ProcessPoolExecutor(max_workers=10),
+ session=Session())
+ Traceback (most recent call last):
+ ...
+ RuntimeError: Cannot pickle function. Refer to documentation: https://github.com/ross/requests-futures/#using-processpoolexecutor
+
+ .. IMPORTANT::
+ * Python >= 3.4 required
+ * A session instance is required when using Python < 3.5
+ * If sub-classing `FuturesSession` it must be importable (module global)
Installation
============
@@ -125,6 +262,7 @@
.. _`requests`: https://github.com/kennethreitz/requests
.. _`concurrent.futures`: http://docs.python.org/dev/library/concurrent.futures.html
.. _backport: https://pypi.python.org/pypi/futures
+ .. _hooks: http://docs.python-requests.org/en/master/user/advanced/#event-hooks
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
@@ -134,7 +272,6 @@
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.2
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requests-futures-0.9.7/README.rst new/requests-futures-0.9.9/README.rst
--- old/requests-futures-0.9.7/README.rst 2016-02-12 04:04:57.000000000 +0100
+++ new/requests-futures-0.9.9/README.rst 2018-12-02 23:50:06.000000000 +0100
@@ -37,7 +37,7 @@
session = FuturesSession()
# first request is started in background
future_one = session.get('http://httpbin.org/get')
- # second requests is started immediately
+ # second requests is started immediately
future_two = session.get('http://httpbin.org/get?foo=bar')
# wait for the first request to complete, if it hasn't already
response_one = future_one.result()
@@ -82,13 +82,31 @@
are shifted (thrown) to the future.result() call so try/except blocks should be
moved there.
+Canceling queued requests (a.k.a cleaning up after yourself)
+=========================
+
+If you know that you won't be needing any additional responses from futures that
+haven't yet resolved, it's a good idea to cancel those requests. You can do this
+by using the session as a context manager:
+
+.. code-block:: python
+
+ from requests_futures.sessions import FuturesSession
+ with FuturesSession(max_workers=1) as session:
+ future = session.get('https://httpbin.org/get')
+ future2 = session.get('https://httpbin.org/delay/10')
+ future3 = session.get('https://httpbin.org/delay/10')
+ response = future.result()
+
+In this example, the second or third request will be skipped, saving time and
+resources that would otherwise be wasted.
+
Working in the Background
=========================
-There is one additional parameter to the various request functions,
-background_callback, which allows you to work with the Response objects in the
-background thread. This can be useful for shifting work out of the foreground,
-for a simple example take json parsing.
+Additional processing can be done in the background using requests's hooks_
+functionality. This can be useful for shifting work out of the foreground, for
+a simple example take json parsing.
.. code-block:: python
@@ -97,17 +115,136 @@
session = FuturesSession()
- def bg_cb(sess, resp):
+ def response_hook(resp, *args, **kwargs):
# parse the json storing the result on the response object
resp.data = resp.json()
- future = session.get('http://httpbin.org/get', background_callback=bg_cb)
+ future = session.get('http://httpbin.org/get', hooks={
+ 'response': response_hook,
+ })
# do some other stuff, send some more requests while this one works
response = future.result()
print('response status {0}'.format(response.status_code))
# data will have been attached to the response object in the background
pprint(response.data)
+Hooks can also be applied to the session.
+
+.. code-block:: python
+
+ from pprint import pprint
+ from requests_futures.sessions import FuturesSession
+
+ def response_hook(resp, *args, **kwargs):
+ # parse the json storing the result on the response object
+ resp.data = resp.json()
+
+ session = FuturesSession()
+ session.hooks['response'] = response_hook
+
+ future = session.get('http://httpbin.org/get')
+ # do some other stuff, send some more requests while this one works
+ response = future.result()
+ print('response status {0}'.format(response.status_code))
+ # data will have been attached to the response object in the background
+ pprint(response.data) pprint(response.data)
+
+A more advanced example that adds an `elapsed` property to all requests.
+
+.. code-block:: python
+
+ from pprint import pprint
+ from requests_futures.sessions import FuturesSession
+ from time import time
+
+
+ class ElapsedFuturesSession(FuturesSession):
+
+ def request(self, method, url, hooks={}, *args, **kwargs):
+ start = time()
+
+ def timing(r, *args, **kwargs):
+ r.elapsed = time() - start
+
+ try:
+ if isinstance(hooks['response'], (list, tuple)):
+ # needs to be first so we don't time other hooks execution
+ hooks['response'].prepend(timing)
+ else:
+ hooks['response'] = [timing, hooks['response']]
+ except KeyError:
+ hooks['response'] = timing
+
+ return super(ElapsedFuturesSession, self) \
+ .request(method, url, hooks=hooks, *args, **kwargs)
+
+
+
+ session = ElapsedFuturesSession()
+ future = session.get('http://httpbin.org/get')
+ # do some other stuff, send some more requests while this one works
+ response = future.result()
+ print('response status {0}'.format(response.status_code))
+ print('response elapsed {0}'.format(response.elapsed))
+
+Using ProcessPoolExecutor
+=========================
+
+Similarly to `ThreadPoolExecutor`, it is possible to use an instance of
+`ProcessPoolExecutor`. As the name suggest, the requests will be executed
+concurrently in separate processes rather than threads.
+
+.. code-block:: python
+
+ from concurrent.futures import ProcessPoolExecutor
+ from requests_futures.sessions import FuturesSession
+
+ session = FuturesSession(executor=ProcessPoolExecutor(max_workers=10))
+ # ... use as before
+
+.. HINT::
+ Using the `ProcessPoolExecutor` is useful, in cases where memory
+ usage per request is very high (large response) and cycling the interpretor
+ is required to release memory back to OS.
+
+A base requirement of using `ProcessPoolExecutor` is that the `Session.request`,
+`FutureSession` all be pickle-able.
+
+This means that only Python 3.5 is fully supported, while Python versions
+3.4 and above REQUIRE an existing `requests.Session` instance to be passed
+when initializing `FutureSession`. Python 2.X and < 3.4 are currently not
+supported.
+
+.. code-block:: python
+
+ # Using python 3.4
+ from concurrent.futures import ProcessPoolExecutor
+ from requests import Session
+ from requests_futures.sessions import FuturesSession
+
+ session = FuturesSession(executor=ProcessPoolExecutor(max_workers=10),
+ session=Session())
+ # ... use as before
+
+In case pickling fails, an exception is raised pointing to this documentation.
+
+.. code-block:: python
+
+ # Using python 2.7
+ from concurrent.futures import ProcessPoolExecutor
+ from requests import Session
+ from requests_futures.sessions import FuturesSession
+
+ session = FuturesSession(executor=ProcessPoolExecutor(max_workers=10),
+ session=Session())
+ Traceback (most recent call last):
+ ...
+ RuntimeError: Cannot pickle function. Refer to documentation: https://github.com/ross/requests-futures/#using-processpoolexecutor
+
+.. IMPORTANT::
+ * Python >= 3.4 required
+ * A session instance is required when using Python < 3.5
+ * If sub-classing `FuturesSession` it must be importable (module global)
Installation
============
@@ -117,3 +254,4 @@
.. _`requests`: https://github.com/kennethreitz/requests
.. _`concurrent.futures`: http://docs.python.org/dev/library/concurrent.futures.html
.. _backport: https://pypi.python.org/pypi/futures
+.. _hooks: http://docs.python-requests.org/en/master/user/advanced/#event-hooks
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requests-futures-0.9.7/requests_futures/__init__.py new/requests-futures-0.9.9/requests_futures/__init__.py
--- old/requests-futures-0.9.7/requests_futures/__init__.py 2016-02-12 04:05:47.000000000 +0100
+++ new/requests-futures-0.9.9/requests_futures/__init__.py 2018-12-02 23:50:24.000000000 +0100
@@ -12,7 +12,7 @@
import logging
__title__ = 'requests-futures'
-__version__ = '0.9.7'
+__version__ = '0.9.9'
__build__ = 0x000000
__author__ = 'Ross McFarland'
__license__ = 'Apache 2.0'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requests-futures-0.9.7/requests_futures/sessions.py new/requests-futures-0.9.9/requests_futures/sessions.py
--- old/requests-futures-0.9.7/requests_futures/sessions.py 2016-02-12 04:04:57.000000000 +0100
+++ new/requests-futures-0.9.9/requests_futures/sessions.py 2018-12-02 23:49:48.000000000 +0100
@@ -7,7 +7,7 @@
of python 3.3's concurrent.futures or the futures backport for previous
releases of python.
- from requests_futures import FuturesSession
+ from requests_futures.sessions import FuturesSession
session = FuturesSession()
# request is run in the background
@@ -19,36 +19,54 @@
print(response.content)
"""
+from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor
+from functools import partial
+from logging import getLogger
+from pickle import dumps, PickleError
-from concurrent.futures import ThreadPoolExecutor
from requests import Session
from requests.adapters import DEFAULT_POOLSIZE, HTTPAdapter
+def wrap(self, sup, background_callback, *args_, **kwargs_):
+ """ A global top-level is required for ProcessPoolExecutor """
+ resp = sup(*args_, **kwargs_)
+ return background_callback(self, resp) or resp
+
+
+PICKLE_ERROR = ('Cannot pickle function. Refer to documentation: https://'
+ 'github.com/ross/requests-futures/#using-processpoolexecutor')
+
+
class FuturesSession(Session):
- def __init__(self, executor=None, max_workers=2, session=None, *args,
- **kwargs):
+ def __init__(self, executor=None, max_workers=8, session=None,
+ adapter_kwargs=None, *args, **kwargs):
"""Creates a FuturesSession
Notes
~~~~~
-
- * ProcessPoolExecutor is not supported b/c Response objects are
- not picklable.
+ * `ProcessPoolExecutor` may be used with Python > 3.4;
+ see README for more information.
* If you provide both `executor` and `max_workers`, the latter is
ignored and provided executor is used as is.
"""
+ _adapter_kwargs = {}
super(FuturesSession, self).__init__(*args, **kwargs)
+ self._owned_executor = executor is None
if executor is None:
executor = ThreadPoolExecutor(max_workers=max_workers)
# set connection pool size equal to max_workers if needed
if max_workers > DEFAULT_POOLSIZE:
- adapter_kwargs = dict(pool_connections=max_workers,
- pool_maxsize=max_workers)
- self.mount('https://', HTTPAdapter(**adapter_kwargs))
- self.mount('http://', HTTPAdapter(**adapter_kwargs))
+ _adapter_kwargs.update({'pool_connections': max_workers,
+ 'pool_maxsize': max_workers})
+
+ _adapter_kwargs.update(adapter_kwargs or {})
+
+ if _adapter_kwargs:
+ self.mount('https://', HTTPAdapter(**_adapter_kwargs))
+ self.mount('http://', HTTPAdapter(**_adapter_kwargs))
self.executor = executor
self.session = session
@@ -61,25 +79,33 @@
The background_callback param allows you to do some processing on the
response in the background, e.g. call resp.json() so that json parsing
happens in the background thread.
+
+ :rtype : concurrent.futures.Future
"""
if self.session:
- func = sup = self.session.request
+ func = self.session.request
else:
- func = sup = super(FuturesSession, self).request
+ # avoid calling super to not break pickled method
+ func = partial(Session.request, self)
background_callback = kwargs.pop('background_callback', None)
if background_callback:
- def wrap(*args_, **kwargs_):
- resp = sup(*args_, **kwargs_)
- background_callback(self, resp)
- return resp
-
- func = wrap
+ logger = getLogger(self.__class__.__name__)
+ logger.warn('`background_callback` is deprecated and will be '
+ 'removed in 1.0, use `hooks` instead')
+ func = partial(wrap, self, func, background_callback)
+
+ if isinstance(self.executor, ProcessPoolExecutor):
+ # verify function can be pickled
+ try:
+ dumps(func)
+ except (TypeError, PickleError):
+ raise RuntimeError(PICKLE_ERROR)
return self.executor.submit(func, *args, **kwargs)
- def __enter__(self):
- return self
+ def close(self):
+ super(FuturesSession, self).close()
+ if self._owned_executor:
+ self.executor.shutdown()
- def __exit__(self, type, value, traceback):
- self.executor.shutdown()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requests-futures-0.9.7/requests_futures.egg-info/PKG-INFO new/requests-futures-0.9.9/requests_futures.egg-info/PKG-INFO
--- old/requests-futures-0.9.7/requests_futures.egg-info/PKG-INFO 2016-02-12 04:06:30.000000000 +0100
+++ new/requests-futures-0.9.9/requests_futures.egg-info/PKG-INFO 2018-12-02 23:50:47.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: requests-futures
-Version: 0.9.7
+Version: 0.9.9
Summary: Asynchronous Python HTTP for Humans.
Home-page: https://github.com/ross/requests-futures
Author: Ross McFarland
@@ -45,7 +45,7 @@
session = FuturesSession()
# first request is started in background
future_one = session.get('http://httpbin.org/get')
- # second requests is started immediately
+ # second requests is started immediately
future_two = session.get('http://httpbin.org/get?foo=bar')
# wait for the first request to complete, if it hasn't already
response_one = future_one.result()
@@ -90,13 +90,31 @@
are shifted (thrown) to the future.result() call so try/except blocks should be
moved there.
+ Canceling queued requests (a.k.a cleaning up after yourself)
+ =========================
+
+ If you know that you won't be needing any additional responses from futures that
+ haven't yet resolved, it's a good idea to cancel those requests. You can do this
+ by using the session as a context manager:
+
+ .. code-block:: python
+
+ from requests_futures.sessions import FuturesSession
+ with FuturesSession(max_workers=1) as session:
+ future = session.get('https://httpbin.org/get')
+ future2 = session.get('https://httpbin.org/delay/10')
+ future3 = session.get('https://httpbin.org/delay/10')
+ response = future.result()
+
+ In this example, the second or third request will be skipped, saving time and
+ resources that would otherwise be wasted.
+
Working in the Background
=========================
- There is one additional parameter to the various request functions,
- background_callback, which allows you to work with the Response objects in the
- background thread. This can be useful for shifting work out of the foreground,
- for a simple example take json parsing.
+ Additional processing can be done in the background using requests's hooks_
+ functionality. This can be useful for shifting work out of the foreground, for
+ a simple example take json parsing.
.. code-block:: python
@@ -105,17 +123,136 @@
session = FuturesSession()
- def bg_cb(sess, resp):
+ def response_hook(resp, *args, **kwargs):
# parse the json storing the result on the response object
resp.data = resp.json()
- future = session.get('http://httpbin.org/get', background_callback=bg_cb)
+ future = session.get('http://httpbin.org/get', hooks={
+ 'response': response_hook,
+ })
# do some other stuff, send some more requests while this one works
response = future.result()
print('response status {0}'.format(response.status_code))
# data will have been attached to the response object in the background
pprint(response.data)
+ Hooks can also be applied to the session.
+
+ .. code-block:: python
+
+ from pprint import pprint
+ from requests_futures.sessions import FuturesSession
+
+ def response_hook(resp, *args, **kwargs):
+ # parse the json storing the result on the response object
+ resp.data = resp.json()
+
+ session = FuturesSession()
+ session.hooks['response'] = response_hook
+
+ future = session.get('http://httpbin.org/get')
+ # do some other stuff, send some more requests while this one works
+ response = future.result()
+ print('response status {0}'.format(response.status_code))
+ # data will have been attached to the response object in the background
+ pprint(response.data) pprint(response.data)
+
+ A more advanced example that adds an `elapsed` property to all requests.
+
+ .. code-block:: python
+
+ from pprint import pprint
+ from requests_futures.sessions import FuturesSession
+ from time import time
+
+
+ class ElapsedFuturesSession(FuturesSession):
+
+ def request(self, method, url, hooks={}, *args, **kwargs):
+ start = time()
+
+ def timing(r, *args, **kwargs):
+ r.elapsed = time() - start
+
+ try:
+ if isinstance(hooks['response'], (list, tuple)):
+ # needs to be first so we don't time other hooks execution
+ hooks['response'].prepend(timing)
+ else:
+ hooks['response'] = [timing, hooks['response']]
+ except KeyError:
+ hooks['response'] = timing
+
+ return super(ElapsedFuturesSession, self) \
+ .request(method, url, hooks=hooks, *args, **kwargs)
+
+
+
+ session = ElapsedFuturesSession()
+ future = session.get('http://httpbin.org/get')
+ # do some other stuff, send some more requests while this one works
+ response = future.result()
+ print('response status {0}'.format(response.status_code))
+ print('response elapsed {0}'.format(response.elapsed))
+
+ Using ProcessPoolExecutor
+ =========================
+
+ Similarly to `ThreadPoolExecutor`, it is possible to use an instance of
+ `ProcessPoolExecutor`. As the name suggest, the requests will be executed
+ concurrently in separate processes rather than threads.
+
+ .. code-block:: python
+
+ from concurrent.futures import ProcessPoolExecutor
+ from requests_futures.sessions import FuturesSession
+
+ session = FuturesSession(executor=ProcessPoolExecutor(max_workers=10))
+ # ... use as before
+
+ .. HINT::
+ Using the `ProcessPoolExecutor` is useful, in cases where memory
+ usage per request is very high (large response) and cycling the interpretor
+ is required to release memory back to OS.
+
+ A base requirement of using `ProcessPoolExecutor` is that the `Session.request`,
+ `FutureSession` all be pickle-able.
+
+ This means that only Python 3.5 is fully supported, while Python versions
+ 3.4 and above REQUIRE an existing `requests.Session` instance to be passed
+ when initializing `FutureSession`. Python 2.X and < 3.4 are currently not
+ supported.
+
+ .. code-block:: python
+
+ # Using python 3.4
+ from concurrent.futures import ProcessPoolExecutor
+ from requests import Session
+ from requests_futures.sessions import FuturesSession
+
+ session = FuturesSession(executor=ProcessPoolExecutor(max_workers=10),
+ session=Session())
+ # ... use as before
+
+ In case pickling fails, an exception is raised pointing to this documentation.
+
+ .. code-block:: python
+
+ # Using python 2.7
+ from concurrent.futures import ProcessPoolExecutor
+ from requests import Session
+ from requests_futures.sessions import FuturesSession
+
+ session = FuturesSession(executor=ProcessPoolExecutor(max_workers=10),
+ session=Session())
+ Traceback (most recent call last):
+ ...
+ RuntimeError: Cannot pickle function. Refer to documentation: https://github.com/ross/requests-futures/#using-processpoolexecutor
+
+ .. IMPORTANT::
+ * Python >= 3.4 required
+ * A session instance is required when using Python < 3.5
+ * If sub-classing `FuturesSession` it must be importable (module global)
Installation
============
@@ -125,6 +262,7 @@
.. _`requests`: https://github.com/kennethreitz/requests
.. _`concurrent.futures`: http://docs.python.org/dev/library/concurrent.futures.html
.. _backport: https://pypi.python.org/pypi/futures
+ .. _hooks: http://docs.python-requests.org/en/master/user/advanced/#event-hooks
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
@@ -134,7 +272,6 @@
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.2
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requests-futures-0.9.7/setup.py new/requests-futures-0.9.9/setup.py
--- old/requests-futures-0.9.7/setup.py 2016-02-12 04:04:57.000000000 +0100
+++ new/requests-futures-0.9.9/setup.py 2017-11-03 14:09:48.000000000 +0100
@@ -48,7 +48,6 @@
'Programming Language :: Python',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
- 'Programming Language :: Python :: 3.2',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/requests-futures-0.9.7/test_requests_futures.py new/requests-futures-0.9.9/test_requests_futures.py
--- old/requests-futures-0.9.7/test_requests_futures.py 2016-02-12 04:04:57.000000000 +0100
+++ new/requests-futures-0.9.9/test_requests_futures.py 2018-12-02 23:49:48.000000000 +0100
@@ -3,13 +3,24 @@
"""Tests for Requests."""
-from concurrent.futures import Future
-from requests import Response, session
+from concurrent.futures import Future, ProcessPoolExecutor
from os import environ
+from sys import version_info
+try:
+ from sys import pypy_version_info
+except ImportError:
+ pypy_version_info = None
+from unittest import TestCase, main, skipIf
+import logging
+
+from requests import Response, session
+from requests.adapters import DEFAULT_POOLSIZE
from requests_futures.sessions import FuturesSession
-from unittest import TestCase, main
HTTPBIN = environ.get('HTTPBIN_URL', 'http://httpbin.org/')
+logging.basicConfig(level=logging.DEBUG)
+logging.getLogger('urllib3.connectionpool').level = logging.WARN
+logging.getLogger('FuturesSession').level = logging.ERROR
def httpbin(*suffix):
@@ -70,7 +81,7 @@
""" Tests the `max_workers` shortcut. """
from concurrent.futures import ThreadPoolExecutor
session = FuturesSession()
- self.assertEqual(session.executor._max_workers, 2)
+ self.assertEqual(session.executor._max_workers, 8)
session = FuturesSession(max_workers=5)
self.assertEqual(session.executor._max_workers, 5)
session = FuturesSession(executor=ThreadPoolExecutor(max_workers=10))
@@ -79,6 +90,21 @@
max_workers=5)
self.assertEqual(session.executor._max_workers, 10)
+ def test_adapter_kwargs(self):
+ """ Tests the `adapter_kwargs` shortcut. """
+ from concurrent.futures import ThreadPoolExecutor
+ session = FuturesSession()
+ self.assertFalse(session.get_adapter('http://')._pool_block)
+ session = FuturesSession(max_workers=DEFAULT_POOLSIZE + 1,
+ adapter_kwargs={'pool_block': True})
+ adapter = session.get_adapter('http://')
+ self.assertTrue(adapter._pool_block)
+ self.assertEqual(adapter._pool_connections, DEFAULT_POOLSIZE + 1)
+ self.assertEqual(adapter._pool_maxsize, DEFAULT_POOLSIZE + 1)
+ session = FuturesSession(executor=ThreadPoolExecutor(max_workers=10),
+ adapter_kwargs={'pool_connections': 20})
+ self.assertEqual(session.get_adapter('http://')._pool_connections, 20)
+
def test_redirect(self):
""" Tests for the ability to cleanly handle redirects. """
sess = FuturesSession()
@@ -117,5 +143,148 @@
self.assertTrue(passout._exit_called)
+# << test process pool executor >>
+# see discussion https://github.com/ross/requests-futures/issues/11
+def global_cb_modify_response(s, r):
+ """ add the parsed json data to the response """
+ assert s, FuturesSession
+ assert r, Response
+ r.data = r.json()
+ r.__attrs__.append('data') # required for pickling new attribute
+
+
+def global_cb_return_result(s, r):
+ """ simply return parsed json data """
+ assert s, FuturesSession
+ assert r, Response
+ return r.json()
+
+
+def global_rasing_cb(s, r):
+ raise Exception('boom')
+
+
+# pickling instance method supported only from here
+unsupported_platform = version_info < (3, 4) and not pypy_version_info
+session_required = version_info < (3, 5,) and not pypy_version_info
+
+
+@skipIf(unsupported_platform, 'not supported in python < 3.4')
+class RequestsProcessPoolTestCase(TestCase):
+
+ def setUp(self):
+ self.proc_executor = ProcessPoolExecutor(max_workers=2)
+ self.session = session()
+
+ @skipIf(session_required, 'not supported in python < 3.5')
+ def test_futures_session(self):
+ self._assert_futures_session()
+
+ @skipIf(not session_required, 'fully supported on python >= 3.5')
+ def test_exception_raised(self):
+ with self.assertRaises(RuntimeError):
+ self._assert_futures_session()
+
+ def test_futures_existing_session(self):
+ self.session.headers['Foo'] = 'bar'
+ self._assert_futures_session(session=self.session)
+
+ def _assert_futures_session(self, session=None):
+ # basic futures get
+ if session:
+ sess = FuturesSession(executor=self.proc_executor, session=session)
+ else:
+ sess = FuturesSession(executor=self.proc_executor)
+
+ future = sess.get(httpbin('get'))
+ self.assertIsInstance(future, Future)
+ resp = future.result()
+ self.assertIsInstance(resp, Response)
+ self.assertEqual(200, resp.status_code)
+
+ # non-200, 404
+ future = sess.get(httpbin('status/404'))
+ resp = future.result()
+ self.assertEqual(404, resp.status_code)
+
+ future = sess.get(httpbin('get'),
+ background_callback=global_cb_modify_response)
+ # this should block until complete
+ resp = future.result()
+ if session:
+ self.assertEqual(resp.json()['headers']['Foo'], 'bar')
+ self.assertEqual(200, resp.status_code)
+ # make sure the callback was invoked
+ self.assertTrue(hasattr(resp, 'data'))
+
+ future = sess.get(httpbin('get'),
+ background_callback=global_cb_return_result)
+ # this should block until complete
+ resp = future.result()
+ # make sure the callback was invoked
+ self.assertIsInstance(resp, dict)
+
+ future = sess.get(httpbin('get'), background_callback=global_rasing_cb)
+ with self.assertRaises(Exception) as cm:
+ resp = future.result()
+ self.assertEqual('boom', cm.exception.args[0])
+
+ # Tests for the ability to cleanly handle redirects
+ future = sess.get(httpbin('redirect-to?url=get'))
+ self.assertIsInstance(future, Future)
+ resp = future.result()
+ self.assertIsInstance(resp, Response)
+ self.assertEqual(200, resp.status_code)
+
+ future = sess.get(httpbin('redirect-to?url=status/404'))
+ resp = future.result()
+ self.assertEqual(404, resp.status_code)
+
+ @skipIf(session_required, 'not supported in python < 3.5')
+ def test_context(self):
+ self._assert_context()
+
+ def test_context_with_session(self):
+ self._assert_context(session=self.session)
+
+ def _assert_context(self, session=None):
+ if session:
+ helper_instance = TopLevelContextHelper(executor=self.proc_executor,
+ session=self.session)
+ else:
+ helper_instance = TopLevelContextHelper(executor=self.proc_executor)
+ passout = None
+ with helper_instance as sess:
+ passout = sess
+ future = sess.get(httpbin('get'))
+ self.assertIsInstance(future, Future)
+ resp = future.result()
+ self.assertIsInstance(resp, Response)
+ self.assertEqual(200, resp.status_code)
+
+ self.assertTrue(passout._exit_called)
+
+
+class TopLevelContextHelper(FuturesSession):
+ def __init__(self, *args, **kwargs):
+ super(TopLevelContextHelper, self).__init__(
+ *args, **kwargs)
+ self._exit_called = False
+
+ def __exit__(self, *args, **kwargs):
+ self._exit_called = True
+ return super(TopLevelContextHelper, self).__exit__(
+ *args, **kwargs)
+
+
+@skipIf(not unsupported_platform, 'Exception raised when unsupported')
+class ProcessPoolExceptionRaisedTestCase(TestCase):
+ def test_exception_raised(self):
+ executor = ProcessPoolExecutor(max_workers=2)
+ sess = FuturesSession(executor=executor, session=session())
+ with self.assertRaises(RuntimeError):
+ sess.get(httpbin('get'))
+
+
if __name__ == '__main__':
main()
1
0
Hello community,
here is the log from the commit of package projectlibre for openSUSE:Factory checked in at 2019-05-17 23:42:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/projectlibre (Old)
and /work/SRC/openSUSE:Factory/.projectlibre.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "projectlibre"
Fri May 17 23:42:22 2019 rev:4 rq:696451 version:1.9.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/projectlibre/projectlibre.changes 2018-06-29 22:29:47.574329244 +0200
+++ /work/SRC/openSUSE:Factory/.projectlibre.new.5148/projectlibre.changes 2019-05-17 23:42:24.221937847 +0200
@@ -1,0 +2,7 @@
+Sat Apr 20 15:03:17 UTC 2019 - Axel Braun <axel.braun(a)gmx.de>
+
+- version 1.9.1
+ various bugfixes and improvements
+ translations added
+
+-------------------------------------------------------------------
Old:
----
projectlibre-1.8.0.tar.gz
New:
----
projectlibre-1.9.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ projectlibre.spec ++++++
--- /var/tmp/diff_new_pack.nWjYTW/_old 2019-05-17 23:42:25.393937203 +0200
+++ /var/tmp/diff_new_pack.nWjYTW/_new 2019-05-17 23:42:25.405937196 +0200
@@ -1,7 +1,7 @@
#
# spec file for package projectlibre
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 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
@@ -12,12 +12,12 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
Name: projectlibre
-Version: 1.8.0
+Version: 1.9.1
Release: 0
Summary: Project Management Tool
License: CPAL-1.0
@@ -50,15 +50,15 @@
%build
#Set the file encoding for source files
export JAVA_TOOL_OPTIONS=-Dfile.encoding=cp1252
-cd openproj_build/
+cd projectlibre_build/
ant clean
ant
%install
export NO_BRP_CHECK_BYTECODE_VERSION=true
mkdir -p %{buildroot}%{_datadir}/%{name}/lib
-install -Dm0755 openproj_contrib/*.jar %{buildroot}%{_datadir}/%{name}/lib/
-install -Dm0755 openproj_build/dist/%{name}.jar %{buildroot}%{_datadir}/%{name}/
+install -Dm0755 projectlibre_contrib/*.jar %{buildroot}%{_datadir}/%{name}/lib/
+install -Dm0755 projectlibre_build/dist/%{name}.jar %{buildroot}%{_datadir}/%{name}/
# startscript
cat > %{name} << EOF
@@ -85,7 +85,7 @@
%files
%defattr(-,root,root)
-%doc openproj_build/license/*
+%doc projectlibre_build/license/*
%{_bindir}/%{name}
%{_datadir}/applications/%{name}.desktop
%{_datadir}/pixmaps/%{name}.png
++++++ projectlibre-1.8.0.tar.gz -> projectlibre-1.9.1.tar.gz ++++++
/work/SRC/openSUSE:Factory/projectlibre/projectlibre-1.8.0.tar.gz /work/SRC/openSUSE:Factory/.projectlibre.new.5148/projectlibre-1.9.1.tar.gz differ: char 5, line 1
++++++ projectlibre.desktop ++++++
--- /var/tmp/diff_new_pack.nWjYTW/_old 2019-05-17 23:42:25.477937157 +0200
+++ /var/tmp/diff_new_pack.nWjYTW/_new 2019-05-17 23:42:25.481937154 +0200
@@ -1,14 +1,77 @@
[Desktop Entry]
Name=ProjectLibre
-GenericName="Project management tool"
-GenericName[DE]="Projekt Management"
-Type=Application
-Comment="Free Project Management Application"
+GenericName="Project Management tool"
+GenericName[fr]=Gestion de projets
+GenericName[ru]=Управление проектами
+GenericName[af]=Projekbestuur
+GenericName[am]=የዕቅድ ጉባኤ
+GenericName[ar]=إدارة المشاريع
+GenericName[sq]=Menaxhim Projektesh
+GenericName[hy]=Նախագծերի կառավարում
+GenericName[be]=Кіраваньне праектам
+GenericName[eu]=Proiektu-kudeaketa
+GenericName[ast]=Xestión de proyeutos
+GenericName[bn]=প্রকল্প ব্যবস্থাপনা
+GenericName[bs]=Upravljanje projektima
+GenericName[bg]=Управление на проекти
+GenericName[ca]=Gestió de projectes
+GenericName[ca@valencia]=Gestió de projectes
+GenericName[pt_BR]=Gestão de projeto
+GenericName[zh_HK]=專案管理
+GenericName[zh_TW]=專案管理
+GenericName[zh_CN]=项目管理
+GenericName[crh]=Proje Yönetimi
+GenericName[hr]=Upravljanje projektima
+GenericName[cs]=Správa projektů
+GenericName[da]=Projekthåndtering
+GenericName[nl]=Projectmanagement
+GenericName[et]=Projektihaldus
+GenericName[fi]=Projektinhallinta
+GenericName[fr_CA]=Direction de projet
+GenericName[gl]=Xestión de proxectos
+GenericName[ka]=პროექტების მართვა
+GenericName[de]=Projekt-Management
+GenericName[gu]=પ્રોજેક્ટ વ્યવસ્થાપન
+GenericName[el]=Διαχείριση έργων
+GenericName[he]=ניהול פרוייקט
+GenericName[hi]=प्रोजेक्ट प्रबंधन
+GenericName[is]=Verkstjórnun
+GenericName[id]=Manajemen Proyek
+GenericName[hu]=Projektmenedzsment
+GenericName[it]=Gestione progetti
+GenericName[ja]=プロジェクト管理
+GenericName[ky]=Долбоор башкаруу
+GenericName[ko]=프로젝트 관리
+GenericName[lt]=Projektų valdymas
+GenericName[lv]=Projektu pārvaldība
+GenericName[ml]=പദ്ധതിനിര്വ്വഹണം
+GenericName[ms]=Manajemen Proyek
+GenericName[mr]=प्रकल्प व्यवस्थापन
+GenericName[ne]=परियोजना व्यवस्थापन
+GenericName[nb]=Prosjektstyring
+GenericName[oc]=Gestion de projèctes
+GenericName[fa]=مدیریت پروژه
+GenericName[pl]=Zarządzanie projektami
+GenericName[ro]=Administrarea proiectelor
+GenericName[pt]=Gestão de projetos
+GenericName[sr]=Управљање пројектима
+GenericName[sk]=Správca projektov
+GenericName[sl]=Upravljanje projektov
+GenericName[es]=Gestión de proyectos
+GenericName[sv]=Projekthantering
+GenericName[tg]=Идоракунии лоиҳаҳо
+GenericName[ta]=திட்ட மேலாண்மை
+GenericName[th]=การบริหารโครงการ
+GenericName[tr]=Proje Yönetimi
+GenericName[vi]=Quản lý dự án
+GenericName[uk]=Управління
+Comment=Project scheduling and management
+Comment[ru]=Планирование и управление проектами
Comment[DE]="Projektmanagement"
Exec=projectlibre %F
-TryExec=projectlibre
Icon=projectlibre
Terminal=false
+Type=Application
Categories=Office;ProjectManagement;
MimeType=application/x-projectlibre;
X-SuSE-translation=true
1
0
Hello community,
here is the log from the commit of package libreoffice for openSUSE:Factory checked in at 2019-05-17 23:41:45
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libreoffice (Old)
and /work/SRC/openSUSE:Factory/.libreoffice.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libreoffice"
Fri May 17 23:41:45 2019 rev:180 rq:703561 version:6.2.3.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/libreoffice/libreoffice.changes 2019-04-26 22:43:37.793668682 +0200
+++ /work/SRC/openSUSE:Factory/.libreoffice.new.5148/libreoffice.changes 2019-05-17 23:41:51.285955938 +0200
@@ -1,0 +2,20 @@
+Thu May 16 12:40:39 UTC 2019 - Andras Timar <andras.timar(a)collabora.com>
+
+- LO-L3: Slide deck compression doesn't, hmm, compress too much
+ * bsc1127760.patch
+- LO-L3: Psychedelic graphics in LibreOffice (but not PowerPoint)
+ * bsc1124869.patch
+- LO-L3: Image from PPTX shown in a square, not a circle
+ * bsc1121874.patch
+
+-------------------------------------------------------------------
+Wed May 15 13:43:40 UTC 2019 - Martin Liška <mliska(a)suse.cz>
+
+- Strip lto from %_lto_cflags as the project has --enable-lto option
+
+-------------------------------------------------------------------
+Mon May 6 08:54:09 UTC 2019 - Tomáš Chvátal <tchvatal(a)suse.com>
+
+- Fake the epoch to make zip files reproducible
+
+-------------------------------------------------------------------
New:
----
bsc1121874.patch
bsc1124869.patch
bsc1127760.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libreoffice.spec ++++++
--- /var/tmp/diff_new_pack.Wf1X1A/_old 2019-05-17 23:41:56.637952998 +0200
+++ /var/tmp/diff_new_pack.Wf1X1A/_new 2019-05-17 23:41:56.641952995 +0200
@@ -68,6 +68,7 @@
Source6: SUSE.soc
Source98: %{name}.keyring
Source99: %{name}-rpmlintrc
+Source100: %{name}.changes
# prebuilt extensions
Source402: %{external_url}/b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_%{numbertext_version}.oxt
# used extensions sources
@@ -100,6 +101,12 @@
Patch2: nlpsolver-no-broken-help.diff
Patch3: mediawiki-no-broken-help.diff
Patch12: 0001-Use-sort-on-finds-to-improve-deterministic-build.patch
+# LO-L3: Slide deck compression doesn't, hmm, compress too much
+Patch13: bsc1127760.patch
+# LO-L3: Psychedelic graphics in LibreOffice (but not PowerPoint)
+Patch14: bsc1124869.patch
+# LO-L3: Image from PPTX shown in a square, not a circle
+Patch15: bsc1121874.patch
# try to save space by using hardlinks
Patch990: install-with-hardlinks.diff
# save time by relying on rpm check rather than doing stupid find+grep
@@ -963,6 +970,9 @@
%patch2
%patch3
%patch12 -p1
+%patch13 -p1
+%patch14 -p1
+%patch15 -p1
%patch990 -p1
%patch991 -p1
@@ -990,6 +1000,8 @@
echo "HTML_TIMESTAMP = NO" >> odk/docs/idl/Doxyfile
%build
+# Strip lto from %_lto_cflags as the project has --enable-lto option
+%define _lto_cflags %{nil}
# do not eat all memory
%limit_build -m 1200
# make sure that JAVA_HOME is set correctly
@@ -1010,6 +1022,9 @@
export CXX=g++-7
%endif
+# Fake the epoch stuff in generated zip files
+export SOURCE_DATE_EPOCH=$(date -d "$(head -n 2 %{_sourcedir}/%{name}.changes | tail -n 1 | cut -d- -f1 )" +%s)
+
# Colada does not have .pc file and configure creator was really lazy
export OPENCOLLADA_CFLAGS='-I/usr/include/COLLADABaseUtils -I/usr/include/COLLADAFramework -I/usr/include/COLLADASaxFrameworkLoader -I/usr/include/GeneratedSaxParser'
export OPENCOLLADA_LIBS='-lOpenCOLLADABaseUtils -lOpenCOLLADAFramework -lOpenCOLLADASaxFrameworkLoader -lGeneratedSaxParser'
++++++ bsc1121874.patch ++++++
>From 8af919d30f0f17a17ee6f5190bb31652476a52df Mon Sep 17 00:00:00 2001
From: Tamas Bunth <tamas.bunth(a)collabora.co.uk>
Date: Mon, 13 May 2019 01:02:07 +0200
Subject: ooxml import: supprt cropping to shape
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Change-Id: I7bdc959921ecb0cbf19037a78b63eaeb8fc52814
Reviewed-on: https://gerrit.libreoffice.org/72206
Tested-by: Jenkins
Reviewed-by: Tamás Bunth <btomi96(a)gmail.com>
Reviewed-on: https://gerrit.libreoffice.org/72310
Reviewed-by: Miklos Vajna <vmiklos(a)collabora.com>
---
oox/inc/drawingml/graphicproperties.hxx | 3 ++-
oox/source/drawingml/fillproperties.cxx | 12 ++++++++++--
oox/source/drawingml/shape.cxx | 17 ++++++++++++++---
3 files changed, 26 insertions(+), 6 deletions(-)
diff --git a/oox/inc/drawingml/graphicproperties.hxx b/oox/inc/drawingml/graphicproperties.hxx
index 01dd96c..7a227f8 100644
--- a/oox/inc/drawingml/graphicproperties.hxx
+++ b/oox/inc/drawingml/graphicproperties.hxx
@@ -40,12 +40,13 @@ struct GraphicProperties
{
BlipFillProperties maBlipProps; ///< Properties for the graphic.
OUString m_sMediaPackageURL; ///< Audio/Video URL.
+ bool mbIsCustomShape = false;
css::uno::Reference<css::io::XInputStream> m_xMediaStream; ///< Audio/Video input stream.
/** Writes the properties to the passed property map. */
void pushToPropMap(
PropertyMap& rPropMap,
- const GraphicHelper& rGraphicHelper ) const;
+ const GraphicHelper& rGraphicHelper) const;
};
} // namespace drawingml
diff --git a/oox/source/drawingml/fillproperties.cxx b/oox/source/drawingml/fillproperties.cxx
index a2fb6ee..be91daa 100644
--- a/oox/source/drawingml/fillproperties.cxx
+++ b/oox/source/drawingml/fillproperties.cxx
@@ -703,7 +703,7 @@ void FillProperties::pushToPropMap( ShapePropertyMap& rPropMap,
}
}
-void GraphicProperties::pushToPropMap( PropertyMap& rPropMap, const GraphicHelper& rGraphicHelper ) const
+void GraphicProperties::pushToPropMap( PropertyMap& rPropMap, const GraphicHelper& rGraphicHelper) const
{
sal_Int16 nBrightness = getLimitedValue< sal_Int16, sal_Int32 >( maBlipProps.moBrightness.get( 0 ) / PER_PERCENT, -100, 100 );
sal_Int16 nContrast = getLimitedValue< sal_Int16, sal_Int32 >( maBlipProps.moContrast.get( 0 ) / PER_PERCENT, -100, 100 );
@@ -734,7 +734,15 @@ void GraphicProperties::pushToPropMap( PropertyMap& rPropMap, const GraphicHelpe
nBrightness = 0;
nContrast = 0;
}
- rPropMap.setProperty(PROP_Graphic, xGraphic);
+ if(mbIsCustomShape)
+ {
+ // it is a cropped graphic.
+ rPropMap.setProperty(PROP_FillStyle, FillStyle_BITMAP);
+ rPropMap.setProperty(PROP_FillBitmapMode, BitmapMode_STRETCH);
+ rPropMap.setProperty(PROP_FillBitmap, xGraphic);
+ }
+ else
+ rPropMap.setProperty(PROP_Graphic, xGraphic);
// cropping
if ( maBlipProps.moClipRect.has() )
diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx
index 933d909..ba3e8d7 100644
--- a/oox/source/drawingml/shape.cxx
+++ b/oox/source/drawingml/shape.cxx
@@ -647,8 +647,18 @@ Reference< XShape > const & Shape::createAndInsert(
{
aServiceName = finalizeServiceName( rFilterBase, rServiceName, aShapeRectHmm );
}
+ // Use custom shape instead of GraphicObjectShape if the image is cropped to
+ // shape. Except rectangle, which does not require further cropping
+ bool bIsCroppedGraphic = (aServiceName == "com.sun.star.drawing.GraphicObjectShape" && mpCustomShapePropertiesPtr->getShapePresetType() >= 0
+ && mpCustomShapePropertiesPtr->getShapePresetType() != XML_Rect && mpCustomShapePropertiesPtr->getShapePresetType() != XML_rect);
bool bIsCustomShape = ( aServiceName == "com.sun.star.drawing.CustomShape" ||
- aServiceName == "com.sun.star.drawing.ConnectorShape" );
+ aServiceName == "com.sun.star.drawing.ConnectorShape" ||
+ bIsCroppedGraphic);
+ if(bIsCroppedGraphic)
+ {
+ aServiceName = "com.sun.star.drawing.CustomShape";
+ mpGraphicPropertiesPtr->mbIsCustomShape = true;
+ }
bool bUseRotationTransform = ( !mbWps ||
aServiceName == "com.sun.star.drawing.LineShape" ||
aServiceName == "com.sun.star.drawing.GroupShape" ||
@@ -949,13 +959,14 @@ Reference< XShape > const & Shape::createAndInsert(
// applying properties
aShapeProps.assignUsed( getShapeProperties() );
aShapeProps.assignUsed( maDefaultShapeProperties );
- if ( bIsEmbMedia || aServiceName == "com.sun.star.drawing.GraphicObjectShape" || aServiceName == "com.sun.star.drawing.OLE2Shape" )
+ if ( bIsEmbMedia || aServiceName == "com.sun.star.drawing.GraphicObjectShape" || aServiceName == "com.sun.star.drawing.OLE2Shape" || bIsCustomShape )
mpGraphicPropertiesPtr->pushToPropMap( aShapeProps, rGraphicHelper );
if ( mpTablePropertiesPtr.get() && aServiceName == "com.sun.star.drawing.TableShape" )
mpTablePropertiesPtr->pushToPropSet( rFilterBase, xSet, mpMasterTextListStyle );
FillProperties aFillProperties = getActualFillProperties(pTheme, &rShapeOrParentShapeFillProps);
- aFillProperties.pushToPropMap( aShapeProps, rGraphicHelper, mnRotation, nFillPhClr, mbFlipH, mbFlipV );
+ if(!bIsCroppedGraphic)
+ aFillProperties.pushToPropMap( aShapeProps, rGraphicHelper, mnRotation, nFillPhClr, mbFlipH, mbFlipV );
LineProperties aLineProperties = getActualLineProperties(pTheme);
aLineProperties.pushToPropMap( aShapeProps, rGraphicHelper, nLinePhClr );
EffectProperties aEffectProperties = getActualEffectProperties(pTheme);
--
cgit v1.1
++++++ bsc1124869.patch ++++++
>From dc75d3cc5f2797dd5a8675004302a52bda1210c6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tam=C3=A1s=20Zolnai?= <tamas.zolnai(a)collabora.com>
Date: Thu, 9 May 2019 13:03:13 +0200
Subject: PPTX: Fix import / export of image transparency
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Reviewed-on: https://gerrit.libreoffice.org/71916
Tested-by: Jenkins <ci(a)libreoffice.org>
Reviewed-by: Tamás Zolnai <tamas.zolnai(a)collabora.com>
(cherry picked from commit ae3aabdb951643af8d2f7aee9c9f900245e5b384)
Change-Id: Ib07c606083b833389fcb82aac57ca8535d6e861f
Reviewed-on: https://gerrit.libreoffice.org/72051
Tested-by: Jenkins
Reviewed-by: Andras Timar <andras.timar(a)collabora.com>
---
oox/source/drawingml/fillproperties.cxx | 5 +++++
oox/source/export/drawingml.cxx | 6 +++---
sd/qa/unit/data/odp/image_transparency.odp | Bin 0 -> 24448 bytes
sd/qa/unit/export-tests-ooxml1.cxx | 26 ++++++++++++++++++++++++++
4 files changed, 34 insertions(+), 3 deletions(-)
create mode 100644 sd/qa/unit/data/odp/image_transparency.odp
diff --git a/oox/source/drawingml/fillproperties.cxx b/oox/source/drawingml/fillproperties.cxx
index b255116..a2fb6ee 100644
--- a/oox/source/drawingml/fillproperties.cxx
+++ b/oox/source/drawingml/fillproperties.cxx
@@ -755,6 +755,11 @@ void GraphicProperties::pushToPropMap( PropertyMap& rPropMap, const GraphicHelpe
rPropMap.setProperty(PROP_GraphicCrop, aGraphCrop);
}
}
+
+ if ( maBlipProps.moAlphaModFix.has() )
+ {
+ rPropMap.setProperty(PROP_Transparency, static_cast<sal_Int16>(100 - (maBlipProps.moAlphaModFix.get() / PER_PERCENT)));
+ }
}
rPropMap.setProperty(PROP_GraphicColorMode, eColorMode);
diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx
index a797adb..23065ec 100644
--- a/oox/source/export/drawingml.cxx
+++ b/oox/source/export/drawingml.cxx
@@ -1154,14 +1154,14 @@ void DrawingML::WriteImageBrightnessContrastTransparence(uno::Reference<beans::X
{
sal_Int16 nBright = 0;
sal_Int32 nContrast = 0;
- sal_Int32 nTransparence = 0;
+ sal_Int16 nTransparence = 0;
if (GetProperty(rXPropSet, "AdjustLuminance"))
nBright = mAny.get<sal_Int16>();
if (GetProperty(rXPropSet, "AdjustContrast"))
nContrast = mAny.get<sal_Int32>();
- if (GetProperty(rXPropSet, "FillTransparence"))
- nTransparence = mAny.get<sal_Int32>();
+ if (GetProperty(rXPropSet, "Transparency"))
+ nTransparence = mAny.get<sal_Int16>();
if (nBright || nContrast)
++++++ bsc1127760.patch ++++++
>From 1bdbd26987c387dcee170775ecc1305be03669e1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tam=C3=A1s=20Zolnai?= <tamas.zolnai(a)collabora.com>
Date: Mon, 13 May 2019 15:56:52 +0200
Subject: Presentation minimizer: Handle also presentation.GraphicObjectShape
URL
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Change-Id: I326b2803bf2d98d440e14d7f3f75ca61c2c9e49a
Reviewed-on: https://gerrit.libreoffice.org/72303
Reviewed-by: Tamás Zolnai <tamas.zolnai(a)collabora.com>
Tested-by: Tamás Zolnai <tamas.zolnai(a)collabora.com>
(cherry picked from commit aa446591b7feb5bb667533ef7acdfc636105f9d9)
Reviewed-on: https://gerrit.libreoffice.org/72360
Reviewed-by: Michael Stahl <Michael.Stahl(a)cib.de>
Tested-by: Andras Timar <andras.timar(a)collabora.com>
---
sdext/source/minimizer/graphiccollector.cxx | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/sdext/source/minimizer/graphiccollector.cxx b/sdext/source/minimizer/graphiccollector.cxx
index 26ae7fc..4888260 100644
--- a/sdext/source/minimizer/graphiccollector.cxx
+++ b/sdext/source/minimizer/graphiccollector.cxx
@@ -222,7 +222,8 @@ static void ImpCollectGraphicObjects( const Reference< XComponentContext >& rxMS
continue;
}
- if ( sShapeType == "com.sun.star.drawing.GraphicObjectShape" )
+ if ( sShapeType == "com.sun.star.drawing.GraphicObjectShape" ||
+ sShapeType == "com.sun.star.presentation.GraphicObjectShape" )
ImpAddGraphicEntity( rxMSF, xShape, rGraphicSettings, rGraphicEntities );
// now check for a fillstyle
@@ -342,7 +343,8 @@ static void ImpCountGraphicObjects( const Reference< XComponentContext >& rxMSF,
continue;
}
- if ( sShapeType == "com.sun.star.drawing.GraphicObjectShape" )
+ if ( sShapeType == "com.sun.star.drawing.GraphicObjectShape" ||
+ sShapeType == "com.sun.star.presentation.GraphicObjectShape" )
{
rnGraphics++;
}
--
cgit v1.1
1
0
Hello community,
here is the log from the commit of package python-wheel for openSUSE:Factory checked in at 2019-05-17 23:41:36
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-wheel (Old)
and /work/SRC/openSUSE:Factory/.python-wheel.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-wheel"
Fri May 17 23:41:36 2019 rev:19 rq:703265 version:0.33.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-wheel/python-wheel.changes 2019-03-04 09:10:44.088704310 +0100
+++ /work/SRC/openSUSE:Factory/.python-wheel.new.5148/python-wheel.changes 2019-05-17 23:41:39.157962599 +0200
@@ -1,0 +2,6 @@
+Wed May 15 20:46:24 UTC 2019 - Jonathan Harker <jharker(a)suse.com>
+
+- Update to 0.33.4:
+ * Fixed wheel build failures on some systems due to all attributes being preserved
+
+-------------------------------------------------------------------
Old:
----
wheel-0.33.1.tar.gz
New:
----
wheel-0.33.4.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-wheel.spec ++++++
--- /var/tmp/diff_new_pack.s4lp7t/_old 2019-05-17 23:41:40.057962105 +0200
+++ /var/tmp/diff_new_pack.s4lp7t/_new 2019-05-17 23:41:40.061962103 +0200
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-wheel
-Version: 0.33.1
+Version: 0.33.4
Release: 0
Summary: A built-package format for Python
License: MIT
++++++ wheel-0.33.1.tar.gz -> wheel-0.33.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wheel-0.33.1/.travis.yml new/wheel-0.33.4/.travis.yml
--- old/wheel-0.33.1/.travis.yml 2019-02-19 15:03:57.000000000 +0100
+++ new/wheel-0.33.4/.travis.yml 2019-05-11 23:41:35.000000000 +0200
@@ -15,11 +15,11 @@
- stage: test
env: TOXENV=pypy
- python: pypy2.7-6.0
+ python: pypy
- stage: test
env: TOXENV=pypy3
- python: pypy3.5-6.0
+ python: pypy3
- stage: test
env: TOXENV=py27
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wheel-0.33.1/docs/news.rst new/wheel-0.33.4/docs/news.rst
--- old/wheel-0.33.1/docs/news.rst 2019-02-19 15:03:57.000000000 +0100
+++ new/wheel-0.33.4/docs/news.rst 2019-05-11 23:41:35.000000000 +0200
@@ -1,11 +1,25 @@
Release Notes
=============
-**0.33.1**
+**0.33.4 (2019-05-12)**
+
+- Reverted PR #289 (adding directory entries to the wheel file) due to
+ incompatibility with ``distlib.wheel``
+
+**0.33.3 (2019-05-10)** (redacted release)
+
+- Fixed wheel build failures on some systems due to all attributes being
+ preserved (PR by Matt Wozniski)
+
+**0.33.2 (2019-05-08)** (redacted release)
+
+- Fixed empty directories missing from the wheel (PR by Jason R. Coombs)
+
+**0.33.1 (2019-02-19)**
- Fixed the ``--build-number`` option for ``wheel pack`` not being applied
-**0.33.0**
+**0.33.0 (2019-02-11)**
- Added the ``--build-number`` option to the ``wheel pack`` command
- Fixed bad shebangs sneaking into wheels
@@ -15,20 +29,21 @@
``RECORD`` (PR by Paul Moore)
- Sort requirements extras to ensure deterministic builds
(PR by PoncinMatthieu)
+- Forced ``inplace = False`` when building a C extension for the wheel
-**0.32.3**
+**0.32.3 (2018-11-18)**
- Fixed compatibility with Python 2.7.0 – 2.7.3
- Fixed handling of direct URL requirements with markers (PR by Benoit Pierre)
-**0.32.2**
+**0.32.2 (2018-10-20)**
- Fixed build number appearing in the ``.dist-info`` directory name
- Made wheel file name parsing more permissive
- Fixed wrong Python tag in wheels converted from eggs
(PR by John T. Wodder II)
-**0.32.1**
+**0.32.1 (2018-10-03)**
- Fixed ``AttributeError: 'Requirement' object has no attribute 'url'`` on
setuptools/pkg_resources versions older than 18.8 (PR by Benoit Pierre)
@@ -36,7 +51,7 @@
'algorithms_available'`` on Python < 2.7.9 (PR by Benoit Pierre)
- Fixed permissions on the generated ``.dist-info/RECORD`` file
-**0.32.0**
+**0.32.0 (2018-09-29)**
- Removed wheel signing and verifying features
- Removed the "wheel install" and "wheel installscripts" commands
@@ -52,11 +67,11 @@
- Warn when the deprecated ``[wheel]`` section is used in ``setup.cfg``
(PR by Jon Dufresne)
-**0.31.1**
+**0.31.1 (2018-05-13)**
- Fixed arch as ``None`` when converting eggs to wheels
-**0.31.0**
+**0.31.0 (2018-04-01)**
- Fixed displaying of errors on Python 3
- Fixed single digit versions in wheel files not being properly recognized
@@ -70,7 +85,7 @@
- Deprecated all wheel signing and signature verification commands
- Removed the (already defunct) ``tool`` extras from setup.py
-**0.30.0**
+**0.30.0 (2017-09-10)**
- Added py-limited-api {cp32|cp33|cp34|...} flag to produce cpNN.abi3.{arch}
tags on CPython 3.
@@ -87,16 +102,16 @@
- Improved the error message when trying to verify an unsigned wheel file
- Removed support for Python 2.6, 3.2 and 3.3.
-**0.29.0**
+**0.29.0 (2016-02-06)**
- Fix compression type of files in archive (Issue #155, Pull Request #62,
thanks Xavier Fernandez)
-**0.28.0**
+**0.28.0 (2016-02-05)**
- Fix file modes in archive (Issue #154)
-**0.27.0**
+**0.27.0 (2016-02-05)**
- Support forcing a platform tag using ``--plat-name`` on pure-Python wheels,
as well as nonstandard platform tags on non-pure wheels (Pull Request #60,
@@ -115,11 +130,11 @@
(invalid on all platforms, but code was only executed on Windows) (Issue #91)
- Added the PyPA Code of Conduct (Pull Request #56)
-**0.26.0**
+**0.26.0 (2015-09-18)**
- Fix multiple entrypoint comparison failure on Python 3 (Issue #148)
-**0.25.0**
+**0.25.0 (2015-09-16)**
- Add Python 3.5 to tox configuration
- Deterministic (sorted) metadata
@@ -128,7 +143,7 @@
- Treat data-only wheels as pure
- Write to temporary file and rename when using wheel install --force
-**0.24.0**
+**0.24.0 (2014-07-06)**
- The python tag used for pure-python packages is now .pyN (major version
only). This change actually occurred in 0.23.0 when the --python-tag
@@ -142,7 +157,7 @@
should work the same whether the package is installed by wheel or
by setup.py.
-**0.23.0**
+**0.23.0 (2014-03-31)**
- Compatibility tag flags added to the bdist_wheel command
- sdist should include files necessary for tests
@@ -156,14 +171,14 @@
command can be used to generate the scripts in such cases.
- Thank you contributors
-**0.22.0**
+**0.22.0 (2013-09-15)**
- Include entry_points.txt, scripts a.k.a. commands, in experimental
pydist.json
- Improved test_requires parsing
- Python 2.6 fixes, "wheel version" command courtesy pombredanne
-**0.21.0**
+**0.21.0 (2013-07-20)**
- Pregenerated scripts are the default again.
- "setup.py bdist_wheel --skip-scripts" turns them off.
@@ -180,19 +195,19 @@
[distribution ...]]" to install the console_scripts (setuptools-style
scripts using pkg_resources) for a distribution.
-**0.19.0**
+**0.19.0 (2013-07-19)**
- pymeta.json becomes pydist.json
-**0.18.0**
+**0.18.0 (2013-07-04)**
- Python 3 Unicode improvements
-**0.17.0**
+**0.17.0 (2013-06-23)**
- Support latest PEP-426 "pymeta.json" (json-format metadata)
-**0.16.0**
+**0.16.0 (2013-04-29)**
- Python 2.6 compatibility bugfix (thanks John McFarlane)
- Bugfix for C-extension tags for CPython 3.3 (using SOABI)
@@ -201,11 +216,11 @@
- Python 3 fix for moving Unicode Description to metadata body
- Include rudimentary API documentation in Sphinx (thanks Kevin Horn)
-**0.15.0**
+**0.15.0 (2013-01-14)**
- Various improvements
-**0.14.0**
+**0.14.0 (2012-10-27)**
- Changed the signature format to better comply with the current JWS spec.
Breaks all existing signatures.
@@ -213,34 +228,34 @@
- Put the description in the newly allowed payload section of PKG-INFO
(METADATA) files.
-**0.13.0**
+**0.13.0 (2012-10-17)**
- Use distutils instead of sysconfig to get installation paths; can install
headers.
- Improve WheelFile() sort.
- Allow bootstrap installs without any pkg_resources.
-**0.12.0**
+**0.12.0 (2012-10-06)**
- Unit test for wheel.tool.install
-**0.11.0**
+**0.11.0 (2012-10-17)**
- API cleanup
-**0.10.3**
+**0.10.3 (2012-10-03)**
- Scripts fixer fix
-**0.10.2**
+**0.10.2 (2012-10-02)**
- Fix keygen
-**0.10.1**
+**0.10.1 (2012-09-30)**
- Preserve attributes on install.
-**0.10.0**
+**0.10.0 (2012-09-30)**
- Include a copy of pkg_resources. Wheel can now install into a virtualenv
that does not have distribute (though most packages still require
@@ -248,12 +263,12 @@
- Define a new setup.cfg section [wheel]. universal=1 will
apply the py2.py3-none-any tag for pure python wheels.
-**0.9.7**
+**0.9.7 (2012-09-20)**
- Only import dirspec when needed. dirspec is only needed to find the
configuration for keygen/signing operations.
-**0.9.6**
+**0.9.6 (2012-09-19)**
- requires-dist from setup.cfg overwrites any requirements from setup.py
Care must be taken that the requirements are the same in both cases,
@@ -262,7 +277,7 @@
- improved command line utility, adds 'wheel convert [egg or wininst]' to
convert legacy binary formats to wheel
-**0.9.5**
+**0.9.5 (2012-09-15)**
- Wheel's own wheel file can be executed by Python, and can install itself:
``python wheel-0.9.5-py27-none-any/wheel install ...``
@@ -272,11 +287,11 @@
dependencies in setup.py, but will only be interpreted when installing
from wheel, not from sdist. Can be qualified with environment markers.
-**0.9.4**
+**0.9.4 (2012-09-11)**
- Fix wheel.signatures in sdist
-**0.9.3**
+**0.9.3 (2012-09-10)**
- Integrated digital signatures support without C extensions.
- Integrated "wheel install" command (single package, no dependency
@@ -284,66 +299,66 @@
- Support Python 3.3
- Use Metadata 1.3 (PEP 426)
-**0.9.2**
+**0.9.2 (2012-08-29)**
- Automatic signing if WHEEL_TOOL points to the wheel binary
- Even more Python 3 fixes
-**0.9.1**
+**0.9.1 (2012-08-28)**
- 'wheel sign' uses the keys generated by 'wheel keygen' (instead of generating
a new key at random each time)
- Python 2/3 encoding/decoding fixes
- Run tests on Python 2.6 (without signature verification)
-**0.9**
+**0.9 (2012-08-22)**
- Updated digital signatures scheme
- Python 3 support for digital signatures
- Always verify RECORD hashes on extract
- "wheel" command line tool to sign, verify, unpack wheel files
-**0.8**
+**0.8 (2012-08-17)**
- none/any draft pep tags update
- improved wininst2wheel script
- doc changes and other improvements
-**0.7**
+**0.7 (2012-07-28)**
- sort .dist-info at end of wheel archive
- Windows & Python 3 fixes from Paul Moore
- pep8
- scripts to convert wininst & egg to wheel
-**0.6**
+**0.6 (2012-07-23)**
- require distribute >= 0.6.28
- stop using verlib
-**0.5**
+**0.5 (2012-07-17)**
- working pretty well
-**0.4.2**
+**0.4.2 (2012-07-12)**
- hyphenated name fix
-**0.4**
+**0.4 (2012-07-11)**
- improve test coverage
- improve Windows compatibility
- include tox.ini courtesy of Marc Abramowitz
- draft hmac sha-256 signing function
-**0.3**
+**0.3 (2012-07-04)**
- prototype egg2wheel conversion script
-**0.2**
+**0.2 (2012-07-03)**
- Python 3 compatibility
-**0.1**
+**0.1 (2012-06-30)**
- Initial version
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wheel-0.33.1/wheel/__init__.py new/wheel-0.33.4/wheel/__init__.py
--- old/wheel-0.33.1/wheel/__init__.py 2019-02-19 15:03:57.000000000 +0100
+++ new/wheel-0.33.4/wheel/__init__.py 2019-05-11 23:41:35.000000000 +0200
@@ -1,2 +1,2 @@
# __variables__ with double-quoted values will be available in setup.py:
-__version__ = "0.33.1"
+__version__ = "0.33.4"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wheel-0.33.1/wheel/bdist_wheel.py new/wheel-0.33.4/wheel/bdist_wheel.py
--- old/wheel-0.33.1/wheel/bdist_wheel.py 2019-02-19 15:03:57.000000000 +0100
+++ new/wheel-0.33.4/wheel/bdist_wheel.py 2019-05-11 23:41:35.000000000 +0200
@@ -57,7 +57,7 @@
('skip-build', None,
"skip rebuilding everything (for testing/debugging)"),
('relative', None,
- "build the archive using relative paths"
+ "build the archive using relative paths "
"(default: false)"),
('owner=', 'u',
"Owner name used when creating a tar file"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wheel-0.33.1/wheel/wheelfile.py new/wheel-0.33.4/wheel/wheelfile.py
--- old/wheel-0.33.1/wheel/wheelfile.py 2019-02-19 15:03:57.000000000 +0100
+++ new/wheel-0.33.4/wheel/wheelfile.py 2019-05-11 23:41:35.000000000 +0200
@@ -4,6 +4,7 @@
import hashlib
import os.path
import re
+import stat
import time
from collections import OrderedDict
from distutils import log as logger
@@ -132,7 +133,7 @@
data = f.read()
zinfo = ZipInfo(arcname or filename, date_time=get_zipinfo_datetime(st.st_mtime))
- zinfo.external_attr = st.st_mode << 16
+ zinfo.external_attr = (stat.S_IMODE(st.st_mode) | stat.S_IFMT(st.st_mode)) << 16
zinfo.compress_type = ZIP_DEFLATED
self.writestr(zinfo, data, compress_type)
1
0
Hello community,
here is the log from the commit of package qemu for openSUSE:Factory checked in at 2019-05-17 23:41:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/qemu (Old)
and /work/SRC/openSUSE:Factory/.qemu.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "qemu"
Fri May 17 23:41:17 2019 rev:155 rq:703262 version:4.0.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/qemu/qemu-linux-user.changes 2019-05-10 09:11:42.591362461 +0200
+++ /work/SRC/openSUSE:Factory/.qemu.new.5148/qemu-linux-user.changes 2019-05-17 23:41:32.421966299 +0200
@@ -1,0 +2,28 @@
+Wed May 15 19:36:50 UTC 2019 - Bruce Rogers <brogers(a)suse.com>
+
+- Patch queue updated from git://github.com/openSUSE/qemu.git opensuse-4.0
+* Patches added:
+ 0044-hw-intc-exynos4210_gic-provide-more.patch
+
+-------------------------------------------------------------------
+Tue May 14 21:01:06 UTC 2019 - Bruce Rogers <brogers(a)suse.com>
+
+- Patch queue updated from git://github.com/openSUSE/qemu.git opensuse-4.0
+* Patches dropped:
+ 0041-qxl-fix-Waddress-of-packed-member.patch
+* Patches added:
+ 0041-qxl-avoid-unaligned-pointer-reads-w.patch
+ 0042-libvhost-user-fix-Waddress-of-packe.patch
+ 0043-target-i386-define-md-clear-bit.patch
+
+-------------------------------------------------------------------
+Fri May 10 19:14:02 UTC 2019 - Bruce Rogers <brogers(a)suse.com>
+
+- Patch queue updated from git://github.com/openSUSE/qemu.git opensuse-4.0
+* Patches renamed:
+ 0036-util-qemu-sockets-Fix-GCC-9-build-w.patch
+ -> 0036-sockets-avoid-string-truncation-war.patch
+ 0039-linux-user-uname-Fix-GCC-9-build-wa.patch
+ -> 0039-linux-user-avoid-string-truncation-.patch
+
+-------------------------------------------------------------------
--- /work/SRC/openSUSE:Factory/qemu/qemu-testsuite.changes 2019-05-10 09:11:42.759362941 +0200
+++ /work/SRC/openSUSE:Factory/.qemu.new.5148/qemu-testsuite.changes 2019-05-17 23:41:32.469966272 +0200
@@ -1,0 +2,46 @@
+Wed May 15 19:36:49 UTC 2019 - Bruce Rogers <brogers(a)suse.com>
+
+- Yet another gcc9 related code fix (bsc#1121464)
+ 0044-hw-intc-exynos4210_gic-provide-more.patch
+- Patch queue updated from git://github.com/openSUSE/qemu.git opensuse-4.0
+
+-------------------------------------------------------------------
+Tue May 14 21:01:05 UTC 2019 - Bruce Rogers <brogers(a)suse.com>
+
+- Switch to now upstreamed version of patch and add one more
+ gcc9 related patch
+* Patches renamed:
+ 0041-qxl-fix-Waddress-of-packed-member.patch
+ -> 0041-qxl-avoid-unaligned-pointer-reads-w.patch
+ 0042-libvhost-user-fix-Waddress-of-packe.patch
+- Add x86 cpu feature "md-clear" (CVE-2018-12126 CVE-2018-12127
+ CVE-2018-12130 CVE-2019-11091 bsc#1111331)
+ 0043-target-i386-define-md-clear-bit.patch
+- Patch queue updated from git://github.com/openSUSE/qemu.git opensuse-4.0
+
+-------------------------------------------------------------------
+Sat May 11 14:58:50 UTC 2019 - Bruce Rogers <brogers(a)suse.com>
+
+- Correct logic of which ipxe patches get included based on
+ suse_version. We were wrongly excluding a gcc9 related patch for
+ example
+
+-------------------------------------------------------------------
+Fri May 10 19:14:01 UTC 2019 - Bruce Rogers <brogers(a)suse.com>
+
+- Switch to now upstreamed version of some patches
+* Patches renamed:
+ 0036-util-qemu-sockets-Fix-GCC-9-build-w.patch
+ -> 0036-sockets-avoid-string-truncation-war.patch
+ 0039-linux-user-uname-Fix-GCC-9-build-wa.patch
+ -> 0039-linux-user-avoid-string-truncation-.patch
+- Patch queue updated from git://github.com/openSUSE/qemu.git opensuse-4.0
+
+-------------------------------------------------------------------
+Thu May 9 14:51:24 UTC 2019 - Bruce Rogers <brogers(a)suse.com>
+
+- Create /usr/share/qemu/firmware and /etc/qemu/firmware directories
+ in support of the firmware descriptor feature now in use as of
+ libvirt v5.2
+
+-------------------------------------------------------------------
qemu.changes: same change
Old:
----
0036-util-qemu-sockets-Fix-GCC-9-build-w.patch
0039-linux-user-uname-Fix-GCC-9-build-wa.patch
0041-qxl-fix-Waddress-of-packed-member.patch
New:
----
0036-sockets-avoid-string-truncation-war.patch
0039-linux-user-avoid-string-truncation-.patch
0041-qxl-avoid-unaligned-pointer-reads-w.patch
0042-libvhost-user-fix-Waddress-of-packe.patch
0043-target-i386-define-md-clear-bit.patch
0044-hw-intc-exynos4210_gic-provide-more.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ qemu-linux-user.spec ++++++
--- /var/tmp/diff_new_pack.Yrb9wo/_old 2019-05-17 23:41:34.077965389 +0200
+++ /var/tmp/diff_new_pack.Yrb9wo/_new 2019-05-17 23:41:34.081965387 +0200
@@ -69,12 +69,15 @@
Patch0033: 0033-Conditionalize-ui-bitmap-installati.patch
Patch0034: 0034-Revert-target-i386-kvm-add-VMX-migr.patch
Patch0035: 0035-tests-change-error-message-in-test-.patch
-Patch0036: 0036-util-qemu-sockets-Fix-GCC-9-build-w.patch
+Patch0036: 0036-sockets-avoid-string-truncation-war.patch
Patch0037: 0037-hw-usb-hcd-xhci-Fix-GCC-9-build-war.patch
Patch0038: 0038-hw-usb-dev-mtp-Fix-GCC-9-build-warn.patch
-Patch0039: 0039-linux-user-uname-Fix-GCC-9-build-wa.patch
+Patch0039: 0039-linux-user-avoid-string-truncation-.patch
Patch0040: 0040-linux-user-elfload-Fix-GCC-9-build-.patch
-Patch0041: 0041-qxl-fix-Waddress-of-packed-member.patch
+Patch0041: 0041-qxl-avoid-unaligned-pointer-reads-w.patch
+Patch0042: 0042-libvhost-user-fix-Waddress-of-packe.patch
+Patch0043: 0043-target-i386-define-md-clear-bit.patch
+Patch0044: 0044-hw-intc-exynos4210_gic-provide-more.patch
# Please do not add QEMU patches manually here.
# Run update_git.sh to regenerate this queue.
ExcludeArch: s390
@@ -146,6 +149,9 @@
%patch0039 -p1
%patch0040 -p1
%patch0041 -p1
+%patch0042 -p1
+%patch0043 -p1
+%patch0044 -p1
%build
%define _lto_cflags %{nil}
++++++ qemu-testsuite.spec ++++++
--- /var/tmp/diff_new_pack.Yrb9wo/_old 2019-05-17 23:41:34.105965374 +0200
+++ /var/tmp/diff_new_pack.Yrb9wo/_new 2019-05-17 23:41:34.109965371 +0200
@@ -179,12 +179,15 @@
Patch0033: 0033-Conditionalize-ui-bitmap-installati.patch
Patch0034: 0034-Revert-target-i386-kvm-add-VMX-migr.patch
Patch0035: 0035-tests-change-error-message-in-test-.patch
-Patch0036: 0036-util-qemu-sockets-Fix-GCC-9-build-w.patch
+Patch0036: 0036-sockets-avoid-string-truncation-war.patch
Patch0037: 0037-hw-usb-hcd-xhci-Fix-GCC-9-build-war.patch
Patch0038: 0038-hw-usb-dev-mtp-Fix-GCC-9-build-warn.patch
-Patch0039: 0039-linux-user-uname-Fix-GCC-9-build-wa.patch
+Patch0039: 0039-linux-user-avoid-string-truncation-.patch
Patch0040: 0040-linux-user-elfload-Fix-GCC-9-build-.patch
-Patch0041: 0041-qxl-fix-Waddress-of-packed-member.patch
+Patch0041: 0041-qxl-avoid-unaligned-pointer-reads-w.patch
+Patch0042: 0042-libvhost-user-fix-Waddress-of-packe.patch
+Patch0043: 0043-target-i386-define-md-clear-bit.patch
+Patch0044: 0044-hw-intc-exynos4210_gic-provide-more.patch
# Please do not add QEMU patches manually here.
# Run update_git.sh to regenerate this queue.
@@ -993,6 +996,9 @@
%patch0039 -p1
%patch0040 -p1
%patch0041 -p1
+%patch0042 -p1
+%patch0043 -p1
+%patch0044 -p1
pushd roms/seabios
%patch1100 -p1
@@ -1006,9 +1012,9 @@
%patch1200 -p1
%if 0%{?suse_version} <= 1320
%patch1201 -p1
+%endif
%patch1202 -p1
%patch1203 -p1
-%endif
%ifarch aarch64
%patch1204 -p1
%endif
@@ -1401,12 +1407,14 @@
done
%endif
%find_lang %name
+install -d -m 0755 %{buildroot}%_datadir/%name/firmware
+install -d -m 0755 %{buildroot}%_libexecdir/supportconfig/plugins
+install -d -m 0755 %{buildroot}%_sysconfdir/%name/firmware
install -D -m 0644 %{SOURCE4} %{buildroot}%_sysconfdir/%name/bridge.conf
install -D -m 0755 %{SOURCE3} %{buildroot}%_datadir/%name/qemu-ifup
install -D -p -m 0644 %{SOURCE8} %{buildroot}%{_udevrulesdir}/80-qemu-ga.rules
install -D -m 0755 scripts/analyze-migration.py %{buildroot}%_bindir/analyze-migration.py
install -D -m 0755 scripts/vmstate-static-checker.py %{buildroot}%_bindir/vmstate-static-checker.py
-mkdir -p %{buildroot}%_libexecdir/supportconfig/plugins
install -D -m 0755 %{SOURCE9} %{buildroot}%_libexecdir/supportconfig/plugins/%name
%if 0%{?is_opensuse} == 0
install -D -m 0644 %{SOURCE10} %{buildroot}%_docdir/qemu-arm/supported.txt
@@ -1583,9 +1591,11 @@
%_mandir/man7/qemu-qmp-ref.7.gz
%_mandir/man7/qemu-ga-ref.7.gz
%dir %_datadir/%name
+%dir %_datadir/%name/firmware
%_datadir/%name/keymaps
%_datadir/%name/trace-events-all
%dir %_sysconfdir/%name
+%dir %_sysconfdir/%name/firmware
%_datadir/%name/qemu-ifup
%dir %_libexecdir/supportconfig
%dir %_libexecdir/supportconfig/plugins
++++++ qemu.spec ++++++
--- /var/tmp/diff_new_pack.Yrb9wo/_old 2019-05-17 23:41:34.137965356 +0200
+++ /var/tmp/diff_new_pack.Yrb9wo/_new 2019-05-17 23:41:34.141965354 +0200
@@ -179,12 +179,15 @@
Patch0033: 0033-Conditionalize-ui-bitmap-installati.patch
Patch0034: 0034-Revert-target-i386-kvm-add-VMX-migr.patch
Patch0035: 0035-tests-change-error-message-in-test-.patch
-Patch0036: 0036-util-qemu-sockets-Fix-GCC-9-build-w.patch
+Patch0036: 0036-sockets-avoid-string-truncation-war.patch
Patch0037: 0037-hw-usb-hcd-xhci-Fix-GCC-9-build-war.patch
Patch0038: 0038-hw-usb-dev-mtp-Fix-GCC-9-build-warn.patch
-Patch0039: 0039-linux-user-uname-Fix-GCC-9-build-wa.patch
+Patch0039: 0039-linux-user-avoid-string-truncation-.patch
Patch0040: 0040-linux-user-elfload-Fix-GCC-9-build-.patch
-Patch0041: 0041-qxl-fix-Waddress-of-packed-member.patch
+Patch0041: 0041-qxl-avoid-unaligned-pointer-reads-w.patch
+Patch0042: 0042-libvhost-user-fix-Waddress-of-packe.patch
+Patch0043: 0043-target-i386-define-md-clear-bit.patch
+Patch0044: 0044-hw-intc-exynos4210_gic-provide-more.patch
# Please do not add QEMU patches manually here.
# Run update_git.sh to regenerate this queue.
@@ -993,6 +996,9 @@
%patch0039 -p1
%patch0040 -p1
%patch0041 -p1
+%patch0042 -p1
+%patch0043 -p1
+%patch0044 -p1
pushd roms/seabios
%patch1100 -p1
@@ -1006,9 +1012,9 @@
%patch1200 -p1
%if 0%{?suse_version} <= 1320
%patch1201 -p1
+%endif
%patch1202 -p1
%patch1203 -p1
-%endif
%ifarch aarch64
%patch1204 -p1
%endif
@@ -1401,12 +1407,14 @@
done
%endif
%find_lang %name
+install -d -m 0755 %{buildroot}%_datadir/%name/firmware
+install -d -m 0755 %{buildroot}%_libexecdir/supportconfig/plugins
+install -d -m 0755 %{buildroot}%_sysconfdir/%name/firmware
install -D -m 0644 %{SOURCE4} %{buildroot}%_sysconfdir/%name/bridge.conf
install -D -m 0755 %{SOURCE3} %{buildroot}%_datadir/%name/qemu-ifup
install -D -p -m 0644 %{SOURCE8} %{buildroot}%{_udevrulesdir}/80-qemu-ga.rules
install -D -m 0755 scripts/analyze-migration.py %{buildroot}%_bindir/analyze-migration.py
install -D -m 0755 scripts/vmstate-static-checker.py %{buildroot}%_bindir/vmstate-static-checker.py
-mkdir -p %{buildroot}%_libexecdir/supportconfig/plugins
install -D -m 0755 %{SOURCE9} %{buildroot}%_libexecdir/supportconfig/plugins/%name
%if 0%{?is_opensuse} == 0
install -D -m 0644 %{SOURCE10} %{buildroot}%_docdir/qemu-arm/supported.txt
@@ -1583,9 +1591,11 @@
%_mandir/man7/qemu-qmp-ref.7.gz
%_mandir/man7/qemu-ga-ref.7.gz
%dir %_datadir/%name
+%dir %_datadir/%name/firmware
%_datadir/%name/keymaps
%_datadir/%name/trace-events-all
%dir %_sysconfdir/%name
+%dir %_sysconfdir/%name/firmware
%_datadir/%name/qemu-ifup
%dir %_libexecdir/supportconfig
%dir %_libexecdir/supportconfig/plugins
++++++ 0036-sockets-avoid-string-truncation-war.patch ++++++
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange(a)redhat.com>
Date: Wed, 1 May 2019 15:50:52 +0100
Subject: sockets: avoid string truncation warnings when copying UNIX path
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
In file included from /usr/include/string.h:494,
from include/qemu/osdep.h:101,
from util/qemu-sockets.c:18:
In function ‘strncpy’,
inlined from ‘unix_connect_saddr.isra.0’ at util/qemu-sockets.c:925:5:
/usr/include/bits/string_fortified.h:106:10: warning: ‘__builtin_strncpy’ specified bound 108 equals destination size [-Wstringop-truncation]
106 | return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In function ‘strncpy’,
inlined from ‘unix_listen_saddr.isra.0’ at util/qemu-sockets.c:880:5:
/usr/include/bits/string_fortified.h:106:10: warning: ‘__builtin_strncpy’ specified bound 108 equals destination size [-Wstringop-truncation]
106 | return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
We are already validating the UNIX socket path length earlier in
the functions. If we save this string length when we first check
it, then we can simply use memcpy instead of strcpy later, avoiding
the gcc truncation warnings.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
Reviewed-by: Eric Blake <eblake(a)redhat.com>
Reviewed-by: Stefano Garzarella <sgarzare(a)redhat.com>
Message-Id: <20190501145052.12579-1-berrange(a)redhat.com>
Signed-off-by: Laurent Vivier <laurent(a)vivier.eu>
(cherry picked from commit 2d2023c3b99edb33ad4bb9791f70456ea1a1c049)
Signed-off-by: Bruce Rogers <brogers(a)suse.com>
---
util/qemu-sockets.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c
index 9705051690..ba6335e71a 100644
--- a/util/qemu-sockets.c
+++ b/util/qemu-sockets.c
@@ -830,6 +830,7 @@ static int unix_listen_saddr(UnixSocketAddress *saddr,
int sock, fd;
char *pathbuf = NULL;
const char *path;
+ size_t pathlen;
sock = qemu_socket(PF_UNIX, SOCK_STREAM, 0);
if (sock < 0) {
@@ -845,7 +846,8 @@ static int unix_listen_saddr(UnixSocketAddress *saddr,
path = pathbuf = g_strdup_printf("%s/qemu-socket-XXXXXX", tmpdir);
}
- if (strlen(path) > sizeof(un.sun_path)) {
+ pathlen = strlen(path);
+ if (pathlen > sizeof(un.sun_path)) {
error_setg(errp, "UNIX socket path '%s' is too long", path);
error_append_hint(errp, "Path must be less than %zu bytes\n",
sizeof(un.sun_path));
@@ -877,7 +879,7 @@ static int unix_listen_saddr(UnixSocketAddress *saddr,
memset(&un, 0, sizeof(un));
un.sun_family = AF_UNIX;
- strncpy(un.sun_path, path, sizeof(un.sun_path));
+ memcpy(un.sun_path, path, pathlen);
if (bind(sock, (struct sockaddr*) &un, sizeof(un)) < 0) {
error_setg_errno(errp, errno, "Failed to bind socket to %s", path);
@@ -901,6 +903,7 @@ static int unix_connect_saddr(UnixSocketAddress *saddr, Error **errp)
{
struct sockaddr_un un;
int sock, rc;
+ size_t pathlen;
if (saddr->path == NULL) {
error_setg(errp, "unix connect: no path specified");
@@ -913,7 +916,8 @@ static int unix_connect_saddr(UnixSocketAddress *saddr, Error **errp)
return -1;
}
- if (strlen(saddr->path) > sizeof(un.sun_path)) {
+ pathlen = strlen(saddr->path);
+ if (pathlen > sizeof(un.sun_path)) {
error_setg(errp, "UNIX socket path '%s' is too long", saddr->path);
error_append_hint(errp, "Path must be less than %zu bytes\n",
sizeof(un.sun_path));
@@ -922,7 +926,7 @@ static int unix_connect_saddr(UnixSocketAddress *saddr, Error **errp)
memset(&un, 0, sizeof(un));
un.sun_family = AF_UNIX;
- strncpy(un.sun_path, saddr->path, sizeof(un.sun_path));
+ memcpy(un.sun_path, saddr->path, pathlen);
/* connect to peer */
do {
++++++ 0037-hw-usb-hcd-xhci-Fix-GCC-9-build-war.patch ++++++
--- /var/tmp/diff_new_pack.Yrb9wo/_old 2019-05-17 23:41:34.285965275 +0200
+++ /var/tmp/diff_new_pack.Yrb9wo/_new 2019-05-17 23:41:34.293965270 +0200
@@ -1,12 +1,9 @@
From: Alistair Francis <Alistair.Francis(a)wdc.com>
Date: Sat, 4 May 2019 07:58:35 -0600
Subject: hw/usb/hcd-xhci: Fix GCC 9 build warning
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
Fix this build warning with GCC 9 on Fedora 30:
-hw/usb/hcd-xhci.c:3339:66: error: %d directive output may be truncated writing between 1 and 10 bytes into a region of size 5 [-Werror=format-truncation=]
+hw/usb/hcd-xhci.c:3339:66: error: '%d' directive output may be truncated writing between 1 and 10 bytes into a region of size 5 [-Werror=format-truncation=]
3339 | snprintf(port->name, sizeof(port->name), "usb2 port #%d", i+1);
| ^~
hw/usb/hcd-xhci.c:3339:54: note: directive argument in the range [1, 2147483647]
@@ -15,7 +12,7 @@
In file included from /usr/include/stdio.h:867,
from /home/alistair/qemu/include/qemu/osdep.h:99,
from hw/usb/hcd-xhci.c:21:
-/usr/include/bits/stdio2.h:67:10: note: __builtin___snprintf_chk output between 13 and 22 bytes into a destination of size 16
+/usr/include/bits/stdio2.h:67:10: note: '__builtin___snprintf_chk' output between 13 and 22 bytes into a destination of size 16
67 | return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
68 | __bos (__s), __fmt, __va_arg_pack ());
++++++ 0038-hw-usb-dev-mtp-Fix-GCC-9-build-warn.patch ++++++
--- /var/tmp/diff_new_pack.Yrb9wo/_old 2019-05-17 23:41:34.301965266 +0200
+++ /var/tmp/diff_new_pack.Yrb9wo/_new 2019-05-17 23:41:34.301965266 +0200
@@ -1,12 +1,9 @@
From: Alistair Francis <Alistair.Francis(a)wdc.com>
Date: Sat, 4 May 2019 07:58:55 -0600
Subject: hw/usb/dev-mtp: Fix GCC 9 build warning
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
Fix this warning with GCC 9 on Fedora 30:
-hw/usb/dev-mtp.c:1715:36: error: taking address of packed member of struct <anonymous> may result in an unaligned pointer value [-Werror=address-of-packed-member]
+hw/usb/dev-mtp.c:1715:36: error: taking address of packed member of 'struct <anonymous>' may result in an unaligned pointer value [-Werror=address-of-packed-member]
1715 | dataset->filename);
| ~~~~~~~^~~~~~~~~~
++++++ 0039-linux-user-avoid-string-truncation-.patch ++++++
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange(a)redhat.com>
Date: Wed, 1 May 2019 15:46:46 +0100
Subject: linux-user: avoid string truncation warnings in uname field copying
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
In file included from /usr/include/string.h:494,
from include/qemu/osdep.h:101,
from linux-user/uname.c:20:
In function ‘strncpy’,
inlined from ‘sys_uname’ at linux-user/uname.c:94:3:
/usr/include/bits/string_fortified.h:106:10: warning: ‘__builtin_strncpy’ output may be truncated copying 64 bytes from a string of length 64 [-Wstringop-truncation]
106 | return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
We don't care where the NUL terminator in the original uname
field was. It suffices to copy the entire original field and
simply force a NUL terminator at the end of the new field.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd(a)redhat.com>
Message-Id: <20190501144646.4851-1-berrange(a)redhat.com>
Signed-off-by: Laurent Vivier <laurent(a)vivier.eu>
[BR: Played with indent to avoid error from checkpatch.pl]
(cherry picked from commit b2acfb55962bc8caeaa50a5158da2f701f2c1f7c)
Signed-off-by: Bruce Rogers <brogers(a)suse.com>
---
linux-user/uname.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/linux-user/uname.c b/linux-user/uname.c
index 313b79dbad..0c6ddf2ad9 100644
--- a/linux-user/uname.c
+++ b/linux-user/uname.c
@@ -72,9 +72,8 @@ const char *cpu_to_uname_machine(void *cpu_env)
#define COPY_UTSNAME_FIELD(dest, src) \
do { \
- /* __NEW_UTS_LEN doesn't include terminating null */ \
- (void) strncpy((dest), (src), __NEW_UTS_LEN); \
- (dest)[__NEW_UTS_LEN] = '\0'; \
+ memcpy((dest), (src), MIN(sizeof(src), sizeof(dest))); \
+ (dest)[sizeof(dest) - 1] = '\0'; \
} while (0)
int sys_uname(struct new_utsname *buf)
++++++ 0040-linux-user-elfload-Fix-GCC-9-build-.patch ++++++
--- /var/tmp/diff_new_pack.Yrb9wo/_old 2019-05-17 23:41:34.329965251 +0200
+++ /var/tmp/diff_new_pack.Yrb9wo/_new 2019-05-17 23:41:34.329965251 +0200
@@ -1,20 +1,25 @@
From: Alistair Francis <Alistair.Francis(a)wdc.com>
-Date: Sat, 4 May 2019 07:59:23 -0600
+Date: Tue, 30 Apr 2019 23:29:01 +0000
Subject: linux-user/elfload: Fix GCC 9 build warnings
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Fix this warning when building with GCC9 on Fedora 30:
-In function strncpy,
- inlined from fill_psinfo at /home/alistair/qemu/linux-user/elfload.c:3208:12,
- inlined from fill_note_info at /home/alistair/qemu/linux-user/elfload.c:3390:5,
- inlined from elf_core_dump at /home/alistair/qemu/linux-user/elfload.c:3539:9:
-/usr/include/bits/string_fortified.h:106:10: error: __builtin_strncpy specified bound 16 equals destination size [-Werror=stringop-truncation]
+In function ‘strncpy’,
+ inlined from ‘fill_psinfo’ at /home/alistair/qemu/linux-user/elfload.c:3208:12,
+ inlined from ‘fill_note_info’ at /home/alistair/qemu/linux-user/elfload.c:3390:5,
+ inlined from ‘elf_core_dump’ at /home/alistair/qemu/linux-user/elfload.c:3539:9:
+/usr/include/bits/string_fortified.h:106:10: error: ‘__builtin_strncpy’ specified bound 16 equals destination size [-Werror=stringop-truncation]
106 | return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Signed-off-by: Alistair Francis <alistair.francis(a)wdc.com>
+Reviewed-by: Laurent Vivier <laurent(a)vivier.eu>
+Reviewed-by: Richard Henderson <richard.henderson(a)linaro.org>
+Message-Id: <c4d2b1de9efadcf1c900b91361af9302823a72a9.1556666645.git.alistair.francis(a)wdc.com>
+Signed-off-by: Laurent Vivier <laurent(a)vivier.eu>
+(cherry picked from commit d7eb2b928a855a2e8038e8e75f7edf1a12226bd3)
Signed-off-by: Bruce Rogers <brogers(a)suse.com>
---
linux-user/elfload.c | 2 +-
++++++ 0041-qxl-avoid-unaligned-pointer-reads-w.patch ++++++
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange(a)redhat.com>
Date: Fri, 12 Apr 2019 13:16:26 +0100
Subject: qxl: avoid unaligned pointer reads/writes
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The SPICE_RING_PROD_ITEM() macro is initializing a local
'uint64_t *' variable to point to the 'el' field inside
the QXLReleaseRing struct. This uint64_t field is not
guaranteed aligned as the struct is packed.
Code should not take the address of fields within a
packed struct. Changing the SPICE_RING_PROD_ITEM()
macro to avoid taking the address of the field is
impractical. It is clearer to just remove the macro
and inline its functionality in the three call sites
that need it.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
Message-Id: <20190412121626.19829-6-berrange(a)redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel(a)redhat.com>
(cherry picked from commit 94932c95c10400acd286fd768a6b411e7ebbec8f)
Signed-off-by: Bruce Rogers <brogers(a)suse.com>
---
hw/display/qxl.c | 55 +++++++++++++++++++++---------------------------
1 file changed, 24 insertions(+), 31 deletions(-)
diff --git a/hw/display/qxl.c b/hw/display/qxl.c
index c8ce5781e0..5c38e6e906 100644
--- a/hw/display/qxl.c
+++ b/hw/display/qxl.c
@@ -33,24 +33,6 @@
#include "qxl.h"
-/*
- * NOTE: SPICE_RING_PROD_ITEM accesses memory on the pci bar and as
- * such can be changed by the guest, so to avoid a guest trigerrable
- * abort we just qxl_set_guest_bug and set the return to NULL. Still
- * it may happen as a result of emulator bug as well.
- */
-#undef SPICE_RING_PROD_ITEM
-#define SPICE_RING_PROD_ITEM(qxl, r, ret) { \
- uint32_t prod = (r)->prod & SPICE_RING_INDEX_MASK(r); \
- if (prod >= ARRAY_SIZE((r)->items)) { \
- qxl_set_guest_bug(qxl, "SPICE_RING_PROD_ITEM indices mismatch " \
- "%u >= %zu", prod, ARRAY_SIZE((r)->items)); \
- ret = NULL; \
- } else { \
- ret = &(r)->items[prod].el; \
- } \
- }
-
#undef SPICE_RING_CONS_ITEM
#define SPICE_RING_CONS_ITEM(qxl, r, ret) { \
uint32_t cons = (r)->cons & SPICE_RING_INDEX_MASK(r); \
@@ -414,7 +396,8 @@ static void init_qxl_rom(PCIQXLDevice *d)
static void init_qxl_ram(PCIQXLDevice *d)
{
uint8_t *buf;
- uint64_t *item;
+ uint32_t prod;
+ QXLReleaseRing *ring;
buf = d->vga.vram_ptr;
d->ram = (QXLRam *)(buf + le32_to_cpu(d->shadow_rom.ram_header_offset));
@@ -426,9 +409,12 @@ static void init_qxl_ram(PCIQXLDevice *d)
SPICE_RING_INIT(&d->ram->cmd_ring);
SPICE_RING_INIT(&d->ram->cursor_ring);
SPICE_RING_INIT(&d->ram->release_ring);
- SPICE_RING_PROD_ITEM(d, &d->ram->release_ring, item);
- assert(item);
- *item = 0;
+
+ ring = &d->ram->release_ring;
+ prod = ring->prod & SPICE_RING_INDEX_MASK(ring);
+ assert(prod < ARRAY_SIZE(ring->items));
+ ring->items[prod].el = 0;
+
qxl_ring_set_dirty(d);
}
@@ -732,7 +718,7 @@ static int interface_req_cmd_notification(QXLInstance *sin)
static inline void qxl_push_free_res(PCIQXLDevice *d, int flush)
{
QXLReleaseRing *ring = &d->ram->release_ring;
- uint64_t *item;
+ uint32_t prod;
int notify;
#define QXL_FREE_BUNCH_SIZE 32
@@ -759,11 +745,15 @@ static inline void qxl_push_free_res(PCIQXLDevice *d, int flush)
if (notify) {
qxl_send_events(d, QXL_INTERRUPT_DISPLAY);
}
- SPICE_RING_PROD_ITEM(d, ring, item);
- if (!item) {
+
+ ring = &d->ram->release_ring;
+ prod = ring->prod & SPICE_RING_INDEX_MASK(ring);
+ if (prod >= ARRAY_SIZE(ring->items)) {
+ qxl_set_guest_bug(d, "SPICE_RING_PROD_ITEM indices mismatch "
+ "%u >= %zu", prod, ARRAY_SIZE(ring->items));
return;
}
- *item = 0;
+ ring->items[prod].el = 0;
d->num_free_res = 0;
d->last_release = NULL;
qxl_ring_set_dirty(d);
@@ -775,7 +765,8 @@ static void interface_release_resource(QXLInstance *sin,
{
PCIQXLDevice *qxl = container_of(sin, PCIQXLDevice, ssd.qxl);
QXLReleaseRing *ring;
- uint64_t *item, id;
+ uint32_t prod;
+ uint64_t id;
if (ext.group_id == MEMSLOT_GROUP_HOST) {
/* host group -> vga mode update request */
@@ -792,16 +783,18 @@ static void interface_release_resource(QXLInstance *sin,
* pci bar 0, $command.release_info
*/
ring = &qxl->ram->release_ring;
- SPICE_RING_PROD_ITEM(qxl, ring, item);
- if (!item) {
+ prod = ring->prod & SPICE_RING_INDEX_MASK(ring);
+ if (prod >= ARRAY_SIZE(ring->items)) {
+ qxl_set_guest_bug(qxl, "SPICE_RING_PROD_ITEM indices mismatch "
+ "%u >= %zu", prod, ARRAY_SIZE(ring->items));
return;
}
- if (*item == 0) {
+ if (ring->items[prod].el == 0) {
/* stick head into the ring */
id = ext.info->id;
ext.info->next = 0;
qxl_ram_set_dirty(qxl, &ext.info->next);
- *item = id;
+ ring->items[prod].el = id;
qxl_ring_set_dirty(qxl);
} else {
/* append item to the list */
++++++ 0042-libvhost-user-fix-Waddress-of-packe.patch ++++++
From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau(a)redhat.com>
Date: Fri, 3 May 2019 15:00:29 +0200
Subject: libvhost-user: fix -Waddress-of-packed-member
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
/home/elmarco/src/qemu/contrib/libvhost-user/libvhost-user.c: In function ‘vu_set_mem_table_exec_postcopy’:
/home/elmarco/src/qemu/contrib/libvhost-user/libvhost-user.c:546:31: warning: taking address of packed member of ‘struct VhostUserMsg’ may result in an unaligned pointer value [-Waddress-of-packed-member]
546 | VhostUserMemory *memory = &vmsg->payload.memory;
| ^~~~~~~~~~~~~~~~~~~~~
/home/elmarco/src/qemu/contrib/libvhost-user/libvhost-user.c: In function ‘vu_set_mem_table_exec’:
/home/elmarco/src/qemu/contrib/libvhost-user/libvhost-user.c:688:31: warning: taking address of packed member of ‘struct VhostUserMsg’ may result in an unaligned pointer value [-Waddress-of-packed-member]
688 | VhostUserMemory *memory = &vmsg->payload.memory;
| ^~~~~~~~~~~~~~~~~~~~~
/home/elmarco/src/qemu/contrib/libvhost-user/libvhost-user.c: In function ‘vu_set_vring_addr_exec’:
/home/elmarco/src/qemu/contrib/libvhost-user/libvhost-user.c:817:36: warning: taking address of packed member of ‘struct VhostUserMsg’ may result in an unaligned pointer value [-Waddress-of-packed-member]
817 | struct vhost_vring_addr *vra = &vmsg->payload.addr;
| ^~~~~~~~~~~~~~~~~~~
Signed-off-by: Marc-André Lureau <marcandre.lureau(a)redhat.com>
Message-id: 20190503130034.24916-2-marcandre.lureau(a)redhat.com
Signed-off-by: Gerd Hoffmann <kraxel(a)redhat.com>
(cherry picked from commit d288eef3a0a8ac46cc45808b50d73606476148b0)
Signed-off-by: Bruce Rogers <brogers(a)suse.com>
---
contrib/libvhost-user/libvhost-user.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/contrib/libvhost-user/libvhost-user.c b/contrib/libvhost-user/libvhost-user.c
index e08d6c7b97..dcf4a969f2 100644
--- a/contrib/libvhost-user/libvhost-user.c
+++ b/contrib/libvhost-user/libvhost-user.c
@@ -542,7 +542,7 @@ static bool
vu_set_mem_table_exec_postcopy(VuDev *dev, VhostUserMsg *vmsg)
{
int i;
- VhostUserMemory *memory = &vmsg->payload.memory;
+ VhostUserMemory m = vmsg->payload.memory, *memory = &m;
dev->nregions = memory->nregions;
DPRINT("Nregions: %d\n", memory->nregions);
@@ -684,7 +684,7 @@ static bool
vu_set_mem_table_exec(VuDev *dev, VhostUserMsg *vmsg)
{
int i;
- VhostUserMemory *memory = &vmsg->payload.memory;
+ VhostUserMemory m = vmsg->payload.memory, *memory = &m;
for (i = 0; i < dev->nregions; i++) {
VuDevRegion *r = &dev->regions[i];
@@ -813,7 +813,7 @@ vu_set_vring_num_exec(VuDev *dev, VhostUserMsg *vmsg)
static bool
vu_set_vring_addr_exec(VuDev *dev, VhostUserMsg *vmsg)
{
- struct vhost_vring_addr *vra = &vmsg->payload.addr;
+ struct vhost_vring_addr addr = vmsg->payload.addr, *vra = &addr;
unsigned int index = vra->index;
VuVirtq *vq = &dev->vq[index];
++++++ 0043-target-i386-define-md-clear-bit.patch ++++++
From: Paolo Bonzini <pbonzini(a)redhat.com>
Date: Fri, 1 Mar 2019 21:40:52 +0100
Subject: target/i386: define md-clear bit
md-clear is a new CPUID bit which is set when microcode provides the
mechanism to invoke a flush of various exploitable CPU buffers by invoking
the VERW instruction. Add the new feature, and pass it down to
Hypervisor.framework guests.
Signed-off-by: Paolo Bonzini <pbonzini(a)redhat.com>
[BR: BSC#1111331 CVE-2018-12126 CVE-2018-12127 CVE-2018-12130
CVE-2019-11091]
Signed-off-by: Bruce Rogers <brogers(a)suse.com>
---
target/i386/cpu.c | 2 +-
target/i386/cpu.h | 1 +
target/i386/hvf/x86_cpuid.c | 3 ++-
3 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index d6bb57d210..4ea78a4939 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -1076,7 +1076,7 @@ static FeatureWordInfo feature_word_info[FEATURE_WORDS] = {
.feat_names = {
NULL, NULL, "avx512-4vnniw", "avx512-4fmaps",
NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
+ NULL, NULL, "md-clear", NULL,
NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL,
diff --git a/target/i386/cpu.h b/target/i386/cpu.h
index 572290c3d6..d3bd0943ec 100644
--- a/target/i386/cpu.h
+++ b/target/i386/cpu.h
@@ -694,6 +694,7 @@ typedef uint32_t FeatureWordArray[FEATURE_WORDS];
#define CPUID_7_0_EDX_AVX512_4VNNIW (1U << 2) /* AVX512 Neural Network Instructions */
#define CPUID_7_0_EDX_AVX512_4FMAPS (1U << 3) /* AVX512 Multiply Accumulation Single Precision */
+#define CPUID_7_0_EDX_MD_CLEAR (1U << 10) /* Microarchitectural Data Clear */
#define CPUID_7_0_EDX_SPEC_CTRL (1U << 26) /* Speculation Control */
#define CPUID_7_0_EDX_ARCH_CAPABILITIES (1U << 29) /*Arch Capabilities*/
#define CPUID_7_0_EDX_SPEC_CTRL_SSBD (1U << 31) /* Speculative Store Bypass Disable */
diff --git a/target/i386/hvf/x86_cpuid.c b/target/i386/hvf/x86_cpuid.c
index 4d957fe896..b453552fb4 100644
--- a/target/i386/hvf/x86_cpuid.c
+++ b/target/i386/hvf/x86_cpuid.c
@@ -90,7 +90,8 @@ uint32_t hvf_get_supported_cpuid(uint32_t func, uint32_t idx,
}
ecx &= CPUID_7_0_ECX_AVX512BMI | CPUID_7_0_ECX_AVX512_VPOPCNTDQ;
- edx &= CPUID_7_0_EDX_AVX512_4VNNIW | CPUID_7_0_EDX_AVX512_4FMAPS;
+ edx &= CPUID_7_0_EDX_AVX512_4VNNIW | CPUID_7_0_EDX_AVX512_4FMAPS | \
+ CPUID_7_0_EDX_MD_CLEAR;
} else {
ebx = 0;
ecx = 0;
++++++ 0044-hw-intc-exynos4210_gic-provide-more.patch ++++++
From: Bruce Rogers <brogers(a)suse.com>
Date: Wed, 15 May 2019 13:32:01 -0600
Subject: hw/intc/exynos4210_gic: provide more room when formatting alias names
sprintf related parameter validation complains about the size of the
buffer being written to in exynos4210_gic_realize(). Provide a bit more
space to avoid the following warning:
/home/abuild/rpmbuild/BUILD/qemu-4.0.0/hw/intc/exynos4210_gic.c: In function 'exynos4210_gic_realize':
/home/abuild/rpmbuild/BUILD/qemu-4.0.0/hw/intc/exynos4210_gic.c:316:36: error: '%x' directive writing between 1 and 7 bytes into a region of size between 4 and 28 [-Werror=format-overflow=]
316 | sprintf(cpu_alias_name, "%s%x", cpu_prefix, i);
| ^~
/home/abuild/rpmbuild/BUILD/qemu-4.0.0/hw/intc/exynos4210_gic.c:316:33: note: directive argument in the range [0, 29020050]
316 | sprintf(cpu_alias_name, "%s%x", cpu_prefix, i);
| ^~~~~~
In file included from /usr/include/stdio.h:867,
from /home/abuild/rpmbuild/BUILD/qemu-4.0.0/include/qemu/osdep.h:99,
from /home/abuild/rpmbuild/BUILD/qemu-4.0.0/hw/intc/exynos4210_gic.c:23:
/usr/include/bits/stdio2.h:36:10: note: '__builtin___sprintf_chk' output between 2 and 32 bytes into a destination of size 28
36 | return __builtin___sprintf_chk (__s, __USE_FORTIFY_LEVEL - 1,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
37 | __bos (__s), __fmt, __va_arg_pack ());
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/abuild/rpmbuild/BUILD/qemu-4.0.0/hw/intc/exynos4210_gic.c:326:37: error: '%x' directive writing between 1 and 7 bytes into a region of size between 3 and 28 [-Werror=format-overflow=]
326 | sprintf(dist_alias_name, "%s%x", dist_prefix, i);
| ^~
/home/abuild/rpmbuild/BUILD/qemu-4.0.0/hw/intc/exynos4210_gic.c:326:34: note: directive argument in the range [0, 29020050]
326 | sprintf(dist_alias_name, "%s%x", dist_prefix, i);
| ^~~~~~
In file included from /usr/include/stdio.h:867,
from /home/abuild/rpmbuild/BUILD/qemu-4.0.0/include/qemu/osdep.h:99,
from /home/abuild/rpmbuild/BUILD/qemu-4.0.0/hw/intc/exynos4210_gic.c:23:
/usr/include/bits/stdio2.h:36:10: note: '__builtin___sprintf_chk' output between 2 and 33 bytes into a destination of size 28
36 | return __builtin___sprintf_chk (__s, __USE_FORTIFY_LEVEL - 1,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
37 | __bos (__s), __fmt, __va_arg_pack ());
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Signed-off-by: Bruce Rogers <brogers(a)suse.com>
---
hw/intc/exynos4210_gic.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/hw/intc/exynos4210_gic.c b/hw/intc/exynos4210_gic.c
index 69f9c18d73..4770950c94 100644
--- a/hw/intc/exynos4210_gic.c
+++ b/hw/intc/exynos4210_gic.c
@@ -288,8 +288,8 @@ static void exynos4210_gic_realize(DeviceState *dev, Error **errp)
SysBusDevice *sbd = SYS_BUS_DEVICE(obj);
const char cpu_prefix[] = "exynos4210-gic-alias_cpu";
const char dist_prefix[] = "exynos4210-gic-alias_dist";
- char cpu_alias_name[sizeof(cpu_prefix) + 3];
- char dist_alias_name[sizeof(cpu_prefix) + 3];
+ char cpu_alias_name[sizeof(cpu_prefix) + 7];
+ char dist_alias_name[sizeof(cpu_prefix) + 8];
SysBusDevice *gicbusdev;
uint32_t i;
++++++ qemu.spec.in ++++++
--- /var/tmp/diff_new_pack.Yrb9wo/_old 2019-05-17 23:41:34.561965124 +0200
+++ /var/tmp/diff_new_pack.Yrb9wo/_new 2019-05-17 23:41:34.561965124 +0200
@@ -923,9 +923,9 @@
%patch1200 -p1
%if 0%{?suse_version} <= 1320
%patch1201 -p1
+%endif
%patch1202 -p1
%patch1203 -p1
-%endif
%ifarch aarch64
%patch1204 -p1
%endif
@@ -1318,12 +1318,14 @@
done
%endif
%find_lang %name
+install -d -m 0755 %{buildroot}%_datadir/%name/firmware
+install -d -m 0755 %{buildroot}%_libexecdir/supportconfig/plugins
+install -d -m 0755 %{buildroot}%_sysconfdir/%name/firmware
install -D -m 0644 %{SOURCE4} %{buildroot}%_sysconfdir/%name/bridge.conf
install -D -m 0755 %{SOURCE3} %{buildroot}%_datadir/%name/qemu-ifup
install -D -p -m 0644 %{SOURCE8} %{buildroot}%{_udevrulesdir}/80-qemu-ga.rules
install -D -m 0755 scripts/analyze-migration.py %{buildroot}%_bindir/analyze-migration.py
install -D -m 0755 scripts/vmstate-static-checker.py %{buildroot}%_bindir/vmstate-static-checker.py
-mkdir -p %{buildroot}%_libexecdir/supportconfig/plugins
install -D -m 0755 %{SOURCE9} %{buildroot}%_libexecdir/supportconfig/plugins/%name
%if 0%{?is_opensuse} == 0
install -D -m 0644 %{SOURCE10} %{buildroot}%_docdir/qemu-arm/supported.txt
@@ -1500,9 +1502,11 @@
%_mandir/man7/qemu-qmp-ref.7.gz
%_mandir/man7/qemu-ga-ref.7.gz
%dir %_datadir/%name
+%dir %_datadir/%name/firmware
%_datadir/%name/keymaps
%_datadir/%name/trace-events-all
%dir %_sysconfdir/%name
+%dir %_sysconfdir/%name/firmware
%_datadir/%name/qemu-ifup
%dir %_libexecdir/supportconfig
%dir %_libexecdir/supportconfig/plugins
1
0
Hello community,
here is the log from the commit of package python-kubernetes for openSUSE:Factory checked in at 2019-05-17 23:41:04
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-kubernetes (Old)
and /work/SRC/openSUSE:Factory/.python-kubernetes.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-kubernetes"
Fri May 17 23:41:04 2019 rev:7 rq:703256 version:9.0.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-kubernetes/python-kubernetes.changes 2019-03-01 20:32:27.665966897 +0100
+++ /work/SRC/openSUSE:Factory/.python-kubernetes.new.5148/python-kubernetes.changes 2019-05-17 23:41:11.961977537 +0200
@@ -1,0 +2,6 @@
+Wed May 15 18:34:08 UTC 2019 - svasudevan(a)suse.com
+
+- Update to 9.0.0
+ * Add fieldSelector parameter to list/watch methods in custom objects spec kubernetes-client
+
+-------------------------------------------------------------------
Old:
----
kubernetes-8.0.1.tar.gz
New:
----
kubernetes-9.0.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-kubernetes.spec ++++++
--- /var/tmp/diff_new_pack.jSgYWD/_old 2019-05-17 23:41:12.737977111 +0200
+++ /var/tmp/diff_new_pack.jSgYWD/_new 2019-05-17 23:41:12.737977111 +0200
@@ -12,13 +12,13 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via https://bugs.opensuse.org/
+# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-kubernetes
-Version: 8.0.1
+Version: 9.0.0
Release: 0
Summary: Kubernetes python client
License: Apache-2.0
@@ -82,7 +82,7 @@
%install
%python_install
-%fdupes %{buildroot}%{_prefix}
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
%check
%python_exec %{_bindir}/nosetests -v
++++++ kubernetes-8.0.1.tar.gz -> kubernetes-9.0.0.tar.gz ++++++
++++ 20792 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package mercurial for openSUSE:Factory checked in at 2019-05-17 23:40:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mercurial (Old)
and /work/SRC/openSUSE:Factory/.mercurial.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mercurial"
Fri May 17 23:40:51 2019 rev:140 rq:703223 version:5.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/mercurial/mercurial.changes 2019-04-15 13:59:26.964707875 +0200
+++ /work/SRC/openSUSE:Factory/.mercurial.new.5148/mercurial.changes 2019-05-17 23:40:56.885985818 +0200
@@ -1,0 +2,32 @@
+Wed May 15 13:32:38 UTC 2019 - Andrei Dziahel <develop7(a)develop7.info>
+
+- Mercurial 5.0
+ This is a regularly-scheduled quarterly feature release.
+
+ + New Features
+ * Python 3 Support (Beta)
+ * `ui.relative-paths` option for getting relative path output from most
+ commands. This is enabled when `ui.tweakdefaults` is enabled.
+ * `expectsize()` revset errors out if revset has unexpected number
+ of elements.
+ * `config()` template function for getting a config value.
+ * `{negrev}` template keyword shows the negative revision number. This is
+ convenient because it is usually shorter than the positive number, but
+ note that it is less stable.
+ * `hg uncommit` now has an `--allow-dirty-working-copy` option.
+ * `hg shelve` now has `--keep` option, which shelves but also leaves the
+ working directory unchanged.
+ * `hg diff` will now include specified files in subrepos.
+ * `hg recover` now has a `--no-verify` option
+ + Other Improvements
+ * Improved color scheme for histedit's curses interface, making it more
+ consistent with the curses hunk selector.
+ + Bug Fixes
+ * Histedit's curse interface has improved support for non ascii characters.
+ + Backwards Compatibility Changes
+ * color: change color of grep.rev label (BC)
+ * commit: if interactive, look elsewhere for whitespace settings (BC)
+ * diff: make sure we output stat even when --git is not passed (issue4037) (BC)
+ * uncommit: abort if an explicitly given file cannot be uncommitted (BC)
+
+-------------------------------------------------------------------
Old:
----
mercurial-4.9.1.tar.gz
mercurial-4.9.1.tar.gz.asc
New:
----
mercurial-5.0.tar.gz
mercurial-5.0.tar.gz.asc
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ mercurial.spec ++++++
--- /var/tmp/diff_new_pack.vjY0mx/_old 2019-05-17 23:40:57.769985332 +0200
+++ /var/tmp/diff_new_pack.vjY0mx/_new 2019-05-17 23:40:57.773985330 +0200
@@ -20,7 +20,7 @@
%{!?python_sitelib: %global python_sitelib %(python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
%endif
Name: mercurial
-Version: 4.9.1
+Version: 5.0
Release: 0
Summary: Scalable Distributed SCM
License: GPL-2.0-or-later
++++++ mercurial-4.9.1.tar.gz -> mercurial-5.0.tar.gz ++++++
/work/SRC/openSUSE:Factory/mercurial/mercurial-4.9.1.tar.gz /work/SRC/openSUSE:Factory/.mercurial.new.5148/mercurial-5.0.tar.gz differ: char 5, line 1
1
0
Hello community,
here is the log from the commit of package python-pip for openSUSE:Factory checked in at 2019-05-17 23:40:44
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pip (Old)
and /work/SRC/openSUSE:Factory/.python-pip.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pip"
Fri May 17 23:40:44 2019 rev:42 rq:703186 version:19.1.1+git.1557777841.63878672
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pip/python-pip.changes 2019-03-12 09:46:25.687621624 +0100
+++ /work/SRC/openSUSE:Factory/.python-pip.new.5148/python-pip.changes 2019-05-17 23:40:44.737992490 +0200
@@ -1,0 +2,107 @@
+Wed May 15 14:15:56 UTC 2019 - Matej Cepl <mcepl(a)cepl.eu>
+
+- Update to version 19.1.1+git.1557777841.63878672:
+ * Update news file to match usual style
+ * fix-5963: assert error message
+ * Simplify CandidateEvaluator.evaluate_link().
+ * Fix 6486 mac gitignore (#6487)
+ * Store instances in the VcsSupport registry instead of classes.
+ * Remove unused cls argument from VcsSupport.unregister().
+ * fix-5963: Add news file
+ * fix-5963: fail elegantly on missing name or section in config set / unset
+ * Remove unnecessary slices.
+ * Fix typo.
+
+-------------------------------------------------------------------
+Wed May 15 15:35:34 CEST 2019 - Matej Cepl <mcepl(a)suse.com>
+
+- Switch to multibuild, so testing is separate from the building
+ of the package itself.
+
+-------------------------------------------------------------------
+Sat May 11 13:41:41 UTC 2019 - Matej Cepl <mcepl(a)cepl.eu>
+
+- Update to version 19.1.1+git.1557521541.a731e7e3:
+ * Docs: capitalize "URL"
+ * Upgrade Sphinx version for Read the Docs (#6477)
+ * Upwrap import
+ * Remove utils/packaging.py's dependence on the current environment.
+ * Improve import error handling Fix --no-index usage Fix missing type annotation type
+ * Rename _link_package_versions() to evaluate_link().
+ * Move _link_package_versions() to CandidateEvaluator.
+ * Refine return type of _package_versions() and find_all_candidates().
+ * Fix mismerged import
+ * Issue #5948: Enable keyring support
+ * Move run_with_log_command() after run_stderr_with_prefix().
+ * Change to never allow logging errors during tests.
+ * Add failing test.
+ * Respect --global-option and --install-option for VCS installs.
+- Start using upstream git checkout instead of the released
+ tarballs so we can get tests/ directory (gh#pypa/pip#6258).
+- Enable tests.
+
+-------------------------------------------------------------------
+Fri May 10 23:17:02 CEST 2019 - Matej Cepl <mcepl(a)suse.com>
+
+- Update to 19.1.1:
+ - Restore pyproject.toml handling to how it was with pip 19.0.3
+ to prevent the need to add --no-use-pep517 when installing in
+ editable mode. (#6434)
+ - Fix a regression that caused @ to be quoted in pypiserver
+ links. This interfered with parsing the revision string from
+ VCS urls. (#6440)
+ - Configuration files may now also be stored under sys.prefix
+ (#5060)
+ - Avoid creating an unnecessary local clone of a Bazaar branch
+ when exporting. (#5443)
+ - Include in pip's User-Agent string whether it looks like pip
+ is running under CI. (#5499)
+ - A custom (JSON-encoded) string can now be added to pip's
+ User-Agent using the PIP_USER_AGENT_USER_DATA environment
+ variable. (#5549)
+ - For consistency, passing --no-cache-dir no longer affects
+ whether wheels will be built. In this case, a temporary
+ directory is used. (#5749)
+ - Command arguments in subprocess log messages are now quoted
+ using shlex.quote(). (#6290)
+ - Prefix warning and error messages in log output with WARNING
+ and ERROR. (#6298)
+ - Using --build-options in a PEP 517 build now fails with an
+ error, rather than silently ignoring the option. (#6305)
+ - Error out with an informative message if one tries to install
+ a pyproject.toml-style (PEP 517) source tree using --editable
+ mode. (#6314)
+ - When downloading a package, the ETA and average speed now
+ only update once per second for better legibility. (#6319)
+ - The stdout and stderr from VCS commands run by pip as
+ subprocesses (e.g. git, hg, etc.) no longer pollute pip's
+ stdout. (#1219)
+ - Fix handling of requests exceptions when dependencies are
+ debundled. (#4195)
+ - Make pip's self version check avoid recommending upgrades to
+ prereleases if the currently-installed version is stable.
+ (#5175)
+ - Fixed crash when installing a requirement from a URL that
+ comes from a dependency without a URL. (#5889)
+ - Improve handling of file URIs: correctly handle
+ file://localhost/... and don't try to use UNC paths on Unix.
+ (#5892)
+ - Fix utils.encoding.auto_decode() LookupError with invalid
+ encodings. utils.encoding.auto_decode() was broken when
+ decoding Big Endian BOM byte-strings on Little Endian or vice
+ versa. (#6054)
+ - Fix incorrect URL quoting of IPv6 addresses. (#6285)
+ - Redact the password from the extra index URL when using pip
+ -v. (#6295)
+ - The spinner no longer displays a completion message after
+ subprocess calls not needing a spinner. It also no longer
+ incorrectly reports an error after certain subprocess calls
+ to Git that succeeded. (#6312)
+ - Fix the handling of editable mode during installs when
+ pyproject.toml is present but PEP 517 doesn't require the
+ source tree to be treated as pyproject.toml-style. (#6370)
+ - Fix NameError when handling an invalid requirement. (#6419)
+ - Make dashes render correctly when displaying long options
+ like --find-links in the text. (#6422)
+
+-------------------------------------------------------------------
Old:
----
pip-19.0.3.tar.gz
New:
----
_multibuild
_service
_servicedata
pip-19.1.1+git.1557777841.63878672.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-pip.spec ++++++
--- /var/tmp/diff_new_pack.nqJfk9/_old 2019-05-17 23:40:45.713991954 +0200
+++ /var/tmp/diff_new_pack.nqJfk9/_new 2019-05-17 23:40:45.721991950 +0200
@@ -17,17 +17,22 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
-# NOTE(saschpe): git invocation and pythonpath issues with testrepository
-# enable testing with a build conditional (off by default):
+%global flavor @BUILD_FLAVOR@%{nil}
+%if "%{flavor}" == "test"
+%define psuffix -test
+%bcond_without test
+%else
+%define psuffix %{nil}
%bcond_with test
-Name: python-pip
-Version: 19.0.3
+%endif
+Name: python-pip%{psuffix}
+Version: 19.1.1+git.1557777841.63878672
Release: 0
Summary: A Python package management system
License: MIT
Group: Development/Languages/Python
URL: http://www.pip-installer.org
-Source: https://files.pythonhosted.org/packages/source/p/pip/pip-%{version}.tar.gz
+Source: pip-%{version}.tar.xz
Patch0: pip-shipped-requests-cabundle.patch
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
@@ -42,6 +47,7 @@
BuildArch: noarch
%if %{with test}
# Test requirements:
+BuildRequires: %{python_module PyYAML}
BuildRequires: %{python_module docutils}
BuildRequires: %{python_module freezegun}
BuildRequires: %{python_module mock}
@@ -49,9 +55,14 @@
BuildRequires: %{python_module pytest}
BuildRequires: %{python_module scripttest >= 1.3}
BuildRequires: %{python_module virtualenv >= 1.10}
+BuildRequires: ca-certificates
+BuildRequires: git
+BuildRequires: subversion
%endif
%python_subpackages
+%define upversion %(echo %{version} |cut -d+ -f 1)
+
%description
Pip is a replacement for easy_install. It uses mostly the same techniques for
finding packages, so packages that were made easy_installable should be
@@ -70,13 +81,16 @@
%python_build
%install
+%if ! %{with test}
%python_install
%prepare_alternative pip
%python_expand %fdupes %{buildroot}%{$python_sitelib}
+%endif
%if %{with test}
%check
-%python_expand py.test-%{$python_version}
+export PYTHONPATH=build/lib
+%pytest -k 'not (network or test_config_file_venv_option or test_build_env_allow_only_one_install or test_build_env_requirements_check or test_build_env_overlay_prefix_has_priority or test_build_env_isolation)' tests/unit
%endif
%pre
@@ -87,32 +101,22 @@
%post
# can't use `python_install_alternative` because it's pipX.Y, not pip-X.Y
PRIO=$(echo %{python_version} | tr -d .)
-%ifpypy3
-%install_alternative pip %{_bindir}/pip-%{pypy3_bin_suffix} $PRIO
-%else
%install_alternative pip %{_bindir}/pip%{python_version} $PRIO
-%endif
%postun
-%ifpypy3
-%uninstall_alternative pip %{_bindir}/pip-%{pypy3_bin_suffix}
-%else
%uninstall_alternative pip %{_bindir}/pip%{python_version}
-%endif
+%if ! %{with test}
%files %{python_files}
%license LICENSE.txt
%doc AUTHORS.txt NEWS.rst README.rst
-%{_bindir}/pip
+%python3_only %{_bindir}/pip
+%{_bindir}/pip%{python_version}
%python2_only %{_bindir}/pip2
%python3_only %{_bindir}/pip3
-%ifpypy3
-%{_bindir}/pip-%{pypy3_bin_suffix}
-%else
-%{_bindir}/pip%{python_version}
-%endif
%ghost %{_sysconfdir}/alternatives/pip
-%{python_sitelib}/pip-%{version}-py%{python_version}.egg-info
+%{python_sitelib}/pip-%{upversion}-py%{python_version}.egg-info
%{python_sitelib}/pip
+%endif
%changelog
++++++ _multibuild ++++++
<multibuild>
<package>test</package>
</multibuild>
++++++ _service ++++++
<services>
<service name="tar_scm" mode="disabled">
<param name="versionprefix">19.1.1+git</param>
<param name="url">https://github.com/pypa/pip</param>
<param name="scm">git</param>
<param name="exclude">.git*</param>
<param name="changesgenerate">enable</param>
<param name="changesauthor">Matej Cepl <mcepl(a)cepl.eu></param>
</service>
<service name="recompress" mode="disabled">
<param name="compression">xz</param>
<param name="file">*.tar</param>
</service>
<service name="set_version" mode="disabled"/>
</services>
++++++ _servicedata ++++++
<servicedata>
<service name="tar_scm">
<param name="url">https://github.com/pypa/pip</param>
<param name="changesrevision">63878672881d08f048eb2c2f757da2b834040231</param></service></servicedata>++++++ pip-shipped-requests-cabundle.patch ++++++
--- /var/tmp/diff_new_pack.nqJfk9/_old 2019-05-17 23:40:45.797991908 +0200
+++ /var/tmp/diff_new_pack.nqJfk9/_new 2019-05-17 23:40:45.797991908 +0200
@@ -1,19 +1,10 @@
-Index: b/src/pip/_vendor/certifi/core.py
-===================================================================
--- a/src/pip/_vendor/certifi/core.py
+++ b/src/pip/_vendor/certifi/core.py
-@@ -7,13 +7,11 @@ certifi.py
-
- This module returns the installation location of cacert.pem.
- """
--import os
+@@ -10,6 +10,4 @@ import os
def where():
- f = os.path.dirname(__file__)
-
+-
- return os.path.join(f, 'cacert.pem')
+ return '/etc/ssl/ca-bundle.pem'
-
-
- if __name__ == '__main__':
1
0
Hello community,
here is the log from the commit of package libqt5-qtwebkit for openSUSE:Factory checked in at 2019-05-17 23:40:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libqt5-qtwebkit (Old)
and /work/SRC/openSUSE:Factory/.libqt5-qtwebkit.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libqt5-qtwebkit"
Fri May 17 23:40:37 2019 rev:51 rq:703172 version:5.212~alpha2
Changes:
--------
--- /work/SRC/openSUSE:Factory/libqt5-qtwebkit/libqt5-qtwebkit.changes 2018-12-14 20:54:31.776939348 +0100
+++ /work/SRC/openSUSE:Factory/.libqt5-qtwebkit.new.5148/libqt5-qtwebkit.changes 2019-05-17 23:40:38.521995905 +0200
@@ -1,0 +2,5 @@
+Wed May 15 13:39:28 UTC 2019 - Martin Liška <mliska(a)suse.cz>
+
+- Disable LTO (boo#1135212).
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libqt5-qtwebkit.spec ++++++
--- /var/tmp/diff_new_pack.8zms42/_old 2019-05-17 23:40:39.517995358 +0200
+++ /var/tmp/diff_new_pack.8zms42/_new 2019-05-17 23:40:39.521995355 +0200
@@ -270,6 +270,7 @@
%postun -n libQt5WebKit5 -p /sbin/ldconfig
%build
+%define _lto_cflags %{nil}
%if %qt5_snapshot
#force the configure script to generate the forwarding headers (it checks whether .git directory exists)
mkdir .git
1
0
Hello community,
here is the log from the commit of package adobe-sourcecodepro-fonts for openSUSE:Factory checked in at 2019-05-17 23:40:27
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/adobe-sourcecodepro-fonts (Old)
and /work/SRC/openSUSE:Factory/.adobe-sourcecodepro-fonts.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "adobe-sourcecodepro-fonts"
Fri May 17 23:40:27 2019 rev:11 rq:703169 version:2.030
Changes:
--------
--- /work/SRC/openSUSE:Factory/adobe-sourcecodepro-fonts/adobe-sourcecodepro-fonts.changes 2017-07-04 11:52:39.997732026 +0200
+++ /work/SRC/openSUSE:Factory/.adobe-sourcecodepro-fonts.new.5148/adobe-sourcecodepro-fonts.changes 2019-05-17 23:40:29.810000690 +0200
@@ -1,0 +2,5 @@
+Tue May 7 13:27:27 UTC 2019 - Yunhe Guo <i(a)guoyunhe.me>
+
+- Remove TTF files because better OTF files have been installed
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ adobe-sourcecodepro-fonts.spec ++++++
--- /var/tmp/diff_new_pack.xTTnkI/_old 2019-05-17 23:40:30.802000145 +0200
+++ /var/tmp/diff_new_pack.xTTnkI/_new 2019-05-17 23:40:30.806000142 +0200
@@ -53,7 +53,7 @@
%install
install -d %{buildroot}%{_ttfontsdir}
# by default install command uses 755 umask
-install -m 644 OTF/*.otf TTF/*.ttf %{buildroot}%{_ttfontsdir}
+install -m 644 OTF/*.otf %{buildroot}%{_ttfontsdir}
install -d -m0755 %{buildroot}%{_datadir}/appdata
install -D -m0644 %{S:1} %{buildroot}%{_datadir}/appdata/
1
0
Hello community,
here is the log from the commit of package gnome-shell for openSUSE:Factory checked in at 2019-05-17 23:40:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gnome-shell (Old)
and /work/SRC/openSUSE:Factory/.gnome-shell.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gnome-shell"
Fri May 17 23:40:19 2019 rev:161 rq:703157 version:3.32.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/gnome-shell/gnome-shell.changes 2019-05-03 22:17:57.808169277 +0200
+++ /work/SRC/openSUSE:Factory/.gnome-shell.new.5148/gnome-shell.changes 2019-05-17 23:40:20.658005717 +0200
@@ -1,0 +2,7 @@
+Tue May 14 09:05:41 UTC 2019 - Yifan Jiang <yfjiang(a)suse.com>
+
+- Add gnome-shell-do-not-chain-up-to-parent-allocate.patch: Don't
+ chain up to parent's allocate, resolving Topicon Plus extension
+ high cpu consumption (glgo#GNOME/gnome-shell#1054).
+
+-------------------------------------------------------------------
New:
----
gnome-shell-do-not-chain-up-to-parent-allocate.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gnome-shell.spec ++++++
--- /var/tmp/diff_new_pack.nfJw0Y/_old 2019-05-17 23:40:21.542005231 +0200
+++ /var/tmp/diff_new_pack.nfJw0Y/_new 2019-05-17 23:40:21.558005223 +0200
@@ -41,6 +41,8 @@
# PATCH-FEATURE-SLE gnome-shell-gdm-login-applet.patch fate#314545 dliang(a)suse.com -- Add an applet on login UI to display suse icon, product name, hostname.
# PATCH-FIX-UPSTREAM gnome-shell-animations-speedup.patch glgo#GNOME/gnome-shell!505 -- Speed up animations
Patch5: gnome-shell-animations-speedup.patch
+# PATCH-FIX-UPSTREAM gnome-shell-do-not-chain-up-to-parent-allocate.patch yfjiang(a)suse.com glgo#GNOME/gnome-shell#1054 -- panel: Don't chain up to parent's allocate, resolving Topicon Plus extension high cpu consumption
+Patch6: gnome-shell-do-not-chain-up-to-parent-allocate.patch
Patch1001: gnome-shell-gdm-login-applet.patch
# PATCH-FEATURE-SLE gnome-shell-domain.patch fate#307773 dliang(a)suse.com -- Active Directory Integration
@@ -167,6 +169,7 @@
%patch3 -p1
%patch4 -p1
%patch5 -p1
+%patch6 -p1
translation-update-upstream
++++++ gnome-shell-do-not-chain-up-to-parent-allocate.patch ++++++
>From d57234bec93dc486dac07d6cbc02c52091c5098a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner(a)gnome.org>
Date: Mon, 29 Apr 2019 17:53:57 +0000
Subject: [PATCH] panel: Don't chain up to parent's allocate
The top bar handles allocating all its children itself, so there's
little value in chaining up to st_widget_allocate() and get the
default layout manager allocating all children again (and possibly
differently).
If this happens, we end up with an infinite allocation cycle with
corresponding performance penalty. Fix this by just doing and what
Shell.GenericContainer did before commit 286ffbe2b6 replaced it,
and not chain up to StWidget.
Thanks to Robert Mader for debugging the issue.
https://gitlab.gnome.org/GNOME/gnome-shell/issues/1054
Index: gnome-shell-3.32.1/js/ui/panel.js
===================================================================
--- gnome-shell-3.32.1.orig/js/ui/panel.js
+++ gnome-shell-3.32.1/js/ui/panel.js
@@ -882,7 +882,7 @@ class Panel extends St.Widget {
}
vfunc_allocate(box, flags) {
- super.vfunc_allocate(box, flags);
+ this.set_allocation(box, flags);
let allocWidth = box.x2 - box.x1;
let allocHeight = box.y2 - box.y1;
1
0
Hello community,
here is the log from the commit of package librsvg for openSUSE:Factory checked in at 2019-05-17 23:40:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/librsvg (Old)
and /work/SRC/openSUSE:Factory/.librsvg.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "librsvg"
Fri May 17 23:40:10 2019 rev:91 rq:703156 version:2.44.14
Changes:
--------
--- /work/SRC/openSUSE:Factory/librsvg/librsvg.changes 2019-02-28 21:26:21.121873935 +0100
+++ /work/SRC/openSUSE:Factory/.librsvg.new.5148/librsvg.changes 2019-05-17 23:40:13.746009514 +0200
@@ -1,0 +2,16 @@
+Tue May 14 11:15:09 UTC 2019 - Bjørn Lie <bjorn.lie(a)gmail.com>
+
+- Update to version 2.44.14:
+ + Fix glgo#GNOME/librsvg#425: Don't fail parsing if the system's
+ locale is broken.
+ + Fix glgo#GNOME/librsvg#438, glgo#GNOME/librsvg#443: Don't
+ create intermediate raster surfaces unless absolutely needed.
+ This was causing blurred output for SVGs from Inkscape and
+ Illustrator, since they include an "enable-background" property
+ even when there are no filters in use.
+ + Fix glgo#GNOME/librsvg#443: Fix blurry output when
+ enable-background is used without filters.
+ + Fix glgo#GNOME/librsvg#455: Fix rounding error on i386.
+ + Check for Cairo errors when constructing paths.
+
+-------------------------------------------------------------------
Old:
----
librsvg-2.44.13.tar.xz
New:
----
librsvg-2.44.14.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ librsvg.spec ++++++
--- /var/tmp/diff_new_pack.9NKKxt/_old 2019-05-17 23:40:14.442009131 +0200
+++ /var/tmp/diff_new_pack.9NKKxt/_new 2019-05-17 23:40:14.442009131 +0200
@@ -17,7 +17,7 @@
Name: librsvg
-Version: 2.44.13
+Version: 2.44.14
Release: 0
Summary: A Library for Rendering SVG Data
License: LGPL-2.0-or-later AND GPL-2.0-or-later AND Apache-2.0 AND MIT
++++++ librsvg-2.44.13.tar.xz -> librsvg-2.44.14.tar.xz ++++++
/work/SRC/openSUSE:Factory/librsvg/librsvg-2.44.13.tar.xz /work/SRC/openSUSE:Factory/.librsvg.new.5148/librsvg-2.44.14.tar.xz differ: char 26, line 1
1
0
Hello community,
here is the log from the commit of package gconf2 for openSUSE:Factory checked in at 2019-05-17 23:40:03
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gconf2 (Old)
and /work/SRC/openSUSE:Factory/.gconf2.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gconf2"
Fri May 17 23:40:03 2019 rev:71 rq:703155 version:3.2.6
Changes:
--------
--- /work/SRC/openSUSE:Factory/gconf2/gconf2.changes 2018-03-08 10:43:04.656489557 +0100
+++ /work/SRC/openSUSE:Factory/.gconf2.new.5148/gconf2.changes 2019-05-17 23:40:04.174014771 +0200
@@ -1,0 +2,5 @@
+Tue May 14 11:14:42 UTC 2019 - Dominique Leuenberger <dimstar(a)opensuse.org>
+
+- Move RPM macros to %_rpmmacrodir.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gconf2.spec ++++++
--- /var/tmp/diff_new_pack.34Wsqr/_old 2019-05-17 23:40:04.838014406 +0200
+++ /var/tmp/diff_new_pack.34Wsqr/_new 2019-05-17 23:40:04.846014402 +0200
@@ -134,8 +134,8 @@
install gconftool-rebuild %{buildroot}%{_bindir}
echo xml:merged:%{_sysconfdir}/gconf/gconf.xml.schemas >%{buildroot}%{_sysconfdir}/gconf/schema-install-source
# Install rpm macros
-mkdir -p %{buildroot}%{_sysconfdir}/rpm
-cp macros.gconf2 %{buildroot}%{_sysconfdir}/rpm
+mkdir -p %{buildroot}%{_rpmmacrodir}
+cp macros.gconf2 %{buildroot}%{_rpmmacrodir}
%pre
# FIXME: We should probably remove this entire section for 11.3 (Checked my mboman(a)suse.de, 2009-02-21)
@@ -227,6 +227,6 @@
%{_libdir}/pkgconfig/gconf-2.0.pc
%{_bindir}/gsettings-schema-convert
%{_mandir}/man1/gsettings-schema-convert.1*
-%{_sysconfdir}/rpm/macros.gconf2
+%{_rpmmacrodir}/macros.gconf2
%changelog
1
0
Hello community,
here is the log from the commit of package gnome-builder for openSUSE:Factory checked in at 2019-05-17 23:39:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gnome-builder (Old)
and /work/SRC/openSUSE:Factory/.gnome-builder.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gnome-builder"
Fri May 17 23:39:53 2019 rev:41 rq:703154 version:3.32.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/gnome-builder/gnome-builder.changes 2019-05-10 09:15:59.604096225 +0200
+++ /work/SRC/openSUSE:Factory/.gnome-builder.new.5148/gnome-builder.changes 2019-05-17 23:39:57.242018579 +0200
@@ -1,0 +2,35 @@
+Sat May 11 06:28:57 UTC 2019 - Bjørn Lie <bjorn.lie(a)gmail.com>
+
+- Update to version 3.32.2:
+ + Glade design view improvements.
+ + Improve CFLAGS and CXXFLAGS discovery with
+ compile_commands.json when a direct match is not found (such as
+ with headers).
+ + Improve symlink detection warning.
+ + Fix block selection in terminals.
+ + Enable VTE hyperlinks feature.
+ + NPM build system bug fixes and improvements.
+ + The diagnostic manager now properly tracks changes to a buffers
+ configured source language. This will improve diagnostic
+ detection in some situations.
+ + rofiles-fuse and flatpak-builder will attempt to retire their
+ corresponding host processes when flatpak is in use.
+ + Unit tests will now properly run when uninstalled.
+ + The unit tests panel now properly scrolls when a large amount
+ of content is provided to the PTY.
+ + The unit tests panel now allows for cancelling an ongoing unit
+ test.
+ + The file monitor now properly detects file changes when no
+ version control is in use.
+ + The clang plugin now discovers the location of the C++ standard
+ includes.
+ + Project template improvements.
+ + Folder selection is fixed when cloning a repository.
+ + menus.ui no longer is opened with the Glade design view by
+ default.
+ + "Open in Terminal" will now properly open a terminal from the
+ host system instead of expecting flatpak bundling.
+ + Updated documentation.
+ + Updated translations.
+
+-------------------------------------------------------------------
Old:
----
gnome-builder-3.32.1.tar.xz
New:
----
gnome-builder-3.32.2.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gnome-builder.spec ++++++
--- /var/tmp/diff_new_pack.1Qkvow/_old 2019-05-17 23:39:57.738018306 +0200
+++ /var/tmp/diff_new_pack.1Qkvow/_new 2019-05-17 23:39:57.738018306 +0200
@@ -20,7 +20,7 @@
%global __requires_exclude typelib\\(Ide\\)
Name: gnome-builder
-Version: 3.32.1
+Version: 3.32.2
Release: 0
Summary: A toolsmith for GNOME-based applications
License: GPL-3.0-or-later AND GPL-2.0-or-later AND LGPL-3.0-or-later AND LGPL-2.1-or-later AND CC-BY-SA-3.0
++++++ gnome-builder-3.32.1.tar.xz -> gnome-builder-3.32.2.tar.xz ++++++
/work/SRC/openSUSE:Factory/gnome-builder/gnome-builder-3.32.1.tar.xz /work/SRC/openSUSE:Factory/.gnome-builder.new.5148/gnome-builder-3.32.2.tar.xz differ: char 26, line 1
1
0
Hello community,
here is the log from the commit of package gnome-boxes for openSUSE:Factory checked in at 2019-05-17 23:39:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gnome-boxes (Old)
and /work/SRC/openSUSE:Factory/.gnome-boxes.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gnome-boxes"
Fri May 17 23:39:46 2019 rev:62 rq:703153 version:3.32.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/gnome-boxes/gnome-boxes.changes 2019-05-03 22:12:17.187493798 +0200
+++ /work/SRC/openSUSE:Factory/.gnome-boxes.new.5148/gnome-boxes.changes 2019-05-17 23:39:47.634023856 +0200
@@ -1,0 +2,9 @@
+Sat May 11 06:25:31 UTC 2019 - Bjørn Lie <bjorn.lie(a)gmail.com>
+
+- Update to version 3.32.1:
+ + Keep the app ID same as in 3.30 in appdata file.
+ + Offer RHEL 8.0 download and new Red Hat logo.
+ + Offer newest Ubuntu, Fedora, OpenSUSE.
+ + Updated translations.
+
+-------------------------------------------------------------------
Old:
----
gnome-boxes-3.32.0.2.tar.xz
New:
----
gnome-boxes-3.32.1.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gnome-boxes.spec ++++++
--- /var/tmp/diff_new_pack.izsaiW/_old 2019-05-17 23:39:48.062023621 +0200
+++ /var/tmp/diff_new_pack.izsaiW/_new 2019-05-17 23:39:48.066023619 +0200
@@ -22,7 +22,7 @@
%define govf_sover 0.1
%define gfrdp_sover 0.1
Name: gnome-boxes
-Version: 3.32.0.2
+Version: 3.32.1
Release: 0
Summary: A GNOME 3 application to access remote or virtual systems
License: LGPL-2.0-or-later
++++++ gnome-boxes-3.32.0.2.tar.xz -> gnome-boxes-3.32.1.tar.xz ++++++
++++ 3090 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package netpbm for openSUSE:Factory checked in at 2019-05-17 23:39:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/netpbm (Old)
and /work/SRC/openSUSE:Factory/.netpbm.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "netpbm"
Fri May 17 23:39:25 2019 rev:67 rq:703437 version:10.86.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/netpbm/netpbm.changes 2019-01-03 18:04:34.240250103 +0100
+++ /work/SRC/openSUSE:Factory/.netpbm.new.5148/netpbm.changes 2019-05-17 23:39:27.778034762 +0200
@@ -1,0 +2,67 @@
+Wed May 15 05:44:20 UTC 2019 - pgajdos(a)suse.com
+
+- asan_build: build ASAN included
+- debug_build: build more suitable for debugging
+- added patches
+ neccessary for running with ASAN
+ + netpbm-asan.patch
+
+-------------------------------------------------------------------
+Tue May 14 09:22:13 UTC 2019 - pgajdos(a)suse.com
+
+- version update to 10.86.3
+ * pnmtopng: Fix bug: Defaults to no filters. Should be all
+ filters. Effect is larger PNG output. Broken after Netpbm
+ 10.26 (January 2005) but no later than Netpbm 10.35 (August
+ 2006).
+ * pnmtopng: Fix bug: Doesn't allow multiple filter options.
+ Broken after Netpbm 10.26 (January 2005) but no later than
+ Netpbm 10.35 (August 2006).
+ * pnmcrop: Don't allow -borderfile with -reportXXX. It doesn't
+ work.
+ * pnmcrop: fix bug: -bgcolor doesn't work. Always present
+ (-bgcolor was introduced in Netpbm 10.86 (March 2019)).
+ * pnmcrop: fix bug: incorrect identification of background with
+ -bgcolor and PBM or PGM image. Always present (-bgcolor was
+ introduced in Netpbm 10.86 (March 2019)).
+ * Add pamfind.
+ * Add pambrighten.
+ * Add pamhue.
+ * pnmcrop: Add -bg-color, bg-corner, -reportfull, -reportsize,
+ -blank-image .
+ * pamtopng: Add -interlace .
+ * pamenlarge: Add -scale, -xscale, -yscale .
+ * pamenlarge: Much faster for PBM with xscale factor above 10;
+ slightly faster for xscale factor 2-10.
+ * pamfile: Add -machine and -size .
+ * pamscale: Add -reportonly
+ * pamstretch-gen: Add -quiet, -plain.
+ * pamstretch-gen: Use -dropedge on the 'pamstretch' piece for
+ better looking output.
+ * pamstretch: Accept scale factor of 1 as a parameter (already
+ was accepted with -xscale and -yscale options).
+ * pamstretch: Don't mess with edge when scale factor is 1,
+ regardless of -dropedge and -blackedge.
+ * ppmwheel: Add -huevalue, -huesaturation, -maxval .
+ * various: Fix unnormalizing code so a value exactly between two
+ sample values rounds consistently up. Affects many programs.
+ * pstopnm: Fix bug: -textalphabits has no effect. Always broken.
+ (-textalphabits was new in Netpbm 10.53 (December 2010)).
+ * pamtopng: Fix sBit chunk, bit shift value for 1-, 2-, and 4-bit-
+ per-sample images. Always broken (Pamtopng was new in Netpbm
+ 10.71 (June 2015)).
+ * pamtopng: Fix buffer overrun. Always broken (Pamtopng was new
+ in Netpbm 10.71 (June 2015)).
+ * pnmtopng: fix bug: -interlace ignored. Broken in 10.55
+ (June 2011).
+ pamstretch: Reject very large scale factors instead of producing
+ incorrect output.
+ * ppmbrighten: Fix crash with -normalize when there is only one
+ intensity in the image. Always broken - Ppmbrighten was new in
+ the first Netpbm release in 1991.
+ * ppmdraw: Fix bug: 'setlinetype nodiag' says invalid type.
+ Always broken. (Ppmdraw was new in Netpbm 10.29 (August 2005)).
+- modified patches
+ % netpbm-gcc-warnings.patch (extended)
+
+-------------------------------------------------------------------
Old:
----
netpbm-10.85.0-documentation.tar.bz2
netpbm-10.85.0-nohpcdtoppm-noppmtompeg.tar.bz2
New:
----
netpbm-10.86.3-documentation.tar.bz2
netpbm-10.86.3-nohpcdtoppm-noppmtompeg.tar.bz2
netpbm-asan.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ netpbm.spec ++++++
--- /var/tmp/diff_new_pack.CVJWrs/_old 2019-05-17 23:39:28.554034336 +0200
+++ /var/tmp/diff_new_pack.CVJWrs/_new 2019-05-17 23:39:28.558034334 +0200
@@ -1,7 +1,7 @@
#
# spec file for package netpbm
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 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
@@ -16,11 +16,13 @@
#
+%define debug_build 0
+%define asan_build 0
%define libmaj 11
-%define libmin 85
+%define libmin 86
%define libver %{libmaj}.%{libmin}
Name: netpbm
-Version: 10.85.0
+Version: 10.86.3
Release: 0
Summary: A Graphics Conversion Package
License: BSD-3-Clause AND GPL-2.0-or-later AND IJG AND MIT AND SUSE-Public-Domain
@@ -32,6 +34,8 @@
Source3: prepare-src-tarball.sh
# SUSE specific
Patch0: %{name}-make.patch
+# neccessary for running with ASAN
+Patch1: %{name}-asan.patch
Patch3: %{name}-tmpfile.patch
Patch4: %{name}-security-code.patch
Patch5: %{name}-security-scripts.patch
@@ -103,6 +107,13 @@
# dtto for ppmtompeg
echo 'install.manweb:' >> converter/ppm/ppmtompeg/Makefile
export CFLAGS="%{optflags} -flax-vector-conversions"
+%if %{debug_build}
+export CFLAGS="$CFLAGS -O0"
+%endif
+%if %{asan_build}
+export CFLAGS="$CFLAGS -fsanitize=address"
+patch -p1 < %{PATCH1}
+%endif
make %{?_smp_mflags} CFLAGS="$CFLAGS"
rm doc/INSTALL
#
++++++ netpbm-10.85.0-documentation.tar.bz2 -> netpbm-10.86.3-documentation.tar.bz2 ++++++
/work/SRC/openSUSE:Factory/netpbm/netpbm-10.85.0-documentation.tar.bz2 /work/SRC/openSUSE:Factory/.netpbm.new.5148/netpbm-10.86.3-documentation.tar.bz2 differ: char 11, line 1
++++++ netpbm-10.85.0-nohpcdtoppm-noppmtompeg.tar.bz2 -> netpbm-10.86.3-nohpcdtoppm-noppmtompeg.tar.bz2 ++++++
++++ 9961 lines of diff (skipped)
++++++ netpbm-asan.patch ++++++
Index: netpbm-10.86.3/GNUmakefile
===================================================================
--- netpbm-10.86.3.orig/GNUmakefile 2019-05-14 09:16:35.984991072 +0200
+++ netpbm-10.86.3/GNUmakefile 2019-05-16 09:42:17.843531751 +0200
@@ -378,7 +378,7 @@ endif
netpbm:%:%.o $(OBJECT_DEP) $(NETPBMLIB) $(URTLIBDEP) $(LIBOPT)
# Note that LDFLAGS might contain -L options, so order is important.
$(LD) -o $@ $< $(OBJECT_LIST) \
- $(LDFLAGS) $(shell $(LIBOPT) $(NETPBMLIB) $(MERGELIBS)) \
+ $(LDFLAGS) -lasan $(shell $(LIBOPT) $(NETPBMLIB) $(MERGELIBS)) \
$(PNGLD) $(XML2LD) $(X11LD) $(MATHLIB) $(NETWORKLD) $(LADD)
netpbm.o: mergetrylist
Index: netpbm-10.86.3/buildtools/Makefile
===================================================================
--- netpbm-10.86.3.orig/buildtools/Makefile 2019-05-14 09:16:32.160972760 +0200
+++ netpbm-10.86.3/buildtools/Makefile 2019-05-16 09:42:13.255509230 +0200
@@ -41,10 +41,10 @@ genfontc.o:%.o:%.c importinc
$(NETPBM_INCLUDES) \
$<
genfontc:%:%.o $(NETPBMLIB)
- $(LD_FOR_BUILD) -o $@ $(LDFLAGS_FOR_BUILD) $< $(NETPBMLIB)
+ $(LD_FOR_BUILD) -o $@ $(LDFLAGS_FOR_BUILD) $< $(NETPBMLIB) -lasan
$(BUILDPROGS):%:%.o
- $(LD_FOR_BUILD) -o $@ $(LDFLAGS_FOR_BUILD) $<
+ $(LD_FOR_BUILD) -o $@ $(LDFLAGS_FOR_BUILD) $< -lasan
distclean clean: cleanlocal
.PHONY: cleanlocal
Index: netpbm-10.86.3/common.mk
===================================================================
--- netpbm-10.86.3.orig/common.mk 2019-05-14 09:16:32.156972741 +0200
+++ netpbm-10.86.3/common.mk 2019-05-16 09:42:26.703575262 +0200
@@ -386,7 +386,7 @@ LDFLAGS_ALL = $(WINICON_OBJECT) \
$(PORTBINARIES) $(MATHBINARIES): %: %.o \
$(NETPBMLIB) $(LIBOPT) $(WINICON_OBJECT)
- $(LD) -o $@$(EXE) $@.o $(ADDL_OBJECTS) $(LDFLAGS_ALL)
+ $(LD) -o $@$(EXE) $@.o $(ADDL_OBJECTS) -lasan $(LDFLAGS_ALL)
# MERGE STUFF
Index: netpbm-10.86.3/lib/Makefile
===================================================================
--- netpbm-10.86.3.orig/lib/Makefile 2019-05-14 09:16:32.832975977 +0200
+++ netpbm-10.86.3/lib/Makefile 2019-05-16 09:42:22.159552950 +0200
@@ -115,7 +115,7 @@ $(SONAME): \
-lc \
-soname libnetpbm.$(NETPBMLIBSUFFIX) \
-set_version $(shell perl -e '$(PERLPROG)') \
- $(LADD)
+ -lasan $(LADD)
endif
ifeq ($(NETPBMLIBTYPE),unixshared)
@@ -131,7 +131,7 @@ $(SONAME): libnetpbm.$(NETPBMLIBSUFFIX).
$(SYMLINK) $< $@
libnetpbm.$(NETPBMLIBSUFFIX).$(MAJ).$(MIN): $(LIBOBJECTS) $(LIBOBJECTS_X)
$(LD) $(LDSHLIB) -o $@ $(LIBOBJECTS) $(LIBOBJECTS_X) \
- $(SHLIB_CLIB) -lm $(LADD)
+ $(SHLIB_CLIB) -lm -lasan $(LADD)
endif
ifeq ($(NETPBMLIBTYPE),dll)
@@ -144,7 +144,7 @@ endif
-Wl,-soname,$(NETPBMSHLIBPREFIX)netpbm$(DLLVER).dll \
-Wl,--output-def,$(NETPBMSHLIBPREFIX)netpbm$(DLLVER).def \
-Wl,--out-implib,libnetpbm.dll.a -o $@ $(LDFLAGS) \
- $(LIBOBJECTS) $(LIBOBJECTS_X) $(LDLIBS) $(LADD)
+ $(LIBOBJECTS) $(LIBOBJECTS_X) $(LDLIBS) -lasan $(LADD)
endif
ifeq ($(NETPBMLIBTYPE),dylib)
@@ -158,7 +158,7 @@ libnetpbm.$(MAJ).dylib: libnetpbm.$(MAJ)
libnetpbm.$(MAJ).$(MIN).dylib: $(LIBOBJECTS) $(LIBOBJECTS_X)
$(LD) $(LDSHLIB) -o $@ $(LIBOBJECTS) $(LIBOBJECTS_X) \
- -lc $(LADD)
+ -lc -lasan $(LADD)
endif
#--------------------------------------------------------------------------
++++++ netpbm-gcc-warnings.patch ++++++
--- /var/tmp/diff_new_pack.CVJWrs/_old 2019-05-17 23:39:29.874033611 +0200
+++ /var/tmp/diff_new_pack.CVJWrs/_new 2019-05-17 23:39:29.874033611 +0200
@@ -1,8 +1,8 @@
-Index: netpbm-10.85.0/converter/other/pngx.c
+Index: netpbm-10.86.3/converter/other/pngx.c
===================================================================
---- netpbm-10.85.0.orig/converter/other/pngx.c 2018-12-31 16:41:07.134118718 +0100
-+++ netpbm-10.85.0/converter/other/pngx.c 2018-12-31 17:50:20.646020442 +0100
-@@ -366,6 +366,7 @@ pngx_srgbIntentDesc(pngx_srgbIntent cons
+--- netpbm-10.86.3.orig/converter/other/pngx.c 2019-05-14 09:27:19.536073096 +0200
++++ netpbm-10.86.3/converter/other/pngx.c 2019-05-14 09:27:21.976084785 +0200
+@@ -368,6 +368,7 @@ pngx_srgbIntentDesc(pngx_srgbIntent cons
case PNGX_ABSOLUTE_COLORIMETRIC: return "ABSOLUTE_COLORIMETRIC";
}
assert(false);
@@ -10,7 +10,7 @@
}
-@@ -381,6 +382,7 @@ const libpngSrgbIntentCode(pngx_srgbInte
+@@ -383,6 +384,7 @@ const libpngSrgbIntentCode(pngx_srgbInte
}
assert(false); /* All cases above return */
@@ -18,10 +18,10 @@
}
-Index: netpbm-10.85.0/editor/pbmreduce.c
+Index: netpbm-10.86.3/editor/pbmreduce.c
===================================================================
---- netpbm-10.85.0.orig/editor/pbmreduce.c 2018-12-31 17:50:20.618020308 +0100
-+++ netpbm-10.85.0/editor/pbmreduce.c 2018-12-31 17:50:20.646020442 +0100
+--- netpbm-10.86.3.orig/editor/pbmreduce.c 2019-05-14 09:27:21.952084670 +0200
++++ netpbm-10.86.3/editor/pbmreduce.c 2019-05-14 09:27:21.976084785 +0200
@@ -202,6 +202,9 @@ oppositeDir(enum Direction const arg) {
case RIGHT_TO_LEFT: return LEFT_TO_RIGHT;
}
@@ -32,10 +32,10 @@
}
-Index: netpbm-10.85.0/lib/libpm.c
+Index: netpbm-10.86.3/lib/libpm.c
===================================================================
---- netpbm-10.85.0.orig/lib/libpm.c 2018-12-31 17:50:20.622020327 +0100
-+++ netpbm-10.85.0/lib/libpm.c 2018-12-31 17:51:40.886403785 +0100
+--- netpbm-10.86.3.orig/lib/libpm.c 2019-05-14 09:27:21.956084689 +0200
++++ netpbm-10.86.3/lib/libpm.c 2019-05-14 09:27:21.976084785 +0200
@@ -440,6 +440,7 @@ pm_maxvaltobits(int const maxval) {
pm_error( "maxval of %d is too large!", maxval );
@@ -44,3 +44,16 @@
}
int
+Index: netpbm-10.86.3/lib/libpnm3.c
+===================================================================
+--- netpbm-10.86.3.orig/lib/libpnm3.c 2019-05-14 09:16:33.096977241 +0200
++++ netpbm-10.86.3/lib/libpnm3.c 2019-05-14 11:07:02.148770284 +0200
+@@ -429,6 +429,8 @@ pnm_bittoxel(bit const inputBit,
+ case PBM_WHITE: return pnm_whitexel(maxval, PBM_TYPE); break;
+ default:
+ assert(false);
++ pixel const black = {0, 0, 0};
++ return black;
+ }
+ }
+
1
0