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-11-06 19:48:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-hackage-security (Old)
 and      /work/SRC/openSUSE:Factory/.ghc-hackage-security.new.3759290 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ghc-hackage-security"

Fri Nov  6 19:48:55 2026 rev:49 rq:1395534 version:0.6.4.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/ghc-hackage-security/ghc-hackage-security.changes    
    2026-06-28 21:06:47.242586149 +0200
+++ 
/work/SRC/openSUSE:Factory/.ghc-hackage-security.new.3759290/ghc-hackage-security.changes
   2026-11-06 19:55:28.232886182 +0100
@@ -1,0 +2,11 @@
+Mon Aug  3 21:28:45 UTC 2026 - Peter Simons <[email protected]>
+
+- Update hackage-security to version 0.6.4.0.
+  0.6.4.0
+  -------
+
+  * Make hackageIndexLayout faster
+  * Stop using lukko
+  * Fix bug in unPathNative
+
+-------------------------------------------------------------------

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

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

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

Other differences:
------------------
++++++ ghc-hackage-security.spec ++++++
--- /var/tmp/diff_new_pack.CQ5ZT3/_old  2026-11-06 19:55:29.384934419 +0100
+++ /var/tmp/diff_new_pack.CQ5ZT3/_new  2026-11-06 19:55:29.386934503 +0100
@@ -20,7 +20,7 @@
 %global pkgver %{pkg_name}-%{version}
 %bcond_with tests
 Name:           ghc-%{pkg_name}
-Version:        0.6.3.3
+Version:        0.6.4.0
 Release:        0
 Summary:        Hackage security library
 License:        BSD-3-Clause

++++++ hackage-security-0.6.3.3.tar.gz -> hackage-security-0.6.4.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hackage-security-0.6.3.3/ChangeLog.md 
new/hackage-security-0.6.4.0/ChangeLog.md
--- old/hackage-security-0.6.3.3/ChangeLog.md   2001-09-09 03:46:40.000000000 
+0200
+++ new/hackage-security-0.6.4.0/ChangeLog.md   2001-09-09 03:46:40.000000000 
+0200
@@ -1,5 +1,12 @@
 See also http://pvp.haskell.org/faq
 
+0.6.4.0
+-------
+
+* Make hackageIndexLayout faster
+* Stop using lukko
+* Fix bug in unPathNative
+
 0.6.3.3
 -------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hackage-security-0.6.3.3/hackage-security.cabal 
new/hackage-security-0.6.4.0/hackage-security.cabal
--- old/hackage-security-0.6.3.3/hackage-security.cabal 2001-09-09 
03:46:40.000000000 +0200
+++ new/hackage-security-0.6.4.0/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.3
+version:             0.6.4.0
 
 synopsis:            Hackage security library
 description:         The hackage security library provides both server and
@@ -205,7 +205,7 @@
                        tasty-hunit           == 0.10.*,
                        tasty-quickcheck      >= 0.10     && < 1,
                        QuickCheck            >= 2.11     && < 2.19,
-                       aeson                 >= 1.4      && < 1.6 || >= 2.0 && 
< 2.3,
+                       aeson                 >= 1.4      && < 1.6 || >= 2.0 && 
< 2.4,
                        vector                >= 0.12     && < 0.14,
                        unordered-containers  >= 0.2.8.0  && < 0.3,
                        temporary             >= 1.2      && < 1.4
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hackage-security-0.6.3.3/src/Hackage/Security/TUF/Layout/Index.hs 
new/hackage-security-0.6.4.0/src/Hackage/Security/TUF/Layout/Index.hs
--- old/hackage-security-0.6.3.3/src/Hackage/Security/TUF/Layout/Index.hs       
2001-09-09 03:46:40.000000000 +0200
+++ new/hackage-security-0.6.4.0/src/Hackage/Security/TUF/Layout/Index.hs       
2001-09-09 03:46:40.000000000 +0200
@@ -10,9 +10,12 @@
   ) where
 
 import Prelude
+import Data.Char (ord)
 import Data.Kind (Type)
 import Distribution.Package
 import Distribution.Text
+import Distribution.Types.Version (mkVersion)
+import System.FilePath.Posix (isPathSeparator)
 
 import Hackage.Security.TUF.Paths
 import Hackage.Security.TUF.Signed
@@ -91,17 +94,38 @@
     fromFragments :: [String] -> IndexPath
     fromFragments = rootPath . joinFragments
 
+    -- This function is called in a hot loop, take care when modifying it.
+    -- Especially avoid 'splitFragments' / 'splitDirectories' and other 
high-level helpers,
+    -- they are very slow.
     fromPath :: IndexPath -> Maybe (Some IndexFile)
-    fromPath fp = case splitFragments (unrootPath fp) of
-      [pkg, version, _file] -> do
-        pkgId <- simpleParse (pkg ++ "-" ++ version)
-        case takeExtension fp of
-          ".cabal"   -> return $ Some $ IndexPkgCabal    pkgId
-          ".json"    -> return $ Some $ IndexPkgMetadata pkgId
-          _otherwise -> Nothing
-      [pkg, "preferred-versions"] ->
-        Some . IndexPkgPrefs <$> simpleParse pkg
-      _otherwise -> Nothing
+    fromPath fp = case break isPathSeparator (toUnrootedFilePath (unrootPath 
fp)) of
+      (pkg, "/preferred-versions") ->
+        return $ Some $ IndexPkgPrefs $ mkPackageName pkg
+      (pkg, rest) -> case break isPathSeparator (drop 1 rest) of
+        (_, []) -> Nothing
+        (version, basename) -> do
+          let pkgName = mkPackageName pkg
+              pkgVersion = mkVersion $ readVersion version
+              pkgId = PackageIdentifier { pkgName, pkgVersion }
+          case reverse basename of
+            -- ".cabal" reversed
+            'l' : 'a' : 'b' : 'a' : 'c' : '.' : _ ->
+              return $ Some $ IndexPkgCabal pkgId
+            -- ".json" reversed
+            'n' : 'o' : 's' : 'j' : '.' : _ ->
+              return $ Some $ IndexPkgMetadata pkgId
+            _ -> Nothing
+
+-- Convert "3.12.1.0" to [3,12,1,0].
+-- Copied from hackage-revdeps package.
+readVersion :: String -> [Int]
+readVersion = (\(acc, _mult, rest) -> acc : rest) . foldr go (0, 1, [])
+  where
+    go c (acc, mult, rest)
+      | fromIntegral d < (10 :: Word) = (acc + d * mult, mult * 10, rest)
+      | otherwise = (0, 1, acc : rest)
+      where
+        d = ord c - ord '0'
 
 
{-------------------------------------------------------------------------------
   Utility

Reply via email to