expat update would be good

Brian Inglis Brian.Inglis@Shaw.ca
Sun Mar 5 23:08:52 GMT 2023


On 2023-03-05 13:25, Marco Atzeri via Cygwin wrote:
> On 05.03.2023 20:24, Brian Inglis via Cygwin wrote:
>> [Xpost to cygwin in case apps not monitored]
>> On 2023-03-05 08:00, Marco Atzeri via Cygwin-apps wrote:
>>> On 13.02.2022 21:34, Brian Inglis wrote:
>>>> [posting to apps to be less public]
>>>> https://nvd.nist.gov/vuln/detail/CVE-2022-23990
>>>> expat < 2.4.4
>>
>>> ping ?
>>> In addition the cmake import library have some issues also
>>
>> Been a year since I hinted!
>>
>> Fixed releases build okay for me 2.4.1/5/9 up to current 2.5.0.
>> See:
>>
>>      https://cygwin.com/cgi-bin2/jobs.cgi?id=5541
>>      https://github.com/cygwin/scallywag/actions/runs/4337543797
>> https://github.com/cygwin/scallywag/actions/runs/4337543797/jobs/7573650090
>>
>> What are you seeing?

> building latest gdal I was forced to add a line on expact.c
> $ grep private  /usr/lib/pkgconfig/expat.pc
> Libs.private: -liconv

Do not see any need for libiconv/-devel in any expat? See attached.

> and move away
> /usr/lib/make/expat-2.4.1
> as the settings are wrong and cmake complains about missing files
> $ grep -H "so.1" *.cmake
> expat-noconfig.cmake:  IMPORTED_LOCATION_NOCONFIG 
> "${_IMPORT_PREFIX}/lib/libexpat.so.1.8.1"
> expat-noconfig.cmake:  IMPORTED_SONAME_NOCONFIG "libexpat.so.1"
> expat-noconfig.cmake:list(APPEND _IMPORT_CHECK_FILES_FOR_expat::expat 
> "${_IMPORT_PREFIX}/lib/libexpat.so.1.8.1" )

Fixed in 2.5.0 - see attached.

> If Doug does not reply, are you considering to adopt expat ?

No - I do not use it and do not maintain anything which uses it:

$ cygcheck-dep -qn libexpat{1,-devel} expat
  libexpat1: is needed for ( avahi cmake dbus dbus-bash-completion dri-drivers 
expat gdb git graphviz lftp libaprutil1 libexpat-devel libfontconfig1 libgdal20 
libgdal26 libgdal28 libgdal29 libgdal30 libgdal31 libgvc6 libwx_baseu2.8_0 
perl-XML-Parser python27 python36 python37 python38 python39 rats subversion 
tcl-tcldot )
  libexpat-devel: is needed for ( libfontconfig-devel )
  expat: is needed for ( )

If Doug does not have time, you seem the most appropriate candidate, as cmake, 
gdal, python maintainer, if you could manage? Or put out a CFA on apps?

For testing your latest builds, just pull source, and change VERSION=2.5.0, add 
LICENSE=MIT, and BUILD_REQUIRES="gettext-devel docbook2X" in case the former is 
needed, as there are .Po files used: not sure if po4a should also be added for 
other files?

-- 
Take care. Thanks, Brian Inglis              Calgary, Alberta, Canada

La perfection est atteinte                   Perfection is achieved
non pas lorsqu'il n'y a plus rien à ajouter  not when there is no more to add
mais lorsqu'il n'y a plus rien à retirer     but when there is no more to cut
                                 -- Antoine de Saint-Exupéry
-------------- next part --------------
--- a/usr/lib/pkgconfig/expat.pc	2023-03-05 15:55:08.783121700 -0700
+++ b/usr/lib/pkgconfig/expat.pc	2023-03-05 11:08:55.000000000 -0700
@@ -4,8 +4,9 @@ libdir=${exec_prefix}/lib
 includedir=${prefix}/include
 
 Name: expat
-Version: 2.4.1
+Version: 2.5.0
 Description: expat XML parser
-URL: http://www.libexpat.org
+URL: https://libexpat.github.io/
 Libs: -L${libdir} -lexpat
+Libs.private: 
 Cflags: -I${includedir}
-------------- next part --------------
diff -pu --color --strip-trailing-cr /usr/lib/cmake/expat-2.4.1/expat.cmake /usr/lib/cmake/expat-2.5.0/expat.cmake
--- /usr/lib/cmake/expat-2.4.1/expat.cmake	2021-07-23 13:09:25.000000000 -0600
+++ /usr/lib/cmake/expat-2.5.0/expat.cmake	2023-03-05 11:08:55.000000000 -0700
@@ -1,10 +1,13 @@
 # Generated by CMake
 
