Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package createrepo_c for openSUSE:Factory 
checked in at 2026-03-28 20:13:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/createrepo_c (Old)
 and      /work/SRC/openSUSE:Factory/.createrepo_c.new.8177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "createrepo_c"

Sat Mar 28 20:13:06 2026 rev:26 rq:1342638 version:1.2.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/createrepo_c/createrepo_c.changes        
2026-02-10 21:10:39.719136667 +0100
+++ /work/SRC/openSUSE:Factory/.createrepo_c.new.8177/createrepo_c.changes      
2026-03-28 20:14:15.147655017 +0100
@@ -1,0 +2,9 @@
+Wed Mar 25 21:44:53 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 1.2.3:
+  * Properly guard code with CR_DELTA_RPM_SUPPORT in missed out places
+  * Restore compatibility with RPM 4.14.3
+  * Add cr_HeaderReadingFlags flags: don't load file digests and all set
+  * package_from_rpm: accept optional header_reading_flags
+
+-------------------------------------------------------------------

Old:
----
  createrepo_c-1.2.2.tar.gz

New:
----
  createrepo_c-1.2.3.tar.gz

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

Other differences:
------------------
++++++ createrepo_c.spec ++++++
--- /var/tmp/diff_new_pack.ed9tJE/_old  2026-03-28 20:14:15.747679781 +0100
+++ /var/tmp/diff_new_pack.ed9tJE/_new  2026-03-28 20:14:15.751679946 +0100
@@ -45,7 +45,7 @@
 %bcond_without as_createrepo
 %endif
 Name:           createrepo_c
-Version:        1.2.2
+Version:        1.2.3
 Release:        0
 Summary:        RPM repository metadata generation utility
 License:        GPL-2.0-or-later

++++++ createrepo_c-1.2.2.tar.gz -> createrepo_c-1.2.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/createrepo_c-1.2.2/.github/workflows/ci-python.yml 
new/createrepo_c-1.2.3/.github/workflows/ci-python.yml
--- old/createrepo_c-1.2.2/.github/workflows/ci-python.yml      2026-01-19 
08:23:36.000000000 +0100
+++ new/createrepo_c-1.2.3/.github/workflows/ci-python.yml      2026-03-20 
07:44:28.000000000 +0100
@@ -8,7 +8,7 @@
     runs-on: ubuntu-latest
     container: fedora:latest
     steps:
-      - uses: actions/checkout@v4
+      - uses: actions/checkout@v6
 
       - name: Install dependencies
         run: |
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/createrepo_c-1.2.2/.github/workflows/release-python.yml 
new/createrepo_c-1.2.3/.github/workflows/release-python.yml
--- old/createrepo_c-1.2.2/.github/workflows/release-python.yml 2026-01-19 
08:23:36.000000000 +0100
+++ new/createrepo_c-1.2.3/.github/workflows/release-python.yml 2026-03-20 
07:44:28.000000000 +0100
@@ -11,7 +11,7 @@
     runs-on: ubuntu-latest
     container: fedora:latest
     steps:
-    - uses: actions/checkout@v4
+    - uses: actions/checkout@v6
 
     - name: Install dependencies
       run: |
