diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,8 @@
+# 0.4.13 (2025-11-10)
+- ProvReqs: handle cmake directories as used by KDE (#5)
+- ProvReqs: create python3dist dynamic provides (#6)
+- depsGraphDeps bugfix: include the packages within the deps graphs
+
 # 0.4.12 (2024-08-04)
 - fix ordering of rust crates and rubygems
   by mapping their dynamic BRs to package names
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -14,7 +14,7 @@
 `$ rpmbuild-order --version`
 
 ```
-0.4.12
+0.4.13
 ```
 `$ rpmbuild-order --help`
 
@@ -30,7 +30,7 @@
   --version                Show version
 
 Available commands:
-  sort                     sort packages
+  sort                     sort packages in build order
   deps                     sort dependencies in neighbouring package dirs
   rdeps                    sort dependents in neighbouring package dirs
   layers                   ordered output of dependency layers
diff --git a/rpmbuild-order.cabal b/rpmbuild-order.cabal
--- a/rpmbuild-order.cabal
+++ b/rpmbuild-order.cabal
@@ -1,12 +1,12 @@
 Name:             rpmbuild-order
-Version:          0.4.12
+Version:          0.4.13
 License:          BSD3
 License-File:     LICENSE
 Author:           Jens Petersen <petersen@redhat.com>,
                   Henning Thielemann <haskell@henning-thielemann.de>
 Maintainer:       Jens Petersen <petersen@redhat.com>
 Copyright:        2010-2018  Henning Thielemann,
-                  2018-2024 Jens Petersen <petersen@redhat.com>
+                  2018-2025 Jens Petersen <petersen@redhat.com>
 Category:         Distribution
 Homepage:         https://github.com/juhp/rpmbuild-order
 Bug-reports:      https://github.com/juhp/rpmbuild-order/issues
@@ -80,6 +80,7 @@
                  fgl >= 5.5.4,
                  graphviz,
                  regex-tdfa,
+                 safe,
                  simple-cmd >= 0.2.3
   HS-Source-Dirs:      src
   default-language:    Haskell2010
diff --git a/src/Distribution/RPM/Build/Graph.hs b/src/Distribution/RPM/Build/Graph.hs
--- a/src/Distribution/RPM/Build/Graph.hs
+++ b/src/Distribution/RPM/Build/Graph.hs
@@ -432,8 +432,13 @@
   unlessM (and <$> mapM doesDirectoryExist pkgs) $
     errorWithoutStackTrace "Please use package directory paths"
   -- filter out dotfiles
-  createGraph3 ignoredBRs rpmopts verbose lenient (not rev) mdir (filter (\d -> d `notElem` excludedPkgs && head d /= '.') deps) >>=
+  createGraph3 ignoredBRs rpmopts verbose lenient (not rev) mdir
+    (filter (\d -> d `notElem` excludedPkgs && not ("." `isPrefixOf` d)) $ pkgsAndDeps pkgs deps) >>=
     createGraph2 rpmopts verbose lenient True mdir . dependencyNodes pkgs
+  where
+    pkgsAndDeps [] ds = ds
+    pkgsAndDeps (p:ps) ds =
+      pkgsAndDeps ps $ if p `elem` ds then ds else p : ds
 
 -- | Used to control the output from sortGraph
 data Components = Parallel -- ^ separate independent stacks
diff --git a/src/Distribution/RPM/Build/ProvReqs.hs b/src/Distribution/RPM/Build/ProvReqs.hs
--- a/src/Distribution/RPM/Build/ProvReqs.hs
+++ b/src/Distribution/RPM/Build/ProvReqs.hs
@@ -13,6 +13,7 @@
 import qualified Data.CaseInsensitive as CI
 import Data.List.Extra
 import Data.Maybe (mapMaybe)
+import Safe (headMay)
 import SimpleCmd (cmdFull, cmdLines, cmdStdErr, egrep_, error',
                   grep, warning, (+-+))
 import SimpleCmd.Git (isGitDir)
@@ -47,40 +48,41 @@
     case mcontent of
       Nothing -> return Nothing
       Just content ->
-        let pkg = takeBaseName spec
-        in fmap Just <$> extractMetadata pkg ([],[]) $ lines content
+        fmap Just <$> extractMetadata ([],[]) $ lines content
   where
-    extractMetadata :: FilePath -> ([String],[String]) -> [String]
+    pkg = takeBaseName spec
+
+    extractMetadata :: ([String],[String]) -> [String]
                     -> IO ([String],[String])
-    extractMetadata _ (provs,brs) [] =
+    extractMetadata (provs,brs) [] =
       return (provs, mapMaybe simplifyDep brs)
-    extractMetadata pkg acc@(provs,brs) (l:ls) =
+    extractMetadata acc@(provs,brs) (l:ls) =
       case words l of
-        [] -> extractMetadata pkg acc ls
+        [] -> extractMetadata acc ls
         [w]
           | w =~ ("^/usr/(lib(64)?|share)/pkgconfig/.*\\.pc" :: String) ->
               let pc = metaName "pkgconfig" $ takeBaseName w
-              in extractMetadata pkg (pc : provs, brs) ls
-          | w =~ ("^/usr/(lib(64)?|share)/cmake/[^/]*$" :: String) ->
-              let p = takeFileName w
+              in extractMetadata (pc : provs, brs) ls
+          | w =~ ("^/usr/(lib(64)?|share)/cmake/[^/]*/?$" :: String) ->
+              let p = takeFileName $ dropTrailingPathSeparator w
                   cm = map (metaName "cmake") $
                        if lower p == p then [p] else [p, lower p]
-              in extractMetadata pkg (provs ++ cm, brs) ls
-          | otherwise -> extractMetadata pkg acc ls
+              in extractMetadata (provs ++ cm, brs) ls
+          | otherwise -> extractMetadata acc ls
         (w:w':ws) ->
             case CI.mk w of
               "BuildRequires:" ->
                 -- FIXME could be more than one package: parse ws
-                extractMetadata pkg (provs, w':brs) ls
-              "Name:" -> extractMetadata pkg (w' : provs, brs) ls
-              "Provides:" -> extractMetadata pkg (w' : provs, brs) ls
+                extractMetadata (provs, w':brs) ls
+              "Name:" -> extractMetadata (w' : provs, brs) ls
+              "Provides:" -> extractMetadata (w' : provs, brs) ls
               "%package" ->
                 let subpkg =
                       if null ws
                       then pkg ++ '-' : w'
                       else last ws
-                in extractMetadata pkg (subpkg : provs, brs) ls
-              _ -> extractMetadata pkg acc ls
+                in extractMetadata (subpkg : provs, brs) ls
+              _ -> extractMetadata acc ls
 
     rpmspecParse :: IO (Maybe String)
     rpmspecParse = do
@@ -91,24 +93,30 @@
         else if lenient then return Nothing else exitFailure
 
     dynProvides :: IO [String]
-    dynProvides =
-      if "golang-" `isPrefixOf` takeBaseName spec
-      then do
-        macro <- grep "%global goipath" spec
-        return $
-          case macro of
-            [def] -> ["golang(" ++ last (words def) ++ ")"]
-            _ -> error' $ "failed to find %goipath in" +-+ spec
-      else return []
+    dynProvides
+      | "python-" `isPrefixOf` pkg = do
+          let dist = dropPrefix "python-" pkg
+          return ["python3dist(" ++ dist ++ ")"]
+      | "golang-" `isPrefixOf` pkg = do
+          macro <- grep "%global goipath" spec
+          return $
+            case macro of
+              [def] -> ["golang(" ++ last (words def) ++ ")"]
+              _ -> error' $ "failed to find %goipath in" +-+ spec
+      | otherwise = return []
 
     simplifyDep br =
-      case (head . words) br of
-        '(':dep -> simplifyDep dep
-        dep -> case splitOn "(" (dropSuffix ")" dep) of
-          ("rpmlib":_) -> Nothing
-          ("crate":[crate]) -> Just $ "rust-" ++ replace "/" "+" crate ++ "-devel"
-          ("rubygem":[gem]) -> Just $ "rubygem-" ++ gem
-          _ -> Just dep
+      case (headMay . words) br of
+        Nothing -> Nothing
+        Just pri ->
+          case pri of
+            '(':dep -> simplifyDep dep
+            dep ->
+              case splitOn "(" (dropSuffix ")" dep) of
+                ("rpmlib":_) -> Nothing
+                ("crate":[crate]) -> Just $ "rust-" ++ replace "/" "+" crate ++ "-devel"
+                ("rubygem":[gem]) -> Just $ "rubygem-" ++ gem
+                _ -> Just dep
 
 rpmspecDynBuildRequires :: FilePath -> IO [String]
 rpmspecDynBuildRequires spec =
@@ -139,7 +147,7 @@
   (ok, out, err) <- cmdFull "rpmspec" (["-q", "--provides"] ++ rpmopts ++ [spec]) ""
   unless (null err) $ warning err
   if ok
-    then return $ map (head . words) $ lines out
+    then return $ map (fst . word1) $ lines out
     else if lenient then return [] else exitFailure
 
 metaName :: String -> String -> String
diff --git a/src/Main.hs b/src/Main.hs
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -28,7 +28,7 @@
   simpleCmdArgs (Just version) "Order packages by build dependencies"
   "Sort package sources (spec files) in build dependency order" $
   subcommands
-  [ Subcommand "sort" "sort packages" $
+  [ Subcommand "sort" "sort packages in build order" $
     sortPackages <$> rpmOpts <*> verboseOpt <*> lenientOpt <*> componentsOpt <*> subdirOpt <*> pkgArgs
   , Subcommand "deps" "sort dependencies in neighbouring package dirs" $
     depsPackages False <$> rpmOpts <*> verboseOpt <*> excludeOpts <*> ignoredBRopts <*> lenientOpt <*> combineOpt <*> subdirOpt <*> pkgArgs
diff --git a/test/pkgs/A/A.spec b/test/pkgs/A/A.spec
--- a/test/pkgs/A/A.spec
+++ b/test/pkgs/A/A.spec
@@ -14,6 +14,10 @@
 %description -n C-A
 A support for C
 
+%files
+
+%files -n C-A
+
 %changelog
 * Wed Jul 29 13:38:27 +08 2020 Jens Petersen <petersen@redhat.com>
 -
diff --git a/test/pkgs/B/B.spec b/test/pkgs/B/B.spec
--- a/test/pkgs/B/B.spec
+++ b/test/pkgs/B/B.spec
@@ -22,6 +22,8 @@
 
 %files
 
+%files devel
+
 %changelog
 * Wed Jul 29 13:38:27 +08 2020 Jens Petersen <petersen@redhat.com>
 -
diff --git a/test/pkgs/cmake/A/A.spec b/test/pkgs/cmake/A/A.spec
--- a/test/pkgs/cmake/A/A.spec
+++ b/test/pkgs/cmake/A/A.spec
@@ -8,6 +8,8 @@
 %description
 Test package A pkgconfig
 
+%files
+
 %changelog
 * Wed Jul 29 13:38:27 +08 2020 Jens Petersen <petersen@redhat.com>
 -
diff --git a/test/pkgs/dynbr/A/A.spec b/test/pkgs/dynbr/A/A.spec
--- a/test/pkgs/dynbr/A/A.spec
+++ b/test/pkgs/dynbr/A/A.spec
@@ -16,6 +16,10 @@
 %description -n C-A
 A support for C
 
+%files
+
+%files -n C-A
+
 %changelog
 * Wed Jul 29 13:38:27 +08 2020 Jens Petersen <petersen@redhat.com>
 -
diff --git a/test/pkgs/pkgconf/A/A.spec b/test/pkgs/pkgconf/A/A.spec
--- a/test/pkgs/pkgconf/A/A.spec
+++ b/test/pkgs/pkgconf/A/A.spec
@@ -8,6 +8,8 @@
 %description
 Test package A pkgconfig
 
+%files
+
 %changelog
 * Wed Jul 29 13:38:27 +08 2020 Jens Petersen <petersen@redhat.com>
 -