-if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5)
-   message(FATAL_ERROR "CMake >= 2.6.0 required")
+if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.8)
+   message(FATAL_ERROR "CMake >= 2.8.0 required")
+endif()
+if(CMAKE_VERSION VERSION_LESS "2.8.3")
+   message(FATAL_ERROR "CMake >= 2.8.3 required")
 endif()
 cmake_policy(PUSH)
-cmake_policy(VERSION 2.6...3.18)
+cmake_policy(VERSION 2.8.3...3.22)
 #----------------------------------------------------------------
 # Generated CMake target import file.
 #----------------------------------------------------------------
@@ -13,32 +16,34 @@ cmake_policy(VERSION 2.6...3.18)
 set(CMAKE_IMPORT_FILE_VERSION 1)
 
 # Protect against multiple inclusion, which would fail when already imported targets are added once more.
-set(_targetsDefined)
-set(_targetsNotDefined)
-set(_expectedTargets)
-foreach(_expectedTarget expat::expat)
-  list(APPEND _expectedTargets ${_expectedTarget})
-  if(NOT TARGET ${_expectedTarget})
-    list(APPEND _targetsNotDefined ${_expectedTarget})
-  endif()
-  if(TARGET ${_expectedTarget})
-    list(APPEND _targetsDefined ${_expectedTarget})
+set(_cmake_targets_defined "")
+set(_cmake_targets_not_defined "")
+set(_cmake_expected_targets "")
+foreach(_cmake_expected_target IN ITEMS expat::expat)
+  list(APPEND _cmake_expected_targets "${_cmake_expected_target}")
+  if(TARGET "${_cmake_expected_target}")
+    list(APPEND _cmake_targets_defined "${_cmake_expected_target}")
+  else()
+    list(APPEND _cmake_targets_not_defined "${_cmake_expected_target}")
   endif()
 endforeach()
-if("${_targetsDefined}" STREQUAL "${_expectedTargets}")
-  unset(_targetsDefined)
-  unset(_targetsNotDefined)
-  unset(_expectedTargets)
-  set(CMAKE_IMPORT_FILE_VERSION)
+unset(_cmake_expected_target)
+if(_cmake_targets_defined STREQUAL _cmake_expected_targets)
+  unset(_cmake_targets_defined)
+  unset(_cmake_targets_not_defined)
+  unset(_cmake_expected_targets)
+  unset(CMAKE_IMPORT_FILE_VERSION)
   cmake_policy(POP)
   return()
 endif()
-if(NOT "${_targetsDefined}" STREQUAL "")
-  message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n")
+if(NOT _cmake_targets_defined STREQUAL "")
+  string(REPLACE ";" ", " _cmake_targets_defined_text "${_cmake_targets_defined}")
+  string(REPLACE ";" ", " _cmake_targets_not_defined_text "${_cmake_targets_not_defined}")
+  message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_cmake_targets_defined_text}\nTargets not yet defined: ${_cmake_targets_not_defined_text}\n")
 endif()
-unset(_targetsDefined)
-unset(_targetsNotDefined)
-unset(_expectedTargets)
+unset(_cmake_targets_defined)
+unset(_cmake_targets_not_defined)
+unset(_cmake_expected_targets)
 
 
 # Compute the installation prefix relative to this file.