@@ -29,7 +29,7 @@
         pip install dist/*.tar.gz
         pytest --verbose --color=yes tests/python/tests/
 
-    - uses: actions/upload-artifact@v4
+    - uses: actions/upload-artifact@v6
       with:
         name: source
         path: dist/*.tar.gz
@@ -46,16 +46,16 @@
     runs-on: ${{ matrix.os }}
 
     steps:
-    - uses: actions/checkout@v4
+    - uses: actions/checkout@v6
 
     # setup Python for cibuildwheel
     - name: Set up Python
-      uses: actions/setup-python@v5
+      uses: actions/setup-python@v6
       with:
         python-version: '3.x'
 
     - name: Build wheels for CPython
-      uses: pypa/[email protected]
+      uses: pypa/[email protected]
       env:
         CIBW_ARCHS: auto64
         CIBW_SKIP: "pp* *-musllinux_* cp36* cp37* cp38*"  # no PyPy or musl 
builds, no older Python versions
@@ -67,7 +67,7 @@
         CIBW_TEST_COMMAND: |
           pytest --verbose --color=yes {project}/tests/python/tests/
 
-    - uses: actions/upload-artifact@v4
+    - uses: actions/upload-artifact@v6
       with:
         name: ${{ matrix.arch }}
         path: ./wheelhouse/*.whl
@@ -79,7 +79,7 @@
     needs: [build_bdist, build_sdist]
     runs-on: ubuntu-latest
     steps:
-      - uses: actions/download-artifact@v4
+      - uses: actions/download-artifact@v6
         with:
           merge-multiple: true
           path: dist
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/createrepo_c-1.2.2/.packit.yaml 
new/createrepo_c-1.2.3/.packit.yaml
--- old/createrepo_c-1.2.2/.packit.yaml 2026-01-19 08:23:36.000000000 +0100
+++ new/createrepo_c-1.2.3/.packit.yaml 2026-03-20 07:44:28.000000000 +0100
@@ -10,13 +10,15 @@
       - epel-9
       - epel-10
       - fedora-all
+      - fedora-eln
   - job: tests
     trigger: pull_request
     identifier: "createrepo_c-tests"
     targets:
       # EPELs fail now for unrelated reasons
       - fedora-all
+      - fedora-eln
     fmf_url: https://github.com/rpm-software-management/ci-dnf-stack.git
-    fmf_ref: enable-tmt-dnf-4-stack
+    fmf_ref: main
     tmt_plan: "^/plans/integration/behave-createrepo_c$"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/createrepo_c-1.2.2/CMakeLists.txt 
new/createrepo_c-1.2.3/CMakeLists.txt
--- old/createrepo_c-1.2.2/CMakeLists.txt       2026-01-19 08:23:36.000000000 
+0100
+++ new/createrepo_c-1.2.3/CMakeLists.txt       2026-03-20 07:44:28.000000000 
+0100
@@ -77,6 +77,11 @@
     include_directories (${DRPM_INCLUDE_DIRS})
     ADD_DEFINITIONS("-DCR_DELTA_RPM_SUPPORT")
 ENDIF (ENABLE_DRPM)
+IF (ENABLE_DRPM)
+    SET (ENABLE_DRPM_BASH 1)
+ELSE ()
+    SET (ENABLE_DRPM_BASH 0)
+ENDIF ()
 
 # option to enable/disable python support
 OPTION (ENABLE_PYTHON "Enable python support?" ON)
@@ -125,18 +130,19 @@
 
 OPTION(ENABLE_BASHCOMP "Install Bash autocompletions?" ON)
 IF (ENABLE_BASHCOMP)
+    CONFIGURE_FILE(createrepo_c.bash.in ${CMAKE_BINARY_DIR}/createrepo_c.bash 
@ONLY)
     pkg_check_modules(BASHCOMP bash-completion)
     IF (BASHCOMP_FOUND)
         execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} 
--variable=completionsdir bash-completion OUTPUT_VARIABLE BASHCOMP_DIR 
OUTPUT_STRIP_TRAILING_WHITESPACE)
         message("Bash completion directory: ${BASHCOMP_DIR}")
-        INSTALL(FILES createrepo_c.bash DESTINATION ${BASHCOMP_DIR} RENAME 
createrepo_c)
+        INSTALL(FILES ${CMAKE_BINARY_DIR}/createrepo_c.bash DESTINATION 
${BASHCOMP_DIR} RENAME createrepo_c)
         INSTALL(CODE "
             execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink 
createrepo_c \$ENV{DESTDIR}${BASHCOMP_DIR}/mergerepo_c)
             execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink 
createrepo_c \$ENV{DESTDIR}${BASHCOMP_DIR}/modifyrepo_c)
             execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink 
createrepo_c \$ENV{DESTDIR}${BASHCOMP_DIR}/sqliterepo_c)
             ")
     ELSEIF (BASHCOMP_FOUND)
-        INSTALL(FILES createrepo_c.bash DESTINATION "/etc/bash_completion.d")
+        INSTALL(FILES ${CMAKE_BINARY_DIR}/createrepo_c.bash DESTINATION 
"/etc/bash_completion.d")
         message("Bash completion directory: /etc/bash_completion.d")
     ENDIF (BASHCOMP_FOUND)
 ENDIF (ENABLE_BASHCOMP)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/createrepo_c-1.2.2/README.md 
new/createrepo_c-1.2.3/README.md
--- old/createrepo_c-1.2.2/README.md    2026-01-19 08:23:36.000000000 +0100
+++ new/createrepo_c-1.2.3/README.md    2026-03-20 07:44:28.000000000 +0100
@@ -84,7 +84,7 @@
 
 ### ``-DENABLE_DRPM=ON``
 
-Enable DeltaRPM support using drpm library (Default: ON)
+Enable DeltaRPM support using drpm library (Default: OFF)
 
 Adds support for creating DeltaRPMs and incorporating them
 into the repository.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/createrepo_c-1.2.2/VERSION.cmake 
new/createrepo_c-1.2.3/VERSION.cmake
--- old/createrepo_c-1.2.2/VERSION.cmake        2026-01-19 08:23:36.000000000 
+0100
+++ new/createrepo_c-1.2.3/VERSION.cmake        2026-03-20 07:44:28.000000000 
+0100
@@ -1,3 +1,3 @@
 SET(CR_MAJOR "1")
 SET(CR_MINOR "2")
-SET(CR_PATCH "2")
+SET(CR_PATCH "3")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/createrepo_c-1.2.2/createrepo_c.bash 
new/createrepo_c-1.2.3/createrepo_c.bash
--- old/createrepo_c-1.2.2/createrepo_c.bash    2026-01-19 08:23:36.000000000 
+0100
+++ new/createrepo_c-1.2.3/createrepo_c.bash    1970-01-01 01:00:00.000000000 
+0100
@@ -1,185 +0,0 @@
-# bash completion for createrepo and friends
-
-_cr_compress_type()
-{
-    COMPREPLY=( $( compgen -W "bz2 gz xz" -- "$2" ) )
-}
-
-_cr_checksum_type()
-{
-    COMPREPLY=( $( compgen -W "md5 sha sha1 sha224 sha256 sha384 sha512" -- 
"$2" ) )
-}
-
-_cr_createrepo()
-{
-    COMPREPLY=()
-
-    case $3 in
-        -V|--version|-h|--help)
-            return 0
-            ;;
-        --update-md-path|-o|--outputdir|--oldpackagedirs)
-            COMPREPLY=( $( compgen -d -- "$2" ) )
-            return 0
-            ;;
-        -g|--groupfile)
-            COMPREPLY=( $( compgen -f -o plusdirs -X '!*.xml' -- "$2" ) )
-            return 0
-            ;;
-        -s|--checksum)
-            _cr_checksum_type "$1" "$2"
-            return 0
-            ;;
-        -i|--pkglist|--read-pkgs-list)
-            COMPREPLY=( $( compgen -f -o plusdirs -- "$2" ) )
-            return 0
-            ;;
-        -n|--includepkg)
-            COMPREPLY=( $( compgen -f -o plusdirs -X '!*.rpm' -- "$2" ) )
-            return 0
-            ;;
-#        --retain-old-md)
-#            COMPREPLY=( $( compgen -W '0 1 2 3 4 5 6 7 8 9' -- "$2" ) )
-#            return 0
-#            ;;
-#        --num-deltas|--max-delta-rpm-size)
-#            COMPREPLY=( $( compgen -W '1 2 3 4 5 6 7 8 9' -- "$2" ) )
-#            return 0
-#            ;;
-        --workers)
-            local min=2 max=$( getconf _NPROCESSORS_ONLN 2>/dev/null )
-            [[ -z $max || $max -lt $min ]] && max=$min
-            COMPREPLY=( $( compgen -W "{1..$max}" -- "$2" ) )
-            return 0
-            ;;
-        --compress-type)
-            _cr_compress_type "$1" "$2"
-            return 0
-            ;;
-    esac
-
-    if [[ $2 == -* ]] ; then
-        COMPREPLY=( $( compgen -W '--help --version --quiet --verbose
-            --excludes --basedir --baseurl --groupfile --checksum
-            --pretty --database --no-database --update --update-md-path
-            --skip-stat --pkglist --includepkg --outputdir
-            --skip-symlinks --changelog-limit --unique-md-filenames
-            --simple-md-filenames --retain-old-md --distro --content --repo
-            --revision --read-pkgs-list --workers --xz
-            --compress-type --keep-all-metadata --compatibility
-            --retain-old-md-by-age --cachedir --local-sqlite
-            --cut-dirs --location-prefix
-            --deltas --oldpackagedirs
-            --num-deltas --max-delta-rpm-size --recycle-pkglist' -- "$2" ) )
-    else
-        COMPREPLY=( $( compgen -d -- "$2" ) )
-    fi
-} &&
-complete -F _cr_createrepo -o filenames createrepo_c
-
-_cr_mergerepo()
-{
-    COMPREPLY=()
-
-    case $3 in
-        --version|-h|--help)
-            return 0
-            ;;
-        -g|--groupfile|--blocked)
-            COMPREPLY=( $( compgen -f -o plusdirs -- "$2" ) )
-            return 0
-            ;;
-        -r|--repo|-o|--outputdir|--noarch-repo)
-            COMPREPLY=( $( compgen -d -- "$2" ) )
-            return 0
-            ;;
-        --compress-type)
-            _cr_compress_type "" "$2"
-            return 0
-            ;;
-        --method)
-            COMPREPLY=( $( compgen -W "repo ts nvr" -- "$2" ) )
-            return 0
-            ;;
-    esac
-
-    if [[ $2 == -* ]] ; then
-        COMPREPLY=( $( compgen -W '--version --help --repo --archlist 
--database
-            --no-database --verbose --outputdir --nogroups --noupdateinfo
-            --compress-type --method --all --noarch-repo --unique-md-filenames
-            --simple-md-filenames --omit-baseurl --koji --groupfile
-            --blocked' -- "$2" ) )
-    else
-        COMPREPLY=( $( compgen -d -- "$2" ) )
-    fi
-} &&
-complete -F _cr_mergerepo -o filenames mergerepo_c
-
-_cr_modifyrepo()
-{
-    COMPREPLY=()
-
-    case $3 in
-        --version|-h|--help)
-            return 0
-            ;;
-        -f|--batchfile)
-            COMPREPLY=( $( compgen -f -o plusdirs -- "$2" ) )
-            return 0
-            ;;
-        --compress-type)
-            _cr_compress_type "" "$2"
-            return 0
-            ;;
-        -s|--checksum)
-            _cr_checksum_type "$1" "$2"
-            return 0
-            ;;
-    esac
-
-    if [[ $2 == -* ]] ; then
-        COMPREPLY=( $( compgen -W '--version --help --mdtype --remove
-            --compress --no-compress --compress-type --checksum
-            --unique-md-filenames --simple-md-filenames
-            --verbose --batchfile --new-name' -- "$2" ) )
-    else
-        COMPREPLY=( $( compgen -f -- "$2" ) )
-    fi
-} &&
-complete -F _cr_modifyrepo -o filenames modifyrepo_c
-
-_cr_sqliterepo()
-{
-    COMPREPLY=()
-
-    case $3 in
-        -h|--help|-V|--version)
-            return 0
-            ;;
-        --compress-type)
-            _cr_compress_type "" "$2"
-            return 0
-            ;;
-        -s|--checksum)
-            _cr_checksum_type "$1" "$2"
-            return 0
-            ;;
-    esac
-
-    if [[ $2 == -* ]] ; then
-        COMPREPLY=( $( compgen -W '--help --version --quiet --verbose
-            --force --keep-old --xz --compress-type --checksum
-            --local-sqlite ' -- "$2" ) )
-    else
-        COMPREPLY=( $( compgen -f -- "$2" ) )
-    fi
-} &&
-complete -F _cr_sqliterepo -o filenames sqliterepo_c
-
-# Local variables:
-# mode: shell-script
-# sh-basic-offset: 4
-# sh-indent-comment: t
-# indent-tabs-mode: nil
-# End:
-# ex: ts=4 sw=4 et filetype=sh
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/createrepo_c-1.2.2/createrepo_c.bash.in 
new/createrepo_c-1.2.3/createrepo_c.bash.in
--- old/createrepo_c-1.2.2/createrepo_c.bash.in 1970-01-01 01:00:00.000000000 
+0100
+++ new/createrepo_c-1.2.3/createrepo_c.bash.in 2026-03-20 07:44:28.000000000 
+0100
@@ -0,0 +1,192 @@
+# bash completion for createrepo and friends
+
+_cr_compress_type()
+{
+    COMPREPLY=( $( compgen -W "bz2 gz xz" -- "$2" ) )
+}
+
+_cr_checksum_type()
+{
+    COMPREPLY=( $( compgen -W "md5 sha sha1 sha224 sha256 sha384 sha512" -- 
"$2" ) )
+}
+
+_cr_createrepo()
+{
+    COMPREPLY=()
+    local _cr_has_drpm=@ENABLE_DRPM_BASH@
+
+    case $3 in
+        -V|--version|-h|--help)
+            return 0
+            ;;
+        --update-md-path|-o|--outputdir)
+            COMPREPLY=( $( compgen -d -- "$2" ) )
+            return 0
+            ;;
+        --oldpackagedirs)
+            (( _cr_has_drpm )) && COMPREPLY=( $( compgen -d -- "$2" ) ) && 
return 0
+            ;;
+        -g|--groupfile)
+            COMPREPLY=( $( compgen -f -o plusdirs -X '!*.xml' -- "$2" ) )
+            return 0
+            ;;
+        -s|--checksum)
+            _cr_checksum_type "$1" "$2"
+            return 0
+            ;;
+        -i|--pkglist|--read-pkgs-list)
+            COMPREPLY=( $( compgen -f -o plusdirs -- "$2" ) )
+            return 0
+            ;;
+        -n|--includepkg)
+            COMPREPLY=( $( compgen -f -o plusdirs -X '!*.rpm' -- "$2" ) )
+            return 0
+            ;;
+#        --retain-old-md)
+#            COMPREPLY=( $( compgen -W '0 1 2 3 4 5 6 7 8 9' -- "$2" ) )
+#            return 0
+#            ;;
+#        --num-deltas|--max-delta-rpm-size)
+#            COMPREPLY=( $( compgen -W '1 2 3 4 5 6 7 8 9' -- "$2" ) )
+#            return 0
+#            ;;
+        --workers)
+            local min=2 max=$( getconf _NPROCESSORS_ONLN 2>/dev/null )
+            [[ -z $max || $max -lt $min ]] && max=$min
+            COMPREPLY=( $( compgen -W "{1..$max}" -- "$2" ) )
+            return 0
+            ;;
+        --compress-type)
+            _cr_compress_type "$1" "$2"
+            return 0
+            ;;
+    esac
+
+    if [[ $2 == -* ]] ; then
+        local cr_opts='--help --version --quiet --verbose
+            --excludes --basedir --baseurl --groupfile --checksum
+            --pretty --database --no-database --update --update-md-path
+            --skip-stat --pkglist --includepkg --outputdir
+            --skip-symlinks --changelog-limit --unique-md-filenames
+            --simple-md-filenames --retain-old-md --distro --content --repo
+            --revision --read-pkgs-list --workers --xz
+            --compress-type --keep-all-metadata --compatibility
+            --retain-old-md-by-age --cachedir --local-sqlite
+            --cut-dirs --location-prefix
+            --recycle-pkglist'
+        (( _cr_has_drpm )) && cr_opts="$cr_opts
+            --deltas --oldpackagedirs
+            --num-deltas --max-delta-rpm-size"
+        COMPREPLY=( $( compgen -W "$cr_opts" -- "$2" ) )
+    else
+        COMPREPLY=( $( compgen -d -- "$2" ) )
+    fi
+} &&
+complete -F _cr_createrepo -o filenames createrepo_c
+
+_cr_mergerepo()
+{
+    COMPREPLY=()
+
+    case $3 in
+        --version|-h|--help)
+            return 0
+            ;;
+        -g|--groupfile|--blocked)
+            COMPREPLY=( $( compgen -f -o plusdirs -- "$2" ) )
+            return 0
+            ;;
+        -r|--repo|-o|--outputdir|--noarch-repo)
+            COMPREPLY=( $( compgen -d -- "$2" ) )
+            return 0
+            ;;
+        --compress-type)
+            _cr_compress_type "" "$2"
+            return 0
+            ;;
+        --method)
+            COMPREPLY=( $( compgen -W "repo ts nvr" -- "$2" ) )
+            return 0
+            ;;
+    esac
+
+    if [[ $2 == -* ]] ; then
+        COMPREPLY=( $( compgen -W '--version --help --repo --archlist 
--database
+            --no-database --verbose --outputdir --nogroups --noupdateinfo
+            --compress-type --method --all --noarch-repo --unique-md-filenames
+            --simple-md-filenames --omit-baseurl --koji --groupfile
+            --blocked' -- "$2" ) )
+    else
+        COMPREPLY=( $( compgen -d -- "$2" ) )
+    fi
+} &&
+complete -F _cr_mergerepo -o filenames mergerepo_c
+
+_cr_modifyrepo()
+{
+    COMPREPLY=()
+
+    case $3 in
+        --version|-h|--help)
+            return 0
+            ;;
+        -f|--batchfile)
+            COMPREPLY=( $( compgen -f -o plusdirs -- "$2" ) )
+            return 0
+            ;;
+        --compress-type)
+            _cr_compress_type "" "$2"
+            return 0
+            ;;
+        -s|--checksum)
+            _cr_checksum_type "$1" "$2"
+            return 0
+            ;;
+    esac
+
+    if [[ $2 == -* ]] ; then
+        COMPREPLY=( $( compgen -W '--version --help --mdtype --remove
+            --compress --no-compress --compress-type --checksum
+            --unique-md-filenames --simple-md-filenames
+            --verbose --batchfile --new-name' -- "$2" ) )
+    else
+        COMPREPLY=( $( compgen -f -- "$2" ) )
+    fi
+} &&
+complete -F _cr_modifyrepo -o filenames modifyrepo_c
+
+_cr_sqliterepo()
+{
+    COMPREPLY=()
+
+    case $3 in
+        -h|--help|-V|--version)
+            return 0
+            ;;
+        --compress-type)
+            _cr_compress_type "" "$2"
+            return 0
+            ;;
+        -s|--checksum)
+            _cr_checksum_type "$1" "$2"
+            return 0
+            ;;
+    esac
+
+    if [[ $2 == -* ]] ; then
+        COMPREPLY=( $( compgen -W '--help --version --quiet --verbose
+            --force --keep-old --xz --compress-type --checksum
+            --local-sqlite ' -- "$2" ) )
+    else
+        COMPREPLY=( $( compgen -f -- "$2" ) )
+    fi
+} &&
+complete -F _cr_sqliterepo -o filenames sqliterepo_c
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/createrepo_c-1.2.2/createrepo_c.spec 
new/createrepo_c-1.2.3/createrepo_c.spec
--- old/createrepo_c-1.2.2/createrepo_c.spec    2026-01-19 08:23:36.000000000 
+0100
+++ new/createrepo_c-1.2.3/createrepo_c.spec    2026-03-20 07:44:28.000000000 
+0100
@@ -38,7 +38,7 @@
 %if %{defined gitrev}
 %define package_version %{?gitrev}
 %else
-%define package_version 1.2.2
+%define package_version 1.2.3
 %endif
 
 Summary:        Creates a common metadata repository
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/createrepo_c-1.2.2/doc/CMakeLists.txt 
new/createrepo_c-1.2.3/doc/CMakeLists.txt
--- old/createrepo_c-1.2.2/doc/CMakeLists.txt   2026-01-19 08:23:36.000000000 
+0100
+++ new/createrepo_c-1.2.3/doc/CMakeLists.txt   2026-03-20 07:44:28.000000000 
+0100
@@ -15,8 +15,15 @@
     ADD_DEPENDENCIES (doc doc-c)
 endif(BUILD_DOC_C)
 
+IF(ENABLE_DRPM)
+    SET(ENABLE_DRPM_MAN 1)
+ELSE()
+    SET(ENABLE_DRPM_MAN 0)
+ENDIF()
+CONFIGURE_FILE(createrepo_c.8.in ${CMAKE_CURRENT_BINARY_DIR}/createrepo_c.8 
@ONLY)
+
 IF(CREATEREPO_C_INSTALL_MANPAGES)
-    INSTALL(FILES createrepo_c.8 mergerepo_c.8 modifyrepo_c.8 sqliterepo_c.8
+    INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/createrepo_c.8 mergerepo_c.8 
modifyrepo_c.8 sqliterepo_c.8
             DESTINATION "${CMAKE_INSTALL_MANDIR}/man8"
             COMPONENT bin)
 ENDIF(CREATEREPO_C_INSTALL_MANPAGES)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/createrepo_c-1.2.2/doc/createrepo_c.8 
new/createrepo_c-1.2.3/doc/createrepo_c.8
--- old/createrepo_c-1.2.2/doc/createrepo_c.8   2026-01-19 08:23:36.000000000 
+0100
+++ new/createrepo_c-1.2.3/doc/createrepo_c.8   1970-01-01 01:00:00.000000000 
+0100
@@ -1,223 +0,0 @@
-.\" Man page generated from reStructuredText.
-.
-.TH CREATEREPO_C 8 "2021-09-23" "" ""
-.SH NAME
-createrepo_c \- Create rpm-md format (xml-rpm-metadata) repository
-.
-.nr rst2man-indent-level 0
-.
-.de1 rstReportMargin
-\\$1 \\n[an-margin]
-level \\n[rst2man-indent-level]
-level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
--
-\\n[rst2man-indent0]
-\\n[rst2man-indent1]
-\\n[rst2man-indent2]
-..
-.de1 INDENT
-.\" .rstReportMargin pre:
-. RS \\$1
-. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
-. nr rst2man-indent-level +1
-.\" .rstReportMargin post:
-..
-.de UNINDENT
-. RE
-.\" indent \\n[an-margin]
-.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
-.nr rst2man-indent-level -1
-.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
-.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
-..
-.\" -*- coding: utf-8 -*-
-.
-.SH SYNOPSIS
-.sp
-createrepo_c [options] <directory>
-.SH DESCRIPTION
-.sp
-Uses rpm packages from <directory> to create repodata.
-.sp
-If compiled with libmodulemd support modular metadata inside <directory> 
identified by the patterns below and all their compressed variants are 
automatically collected, merged and added to the repodata.
-.sp
-The patterns are:
-.INDENT 0.0
-.INDENT 3.5
-.INDENT 0.0
-.IP \(bu 2
-*.modulemd.yaml (recommended file name: N:S:V:C:A.modulemd.yaml)
-.IP \(bu 2
-*.modulemd\-defaults.yaml (recommended file name: N.modulemd\-defaults.yaml)
-.IP \(bu 2
-modules.yaml (recommended way of importing multiple documents at once)
-.UNINDENT
-.UNINDENT
-.UNINDENT
-.SH OPTIONS
-.SS \-V \-\-version
-.sp
-Show program\(aqs version number and exit.
-.SS \-q \-\-quiet
-.sp
-Run quietly.
-.SS \-v \-\-verbose
-.sp
-Run verbosely.
-.SS \-x \-\-excludes PACKAGE_NAME_GLOB
-.sp
-Path patterns to exclude, can be specified multiple times.  The patterns are
-matched against relative paths to RPMs.  Note that the feature uses
-\fBg\_pattern\_match()\fR function, not \fBglob()\fR, for semantic differences
-see 
https://developer.gnome.org/glib/stable/glib-Glob-style-pattern-matching.html
-.SS \-\-basedir BASEDIR
-.sp
-Basedir for path to directories.
-.SS \-u \-\-baseurl URL
-.sp
-Optional base URL location for all files.
-.SS \-g \-\-groupfile GROUPFILE
-.sp
-Path to groupfile to include in metadata.
-.SS \-s \-\-checksum CHECKSUM_TYPE
-.sp
-Choose the checksum type used in repomd.xml and for packages in the metadata. 
The default is now sha256.
-.SS \-p \-\-pretty
-.sp
-Make sure all xml generated is formatted (default)
-.SS \-p \-\-no\-pretty
-.sp
-Minify the generated xml content. On average this reduces compressed size by 
2%.
-.SS \-d \-\-database
-.sp
-DEPRECATED: Generate sqlite databases for use with yum.
-.SS \-\-no\-database
-.sp
-Do not generate sqlite databases in the repository.
-.SS \-\-update
-.sp
-If metadata already exists in the outputdir and an rpm is unchanged (based on 
file size and mtime) since the metadata was generated, reuse the existing 
metadata rather than recalculating it. In the case of a large repository with 
only a few new or modified rpms this can significantly reduce I/O and 
processing time.
-.SS \-\-update\-md\-path
-.sp
-Existing metadata from this path are loaded and reused in addition to those 
present in the outputdir (works only with \-\-update). Can be specified 
multiple times.
-.SS \-\-skip\-stat
-.sp
-Skip the stat() call on a \-\-update, assumes if the filename is the same then 
the file is still the same (only use this if you\(aqre fairly trusting or 
gullible).
-.SS \-\-split
-.sp
-Run in split media mode. Rather than pass a single directory, take a set of 
directories corresponding to different volumes in a media set. Meta data is 
created in the first given directory
-.SS \-i \-\-pkglist FILENAME
-.sp
-Specify a text file which contains the complete list of files to include in 
the repository from the set found in the directory. File format is one package 
per line, no wildcards or globs.
-.SS \-n \-\-includepkg PACKAGE
-.sp
-Specify pkgs to include on the command line. Takes urls as well as local paths.
-.SS \-\-recycle\-pkglist
-.sp
-Useful only with \fB\-\-update\fR.  Read the list of packages from old 
metadata,
-and reuse it instead of (perhaps expensive) directory traversal.  This doesn't
-collide with explicitly selected packages by \fB\-\-pkglist\fR or
-\fB\-\-includepkg\fR, such packages are appended to the recycled list.
-This option is useful for I/O optimal repo modifications (package removal by
-\fB\-\-exclude\fR, and additions with \fB\-\-pkglist\fR).
-.SS \-o \-\-outputdir URL
-.sp
-Optional output directory.
-.SS \-S \-\-skip\-symlinks
-.sp
-Ignore symlinks of packages.
-.SS \-\-changelog\-limit NUM
-.sp
-Only import the last N changelog entries, from each rpm, into the metadata.
-.SS \-\-unique\-md\-filenames
-.sp
-Include the file\(aqs checksum in the metadata filename, helps HTTP caching 
(default).
-.SS \-\-simple\-md\-filenames
-.sp
-Do not include the file\(aqs checksum in the metadata filename.
-.SS \-\-retain\-old\-md NUM
-.sp
-Specify NUM to 0 to remove all repodata present in old repomd.xml or any other 
positive number to keep all old repodata. Use \-\-compatibility flag to get the 
behavior of original createrepo: Keep around the latest (by timestamp) NUM 
copies of the old repodata (works only for primary, filelists, other and their 
DB variants).
-.SS \-\-distro DISTRO
-.sp
-Distro tag and optional cpeid: \-\-distro\(aqcpeid,textname\(aq.
-.SS \-\-content CONTENT_TAGS
-.sp
-Tags for the content in the repository.
-.SS \-\-repo REPO_TAGS
-.sp
-Tags to describe the repository itself.
-.SS \-\-revision REVISION
-.sp
-User\-specified revision for this repository.
-.SS \-\-set\-timestamp\-to\-revision
-.sp
-Set timestamp fields in repomd.xml and last modification times of created 
repodata to a value given with \-\-revision. This requires \-\-revision to be a 
timestamp formatted in \(aqdate +%s\(aq format.
-.SS \-\-read\-pkgs\-list READ_PKGS_LIST
-.sp
-Output the paths to the pkgs actually read useful with \-\-update.
-.SS \-\-workers
-.sp
-Number of workers to spawn to read rpms.
-.SS \-\-xz
-.sp
-Use xz for repodata compression.
-.SS \-\-compress\-type COMPRESSION_TYPE
-.sp
-Which compression type to use. Supported compressions are: bz2, gz, zck, zstd, 
xz.
-.SS \-\-general\-compress\-type COMPRESSION_TYPE
-.sp
-Which compression type to use (even for primary, filelists and other xml).
-.SS \-\-zck
-.sp
-Generate zchunk files as well as the standard repodata.
-.SS \-\-zck\-dict\-dir ZCK_DICT_DIR
-.sp
-Directory containing compression dictionaries for use by zchunk
-.SS \-\-keep\-all\-metadata
-.sp
-Keep all additional metadata (not primary, filelists and other xml or sqlite 
files, nor their compressed variants) from source repository during update 
(default).
-.SS \-\-discard\-additional\-metadata
-.sp
-Discard all additional metadata (not primary, filelists and other xml or 
sqlite files, nor their compressed variants) from source repository during 
update.
-.SS \-\-compatibility
-.sp
-Enforce maximal compatibility with classical createrepo (Changes 
\-\-retain\-old\-md behavior, defaults to Gzip for compression).
-.SS \-\-retain\-old\-md\-by\-age AGE
-.sp
-During \-\-update, remove all files in repodata/ which are older then the 
specified period of time. (e.g. \(aq2h\(aq, \(aq30d\(aq, ...). Available units 
(m \- minutes, h \- hours, d \- days)
-.SS \-c \-\-cachedir CACHEDIR.
-.sp
-Set path to cache dir
-.SS \-\-deltas
-.sp
-Tells createrepo to generate deltarpms and the delta metadata.
-.SS \-\-oldpackagedirs PATH
-.sp
-Paths to look for older pkgs to delta against. Can be specified multiple times.
-.SS \-\-num\-deltas INT
-.sp
-The number of older versions to make deltas against. Defaults to 1.
-.SS \-\-max\-delta\-rpm\-size MAX_DELTA_RPM_SIZE
-.sp
-Max size of an rpm that to run deltarpm against (in bytes).
-.SS \-\-local\-sqlite
-.sp
-Gen sqlite DBs locally (into a directory for temporary files). Sometimes, 
sqlite has a trouble to gen DBs on a NFS mount, use this option in such cases. 
This option could lead to a higher memory consumption if TMPDIR is set to /tmp 
or not set at all, because then the /tmp is used and /tmp dir is often a 
ramdisk.
-.SS \-\-cut\-dirs NUM
-.sp
-Ignore NUM of directory components in location_href during repodata generation
-.SS \-\-location\-prefix PREFIX
-.sp
-Append this prefix before location_href in output repodata
-.SS \-\-repomd\-checksum CHECKSUM_TYPE
-.sp
-Checksum type to be used in repomd.xml
-.SS \-\-error\-exit\-val
-.sp
-Exit with retval 2 if there were any errors during processing (option 
deprecated, on by default)
-.SS \-\-ignore\-lock
-.sp
-Expert (risky) option: Ignore an existing .repodata/. (Remove the existing 
.repodata/ and create an empty new one to serve as a lock for other createrepo 
instances. For the repodata generation, a different temporary dir with the name 
in format .repodata.time.microseconds.pid/ will be used). NOTE: Use this option 
on your own risk! If two createrepos run simultaneously, then the state of the 
generated metadata is not guaranteed \- it can be inconsistent and wrong.
-.\" Generated by docutils manpage writer.
-.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/createrepo_c-1.2.2/doc/createrepo_c.8.in 
new/createrepo_c-1.2.3/doc/createrepo_c.8.in
--- old/createrepo_c-1.2.2/doc/createrepo_c.8.in        1970-01-01 
01:00:00.000000000 +0100
+++ new/createrepo_c-1.2.3/doc/createrepo_c.8.in        2026-03-20 
07:44:28.000000000 +0100
@@ -0,0 +1,225 @@
+.\" Man page generated from reStructuredText.
+.
+.TH CREATEREPO_C 8 "2021-09-23" "" ""
+.SH NAME
+createrepo_c \- Create rpm-md format (xml-rpm-metadata) repository
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.\" -*- coding: utf-8 -*-
+.
+.SH SYNOPSIS
+.sp
+createrepo_c [options] <directory>
+.SH DESCRIPTION
+.sp
+Uses rpm packages from <directory> to create repodata.
+.sp
+If compiled with libmodulemd support modular metadata inside <directory> 
identified by the patterns below and all their compressed variants are 
automatically collected, merged and added to the repodata.
+.sp
+The patterns are:
+.INDENT 0.0
+.INDENT 3.5
+.INDENT 0.0
+.IP \(bu 2
+*.modulemd.yaml (recommended file name: N:S:V:C:A.modulemd.yaml)
+.IP \(bu 2
+*.modulemd\-defaults.yaml (recommended file name: N.modulemd\-defaults.yaml)
+.IP \(bu 2
+modules.yaml (recommended way of importing multiple documents at once)
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.SH OPTIONS
+.SS \-V \-\-version
+.sp
+Show program\(aqs version number and exit.
+.SS \-q \-\-quiet
+.sp
+Run quietly.
+.SS \-v \-\-verbose
+.sp
+Run verbosely.
+.SS \-x \-\-excludes PACKAGE_NAME_GLOB
+.sp
+Path patterns to exclude, can be specified multiple times.  The patterns are
+matched against relative paths to RPMs.  Note that the feature uses
+\fBg\_pattern\_match()\fR function, not \fBglob()\fR, for semantic differences
+see 
https://developer.gnome.org/glib/stable/glib-Glob-style-pattern-matching.html
+.SS \-\-basedir BASEDIR
+.sp
+Basedir for path to directories.
+.SS \-u \-\-baseurl URL
+.sp
+Optional base URL location for all files.
+.SS \-g \-\-groupfile GROUPFILE
+.sp
+Path to groupfile to include in metadata.
+.SS \-s \-\-checksum CHECKSUM_TYPE
+.sp
+Choose the checksum type used in repomd.xml and for packages in the metadata. 
The default is now sha256.
+.SS \-p \-\-pretty
+.sp
+Make sure all xml generated is formatted (default)
+.SS \-p \-\-no\-pretty
+.sp
+Minify the generated xml content. On average this reduces compressed size by 
2%.
+.SS \-d \-\-database
+.sp
+DEPRECATED: Generate sqlite databases for use with yum.
+.SS \-\-no\-database
+.sp
+Do not generate sqlite databases in the repository.
+.SS \-\-update
+.sp
+If metadata already exists in the outputdir and an rpm is unchanged (based on 
file size and mtime) since the metadata was generated, reuse the existing 
metadata rather than recalculating it. In the case of a large repository with 
only a few new or modified rpms this can significantly reduce I/O and 
processing time.
+.SS \-\-update\-md\-path
+.sp
+Existing metadata from this path are loaded and reused in addition to those 
present in the outputdir (works only with \-\-update). Can be specified 
multiple times.
+.SS \-\-skip\-stat
+.sp
+Skip the stat() call on a \-\-update, assumes if the filename is the same then 
the file is still the same (only use this if you\(aqre fairly trusting or 
gullible).
+.SS \-\-split
+.sp
+Run in split media mode. Rather than pass a single directory, take a set of 
directories corresponding to different volumes in a media set. Meta data is 
created in the first given directory
+.SS \-i \-\-pkglist FILENAME
+.sp
+Specify a text file which contains the complete list of files to include in 
the repository from the set found in the directory. File format is one package 
per line, no wildcards or globs.
+.SS \-n \-\-includepkg PACKAGE
+.sp
+Specify pkgs to include on the command line. Takes urls as well as local paths.
+.SS \-\-recycle\-pkglist
+.sp
+Useful only with \fB\-\-update\fR.  Read the list of packages from old 
metadata,
+and reuse it instead of (perhaps expensive) directory traversal.  This doesn't
+collide with explicitly selected packages by \fB\-\-pkglist\fR or
+\fB\-\-includepkg\fR, such packages are appended to the recycled list.
+This option is useful for I/O optimal repo modifications (package removal by
+\fB\-\-exclude\fR, and additions with \fB\-\-pkglist\fR).
+.SS \-o \-\-outputdir URL
+.sp
+Optional output directory.
+.SS \-S \-\-skip\-symlinks
+.sp
+Ignore symlinks of packages.
+.SS \-\-changelog\-limit NUM
+.sp
+Only import the last N changelog entries, from each rpm, into the metadata.
+.SS \-\-unique\-md\-filenames
+.sp
+Include the file\(aqs checksum in the metadata filename, helps HTTP caching 
(default).
+.SS \-\-simple\-md\-filenames
+.sp
+Do not include the file\(aqs checksum in the metadata filename.
+.SS \-\-retain\-old\-md NUM
+.sp
+Specify NUM to 0 to remove all repodata present in old repomd.xml or any other 
positive number to keep all old repodata. Use \-\-compatibility flag to get the 
behavior of original createrepo: Keep around the latest (by timestamp) NUM 
copies of the old repodata (works only for primary, filelists, other and their 
DB variants).
+.SS \-\-distro DISTRO
+.sp
+Distro tag and optional cpeid: \-\-distro\(aqcpeid,textname\(aq.
+.SS \-\-content CONTENT_TAGS
+.sp
+Tags for the content in the repository.
+.SS \-\-repo REPO_TAGS
+.sp
+Tags to describe the repository itself.
+.SS \-\-revision REVISION
+.sp
+User\-specified revision for this repository.
+.SS \-\-set\-timestamp\-to\-revision
+.sp
+Set timestamp fields in repomd.xml and last modification times of created 
repodata to a value given with \-\-revision. This requires \-\-revision to be a 
timestamp formatted in \(aqdate +%s\(aq format.
+.SS \-\-read\-pkgs\-list READ_PKGS_LIST
+.sp
+Output the paths to the pkgs actually read useful with \-\-update.
+.SS \-\-workers
+.sp
+Number of workers to spawn to read rpms.
+.SS \-\-xz
+.sp
+Use xz for repodata compression.
+.SS \-\-compress\-type COMPRESSION_TYPE
+.sp
+Which compression type to use. Supported compressions are: bz2, gz, zck, zstd, 
xz.
+.SS \-\-general\-compress\-type COMPRESSION_TYPE
+.sp
+Which compression type to use (even for primary, filelists and other xml).
+.SS \-\-zck
+.sp
+Generate zchunk files as well as the standard repodata.
+.SS \-\-zck\-dict\-dir ZCK_DICT_DIR
+.sp
+Directory containing compression dictionaries for use by zchunk
+.SS \-\-keep\-all\-metadata
+.sp
+Keep all additional metadata (not primary, filelists and other xml or sqlite 
files, nor their compressed variants) from source repository during update 
(default).
+.SS \-\-discard\-additional\-metadata
+.sp
+Discard all additional metadata (not primary, filelists and other xml or 
sqlite files, nor their compressed variants) from source repository during 
update.
+.SS \-\-compatibility
+.sp
+Enforce maximal compatibility with classical createrepo (Changes 
\-\-retain\-old\-md behavior, defaults to Gzip for compression).
+.SS \-\-retain\-old\-md\-by\-age AGE
+.sp
+During \-\-update, remove all files in repodata/ which are older then the 
specified period of time. (e.g. \(aq2h\(aq, \(aq30d\(aq, ...). Available units 
(m \- minutes, h \- hours, d \- days)
+.SS \-c \-\-cachedir CACHEDIR.
+.sp
+Set path to cache dir
+.if @ENABLE_DRPM_MAN@ \{\
+.SS \-\-deltas
+.sp
+Tells createrepo to generate deltarpms and the delta metadata.
+.SS \-\-oldpackagedirs PATH
+.sp
+Paths to look for older pkgs to delta against. Can be specified multiple times.
+.SS \-\-num\-deltas INT
+.sp
+The number of older versions to make deltas against. Defaults to 1.
+.SS \-\-max\-delta\-rpm\-size MAX_DELTA_RPM_SIZE
+.sp
+Max size of an rpm that to run deltarpm against (in bytes).
+.\}
+.SS \-\-local\-sqlite
+.sp
+Gen sqlite DBs locally (into a directory for temporary files). Sometimes, 
sqlite has a trouble to gen DBs on a NFS mount, use this option in such cases. 
This option could lead to a higher memory consumption if TMPDIR is set to /tmp 
or not set at all, because then the /tmp is used and /tmp dir is often a 
ramdisk.
+.SS \-\-cut\-dirs NUM
+.sp
+Ignore NUM of directory components in location_href during repodata generation
+.SS \-\-location\-prefix PREFIX
+.sp
+Append this prefix before location_href in output repodata
+.SS \-\-repomd\-checksum CHECKSUM_TYPE
+.sp
+Checksum type to be used in repomd.xml
+.SS \-\-error\-exit\-val
+.sp
+Exit with retval 2 if there were any errors during processing (option 
deprecated, on by default)
+.SS \-\-ignore\-lock
+.sp
+Expert (risky) option: Ignore an existing .repodata/. (Remove the existing 
.repodata/ and create an empty new one to serve as a lock for other createrepo 
instances. For the repodata generation, a different temporary dir with the name 
in format .repodata.time.microseconds.pid/ will be used). NOTE: Use this option 
on your own risk! If two createrepos run simultaneously, then the state of the 
generated metadata is not guaranteed \- it can be inconsistent and wrong.
+.\" Generated by docutils manpage writer.
+.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/createrepo_c-1.2.2/src/CMakeLists.txt 
new/createrepo_c-1.2.3/src/CMakeLists.txt
--- old/createrepo_c-1.2.2/src/CMakeLists.txt   2026-01-19 08:23:36.000000000 
+0100
+++ new/createrepo_c-1.2.3/src/CMakeLists.txt   2026-03-20 07:44:28.000000000 
+0100
@@ -78,6 +78,11 @@
     ENDIF ()
 ENDIF ()
 
+# rpm/rpmver.h exists since RPM 4.16.0-beta2.
+IF (RPM_VERSION VERSION_GREATER_EQUAL "4.16.0")
+    ADD_COMPILE_DEFINITIONS(HAVE_RPM_RPMVER_H)
+ENDIF ()
+
 IF (BUILD_LIBCREATEREPO_C_SHARED)
   SET (createrepo_c_library_type SHARED)
 ELSE ()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/createrepo_c-1.2.2/src/cmd_parser.c 
new/createrepo_c-1.2.3/src/cmd_parser.c
--- old/createrepo_c-1.2.2/src/cmd_parser.c     2026-01-19 08:23:36.000000000 
+0100
+++ new/createrepo_c-1.2.3/src/cmd_parser.c     2026-03-20 07:44:28.000000000 
+0100
@@ -56,10 +56,13 @@
         .location_prefix            = NULL,
         .repomd_checksum            = NULL,
         .pretty                     = DEFAULT_FORMAT_PRETTY,
+
+#ifdef CR_DELTA_RPM_SUPPORT
         .deltas                     = FALSE,
         .oldpackagedirs             = NULL,
         .num_deltas                 = 1,
         .max_delta_rpm_size         = CR_DEFAULT_MAX_DELTA_RPM_SIZE,
+#endif
 
         .checksum_cachedir          = NULL,
         .repomd_checksum_type       = CR_CHECKSUM_SHA256,
@@ -630,6 +633,7 @@
         }
     }
 
+#ifdef CR_DELTA_RPM_SUPPORT
     // Check oldpackagedirs
     x = 0;
     while (options->oldpackagedirs && options->oldpackagedirs[x]) {
@@ -639,6 +643,7 @@
                                             (gpointer) path);
         x++;
     }
+#endif
 
     // Check cut_dirs
     if (options->cut_dirs < 0) {
@@ -690,7 +695,10 @@
     g_strfreev(options->distro_tags);
     g_strfreev(options->content_tags);
     g_strfreev(options->repo_tags);
+
+#ifdef CR_DELTA_RPM_SUPPORT
     g_strfreev(options->oldpackagedirs);
+#endif
 
     cr_slist_free_full(options->include_pkgs, g_free);
     cr_slist_free_full(options->exclude_masks,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/createrepo_c-1.2.2/src/cmd_parser.h 
new/createrepo_c-1.2.3/src/cmd_parser.h
--- old/createrepo_c-1.2.2/src/cmd_parser.h     2026-01-19 08:23:36.000000000 
+0100
+++ new/createrepo_c-1.2.3/src/cmd_parser.h     2026-03-20 07:44:28.000000000 
+0100
@@ -100,6 +100,7 @@
                                      d - days) */
     char *cachedir;             /*!< Cache dir for checksums */
 
