tags 425117 + patch thanks Martin Michlmayr <[EMAIL PROTECTED]> writes:
> Package: schroot > Version: 1.0.5-1 > > I'm getting the following error when starting schroot: > > 13:[EMAIL PROTECTED]: ~] schroot > E: locale::facet::_S_create_c_locale name not valid > > The reason is that I have LANG=en_US.UTF-8 but this locale wasn't > generated. After generating this locale file, schroot started to > work, but I think it should also work without having the locale > installed. Does the attached patch fix things for you? Note, you'll need to run ./bootstrap due to #424038 if you are using current unstable. Thanks, Roger -- .''`. Roger Leigh : :' : Debian GNU/Linux http://people.debian.org/~rleigh/ `. `' Printing on GNU/Linux? http://gutenprint.sourceforge.net/ `- GPG Public Key: 0x25BFB848 Please GPG sign your mail.
Index: sbuild/sbuild-basic-keyfile.tcc
===================================================================
--- sbuild/sbuild-basic-keyfile.tcc (revision 1173)
+++ sbuild/sbuild-basic-keyfile.tcc (working copy)
@@ -179,7 +179,15 @@
key_type const& key,
std::string& value) const
{
- std::string localename = std::locale("").name();
+ std::string localename;
+ try
+ {
+ localename = std::locale("").name();
+ }
+ catch (std::runtime_error const& e) // Invalid locale
+ {
+ localename = std::locale::classic();
+ }
std::string::size_type pos;
bool status = false;
Index: configure.ac
===================================================================
--- configure.ac (revision 1173)
+++ configure.ac (working copy)
@@ -222,20 +222,20 @@
[AC_MSG_FAILURE([liblockdev (lockdev) is not installed, but is required by schroot])])
AC_SUBST([LOCKDEV_LIBS])
-AC_MSG_CHECKING([for boost::program_options::variables_map in -lboost_program_options])
+AC_MSG_CHECKING([for boost::program_options::variables_map in -lboost_program_options-st])
saved_ldflags="${LDFLAGS}"
-LDFLAGS="${LDFLAGS} -lboost_program_options"
+LDFLAGS="${LDFLAGS} -lboost_program_options-st"
AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <boost/program_options.hpp>],
[boost::program_options::variables_map::variables_map dummy()])],
[AC_MSG_RESULT([yes])
- BOOST_LIBS="${BOOST_LIBS} -lboost_program_options"],
+ BOOST_LIBS="${BOOST_LIBS} -lboost_program_options-st"],
[AC_MSG_RESULT([no])
AC_MSG_FAILURE([libboost_program_options (Boost C++ Libraries) is not installed, but is required by schroot])])
LDFLAGS="${saved_ldflags}"
-AC_MSG_CHECKING([for boost::program_options::options_description::options() in -lboost_program_options])
+AC_MSG_CHECKING([for boost::program_options::options_description::options() in -lboost_program_options-st])
saved_ldflags="${LDFLAGS}"
-LDFLAGS="${LDFLAGS} -lboost_program_options"
+LDFLAGS="${LDFLAGS} -lboost_program_options-st"
AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <boost/program_options.hpp>],
[boost::program_options::options_description testgrp("test group");
bool notused = testgrp.options().empty();
@@ -250,13 +250,13 @@
AC_DEFINE(BOOST_PROGRAM_OPTIONS_DESCRIPTION_OLD, 1)
fi
-AC_MSG_CHECKING([for boost::regex in -lboost_regex])
+AC_MSG_CHECKING([for boost::regex in -lboost_regex-st])
saved_ldflags="${LDFLAGS}"
-LDFLAGS="${LDFLAGS} -lboost_regex"
+LDFLAGS="${LDFLAGS} -lboost_regex-st"
AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <boost/regex.hpp>],
[boost::regex("^foo[bar]$")])],
[AC_MSG_RESULT([yes])
- BOOST_LIBS="${BOOST_LIBS} -lboost_regex"],
+ BOOST_LIBS="${BOOST_LIBS} -lboost_regex-st"],
[AC_MSG_RESULT([no])
AC_MSG_FAILURE([libboost_regex (Boost C++ Libraries) is not installed, but is required by schroot])])
LDFLAGS="${saved_ldflags}"
Index: bin/schroot-base/schroot-base-run.h
===================================================================
--- bin/schroot-base/schroot-base-run.h (revision 1173)
+++ bin/schroot-base/schroot-base-run.h (working copy)
@@ -51,7 +51,14 @@
try
{
// Set up locale.
- std::locale::global(std::locale(""));
+ try
+ {
+ std::locale::global(std::locale(""));
+ }
+ catch (std::runtime_error const& e) // Invalid locale
+ {
+ std::locale::global(std::locale::classic());
+ }
std::cout.imbue(std::locale());
std::cerr.imbue(std::locale());
pgpZVzAMcudlv.pgp
Description: PGP signature

