Hello community,

here is the log from the commit of package createrepo_c for openSUSE:Factory 
checked in at 2020-02-21 16:39:31
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/createrepo_c (Old)
 and      /work/SRC/openSUSE:Factory/.createrepo_c.new.26092 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "createrepo_c"

Fri Feb 21 16:39:31 2020 rev:10 rq:775199 version:0.15.7

Changes:
--------
--- /work/SRC/openSUSE:Factory/createrepo_c/createrepo_c.changes        
2020-01-21 20:57:13.676761206 +0100
+++ /work/SRC/openSUSE:Factory/.createrepo_c.new.26092/createrepo_c.changes     
2020-02-21 16:39:32.973696357 +0100
@@ -1,0 +2,7 @@
+Tue Feb 18 13:27:23 UTC 2020 - Neal Gompa <[email protected]>
+
+- Update to 0.15.7
+  + Add relogin_suggested to updatecollectionpackage (rh#1779751)
+  + Support issued date in epoch format in Python API (rh#1779751)
+
+-------------------------------------------------------------------

Old:
----
  createrepo_c-0.15.6.tar.gz

New:
----
  createrepo_c-0.15.7.tar.gz

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

Other differences:
------------------
++++++ createrepo_c.spec ++++++
--- /var/tmp/diff_new_pack.50Aoev/_old  2020-02-21 16:39:33.481697373 +0100
+++ /var/tmp/diff_new_pack.50Aoev/_new  2020-02-21 16:39:33.497697405 +0100
@@ -54,7 +54,7 @@
 %define devname lib%{name}-devel
 
 Name:           createrepo_c
-Version:        0.15.6
+Version:        0.15.7
 Release:        0
 Summary:        RPM repository metadata generation utility
 License:        GPL-2.0-or-later

++++++ createrepo_c-0.15.6.tar.gz -> createrepo_c-0.15.7.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/createrepo_c-0.15.6/CMakeLists.txt 
new/createrepo_c-0.15.7/CMakeLists.txt
--- old/createrepo_c-0.15.6/CMakeLists.txt      2020-01-17 23:23:36.000000000 
+0100
+++ new/createrepo_c-0.15.7/CMakeLists.txt      2020-02-14 20:51:12.000000000 
+0100
@@ -47,9 +47,13 @@
 
 # Add include dirs
 
+include_directories(${BZIP2_INCLUDE_DIRS})
+include_directories(${CURL_INCLUDE_DIRS})
+include_directories(${EXPAT_INCLUDE_DIRS})
 include_directories(${GLIB2_INCLUDE_DIRS})
 include_directories(${LIBXML2_INCLUDE_DIR})
 include_directories(${OPENSSL_INCLUDE_DIR})
+include_directories(${ZLIB_INCLUDE_DIR})
 
 
 IF (RPM_PATH)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/createrepo_c-0.15.6/VERSION.cmake 
new/createrepo_c-0.15.7/VERSION.cmake
--- old/createrepo_c-0.15.6/VERSION.cmake       2020-01-17 23:23:36.000000000 
+0100
+++ new/createrepo_c-0.15.7/VERSION.cmake       2020-02-14 20:51:12.000000000 
+0100
@@ -1,3 +1,3 @@
 SET(CR_MAJOR "0")
 SET(CR_MINOR "15")
-SET(CR_PATCH "6")
+SET(CR_PATCH "7")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/createrepo_c-0.15.6/cmake/Modules/FindGLIB2.cmake 
new/createrepo_c-0.15.7/cmake/Modules/FindGLIB2.cmake
--- old/createrepo_c-0.15.6/cmake/Modules/FindGLIB2.cmake       2020-01-17 
23:23:36.000000000 +0100
+++ new/createrepo_c-0.15.7/cmake/Modules/FindGLIB2.cmake       2020-02-14 
20:51:12.000000000 +0100
@@ -1,235 +1,100 @@
-# - Try to find GLib2
-# Once done this will define
+#.rst:
+# FindGLIB2
+# ---------
 #
-#  GLIB2_FOUND - system has GLib2
-#  GLIB2_INCLUDE_DIRS - the GLib2 include directory
-#  GLIB2_LIBRARIES - Link these to use GLib2
-#
-#  HAVE_GLIB_GREGEX_H  glib has gregex.h header and 
-#                      supports g_regex_match_simple
-#
-#  Copyright (c) 2006 Andreas Schneider <[email protected]>
-#  Copyright (c) 2006 Philippe Bernery <[email protected]>
-#  Copyright (c) 2007 Daniel Gollub <[email protected]>
-#  Copyright (c) 2007 Alban Browaeys <[email protected]>
-#  Copyright (c) 2008 Michael Bell <[email protected]>
-#  Copyright (c) 2008-2009 Bjoern Ricks <[email protected]>
-#
-#  Redistribution and use is allowed according to the terms of the New
-#  BSD license.
-#  For details see the accompanying COPYING-CMAKE-SCRIPTS file.
-#
-
-
-IF (GLIB2_LIBRARIES AND GLIB2_INCLUDE_DIRS )
-  # in cache already
-  SET(GLIB2_FOUND TRUE)
-ELSE (GLIB2_LIBRARIES AND GLIB2_INCLUDE_DIRS )
-
-  INCLUDE(FindPkgConfig)
-
-  ## Glib
-  IF ( GLIB2_FIND_REQUIRED )
-    SET( _pkgconfig_REQUIRED "REQUIRED" )
-  ELSE ( GLIB2_FIND_REQUIRED )
-    SET( _pkgconfig_REQUIRED "" )
-  ENDIF ( GLIB2_FIND_REQUIRED )
-
-  IF ( GLIB2_MIN_VERSION )
-    PKG_SEARCH_MODULE( GLIB2 ${_pkgconfig_REQUIRED} 
glib-2.0>=${GLIB2_MIN_VERSION} )
-  ELSE ( GLIB2_MIN_VERSION )
-    PKG_SEARCH_MODULE( GLIB2 ${_pkgconfig_REQUIRED} glib-2.0 )
-  ENDIF ( GLIB2_MIN_VERSION )
-  IF ( PKG_CONFIG_FOUND )
-    IF ( GLIB2_FOUND )
-      SET ( GLIB2_CORE_FOUND TRUE )
-    ELSE ( GLIB2_FOUND )
-      SET ( GLIB2_CORE_FOUND FALSE )
-    ENDIF ( GLIB2_FOUND )
-  ENDIF ( PKG_CONFIG_FOUND )
-
-  # Look for glib2 include dir and libraries w/o pkgconfig
-  IF ( NOT GLIB2_FOUND AND NOT PKG_CONFIG_FOUND )
-    FIND_PATH(
-      _glibconfig_include_DIR
-    NAMES
-      glibconfig.h
-    PATHS
-      /opt/gnome/lib64
-      /opt/gnome/lib
-      /opt/lib/
-      /opt/local/lib
-      /sw/lib/
-      /usr/lib64
-      /usr/lib
-      /usr/local/include
-      ${CMAKE_LIBRARY_PATH}
-    PATH_SUFFIXES
-      glib-2.0/include
-    )
-
-    FIND_PATH(
-      _glib2_include_DIR
-    NAMES
-      glib.h
-    PATHS
-      /opt/gnome/include
-      /opt/local/include
-      /sw/include
-      /usr/include
-      /usr/local/include
-    PATH_SUFFIXES
-      glib-2.0
-    )
-
-    #MESSAGE(STATUS "Glib headers: ${_glib2_include_DIR}")
-
-    FIND_LIBRARY(
-      _glib2_link_DIR
-    NAMES
-      glib-2.0
-      glib
-    PATHS
-      /opt/gnome/lib
-      /opt/local/lib
-      /sw/lib
-      /usr/lib
-      /usr/local/lib
-    )
-    IF ( _glib2_include_DIR AND _glib2_link_DIR )
-        SET ( _glib2_FOUND TRUE )
-    ENDIF ( _glib2_include_DIR AND _glib2_link_DIR )
-
-
-    IF ( _glib2_FOUND )
-        SET ( GLIB2_INCLUDE_DIRS ${_glib2_include_DIR} 
${_glibconfig_include_DIR} )
-        SET ( GLIB2_LIBRARIES ${_glib2_link_DIR} )
-        SET ( GLIB2_CORE_FOUND TRUE )
-    ELSE ( _glib2_FOUND )
-        SET ( GLIB2_CORE_FOUND FALSE )
-    ENDIF ( _glib2_FOUND )
-
-    # Handle dependencies
-    # libintl
-    IF ( NOT LIBINTL_FOUND )
-      FIND_PATH(LIBINTL_INCLUDE_DIR
-      NAMES
-        libintl.h
-      PATHS
-        /opt/gnome/include
-        /opt/local/include
-        /sw/include
-        /usr/include
-        /usr/local/include
-      )
-
-      FIND_LIBRARY(LIBINTL_LIBRARY
-      NAMES
-        intl
-      PATHS
-        /opt/gnome/lib
-        /opt/local/lib
-        /sw/lib
-        /usr/local/lib
-        /usr/lib
-      )
-
-      IF (LIBINTL_LIBRARY AND LIBINTL_INCLUDE_DIR)
-        SET (LIBINTL_FOUND TRUE)
-      ENDIF (LIBINTL_LIBRARY AND LIBINTL_INCLUDE_DIR)
-    ENDIF ( NOT LIBINTL_FOUND )
-
-    # libiconv
-    IF ( NOT LIBICONV_FOUND )
-      FIND_PATH(LIBICONV_INCLUDE_DIR
-      NAMES
-        iconv.h
-      PATHS
-        /opt/gnome/include
-        /opt/local/include
-        /opt/local/include
-        /sw/include
-        /sw/include
-        /usr/local/include
-        /usr/include
-      PATH_SUFFIXES
-        glib-2.0
-      )
-
-      FIND_LIBRARY(LIBICONV_LIBRARY
-      NAMES
-        iconv
-      PATHS
-        /opt/gnome/lib
-        /opt/local/lib
-        /sw/lib
-        /usr/lib
-        /usr/local/lib
-      )
-
-      IF (LIBICONV_LIBRARY AND LIBICONV_INCLUDE_DIR)
-        SET (LIBICONV_FOUND TRUE)
-      ENDIF (LIBICONV_LIBRARY AND LIBICONV_INCLUDE_DIR)
-    ENDIF ( NOT LIBICONV_FOUND )
-
-    IF (LIBINTL_FOUND)
-      SET (GLIB2_LIBRARIES ${GLIB2_LIBRARIES} ${LIBINTL_LIBRARY})
-      SET (GLIB2_INCLUDE_DIRS ${GLIB2_INCLUDE_DIRS} ${LIBINTL_INCLUDE_DIR})
-    ENDIF (LIBINTL_FOUND)
-
-    IF (LIBICONV_FOUND)
-      SET (GLIB2_LIBRARIES ${GLIB2_LIBRARIES} ${LIBICONV_LIBRARY})
-      SET (GLIB2_INCLUDE_DIRS ${GLIB2_INCLUDE_DIRS} ${LIBICONV_INCLUDE_DIR})
-    ENDIF (LIBICONV_FOUND)
-
-  ENDIF ( NOT GLIB2_FOUND AND NOT PKG_CONFIG_FOUND )
-  ##
-
-  IF (GLIB2_CORE_FOUND AND GLIB2_INCLUDE_DIRS AND GLIB2_LIBRARIES)
-    SET (GLIB2_FOUND TRUE)
-  ENDIF (GLIB2_CORE_FOUND AND GLIB2_INCLUDE_DIRS AND GLIB2_LIBRARIES)
-
-  IF (GLIB2_FOUND)
-    IF (NOT GLIB2_FIND_QUIETLY)
-      MESSAGE (STATUS "Found GLib2: ${GLIB2_LIBRARIES} ${GLIB2_INCLUDE_DIRS}")
-    ENDIF (NOT GLIB2_FIND_QUIETLY)
-  ELSE (GLIB2_FOUND)
-    IF (GLIB2_FIND_REQUIRED)
-      MESSAGE (SEND_ERROR "Could not find GLib2")
-    ENDIF (GLIB2_FIND_REQUIRED)
-  ENDIF (GLIB2_FOUND)
-
-  # show the GLIB2_INCLUDE_DIRS and GLIB2_LIBRARIES variables only in the 
advanced view
-  MARK_AS_ADVANCED(GLIB2_INCLUDE_DIRS GLIB2_LIBRARIES)
-  MARK_AS_ADVANCED(LIBICONV_INCLUDE_DIR LIBICONV_LIBRARY)
-  MARK_AS_ADVANCED(LIBINTL_INCLUDE_DIR LIBINTL_LIBRARY)
-
-ENDIF (GLIB2_LIBRARIES AND GLIB2_INCLUDE_DIRS)
-
-IF ( WIN32 )
-    # include libiconv for win32
-    IF ( NOT LIBICONV_FOUND )
-      FIND_PATH(LIBICONV_INCLUDE_DIR iconv.h PATH_SUFFIXES glib-2.0)
-
-      FIND_LIBRARY(LIBICONV_LIBRARY NAMES iconv)
-
-      IF (LIBICONV_LIBRARY AND LIBICONV_INCLUDE_DIR)
-        SET (LIBICONV_FOUND TRUE)
-      ENDIF (LIBICONV_LIBRARY AND LIBICONV_INCLUDE_DIR)
-    ENDIF ( NOT LIBICONV_FOUND )
-    IF (LIBICONV_FOUND)
-      SET (GLIB2_LIBRARIES ${GLIB2_LIBRARIES} ${LIBICONV_LIBRARY})
-      SET (GLIB2_INCLUDE_DIRS ${GLIB2_INCLUDE_DIRS} ${LIBICONV_INCLUDE_DIR})
-    ENDIF (LIBICONV_FOUND)
-ENDIF ( WIN32 )
-
-IF ( GLIB2_FOUND )
-       # Check if system has a newer version of glib
-       # which supports g_regex_match_simple
-       INCLUDE( CheckIncludeFiles )
-       SET( CMAKE_REQUIRED_INCLUDES ${GLIB2_INCLUDE_DIRS} )
-       CHECK_INCLUDE_FILES ( glib/gregex.h HAVE_GLIB_GREGEX_H )
-       CHECK_INCLUDE_FILES ( glib/gchecksum.h HAVE_GLIB_GCHECKSUM_H )
-       # Reset CMAKE_REQUIRED_INCLUDES
-       SET( CMAKE_REQUIRED_INCLUDES "" )
-ENDIF( GLIB2_FOUND )
+# Try to locate the GLib2 library.
+# If found, this will define the following variables:
+#
+# ``GLIB2_FOUND``
+#     True if the GLib2 library is available
+# ``GLIB2_INCLUDE_DIRS``
+#     The GLib2 include directories
+# ``GLIB2_LIBRARIES``
+#     The GLib2 libraries for linking
+# ``GLIB2_INCLUDE_DIR``
+#     Deprecated, use ``GLIB2_INCLUDE_DIRS``
+# ``GLIB2_LIBRARY``
+#     Deprecated, use ``GLIB2_LIBRARIES``
+#
+# If ``GLIB2_FOUND`` is TRUE, it will also define the following
+# imported target:
+#
+# ``GLIB2::GLIB2``
+#     The GLIB2 library
+#
+# Since 5.41.0.
+
+#=============================================================================
+# Copyright (c) 2008 Laurent Montel, <[email protected]>
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+# 3. The name of the author may not be used to endorse or promote products
+#    derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#=============================================================================
+
+find_package(PkgConfig)
+pkg_check_modules(PC_GLIB2 QUIET glib-2.0)
+
+find_path(GLIB2_INCLUDE_DIRS
+          NAMES glib.h
+          HINTS ${PC_GLIB2_INCLUDEDIR}
+          PATH_SUFFIXES glib-2.0)
+
+find_library(GLIB2_LIBRARIES
+             NAMES glib-2.0
+             HINTS ${PC_GLIB2_LIBDIR}
+)
+
+# search the glibconfig.h include dir under the same root where the library is 
found
+get_filename_component(glib2LibDir "${GLIB2_LIBRARIES}" PATH)
+
+find_path(GLIB2_INTERNAL_INCLUDE_DIR glibconfig.h
+          PATH_SUFFIXES glib-2.0/include
+          HINTS ${PC_GLIB2_INCLUDEDIR} "${glib2LibDir}" 
${CMAKE_SYSTEM_LIBRARY_PATH})
+
+# not sure if this include dir is optional or required
+# for now it is optional
+if(GLIB2_INTERNAL_INCLUDE_DIR)
+  list(APPEND GLIB2_INCLUDE_DIRS "${GLIB2_INTERNAL_INCLUDE_DIR}")
+endif()
+
+# Deprecated synonyms
+set(GLIB2_INCLUDE_DIR "${GLIB2_INCLUDE_DIRS}")
+set(GLIB2_LIBRARY "${GLIB2_LIBRARIES}")
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(GLIB2 DEFAULT_MSG GLIB2_LIBRARIES 
GLIB2_INCLUDE_DIRS)
+
+if(GLIB2_FOUND AND NOT TARGET GLIB2::GLIB2)
+  add_library(GLIB2::GLIB2 UNKNOWN IMPORTED)
+  set_target_properties(GLIB2::GLIB2 PROPERTIES
+                        IMPORTED_LOCATION "${GLIB2_LIBRARIES}"
+                       INTERFACE_INCLUDE_DIRECTORIES "${GLIB2_INCLUDE_DIRS}")
+endif()
+
+mark_as_advanced(GLIB2_INCLUDE_DIRS GLIB2_INCLUDE_DIR
+                 GLIB2_LIBRARIES GLIB2_LIBRARY)
+
+include(FeatureSummary)
+set_package_properties(GLIB2 PROPERTIES
+  URL "https://wiki.gnome.org/Projects/GLib";
+  DESCRIPTION "Event loop and utility library")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/createrepo_c-0.15.6/cmake/Modules/FindGTHREAD2.cmake 
new/createrepo_c-0.15.7/cmake/Modules/FindGTHREAD2.cmake
--- old/createrepo_c-0.15.6/cmake/Modules/FindGTHREAD2.cmake    2020-01-17 
23:23:36.000000000 +0100
+++ new/createrepo_c-0.15.7/cmake/Modules/FindGTHREAD2.cmake    2020-02-14 
20:51:12.000000000 +0100
@@ -1,58 +1,78 @@
-# - Try to find GThread2 
-# Find GThread headers, libraries and the answer to all questions.
+#.rst:
+# FindGTHREAD2
+# ---------
 #
-#  GTHREAD2_FOUND               True if GTHREAD2 got found
-#  GTHREAD2_INCLUDE_DIRS        Location of GTHREAD2 headers 
-#  GTHREAD2_LIBRARIES           List of libraries to use GTHREAD2 
-#
-#  Copyright (c) 2008 Bjoern Ricks <[email protected]>
-#
-#  Redistribution and use is allowed according to the terms of the New
-#  BSD license.
-#  For details see the accompanying COPYING-CMAKE-SCRIPTS file.
-#
-
-INCLUDE( FindPkgConfig )
-
-IF ( GTHREAD2_FIND_REQUIRED )
-       SET( _pkgconfig_REQUIRED "REQUIRED" )
-ELSE( GTHREAD2_FIND_REQUIRED )
-       SET( _pkgconfig_REQUIRED "" )   
-ENDIF ( GTHREAD2_FIND_REQUIRED )
-
-IF ( GTHREAD2_MIN_VERSION )
-       PKG_SEARCH_MODULE( GTHREAD2 ${_pkgconfig_REQUIRED} 
gthread-2.0>=${GTHREAD2_MIN_VERSION} )
-ELSE ( GTHREAD2_MIN_VERSION )
-       PKG_SEARCH_MODULE( GTHREAD2 ${_pkgconfig_REQUIRED} gthread-2.0 )
-ENDIF ( GTHREAD2_MIN_VERSION )
-
-
-IF( NOT GTHREAD2_FOUND AND NOT PKG_CONFIG_FOUND )
-       FIND_PATH( GTHREAD2_INCLUDE_DIRS gthread.h PATH_SUFFIXES glib-2.0/glib 
GLib.framework/Headers/glib )
-       IF ( APPLE ) 
-               FIND_LIBRARY( GTHREAD2_LIBRARIES glib )
-       ELSE ( APPLE )
-               FIND_LIBRARY( GTHREAD2_LIBRARIES gthread-2.0 )
-       ENDIF ( APPLE )
-       
-       #MESSAGE( STATUS "Gthread headers: ${GTHREAD2_INCLUDE_DIRS}" )
-       #MESSAGE( STATUS "Gthread libs: ${GTHREAD2_LIBRARIES}" )
-       
-       # Report results
-       IF ( GTHREAD2_LIBRARIES AND GTHREAD2_INCLUDE_DIRS )     
-               SET( GTHREAD2_FOUND 1 )
-               IF ( NOT GTHREAD2_FIND_QUIETLY )
-                       MESSAGE( STATUS "Found GTHREAD2: ${GTHREAD2_LIBRARIES} 
${GTHREAD2_INCLUDE_DIRS}" )
-               ENDIF ( NOT GTHREAD2_FIND_QUIETLY )
-       ELSE ( GTHREAD2_LIBRARIES AND GTHREAD2_INCLUDE_DIRS )   
-               IF ( GTHREAD2_FIND_REQUIRED )
-                       MESSAGE( SEND_ERROR "Could NOT find GTHREAD2" )
-               ELSE ( GTHREAD2_FIND_REQUIRED )
-                       IF ( NOT GTHREAD2_FIND_QUIETLY )
-                               MESSAGE( STATUS "Could NOT find GTHREAD2" )     
-                       ENDIF ( NOT GTHREAD2_FIND_QUIETLY )
-               ENDIF ( GTHREAD2_FIND_REQUIRED )
-       ENDIF ( GTHREAD2_LIBRARIES AND GTHREAD2_INCLUDE_DIRS )
-ENDIF( NOT GTHREAD2_FOUND AND NOT PKG_CONFIG_FOUND )
+# Try to locate the GThread2 library.
+# If found, this will define the following variables:
+#
+# ``GTHREAD2_FOUND``
+#     True if the GThread2 library is available
+# ``GTHREAD2_INCLUDE_DIRS``
+#     The GThread2 include directories
+# ``GTHREAD2_LIBRARIES``
+#     The GThread2 libraries for linking
+# ``GTHREAD2_INCLUDE_DIR``
+#     Deprecated, use ``GTHREAD2_INCLUDE_DIRS``
+# ``GTHREAD2_LIBRARY``
+#     Deprecated, use ``GTHREAD2_LIBRARIES``
+#
+# If ``GTHREAD2_FOUND`` is TRUE, it will also define the following
+# imported target:
+#
+# ``GTHREAD2::GTHREAD2``
+#     The GTHREAD2 library
+
+#=============================================================================
+# Copyright (c) 2008 Laurent Montel, <[email protected]>
+# Copyright (c) 2020 Dmitry Mikhirev, <[email protected]>
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+# 3. The name of the author may not be used to endorse or promote products
+#    derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#=============================================================================
+
+find_package(PkgConfig)
+pkg_check_modules(PC_GTHREAD2 QUIET gthread-2.0)
+
+find_path(GTHREAD2_INCLUDE_DIRS
+          NAMES gthread.h
+          HINTS ${PC_GTHREAD2_INCLUDEDIR}
+          PATH_SUFFIXES glib-2.0 glib-2.0/glib)
+
+find_library(GTHREAD2_LIBRARIES
+             NAMES gthread-2.0
+             HINTS ${PC_GTHREAD2_LIBDIR}
+)
+
+get_filename_component(gthread2LibDir "${GTHREAD2_LIBRARIES}" PATH)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(GTHREAD2 DEFAULT_MSG GTHREAD2_LIBRARIES 
GTHREAD2_INCLUDE_DIRS)
+
+if(GTHREAD2_FOUND AND NOT TARGET GTHREAD2::GTHREAD2)
+  add_library(GTHREAD2::GTHREAD2 UNKNOWN IMPORTED)
+  set_target_properties(GTHREAD2::GTHREAD2 PROPERTIES
+                        IMPORTED_LOCATION "${GTHREAD2_LIBRARIES}"
+                       INTERFACE_INCLUDE_DIRECTORIES 
"${GTHREAD2_INCLUDE_DIRS}")
+endif()
 
-MARK_AS_ADVANCED( GTHREAD2_LIBRARIES GTHREAD2_INCLUDE_DIRS )
+mark_as_advanced(GTHREAD2_INCLUDE_DIRS GTHREAD2_LIBRARIES)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/createrepo_c-0.15.6/createrepo_c.spec 
new/createrepo_c-0.15.7/createrepo_c.spec
--- old/createrepo_c-0.15.6/createrepo_c.spec   2020-01-17 23:23:36.000000000 
+0100
+++ new/createrepo_c-0.15.7/createrepo_c.spec   2020-02-14 20:51:12.000000000 
+0100
@@ -35,7 +35,7 @@
 
 Summary:        Creates a common metadata repository
 Name:           createrepo_c
-Version:        0.15.6
+Version:        0.15.7
 Release:        1%{?dist}
 License:        GPLv2+
 URL:            https://github.com/rpm-software-management/createrepo_c
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/createrepo_c-0.15.6/src/createrepo_shared.c 
new/createrepo_c-0.15.7/src/createrepo_shared.c
--- old/createrepo_c-0.15.6/src/createrepo_shared.c     2020-01-17 
23:23:36.000000000 +0100
+++ new/createrepo_c-0.15.7/src/createrepo_shared.c     2020-02-14 
20:51:12.000000000 +0100
@@ -110,7 +110,9 @@
     sigaction(SIGUSR2, &sigact, NULL);
 
     // Handle signals that terminate (from the POSIX.1-2001)
+#ifdef SIGPOLL
     sigaction(SIGPOLL, &sigact, NULL);
+#endif
     sigaction(SIGPROF, &sigact, NULL);
     sigaction(SIGVTALRM, &sigact, NULL);
 
@@ -143,7 +145,9 @@
     sigaddset(&intmask, SIGTERM);
     sigaddset(&intmask, SIGUSR1);
     sigaddset(&intmask, SIGUSR2);
+#ifdef SIGPOLL
     sigaddset(&intmask, SIGPOLL);
+#endif
     sigaddset(&intmask, SIGPROF);
     sigaddset(&intmask, SIGVTALRM);
 
@@ -171,7 +175,9 @@
     sigaddset(&intmask, SIGTERM);
     sigaddset(&intmask, SIGUSR1);
     sigaddset(&intmask, SIGUSR2);
+#ifdef SIGPOLL
     sigaddset(&intmask, SIGPOLL);
+#endif
     sigaddset(&intmask, SIGPROF);
     sigaddset(&intmask, SIGVTALRM);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/createrepo_c-0.15.6/src/misc.c 
new/createrepo_c-0.15.7/src/misc.c
--- old/createrepo_c-0.15.6/src/misc.c  2020-01-17 23:23:36.000000000 +0100
+++ new/createrepo_c-0.15.7/src/misc.c  2020-02-14 20:51:12.000000000 +0100
@@ -31,6 +31,8 @@
 #include <stdlib.h>
 #include <string.h>
 #include <sys/time.h>
+#include <sys/types.h>
+#include <sys/wait.h>
 #include <time.h>
 #include <unistd.h>
 #include "cleanup.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/createrepo_c-0.15.6/src/python/updatecollectionpackage-py.c 
new/createrepo_c-0.15.7/src/python/updatecollectionpackage-py.c
--- old/createrepo_c-0.15.6/src/python/updatecollectionpackage-py.c     
2020-01-17 23:23:36.000000000 +0100
+++ new/createrepo_c-0.15.7/src/python/updatecollectionpackage-py.c     
2020-02-14 20:51:12.000000000 +0100
@@ -229,6 +229,8 @@
         "Suggested reboot", OFFSET(reboot_suggested)},
     {"restart_suggested",   (getter)get_int, (setter)set_int,
         "Suggested restart",OFFSET(restart_suggested)},
+    {"relogin_suggested",   (getter)get_int, (setter)set_int,
+        "Suggested relogin",OFFSET(relogin_suggested)},
     {NULL, NULL, NULL, NULL, NULL} /* sentinel */
 };
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/createrepo_c-0.15.6/src/python/updaterecord-py.c 
new/createrepo_c-0.15.7/src/python/updaterecord-py.c
--- old/createrepo_c-0.15.6/src/python/updaterecord-py.c        2020-01-17 
23:23:36.000000000 +0100
+++ new/createrepo_c-0.15.7/src/python/updaterecord-py.c        2020-02-14 
20:51:12.000000000 +0100
@@ -287,8 +287,16 @@
     if (res == NULL) {
         memset(dt, 0, sizeof(struct tm));
         res = strptime(str, "%Y-%m-%d", dt);
-        if (res == NULL)
-           PyErr_SetString(CrErr_Exception, "Invalid date");
+        if (res == NULL) {
+            // Try to convert the whole string to a number if it passes it's 
likely in epoch format
+            char *t;
+            long long int epoch = strtoll(str, &t, 10);
+            if(*t == '\0') {
+                return PyLong_FromLongLong(epoch);
+            } else {
+                PyErr_SetString(CrErr_Exception, "Invalid date");
+            }
+        }
     }
     PyObject *py_dt = PyDateTime_FromDateAndTime(dt->tm_year + 1900,
                                       dt->tm_mon + 1, dt->tm_mday,
@@ -367,11 +375,29 @@
 
     if (check_UpdateRecordStatus(self))
         return -1;
+
+    cr_UpdateRecord *rec = self->record;
+
+    if (PyLong_Check(value)) {
+        size_t epoch = PyLong_AsSize_t(value);
+        /* Length 13 is plenty of space for epoch. */
+        char *date = malloc(13 * sizeof(char));
+
+        int ret = snprintf(date, 13, "%zu", epoch);
+        if (ret < 0 && ret > 12){
+            PyErr_SetString(PyExc_TypeError, "Invalid epoch value!");
+            return -1;
+        }
+        char *str = cr_safe_string_chunk_insert(rec->chunk, date);
+        free(date);
+        *((char **) ((size_t) rec + (size_t) member_offset)) = str;
+        return 0;
+    }
+
     if (!PyDateTime_Check(value) && value != Py_None) {
-        PyErr_SetString(PyExc_TypeError, "DateTime or None expected!");
+        PyErr_SetString(PyExc_TypeError, "DateTime, integer epoch or None 
expected!");
         return -1;
     }
-    cr_UpdateRecord *rec = self->record;
 
     /* Length is 20: yyyy-mm-dd HH:MM:SS */
     char *date = malloc(20 * sizeof(char));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/createrepo_c-0.15.6/src/updateinfo.c 
new/createrepo_c-0.15.7/src/updateinfo.c
--- old/createrepo_c-0.15.6/src/updateinfo.c    2020-01-17 23:23:36.000000000 
+0100
+++ new/createrepo_c-0.15.7/src/updateinfo.c    2020-02-14 20:51:12.000000000 
+0100
@@ -60,6 +60,7 @@
     pkg->sum_type = orig->sum_type;
     pkg->reboot_suggested = orig->reboot_suggested;
     pkg->restart_suggested = orig->restart_suggested;
+    pkg->relogin_suggested = orig->relogin_suggested;
 
     return pkg;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/createrepo_c-0.15.6/src/updateinfo.h 
new/createrepo_c-0.15.7/src/updateinfo.h
--- old/createrepo_c-0.15.6/src/updateinfo.h    2020-01-17 23:23:36.000000000 
+0100
+++ new/createrepo_c-0.15.7/src/updateinfo.h    2020-02-14 20:51:12.000000000 
+0100
@@ -47,6 +47,7 @@
     cr_ChecksumType sum_type;
     gboolean reboot_suggested;
     gboolean restart_suggested;
+    gboolean relogin_suggested;
 
     GStringChunk *chunk;
 } cr_UpdateCollectionPackage;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/createrepo_c-0.15.6/src/xml_dump_updateinfo.c 
new/createrepo_c-0.15.7/src/xml_dump_updateinfo.c
--- old/createrepo_c-0.15.6/src/xml_dump_updateinfo.c   2020-01-17 
23:23:36.000000000 +0100
+++ new/createrepo_c-0.15.7/src/xml_dump_updateinfo.c   2020-02-14 
20:51:12.000000000 +0100
@@ -64,6 +64,8 @@
             xmlNewChild(package, NULL, BAD_CAST "reboot_suggested", "True");
         if (pkg->restart_suggested)
             xmlNewChild(package, NULL, BAD_CAST "restart_suggested", "True");
+        if (pkg->relogin_suggested)
+            xmlNewChild(package, NULL, BAD_CAST "relogin_suggested", "True");
     }
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/createrepo_c-0.15.6/src/xml_parser_updateinfo.c 
new/createrepo_c-0.15.7/src/xml_parser_updateinfo.c
--- old/createrepo_c-0.15.6/src/xml_parser_updateinfo.c 2020-01-17 
23:23:36.000000000 +0100
+++ new/createrepo_c-0.15.7/src/xml_parser_updateinfo.c 2020-02-14 
20:51:12.000000000 +0100
@@ -61,7 +61,7 @@
     STATE_UPDATERECORD_REBOOTSUGGESTED,
     STATE_REBOOTSUGGESTED,
     STATE_RESTARTSUGGESTED,
-    STATE_RELOGINSUGGESTED, // Not implemented
+    STATE_RELOGINSUGGESTED,
     NUMSTATES,
 } cr_UpdateinfoState;
 