+#ifdef CR_DELTA_RPM_SUPPORT
     gboolean deltas;            /*!< Is delta generation enabled? */
     char **oldpackagedirs;      /*!< Paths to look for older pks
                                      to delta agains */
@@ -107,6 +108,8 @@
                                      deltas against */
     gint64 max_delta_rpm_size;  /*!< Max size of an rpm that to run
                                      deltarpm against */
+#endif
+
     gboolean local_sqlite;      /*!< Gen sqlite locally into a directory for
                                      temporary files.
                                      For situations when sqlite has a trouble
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/createrepo_c-1.2.2/src/createrepo_c.c 
new/createrepo_c-1.2.3/src/createrepo_c.c
--- old/createrepo_c-1.2.2/src/createrepo_c.c   2026-01-19 08:23:36.000000000 
+0100
+++ new/createrepo_c-1.2.3/src/createrepo_c.c   2026-03-20 07:44:28.000000000 
+0100
@@ -1474,9 +1474,13 @@
     user_data.id_fex            = 0;
     user_data.id_oth            = 0;
     user_data.buffer            = g_queue_new();
+
+#ifdef CR_DELTA_RPM_SUPPORT
     user_data.deltas            = cmd_options->deltas;
     user_data.max_delta_rpm_size= cmd_options->max_delta_rpm_size;
     user_data.deltatargetpackages = NULL;
+#endif
+
     user_data.cut_dirs          = cmd_options->cut_dirs;
     user_data.location_prefix   = cmd_options->location_prefix;
     user_data.had_errors        = 0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/createrepo_c-1.2.2/src/deltarpms.h.in 
new/createrepo_c-1.2.3/src/deltarpms.h.in
--- old/createrepo_c-1.2.2/src/deltarpms.h.in   2026-01-19 08:23:36.000000000 
+0100
+++ new/createrepo_c-1.2.3/src/deltarpms.h.in   2026-03-20 07:44:28.000000000 
+0100
@@ -25,7 +25,6 @@
 #endif
 
 #include <glib.h>
-#include <rpm/rpmlib.h>
 #include "package.h"
 #include "parsehdr.h"
 #include "xml_file.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/createrepo_c-1.2.2/src/dumper_thread.h 
new/createrepo_c-1.2.3/src/dumper_thread.h
--- old/createrepo_c-1.2.2/src/dumper_thread.h  2026-01-19 08:23:36.000000000 
+0100
+++ new/createrepo_c-1.2.3/src/dumper_thread.h  2026-03-20 07:44:28.000000000 
+0100
@@ -25,7 +25,6 @@
 #endif
 
 #include <glib.h>
-#include <rpm/rpmlib.h>
 #include "load_metadata.h"
 #include "locate_metadata.h"
 #include "misc.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/createrepo_c-1.2.2/src/locate_metadata.c 
new/createrepo_c-1.2.3/src/locate_metadata.c
--- old/createrepo_c-1.2.2/src/locate_metadata.c        2026-01-19 
08:23:36.000000000 +0100
+++ new/createrepo_c-1.2.3/src/locate_metadata.c        2026-03-20 
07:44:28.000000000 +0100
@@ -265,19 +265,19 @@
     handle = curl_easy_init();
 
     // Fail on HTTP error (return code >= 400)
-    if (curl_easy_setopt(handle, CURLOPT_FAILONERROR, 1) != CURLE_OK) {
+    if (curl_easy_setopt(handle, CURLOPT_FAILONERROR, 1L) != CURLE_OK) {
         g_critical("%s: curl_easy_setopt(CURLOPT_FAILONERROR) error", 
__func__);
         goto get_remote_metadata_cleanup;
     }
 
     // Follow redirs
-    if (curl_easy_setopt(handle, CURLOPT_FOLLOWLOCATION, 1) != CURLE_OK) {
+    if (curl_easy_setopt(handle, CURLOPT_FOLLOWLOCATION, 1L) != CURLE_OK) {
         g_critical("%s: curl_easy_setopt(CURLOPT_FOLLOWLOCATION) error", 
__func__);
         goto get_remote_metadata_cleanup;
     }
 
     // Maximal number of redirects
-    if (curl_easy_setopt(handle, CURLOPT_MAXREDIRS, 6) != CURLE_OK) {
+    if (curl_easy_setopt(handle, CURLOPT_MAXREDIRS, 6L) != CURLE_OK) {
         g_critical("%s: curl_easy_setopt(CURLOPT_MAXREDIRS) error", __func__);
         goto get_remote_metadata_cleanup;
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/createrepo_c-1.2.2/src/misc.c 
new/createrepo_c-1.2.3/src/misc.c
--- old/createrepo_c-1.2.2/src/misc.c   2026-01-19 08:23:36.000000000 +0100
+++ new/createrepo_c-1.2.3/src/misc.c   2026-03-20 07:44:28.000000000 +0100
@@ -25,7 +25,11 @@
 #include <curl/curl.h>
 #include <errno.h>
 #include <ftw.h>
+#ifdef HAVE_RPM_RPMVER_H
+#include <rpm/rpmver.h>
+#else
 #include <rpm/rpmlib.h>
+#endif
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/createrepo_c-1.2.2/src/parsehdr.c 
new/createrepo_c-1.2.3/src/parsehdr.c
--- old/createrepo_c-1.2.2/src/parsehdr.c       2026-01-19 08:23:36.000000000 
+0100
+++ new/createrepo_c-1.2.3/src/parsehdr.c       2026-03-20 07:44:28.000000000 
+0100
@@ -19,8 +19,16 @@
 
 #include <glib.h>
 #include <assert.h>
+#include <rpm/header.h>
 #include <rpm/rpmfi.h>
 #include <rpm/rpmpgp.h>
+#include <rpm/rpmtag.h>
+#include <rpm/rpmtd.h>
+#ifdef HAVE_RPM_RPMVER_H
+#include <rpm/rpmver.h>
+#else
+#include <rpm/rpmlib.h>
+#endif
 #include <stdlib.h>
 #include "parsehdr.h"
 #include "xml_dump.h"
@@ -321,8 +329,10 @@
                 packagefile->type = cr_safe_string_chunk_insert(pkg->chunk, 
"");
             }
 
-            packagefile->digest = cr_safe_string_chunk_insert(pkg->chunk,
-                                                              
rpmtdGetString(filedigests));
+            if (!(hdrrflags & CR_HDRR_NOFILEDIGESTS)) {
+                packagefile->digest = cr_safe_string_chunk_insert(pkg->chunk,
+                                                                  
rpmtdGetString(filedigests));
+            }
 
             g_hash_table_replace(filenames_hashtable,
                                  (gpointer) rpmtdGetString(full_filenames),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/createrepo_c-1.2.2/src/parsehdr.h 
new/createrepo_c-1.2.3/src/parsehdr.h
--- old/createrepo_c-1.2.2/src/parsehdr.h       2026-01-19 08:23:36.000000000 
+0100
+++ new/createrepo_c-1.2.3/src/parsehdr.h       2026-03-20 07:44:28.000000000 
+0100
@@ -25,7 +25,7 @@
 #endif
 
 #include <glib.h>
-#include <rpm/rpmlib.h>
+#include <rpm/rpmtypes.h>
 #include "package.h"
 
 /** \defgroup   parsehdr         Header parser API.
@@ -39,6 +39,11 @@
     CR_HDRR_NONE            = (1 << 0),
     CR_HDRR_LOADHDRID       = (1 << 1), /*!< Load hdrid */
     CR_HDRR_LOADSIGNATURES  = (1 << 2), /*!< Load siggpg and siggpg */