@@ -55,24 +60,30 @@ add_library(expat::expat SHARED IMPORTED
 
 set_target_properties(expat::expat PROPERTIES
   INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
+  INTERFACE_LINK_LIBRARIES "m"
 )
 
+if(CMAKE_VERSION VERSION_LESS 2.8.12)
+  message(FATAL_ERROR "This file relies on consumers using CMake 2.8.12 or greater.")
+endif()
+
 # Load information for each installed configuration.
-get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
-file(GLOB CONFIG_FILES "${_DIR}/expat-*.cmake")
-foreach(f ${CONFIG_FILES})
-  include(${f})
+file(GLOB _cmake_config_files "${CMAKE_CURRENT_LIST_DIR}/expat-*.cmake")
+foreach(_cmake_config_file IN LISTS _cmake_config_files)
+  include("${_cmake_config_file}")
 endforeach()
+unset(_cmake_config_file)
+unset(_cmake_config_files)
 
 # Cleanup temporary variables.
 set(_IMPORT_PREFIX)
 
 # Loop over all imported files and verify that they actually exist
-foreach(target ${_IMPORT_CHECK_TARGETS} )
-  foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} )
-    if(NOT EXISTS "${file}" )
-      message(FATAL_ERROR "The imported target \"${target}\" references the file
-   \"${file}\"
+foreach(_cmake_target IN LISTS _cmake_import_check_targets)
+  foreach(_cmake_file IN LISTS "_cmake_import_check_files_for_${_cmake_target}")
+    if(NOT EXISTS "${_cmake_file}")
+      message(FATAL_ERROR "The imported target \"${_cmake_target}\" references the file
+   \"${_cmake_file}\"
 but this file does not exist.  Possible reasons include:
 * The file was deleted, renamed, or moved to another location.
 * An install or uninstall procedure did not complete successfully.
@@ -82,9 +93,11 @@ but not all the files it references.
 ")
     endif()
   endforeach()
-  unset(_IMPORT_CHECK_FILES_FOR_${target})
+  unset(_cmake_file)
+  unset("_cmake_import_check_files_for_${_cmake_target}")
 endforeach()
-unset(_IMPORT_CHECK_TARGETS)
+unset(_cmake_target)
+unset(_cmake_import_check_targets)
 
 # This file does not depend on other imported targets which have
 # been exported from the same project but in a separate export set.
diff -pu --color --strip-trailing-cr /usr/lib/cmake/expat-2.4.1/expat-config-version.cmake /usr/lib/cmake/expat-2.5.0/expat-config-version.cmake
--- /usr/lib/cmake/expat-2.4.1/expat-config-version.cmake	2021-07-23 13:09:25.000000000 -0600
+++ /usr/lib/cmake/expat-2.5.0/expat-config-version.cmake	2023-03-05 11:08:55.000000000 -0700
@@ -9,16 +9,19 @@
 # The variable CVF_VERSION must be set before calling configure_file().
 
 
-set(PACKAGE_VERSION "2.4.1")
+set(PACKAGE_VERSION "2.5.0")
 
 if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION)
   set(PACKAGE_VERSION_COMPATIBLE FALSE)
 else()
 
-  if("2.4.1" MATCHES "^([0-9]+)\\.")
+  if("2.5.0" MATCHES "^([0-9]+)\\.")
     set(CVF_VERSION_MAJOR "${CMAKE_MATCH_1}")
+    if(NOT CVF_VERSION_MAJOR VERSION_EQUAL 0)
+      string(REGEX REPLACE "^0+" "" CVF_VERSION_MAJOR "${CVF_VERSION_MAJOR}")
+    endif()
   else()
-    set(CVF_VERSION_MAJOR "2.4.1")
+    set(CVF_VERSION_MAJOR "2.5.0")
   endif()
 
   if(PACKAGE_FIND_VERSION_RANGE)
diff -pu --color --strip-trailing-cr /usr/lib/cmake/expat-2.4.1/expat-noconfig.cmake /usr/lib/cmake/expat-2.5.0/expat-noconfig.cmake
--- /usr/lib/cmake/expat-2.4.1/expat-noconfig.cmake	2021-07-23 13:09:25.000000000 -0600
+++ /usr/lib/cmake/expat-2.5.0/expat-noconfig.cmake	2023-03-05 11:08:55.000000000 -0700
@@ -1,19 +1,19 @@
 #----------------------------------------------------------------
-# Generated CMake target import file.
+# Generated CMake target import file for configuration "NoConfig".
 #----------------------------------------------------------------
 
 # Commands may need to know the format version.
 set(CMAKE_IMPORT_FILE_VERSION 1)
 
-# Import target "expat::expat" for configuration ""
+# Import target "expat::expat" for configuration "NoConfig"
 set_property(TARGET expat::expat APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG)
 set_target_properties(expat::expat PROPERTIES
-  IMPORTED_LOCATION_NOCONFIG "${_IMPORT_PREFIX}/lib/libexpat.so.1.8.1"
-  IMPORTED_SONAME_NOCONFIG "libexpat.so.1"
+  IMPORTED_IMPLIB_NOCONFIG "${_IMPORT_PREFIX}/lib/libexpat.dll.a"
+  IMPORTED_LOCATION_NOCONFIG "${_IMPORT_PREFIX}/bin/cygexpat-1.dll"
   )
 
-list(APPEND _IMPORT_CHECK_TARGETS expat::expat )
-list(APPEND _IMPORT_CHECK_FILES_FOR_expat::expat "${_IMPORT_PREFIX}/lib/libexpat.so.1.8.1" )
+list(APPEND _cmake_import_check_targets expat::expat )
+list(APPEND _cmake_import_check_files_for_expat::expat "${_IMPORT_PREFIX}/lib/libexpat.dll.a" "${_IMPORT_PREFIX}/bin/cygexpat-1.dll" )
 
 # Commands beyond this point should not need to know the version.
 set(CMAKE_IMPORT_FILE_VERSION)


More information about the Cygwin mailing list