Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package ghc-cabal-install-solver for 
openSUSE:Factory checked in at 2024-10-28 15:18:07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-cabal-install-solver (Old)
 and      /work/SRC/openSUSE:Factory/.ghc-cabal-install-solver.new.2020 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ghc-cabal-install-solver"

Mon Oct 28 15:18:07 2024 rev:3 rq:1218539 version:3.10.3.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/ghc-cabal-install-solver/ghc-cabal-install-solver.changes
        2023-11-23 21:43:07.892979494 +0100
+++ 
/work/SRC/openSUSE:Factory/.ghc-cabal-install-solver.new.2020/ghc-cabal-install-solver.changes
      2024-10-28 15:19:47.978150119 +0100
@@ -1,0 +2,9 @@
+Thu Mar 28 17:54:10 UTC 2024 - Peter Simons <[email protected]>
+
+- Update cabal-install-solver to version 3.10.3.0 revision 1.
+  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/cabal-install-solver-3.10.3.0/src/ChangeLog.md
+
+-------------------------------------------------------------------

Old:
----
  cabal-install-solver-3.10.2.1.tar.gz

New:
----
  cabal-install-solver-3.10.3.0.tar.gz
  cabal-install-solver.cabal

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ ghc-cabal-install-solver.spec ++++++
--- /var/tmp/diff_new_pack.2YDtSs/_old  2024-10-28 15:19:48.974191600 +0100
+++ /var/tmp/diff_new_pack.2YDtSs/_new  2024-10-28 15:19:48.978191768 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package ghc-cabal-install-solver
 #
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2024 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -20,12 +20,13 @@
 %global pkgver %{pkg_name}-%{version}
 %bcond_with tests
 Name:           ghc-%{pkg_name}
-Version:        3.10.2.1
+Version:        3.10.3.0
 Release:        0
 Summary:        The command-line interface for Cabal and Hackage
 License:        BSD-3-Clause
 URL:            https://hackage.haskell.org/package/%{pkg_name}
 Source0:        
https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{version}.tar.gz
+Source1:        
https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/1.cabal#/%{pkg_name}.cabal
 BuildRequires:  ghc-Cabal-devel
 BuildRequires:  ghc-Cabal-prof
 BuildRequires:  ghc-Cabal-syntax-devel
@@ -47,6 +48,8 @@
 BuildRequires:  ghc-pretty-devel
 BuildRequires:  ghc-pretty-prof
 BuildRequires:  ghc-rpm-macros
+BuildRequires:  ghc-text-devel
+BuildRequires:  ghc-text-prof
 BuildRequires:  ghc-transformers-devel
 BuildRequires:  ghc-transformers-prof
 ExcludeArch:    %{ix86}
@@ -91,6 +94,7 @@
 
 %prep
 %autosetup -n %{pkg_name}-%{version}
+cp -p %{SOURCE1} %{pkg_name}.cabal
 
 %build
 %ghc_lib_build

++++++ cabal-install-solver-3.10.2.1.tar.gz -> 
cabal-install-solver-3.10.3.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cabal-install-solver-3.10.2.1/ChangeLog.md 
new/cabal-install-solver-3.10.3.0/ChangeLog.md
--- old/cabal-install-solver-3.10.2.1/ChangeLog.md      2001-09-09 
03:46:40.000000000 +0200
+++ new/cabal-install-solver-3.10.3.0/ChangeLog.md      2001-09-09 
03:46:40.000000000 +0200
@@ -1 +1 @@
-Please see 
https://github.com/haskell/cabal/blob/master/release-notes/cabal-install-3.10.2.0.md
+Please see 
https://github.com/haskell/cabal/blob/master/release-notes/cabal-install-3.10.3.0.md
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cabal-install-solver-3.10.2.1/cabal-install-solver.cabal 
new/cabal-install-solver-3.10.3.0/cabal-install-solver.cabal
--- old/cabal-install-solver-3.10.2.1/cabal-install-solver.cabal        
2001-09-09 03:46:40.000000000 +0200
+++ new/cabal-install-solver-3.10.3.0/cabal-install-solver.cabal        
2001-09-09 03:46:40.000000000 +0200
@@ -1,6 +1,6 @@
 cabal-version: 2.2
 name:          cabal-install-solver
-version:       3.10.2.1
+version:       3.10.3.0
 synopsis:      The command-line interface for Cabal and Hackage.
 description:
   The solver component used in cabal-install command-line program
@@ -14,7 +14,7 @@
 copyright:     2003-2023, Cabal Development Team
 category:      Distribution
 build-type:    Simple