+    CR_HDRR_NOFILEDIGESTS   = (1 << 3), /*!< Don't load file digests */
+    CR_HDRR_ALL             = CR_HDRR_NONE |
+                              CR_HDRR_LOADHDRID |
+                              CR_HDRR_LOADSIGNATURES |
+                              CR_HDRR_NOFILEDIGESTS, /*!< All flags set 
(doesn't mean load all) */
 } cr_HeaderReadingFlags;
 
 /** Read data from header and return filled cr_Package structure.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/createrepo_c-1.2.2/src/python/createrepo_c/__init__.py 
new/createrepo_c-1.2.3/src/python/createrepo_c/__init__.py
--- old/createrepo_c-1.2.2/src/python/createrepo_c/__init__.py  2026-01-19 
08:23:36.000000000 +0100
+++ new/createrepo_c-1.2.3/src/python/createrepo_c/__init__.py  2026-03-20 
07:44:28.000000000 +0100
@@ -86,6 +86,11 @@
 XMLFILE_PRESTODELTA   = _createrepo_c.XMLFILE_PRESTODELTA   #: Prestodelta xml 
file
 XMLFILE_UPDATEINFO    = _createrepo_c.XMLFILE_UPDATEINFO    #: Updateinfo xml 
file
 
+HDRR_NONE           = _createrepo_c.HDRR_NONE           #: No header reading 
flags
+HDRR_LOADHDRID      = _createrepo_c.HDRR_LOADHDRID      #: Load hdrid
+HDRR_LOADSIGNATURES = _createrepo_c.HDRR_LOADSIGNATURES #: Load siggpg and 
sigpgp
+HDRR_NOFILEDIGESTS  = _createrepo_c.HDRR_NOFILEDIGESTS  #: Don't load file 
digests (changes package file tuples from 4 to 3 elements)
+
 #: XML warning - Unknown tag
 XML_WARNING_UNKNOWNTAG  = _createrepo_c.XML_WARNING_UNKNOWNTAG
 
@@ -309,10 +314,10 @@
 # Functions
 
 def package_from_rpm(filename, checksum_type=SHA256, location_href=None,
-                     location_base=None, changelog_limit=10):
+                     location_base=None, changelog_limit=10, 
header_reading_flags=HDRR_NONE):
     """:class:`.Package` object from the rpm package"""
     return _createrepo_c.package_from_rpm(filename, checksum_type,
-                      location_href, location_base, changelog_limit)
+                      location_href, location_base, changelog_limit, 
header_reading_flags)
 
 def xml_from_rpm(filename, checksum_type=SHA256, location_href=None,
                      location_base=None, changelog_limit=10):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/createrepo_c-1.2.2/src/python/createrepo_cmodule.c 
new/createrepo_c-1.2.3/src/python/createrepo_cmodule.c
--- old/createrepo_c-1.2.2/src/python/createrepo_cmodule.c      2026-01-19 
08:23:36.000000000 +0100
+++ new/createrepo_c-1.2.3/src/python/createrepo_cmodule.c      2026-03-20 
07:44:28.000000000 +0100
@@ -305,5 +305,11 @@
     PyModule_AddIntConstant(m, "XML_WARNING_UNKNOWNVAL", 
CR_XML_WARNING_UNKNOWNVAL);
     PyModule_AddIntConstant(m, "XML_WARNING_BADATTRVAL", 
CR_XML_WARNING_BADATTRVAL);
 
+    /* Header Reading flags */
+    PyModule_AddIntConstant(m, "HDRR_NONE", CR_HDRR_NONE);
+    PyModule_AddIntConstant(m, "HDRR_LOADHDRID", CR_HDRR_LOADHDRID);
+    PyModule_AddIntConstant(m, "HDRR_LOADSIGNATURES", CR_HDRR_LOADSIGNATURES);
+    PyModule_AddIntConstant(m, "HDRR_NOFILEDIGESTS", CR_HDRR_NOFILEDIGESTS);
+
     return m;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/createrepo_c-1.2.2/src/python/parsepkg-py.c 