@@ -97,7 +97,7 @@
     { STATE_PACKAGE,    "sum",               STATE_SUM,               1 },
     { STATE_PACKAGE,    "reboot_suggested",  STATE_REBOOTSUGGESTED,   0 },
     { STATE_PACKAGE,    "restart_suggested", STATE_RESTARTSUGGESTED,  0 },
-    { STATE_PACKAGE,    "relogin_suggested", STATE_RELOGINSUGGESTED,  0 }, // 
NI
+    { STATE_PACKAGE,    "relogin_suggested", STATE_RELOGINSUGGESTED,  0 },
     { NUMSTATES,        NULL, NUMSTATES, 0 }
 };
 
@@ -386,6 +386,14 @@
         assert(pd->updatecollectionpackage);
         package->restart_suggested = TRUE;
         break;
+
+    case STATE_RELOGINSUGGESTED:
+        assert(pd->updateinfo);
+        assert(pd->updaterecord);
+        assert(pd->updatecollection);
+        assert(pd->updatecollectionpackage);
+        package->relogin_suggested = TRUE;
+        break;
     }
 }
 
@@ -426,6 +434,7 @@
     case STATE_PKGLIST:
     case STATE_REBOOTSUGGESTED:
     case STATE_RESTARTSUGGESTED:
+    case STATE_RELOGINSUGGESTED:
     case STATE_UPDATERECORD_REBOOTSUGGESTED:
         // All elements with no text data and without need of any
         // post processing should go here
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/createrepo_c-0.15.6/tests/python/tests/test_updatecollectionpackage.py 
new/createrepo_c-0.15.7/tests/python/tests/test_updatecollectionpackage.py
--- old/createrepo_c-0.15.6/tests/python/tests/test_updatecollectionpackage.py  
2020-01-17 23:23:36.000000000 +0100
+++ new/createrepo_c-0.15.7/tests/python/tests/test_updatecollectionpackage.py  
2020-02-14 20:51:12.000000000 +0100
@@ -23,6 +23,7 @@
         self.assertEqual(pkg.sum_type, 0)
         self.assertEqual(pkg.reboot_suggested, 0)
         self.assertEqual(pkg.restart_suggested, 0)
