schroot: fix compilation with GCC14
authorRosen Penev <rosenp@gmail.com>
Mon, 13 May 2024 22:59:55 +0000 (15:59 -0700)
committerJosef Schlehofer <pepe.schlehofer@gmail.com>
Wed, 19 Jun 2024 20:27:54 +0000 (22:27 +0200)
GCC now does not allow assigning an std::locale to an std::string. No
idea why it worked originally.

Also fixed compilation with full NLS.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
(cherry picked from commit c3e2dcc128adde5af8b0d07c38962cc4fd8b3a3b)

admin/schroot/Makefile
admin/schroot/patches/020-gcc14.patch [new file with mode: 0644]

index 967efdc0778892b0f6b28992060d986346790f3a..d769e5dc7da405f9236b11603bc41a79c71fb329 100644 (file)
@@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=reschroot
 PKG_VERSION:=1.6.13
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://codeberg.org/shelter/reschroot/archive/release
diff --git a/admin/schroot/patches/020-gcc14.patch b/admin/schroot/patches/020-gcc14.patch
new file mode 100644 (file)
index 0000000..23a57ac
--- /dev/null
@@ -0,0 +1,32 @@
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -310,6 +310,8 @@ include_directories(${PROJECT_BINARY_DIR
+                     ${PROJECT_BINARY_DIR}
+                     ${PROJECT_SOURCE_DIR})
++find_package(Intl)
++
+ add_subdirectory(sbuild)
+ add_subdirectory(bin)
+ add_subdirectory(etc)
+--- a/sbuild/CMakeLists.txt
++++ b/sbuild/CMakeLists.txt
+@@ -208,6 +208,7 @@ add_library(sbuild STATIC
+             ${public_chroot_facet_cc_sources})
+ target_link_libraries(sbuild
+                       PRIVATE
++                      Intl::Intl
+                         ${CMAKE_THREAD_LIBS_INIT}
+                         ${PAM_LIBRARY}
+                         ${UUID_LIBRARY}
+--- a/sbuild/sbuild-basic-keyfile.tcc
++++ b/sbuild/sbuild-basic-keyfile.tcc
+@@ -214,7 +214,7 @@ sbuild::basic_keyfile<K, P>::get_locale_
+     }
+   catch (std::runtime_error const& e) // Invalid locale
+     {
+-      localename = std::locale::classic();
++      localename = std::locale::classic().name();
+     }
+   std::string::size_type pos;
+   bool status = false;