Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package ghc-hackage-security for 
openSUSE:Factory checked in at 2026-06-28 21:06:07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-hackage-security (Old)
 and      /work/SRC/openSUSE:Factory/.ghc-hackage-security.new.11887 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ghc-hackage-security"

Sun Jun 28 21:06:07 2026 rev:48 rq:1362005 version:0.6.3.3

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/ghc-hackage-security/ghc-hackage-security.changes    
    2026-06-10 16:02:14.547317453 +0200
+++ 
/work/SRC/openSUSE:Factory/.ghc-hackage-security.new.11887/ghc-hackage-security.changes
     2026-06-28 21:06:47.242586149 +0200
@@ -1,0 +2,13 @@
+Tue Jun 23 15:23:13 UTC 2026 - Peter Simons <[email protected]>
+
+- Update hackage-security to version 0.6.3.3.
+  0.6.3.3
+  -------
+
+  * Remove `lukko` package flag. Now we unconditionally use 
`GHC.IO.Handle.Lock`
+    instead of the [`lukko` 
package](https://hackage.haskell.org/package/lukko).
+  * Allow `Cabal-3.18` and `Cabal-syntax-3.18`.
+  * Allow building against newer releases of other dependencies.
+  * Tested with GHC 8.4 - 9.14.
+
+-------------------------------------------------------------------

Old:
----
  hackage-security-0.6.3.2.tar.gz
  hackage-security.cabal

New:
----
  hackage-security-0.6.3.3.tar.gz

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

Other differences:
------------------
++++++ ghc-hackage-security.spec ++++++
--- /var/tmp/diff_new_pack.LlHNRG/_old  2026-06-28 21:06:49.086648285 +0200
+++ /var/tmp/diff_new_pack.LlHNRG/_new  2026-06-28 21:06:49.110649094 +0200
@@ -20,13 +20,12 @@
 %global pkgver %{pkg_name}-%{version}
 %bcond_with tests
 Name:           ghc-%{pkg_name}
-Version:        0.6.3.2
+Version:        0.6.3.3
 Release:        0
 Summary:        Hackage security library
 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/2.cabal#/%{pkg_name}.cabal
 BuildRequires:  ghc-Cabal-devel
 BuildRequires:  ghc-Cabal-prof
 BuildRequires:  ghc-Cabal-syntax-devel
@@ -138,7 +137,6 @@
 
 %prep
 %autosetup -n %{pkg_name}-%{version}
-cp -p %{SOURCE1} %{pkg_name}.cabal
 
 %build
 %ghc_lib_build

++++++ hackage-security-0.6.3.2.tar.gz -> hackage-security-0.6.3.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hackage-security-0.6.3.2/ChangeLog.md 
new/hackage-security-0.6.3.3/ChangeLog.md
--- old/hackage-security-0.6.3.2/ChangeLog.md   2001-09-09 03:46:40.000000000 
+0200
+++ new/hackage-security-0.6.3.3/ChangeLog.md   2001-09-09 03:46:40.000000000 
+0200
@@ -1,5 +1,14 @@
 See also http://pvp.haskell.org/faq
 
+0.6.3.3
+-------
+
+* Remove `lukko` package flag. Now we unconditionally use `GHC.IO.Handle.Lock`
+  instead of the [`lukko` package](https://hackage.haskell.org/package/lukko).
+* Allow `Cabal-3.18` and `Cabal-syntax-3.18`.
+* Allow building against newer releases of other dependencies.
+* Tested with GHC 8.4 - 9.14.
+
 0.6.3.2
 -------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hackage-security-0.6.3.2/hackage-security.cabal 
new/hackage-security-0.6.3.3/hackage-security.cabal
--- old/hackage-security-0.6.3.2/hackage-security.cabal 2001-09-09 
03:46:40.000000000 +0200
+++ new/hackage-security-0.6.3.3/hackage-security.cabal 2001-09-09 
03:46:40.000000000 +0200
@@ -1,6 +1,6 @@
 cabal-version:       1.18
 name:                hackage-security
-version:             0.6.3.2
+version:             0.6.3.3
 
 synopsis:            Hackage security library
 description:         The hackage security library provides both server and
@@ -32,8 +32,8 @@
 
 tested-with:
   GHC == 9.14.1
-  GHC == 9.12.2
-  GHC == 9.10.2
+  GHC == 9.12.4
+  GHC == 9.10.3
   GHC == 9.8.4
   GHC == 9.6.7
   GHC == 9.4.8
@@ -56,11 +56,6 @@
   manual: False
   default: False
 
-flag lukko
-  description: Use @lukko@ for file-locking, otherwise use @GHC.IO.Handle.Lock@
-  manual:      False
-  default:     False
-
 library
   -- Most functionality is exported through the top-level entry points .Client
   -- and .Server; the other exported modules are intended for qualified 
imports.
@@ -131,13 +126,8 @@
                        -- whatever versions are bundled with ghc:
                        ghc-prim          >= 0.5.2    && < 0.14
 
-  if flag(lukko)
-    build-depends:     lukko      >= 0.1     && < 0.2
-  else
-    build-depends:     base       >= 4.11
-
   if flag(Cabal-syntax)
-    build-depends: Cabal-syntax >= 3.7 && < 3.18
+    build-depends: Cabal-syntax >= 3.7 && < 3.20
   else
     build-depends: Cabal        >= 2.2.0.1 && < 2.6
                              || >= 3.0     && < 3.7,
@@ -202,8 +192,8 @@
                        zlib
 
   if flag(Cabal-syntax)
-    build-depends: Cabal        >= 3.7 && < 3.18,
-                   Cabal-syntax >= 3.7 && < 3.18
+    build-depends: Cabal        >= 3.7 && < 3.20,
+                   Cabal-syntax >= 3.7 && < 3.20
   else
     build-depends: Cabal        >= 2.2.0.1 && < 2.6
                              || >= 3.0     && < 3.7,
@@ -214,7 +204,7 @@
                          -- tasty-1.1.0.4 is the version in Stackage LTS 12.26 
(GHC 8.4)
                        tasty-hunit           == 0.10.*,
                        tasty-quickcheck      >= 0.10     && < 1,
-                       QuickCheck            >= 2.11     && < 2.17,
+                       QuickCheck            >= 2.11     && < 2.19,
                        aeson                 >= 1.4      && < 1.6 || >= 2.0 && 
< 2.3,
                        vector                >= 0.12     && < 0.14,
                        unordered-containers  >= 0.2.8.0  && < 0.3,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hackage-security-0.6.3.2/src/Hackage/Security/Util/IO.hs 
new/hackage-security-0.6.3.3/src/Hackage/Security/Util/IO.hs
--- old/hackage-security-0.6.3.2/src/Hackage/Security/Util/IO.hs        
2001-09-09 03:46:40.000000000 +0200
+++ new/hackage-security-0.6.3.3/src/Hackage/Security/Util/IO.hs        
2001-09-09 03:46:40.000000000 +0200
@@ -1,4 +1,3 @@
-{-# LANGUAGE CPP #-}
 module Hackage.Security.Util.IO (
     -- * Miscelleneous
     getFileSize
@@ -18,14 +17,7 @@
 
 import Hackage.Security.Util.Path
 
-#ifdef MIN_VERSION_lukko
-import Lukko (FD, fileLockingSupported, fdOpen, fdClose, fdLock, fdUnlock, 
LockMode(ExclusiveLock))
-#else
-import GHC.IO.Handle.Lock (hLock, LockMode(ExclusiveLock), 
FileLockingNotSupported)
-#if MIN_VERSION_base(4,11,0)
-import GHC.IO.Handle.Lock (hUnlock)
-#endif
-#endif
+import GHC.IO.Handle.Lock (hLock, hUnlock, LockMode(ExclusiveLock), 
FileLockingNotSupported)
 
 
{-------------------------------------------------------------------------------
   Miscelleneous
@@ -85,33 +77,6 @@
       logger (WithDirLockEventPost lock)
       return h
 
-#ifdef MIN_VERSION_lukko
-    takeLock :: IO FD
-    takeLock
-        | fileLockingSupported = do
-            h <- fdOpen lock'
-            wrapLog (fdLock h ExclusiveLock `onException` fdClose h)
-            return h
-        | otherwise = wrapLog takeDirLock
-      where
-        takeDirLock :: IO FD
-        takeDirLock = handle onCreateDirError $ do
-            createDirectory lock
-            return (undefined :: FD)
-
-        onCreateDirError :: IOError -> IO FD
-        onCreateDirError ioe
-          | isAlreadyExistsError ioe = threadDelay (1*1000*1000) >> takeDirLock
-          | otherwise = fail (me++"error creating directory lock: "++show ioe)
-
-    releaseLock h
-        | fileLockingSupported = do
-            fdUnlock h
-            fdClose h
-        | otherwise =
-            removeDirectory lock
-
-#else
     takeLock = do
         h <- openFile lock' ReadWriteMode
         wrapLog $ handle (fallbackToDirLock h) $ do
@@ -142,12 +107,9 @@
             (me++"cannot remove lock file before directory lock fallback")
 
     releaseLock (Just h) =
-#if MIN_VERSION_base(4,11,0)
         hUnlock h >>
-#endif
         hClose h
     releaseLock Nothing  = removeDirectory lock
-#endif
 
 
{-------------------------------------------------------------------------------
   Debugging
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hackage-security-0.6.3.2/src/Hackage/Security/Util/Path.hs 
new/hackage-security-0.6.3.3/src/Hackage/Security/Util/Path.hs
--- old/hackage-security-0.6.3.2/src/Hackage/Security/Util/Path.hs      
2001-09-09 03:46:40.000000000 +0200
+++ new/hackage-security-0.6.3.3/src/Hackage/Security/Util/Path.hs      
2001-09-09 03:46:40.000000000 +0200
@@ -71,6 +71,9 @@
   , fromURIPath
   , uriPath
   , modifyUriPath
+  -- * Internals
+  , mkPathNative
+  , unPathNative
     -- * Re-exports
   , IOMode(..)
   , BufferMode(..)
@@ -118,10 +121,17 @@
   deriving (Show, Eq, Ord)
 
 mkPathNative :: FilePath -> Path a
-mkPathNative = Path . FP.Posix.joinPath . FP.Native.splitDirectories
+mkPathNative = Path . canonicalizePathSeparator
 
 unPathNative :: Path a -> FilePath
-unPathNative (Path fp) = FP.Native.joinPath . FP.Posix.splitDirectories $ fp
+unPathNative (Path fp) = fp
+
+canonicalizePathSeparator :: FilePath -> FilePath
+canonicalizePathSeparator = map (replaceSeparator)
+ where
+  replaceSeparator c
+    | FP.Native.isPathSeparator c = '/'
+    | otherwise = c
 
 mkPathPosix :: FilePath -> Path a
 mkPathPosix = Path
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hackage-security-0.6.3.2/tests/TestSuite.hs 
new/hackage-security-0.6.3.3/tests/TestSuite.hs
--- old/hackage-security-0.6.3.2/tests/TestSuite.hs     2001-09-09 
03:46:40.000000000 +0200
+++ new/hackage-security-0.6.3.3/tests/TestSuite.hs     2001-09-09 
03:46:40.000000000 +0200
@@ -9,7 +9,7 @@
 import Network.URI ( URI, parseURI )
 import Test.Tasty ( defaultMain, testGroup, TestTree )
 import Test.Tasty.HUnit ( testCase, (@?=), assertEqual, assertFailure, 
Assertion )
-import Test.Tasty.QuickCheck ( testProperty )
+import Test.Tasty.QuickCheck ( testProperty, Property, (===), property )
 import System.IO.Temp (withSystemTempDirectory)
 import qualified Codec.Archive.Tar.Entry    as Tar
 import qualified Data.ByteString.Lazy.Char8 as BS
@@ -72,6 +72,9 @@
         , testProperty "prop_canonical_pretty"    JSON.prop_canonical_pretty
         , testProperty "prop_aeson_canonical"     JSON.prop_aeson_canonical
         ]
+    , testGroup "Path" [
+          testProperty "Hackage.Security.Util.Path.mkPathNative" 
prop_mkPathNative
+        ]
   ]
 
 
{-------------------------------------------------------------------------------
@@ -547,3 +550,16 @@
 mkPackageName :: String -> PackageName
 mkPackageName = PackageName
 #endif
+
+{-------------------------------------------------------------------------------
+  Path tests
+-------------------------------------------------------------------------------}
+
+-- | Disclaimer: This test uses the vanilla generator for @type 'FilePath' = 
String@
+-- and may thus been ineffective in establishing the desired round-trip 
property for
+-- 'mkPathNative' and 'unPathNative' with sufficient probability.
+--
+-- Discussion at 
<https://github.com/haskell/hackage-security/pull/336#discussion_r2750538855>
+
+prop_mkPathNative :: Property
+prop_mkPathNative = property $ \(fp :: FilePath) -> (mkPathNative . 
unPathNative . mkPathNative) fp === mkPathNative fp

Reply via email to