+        self.assertEqual(pkg.relogin_suggested, 0)
 
         pkg.name = "foo"
         pkg.version = "1.2"
@@ -35,6 +36,7 @@
         pkg.sum_type = cr.SHA1
         pkg.reboot_suggested = True
         pkg.restart_suggested = True
+        pkg.relogin_suggested = True
 
         self.assertEqual(pkg.name, "foo")
         self.assertEqual(pkg.version, "1.2")
@@ -47,3 +49,4 @@
         self.assertEqual(pkg.sum_type, cr.SHA1)
         self.assertEqual(pkg.reboot_suggested, True)
         self.assertEqual(pkg.restart_suggested, True)
+        self.assertEqual(pkg.relogin_suggested, True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/createrepo_c-0.15.6/tests/python/tests/test_updateinfo.py 
new/createrepo_c-0.15.7/tests/python/tests/test_updateinfo.py
--- old/createrepo_c-0.15.6/tests/python/tests/test_updateinfo.py       
2020-01-17 23:23:36.000000000 +0100
+++ new/createrepo_c-0.15.7/tests/python/tests/test_updateinfo.py       
2020-02-14 20:51:12.000000000 +0100
@@ -62,6 +62,14 @@
         self.assertEqual(len(rec.references), 0)
         self.assertEqual(len(rec.collections), 0)
 
+        rec = cr.UpdateRecord()
+        rec.issued_date = int(now.timestamp())
+        ui.append(rec)
+
+        self.assertEqual(len(ui.updates), 2)
+        rec = ui.updates[1]
+        self.assertEqual(rec.issued_date, int(now.timestamp()))
+
     def test_updateinfo_xml_dump_01(self):
         ui = cr.UpdateInfo()
         xml = ui.xml_dump()
@@ -146,6 +154,7 @@
         pkg.sum_type = cr.SHA1
         pkg.reboot_suggested = True
         pkg.restart_suggested = True
+        pkg.relogin_suggested = True
 
         col = cr.UpdateCollection()
         col.shortname = "short name"
@@ -210,6 +219,7 @@
           <sum type="sha1">abcdef</sum>
           <reboot_suggested>True</reboot_suggested>
           <restart_suggested>True</restart_suggested>
+          <relogin_suggested>True</relogin_suggested>
         </package>
       </collection>
     </pkglist>
@@ -327,6 +337,7 @@
         pkg.sum_type = cr.SHA1
         pkg.reboot_suggested = True
         pkg.restart_suggested = True
+        pkg.relogin_suggested = True
 
         col = cr.UpdateCollection()
         col.shortname = "short name"
@@ -347,7 +358,7 @@
         rec.version = "version"
         rec.id = "id"
         rec.title = "title"
-        rec.issued_date = now
+        rec.issued_date = int(now.timestamp())
         rec.updated_date = now
         rec.rights = "rights"
         rec.release = "release"
@@ -371,7 +382,7 @@
   <update from="from" status="status" type="type" version="version">
     <id>id</id>
     <title>title</title>
-    <issued date="%(now)s"/>
+    <issued date="%(now_epoch)s"/>
     <updated date="%(now)s"/>
     <rights>rights</rights>
     <release>release</release>
@@ -393,9 +404,10 @@
           <sum type="sha1">abcdef</sum>
           <reboot_suggested>True</reboot_suggested>
           <restart_suggested>True</restart_suggested>
+          <relogin_suggested>True</relogin_suggested>
         </package>
       </collection>
     </pkglist>
   </update>
 </updates>
-""" % {"now": now.strftime("%Y-%m-%d %H:%M:%S")})
+""" % {"now": now.strftime("%Y-%m-%d %H:%M:%S"), "now_epoch": 
now.strftime('%s')})
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/createrepo_c-0.15.6/tests/test_xml_parser_updateinfo.c 
new/createrepo_c-0.15.7/tests/test_xml_parser_updateinfo.c
--- old/createrepo_c-0.15.6/tests/test_xml_parser_updateinfo.c  2020-01-17 
23:23:36.000000000 +0100
+++ new/createrepo_c-0.15.7/tests/test_xml_parser_updateinfo.c  2020-02-14 
20:51:12.000000000 +0100
@@ -103,6 +103,7 @@
     g_assert_cmpint(pkg->sum_type, ==, CR_CHECKSUM_SHA256);
     g_assert(pkg->reboot_suggested);
     g_assert(pkg->restart_suggested);
