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