-Extra-Source-Files:
+extra-doc-files:
   ChangeLog.md
 
 source-repository head
@@ -109,12 +109,13 @@
     , bytestring    >=0.10.6.0 && <0.13
     , Cabal         ^>=3.10
     , Cabal-syntax  ^>=3.10
-    , containers    >=0.5.6.2  && <0.7
+    , containers    >=0.5.6.2  && <0.8
     , edit-distance ^>= 0.2.2
-    , filepath      ^>=1.4.0.0
+    , filepath      ^>=1.4.0.0 || ^>=1.5.0.0
     , mtl           >=2.0      && <2.4
     , pretty        ^>=1.1
     , transformers  >=0.4.2.0  && <0.7
+    , text          (>= 1.2.3.0  && < 1.3) || (>= 2.0 && < 2.2)
 
   if flag(debug-expensive-assertions)
     cpp-options: -DDEBUG_EXPENSIVE_ASSERTIONS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cabal-install-solver-3.10.2.1/src/Distribution/Solver/Types/PkgConfigDb.hs 
new/cabal-install-solver-3.10.3.0/src/Distribution/Solver/Types/PkgConfigDb.hs
--- 
old/cabal-install-solver-3.10.2.1/src/Distribution/Solver/Types/PkgConfigDb.hs  
    2001-09-09 03:46:40.000000000 +0200
+++ 
new/cabal-install-solver-3.10.3.0/src/Distribution/Solver/Types/PkgConfigDb.hs  
    2001-09-09 03:46:40.000000000 +0200