new/createrepo_c-1.2.3/src/python/parsepkg-py.c
--- old/createrepo_c-1.2.2/src/python/parsepkg-py.c     2026-01-19 
08:23:36.000000000 +0100
+++ new/createrepo_c-1.2.3/src/python/parsepkg-py.c     2026-03-20 
07:44:28.000000000 +0100
@@ -36,20 +36,27 @@
     int checksum_type, changelog_limit;
     char *filename, *location_href, *location_base;
     GError *tmp_err = NULL;
-    cr_HeaderReadingFlags flags = CR_HDRR_NONE; // TODO - support for flags
+    cr_HeaderReadingFlags header_reading_flags = CR_HDRR_NONE;
 
-    if (!PyArg_ParseTuple(args, "sizzi:py_package_from_rpm",
+    if (!PyArg_ParseTuple(args, "sizzi|i:py_package_from_rpm",
                                          &filename,
                                          &checksum_type,
                                          &location_href,
                                          &location_base,
-                                         &changelog_limit)) {
+                                         &changelog_limit,
+                                         &header_reading_flags)) {
+        return NULL;
+    }
+
+    if (header_reading_flags & ~ CR_HDRR_ALL) {
+        PyErr_SetString(PyExc_ValueError, "Unknown header reading flags.");
         return NULL;
     }
 
     pkg = cr_package_from_rpm(filename, checksum_type, location_href,
                               location_base, changelog_limit, NULL,
-                              flags, &tmp_err);
+                              header_reading_flags, &tmp_err);
+
     if (tmp_err) {
         cr_package_free(pkg);
         nice_exception(&tmp_err, "Cannot load %s: ", filename);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/createrepo_c-1.2.2/src/python/parsepkg-py.h 
new/createrepo_c-1.2.3/src/python/parsepkg-py.h
--- old/createrepo_c-1.2.2/src/python/parsepkg-py.h     2026-01-19 
08:23:36.000000000 +0100
+++ new/createrepo_c-1.2.3/src/python/parsepkg-py.h     2026-03-20 
07:44:28.000000000 +0100
@@ -24,7 +24,7 @@
 
 PyDoc_STRVAR(package_from_rpm__doc__,
 "package_from_rpm(filename, checksum_type, location_href, "
-"location_base, changelog_limit) -> Package\n\n"
+"location_base, changelog_limit[, header_reading_flags]) -> Package\n\n"
 "Package object from the rpm package");
 
 PyObject *py_package_from_rpm(PyObject *self, PyObject *args);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/createrepo_c-1.2.2/src/sqlite.c 
new/createrepo_c-1.2.3/src/sqlite.c
--- old/createrepo_c-1.2.2/src/sqlite.c 2026-01-19 08:23:36.000000000 +0100
+++ new/createrepo_c-1.2.3/src/sqlite.c 2026-03-20 07:44:28.000000000 +0100
@@ -26,6 +26,7 @@
 #include <assert.h>
 #include <string.h>
 #include <stdlib.h>
+#include <sys/stat.h>
 #include <errno.h>
 #include <libxml/encoding.h>
 #include <libxml/xmlstring.h>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/createrepo_c-1.2.2/tests/python/tests/test_package.py 
new/createrepo_c-1.2.3/tests/python/tests/test_package.py
--- old/createrepo_c-1.2.2/tests/python/tests/test_package.py   2026-01-19 
08:23:36.000000000 +0100
+++ new/createrepo_c-1.2.3/tests/python/tests/test_package.py   2026-03-20 
07:44:28.000000000 +0100
@@ -232,3 +232,12 @@
         del(pkg_c)
         self.assertEqual(pkg_d.name, "FooPackage")
         del(pkg_d)
+
+    def test_package_without_digests(self):
+        pkg = cr.package_from_rpm(PKG_ARCHER_PATH, 
header_reading_flags=cr.HDRR_NOFILEDIGESTS)
+        self.assertTrue(pkg)
+        self.assertEqual(pkg.files, [
+            ('', '/usr/bin/', 'complex_a'),
+            ('dir', '/usr/share/doc/', 'Archer-3.4.5'),
+            ('', '/usr/share/doc/Archer-3.4.5/', 'README')
+            ])

Reply via email to