+    g_assert(pkg->relogin_suggested);
 
     cr_updateinfo_free(ui);
 }
@@ -168,6 +169,7 @@
     g_assert_cmpint(pkg->sum_type, ==, CR_CHECKSUM_UNKNOWN);
     g_assert(!pkg->reboot_suggested);
     g_assert(!pkg->restart_suggested);
+    g_assert(!pkg->relogin_suggested);
 
     cr_updateinfo_free(ui);
 }
@@ -258,6 +260,12 @@
     g_assert_cmpstr(pkg->version, ==, "0.7");
     g_assert_cmpstr(pkg->filename, ==, "duck-0.7-1.noarch.rpm");
 
+    update = g_slist_nth_data(ui->updates, 5);
+
+    g_assert_cmpstr(update->id, ==, "RHEA-2012:0060");
+    g_assert_cmpstr(update->issued_date, ==, "1555429284");
+    g_assert_cmpstr(update->updated_date, ==, "2018-07-29 06:00:01 UTC");
+
     cr_updateinfo_free(ui);
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/createrepo_c-0.15.6/tests/testdata/updateinfo_files/updateinfo_01.xml 
new/createrepo_c-0.15.7/tests/testdata/updateinfo_files/updateinfo_01.xml
--- old/createrepo_c-0.15.6/tests/testdata/updateinfo_files/updateinfo_01.xml   
2020-01-17 23:23:36.000000000 +0100
+++ new/createrepo_c-0.15.7/tests/testdata/updateinfo_files/updateinfo_01.xml   
2020-02-14 20:51:12.000000000 +0100
@@ -24,6 +24,7 @@
           <sum 
type="sha256">29be985e1f652cd0a29ceed6a1c49964d3618bddd22f0be3292421c8777d26c8</sum>
           <reboot_suggested/>
           <restart_suggested/>
+          <relogin_suggested/>
         </package>
       </collection>
     </pkglist>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/createrepo_c-0.15.6/tests/testdata/updateinfo_files/updateinfo_03.xml 
new/createrepo_c-0.15.7/tests/testdata/updateinfo_files/updateinfo_03.xml
--- old/createrepo_c-0.15.6/tests/testdata/updateinfo_files/updateinfo_03.xml   
2020-01-17 23:23:36.000000000 +0100
+++ new/createrepo_c-0.15.7/tests/testdata/updateinfo_files/updateinfo_03.xml   
2020-02-14 20:51:12.000000000 +0100
@@ -113,7 +113,7 @@
   <id>RHEA-2012:0060</id>
   <title>Duck_0.8_Erratum</title>
   <release>1</release>
-  <issued date="2018-01-29 16:08:09"/>
+  <issued date="1555429284"/>
   <updated date="2018-07-29 06:00:01 UTC"/>
   <description>Duck_0.8_Erratum description</description>
   <pkglist>


Reply via email to