@@ -1,5 +1,6 @@
 {-# LANGUAGE DeriveDataTypeable #-}
 {-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE LambdaCase         #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Distribution.Solver.Types.PkgConfigDb
@@ -23,17 +24,23 @@
 import Distribution.Solver.Compat.Prelude
 import Prelude ()
 
-import           Control.Exception (handle)
-import           Control.Monad     (mapM)
-import qualified Data.Map          as M
-import           System.FilePath   (splitSearchPath)
+import           Control.Exception        (handle)
+import           Control.Monad            (mapM)
+import           Data.ByteString          (ByteString)
+import qualified Data.ByteString.Lazy     as LBS
+import qualified Data.Map                 as M
+import qualified Data.Text                as T
+import qualified Data.Text.Encoding       as T
+import qualified Data.Text.Encoding.Error as T
+import           System.FilePath          (splitSearchPath)
 
 import Distribution.Compat.Environment          (lookupEnv)
 import Distribution.Package                     (PkgconfigName, 
mkPkgconfigName)
 import Distribution.Parsec
 import Distribution.Simple.Program
        (ProgramDb, getProgramOutput, pkgConfigProgram, needProgram, 
ConfiguredProgram)
-import Distribution.Simple.Program.Run          
(getProgramInvocationOutputAndErrors, programInvocation)
+import Distribution.Simple.Program.Run
+       (getProgramInvocationOutputAndErrors, programInvocation, 
getProgramInvocationLBSAndErrors)
 import Distribution.Simple.Utils                (info)
 import Distribution.Types.PkgconfigVersion
 import Distribution.Types.PkgconfigVersionRange
@@ -63,19 +70,53 @@
     case mpkgConfig of
       Nothing             -> noPkgConfig "Cannot find pkg-config program"
       Just (pkgConfig, _) -> do
-        pkgList <- lines <$> getProgramOutput verbosity pkgConfig 
["--list-all"]
-        -- The output of @pkg-config --list-all@ also includes a description
-        -- for each package, which we do not need.
-        let pkgNames = map (takeWhile (not . isSpace)) pkgList
-        (pkgVersions, _errs, exitCode) <-
+        -- To prevent malformed Unicode in the descriptions from crashing 
cabal,
+        -- read without interpreting any encoding first. (#9608)
+        (listAllOutput, listAllErrs, listAllExitcode) <-
+          getProgramInvocationLBSAndErrors verbosity (programInvocation 
pkgConfig ["--list-all"])
+        when (listAllExitcode /= ExitSuccess) $
+          ioError (userError ("pkg-config --list-all failed: " ++ listAllErrs))
+        let pkgList = LBS.split (fromIntegral (ord '\n')) listAllOutput
+        -- Now decode the package *names* to a String. The ones where decoding
+        -- failed end up in 'failedPkgNames'.
+        let (failedPkgNames, pkgNames) =
+              partitionEithers
+              -- Drop empty package names. This will handle empty lines
+              -- in pkg-config's output, including the spurious one
+              -- after the last newline (because of LBS.split).
+              . filter (either (const True) (not . null))
+              -- Try decoding strictly; if it fails, put the lenient
+              -- decoding in a Left for later reporting.
+              . map (\bsname ->
+                       let sbsname = LBS.toStrict bsname
+                       in case T.decodeUtf8' sbsname of
+                            Left _ -> Left (T.unpack (decodeUtf8LenientCompat 
sbsname))
+                            Right name -> Right (T.unpack name))
+              -- The output of @pkg-config --list-all@ also includes a
+              -- description for each package, which we do not need.
+              -- We don't use Data.Char.isSpace because that would also
+              -- include 0xA0, the non-breaking space, which can occur
+              -- in multi-byte UTF-8 sequences.
+              . map (LBS.takeWhile (not . isAsciiSpace))
+              $ pkgList
+        when (not (null failedPkgNames)) $
+          info verbosity ("Some pkg-config packages have names containing 
invalid unicode: " ++ intercalate ", " failedPkgNames)
+        (outs, _errs, exitCode) <-
                      getProgramInvocationOutputAndErrors verbosity
                        (programInvocation pkgConfig ("--modversion" : 
pkgNames))
-        case exitCode of
-          ExitSuccess -> (return . pkgConfigDbFromList . zip pkgNames) (lines 
pkgVersions)
-          -- if there's a single broken pc file the above fails, so we fall 
back into calling it individually
-          _ -> do
-             info verbosity ("call to pkg-config --modversion on all packages 
failed. Falling back to querying pkg-config individually on each package")
-             pkgConfigDbFromList . catMaybes <$> mapM (getIndividualVersion 
pkgConfig) pkgNames
+        let pkgVersions = lines outs
+        if exitCode == ExitSuccess && length pkgVersions == length pkgNames
+          then (return . pkgConfigDbFromList . zip pkgNames) pkgVersions
+          else
+          -- if there's a single broken pc file the above fails, so we fall 
back
+          -- into calling it individually
+          --
+          -- Also some implementations of @pkg-config@ do not provide more than
+          -- one package version, so if the returned list is shorter than the
+          -- requested one, we fall back to querying one by one.
+          do
+            info verbosity ("call to pkg-config --modversion on all packages 
failed. Falling back to querying pkg-config individually on each package")
+            pkgConfigDbFromList . catMaybes <$> mapM (getIndividualVersion 
pkgConfig) pkgNames
   where
     -- For when pkg-config invocation fails (possibly because of a
     -- too long command line).
@@ -97,6 +138,15 @@
          ExitSuccess -> Just (pkg, pkgVersion)
          _ -> Nothing
 
+    isAsciiSpace :: Word8 -> Bool
+    isAsciiSpace c = c `elem` map (fromIntegral . ord) " \t"
+
+    -- The decodeUtf8Lenient function is defined starting with text-2.0.1; this
+    -- function simply reimplements it. When the minimum supported GHC version
+    -- is >= 9.4, switch to decodeUtf8Lenient.
+    decodeUtf8LenientCompat :: ByteString -> T.Text
+    decodeUtf8LenientCompat = T.decodeUtf8With T.lenientDecode
+
 -- | Create a `PkgConfigDb` from a list of @(packageName, version)@ pairs.
 pkgConfigDbFromList :: [(String, String)] -> PkgConfigDb
 pkgConfigDbFromList pairs = (PkgConfigDb . M.fromList . map convert) pairs

++++++ cabal-install-solver.cabal ++++++
cabal-version: 2.2
name:          cabal-install-solver
version:       3.10.3.0
x-revision: 1
synopsis:      The command-line interface for Cabal and Hackage.
description:
  The solver component used in cabal-install command-line program

homepage:      http://www.haskell.org/cabal/
bug-reports:   https://github.com/haskell/cabal/issues
license:       BSD-3-Clause
license-file:  LICENSE
author:        Cabal Development Team (see AUTHORS file)
maintainer:    Cabal Development Team <[email protected]>
copyright:     2003-2023, Cabal Development Team
category:      Distribution
build-type:    Simple
extra-doc-files:
  ChangeLog.md

source-repository head
  type:     git
  location: https://github.com/haskell/cabal/
  subdir:   cabal-install-solver

flag debug-expensive-assertions
  description: Enable expensive assertions for testing or debugging
  default:     False
  manual:      True

flag debug-conflict-sets
  description: Add additional information to ConflictSets
  default:     False
  manual:      True

flag debug-tracetree
  description: Compile in support for tracetree (used to debug the solver)
  default:     False
  manual:      True

library
  default-language: Haskell2010
  hs-source-dirs:   src
  hs-source-dirs:   src-assertion
  ghc-options:
    -Wall -Wcompat -Wnoncanonical-monad-instances
    -fwarn-tabs -fwarn-incomplete-uni-patterns

  if impl(ghc <8.8)
    ghc-options: -Wnoncanonical-monadfail-instances
  if impl(ghc >=8.10)
    ghc-options: -Wunused-packages

  exposed-modules:
    Distribution.Client.Utils.Assertion

    Distribution.Solver.Compat.Prelude
    Distribution.Solver.Modular
    Distribution.Solver.Modular.Assignment
    Distribution.Solver.Modular.Builder
    Distribution.Solver.Modular.Configured
    Distribution.Solver.Modular.ConfiguredConversion
    Distribution.Solver.Modular.ConflictSet
    Distribution.Solver.Modular.Cycles
    Distribution.Solver.Modular.Dependency
    Distribution.Solver.Modular.Explore
    Distribution.Solver.Modular.Flag
    Distribution.Solver.Modular.Index
    Distribution.Solver.Modular.IndexConversion
    Distribution.Solver.Modular.LabeledGraph
    Distribution.Solver.Modular.Linking
    Distribution.Solver.Modular.Log
    Distribution.Solver.Modular.Message
    Distribution.Solver.Modular.MessageUtils
    Distribution.Solver.Modular.Package
    Distribution.Solver.Modular.Preference
    Distribution.Solver.Modular.PSQ
    Distribution.Solver.Modular.RetryLog
    Distribution.Solver.Modular.Solver
    Distribution.Solver.Modular.Tree
    Distribution.Solver.Modular.Validate
    Distribution.Solver.Modular.Var
    Distribution.Solver.Modular.Version
    Distribution.Solver.Modular.WeightedPSQ
    Distribution.Solver.Types.ComponentDeps
    Distribution.Solver.Types.ConstraintSource
    Distribution.Solver.Types.DependencyResolver
    Distribution.Solver.Types.Flag
    Distribution.Solver.Types.InstalledPreference
    Distribution.Solver.Types.InstSolverPackage
    Distribution.Solver.Types.LabeledPackageConstraint
    Distribution.Solver.Types.OptionalStanza
    Distribution.Solver.Types.PackageConstraint
    Distribution.Solver.Types.PackageFixedDeps
    Distribution.Solver.Types.PackageIndex
    Distribution.Solver.Types.PackagePath
    Distribution.Solver.Types.PackagePreferences
    Distribution.Solver.Types.PkgConfigDb
    Distribution.Solver.Types.Progress
    Distribution.Solver.Types.ResolverPackage
    Distribution.Solver.Types.Settings
    Distribution.Solver.Types.SolverId
    Distribution.Solver.Types.SolverPackage
    Distribution.Solver.Types.SourcePackage
    Distribution.Solver.Types.Variable

  build-depends:
    , array         >=0.4      && <0.6
    , base          >=4.10     && <4.20
    , bytestring    >=0.10.6.0 && <0.13
    , Cabal         ^>=3.10.3
    , Cabal-syntax  ^>=3.10
    , containers    >=0.5.6.2  && <0.8
    , edit-distance ^>= 0.2.2
    , filepath      ^>=1.4.0.0 || ^>=1.5.0.0
    , mtl           >=2.0      && <2.4
    , pretty        ^>=1.1
    , transformers  >=0.4.2.0  && <0.7
    , text          (>= 1.2.3.0  && < 1.3) || (>= 2.0 && < 2.2)

  if flag(debug-expensive-assertions)
    cpp-options: -DDEBUG_EXPENSIVE_ASSERTIONS

  if flag(debug-conflict-sets)
    cpp-options:   -DDEBUG_CONFLICT_SETS
    build-depends: base >=4.9

  if flag(debug-tracetree)
    cpp-options:   -DDEBUG_TRACETREE
    build-depends: tracetree ^>=0.1

Test-Suite unit-tests
   default-language: Haskell2010
   ghc-options: -rtsopts -threaded

   type: exitcode-stdio-1.0
   main-is: UnitTests.hs
   hs-source-dirs: tests
   other-modules:
     UnitTests.Distribution.Solver.Modular.MessageUtils

   build-depends:
     , base        >= 4.10  && <4.20
     , Cabal
     , Cabal-syntax
     , cabal-install-solver
     , tasty       >= 1.2.3 && <1.6
     , tasty-quickcheck
     , tasty-hunit >= 0.10

Reply via email to