184 lines
6.2 KiB
Diff
184 lines
6.2 KiB
Diff
|
Author: Florian Weimer <fweimer@redhat.com>
|
|||
|
Date: Tue Jun 4 14:34:42 2019 +0200
|
|||
|
|
|||
|
locale: Make the file name of the locale archive configurable
|
|||
|
|
|||
|
This improves support for parallel installation and upgrade scenarios
|
|||
|
involving changes to the locale archive format or the data stored in
|
|||
|
it.
|
|||
|
|
|||
|
diff --git a/INSTALL b/INSTALL
|
|||
|
index e137a71169651929..0244b0aa9689336a 100644
|
|||
|
--- a/INSTALL
|
|||
|
+++ b/INSTALL
|
|||
|
@@ -106,6 +106,14 @@ if 'CFLAGS' is specified it must enable optimization. For example:
|
|||
|
particular case and potentially change debugging information and
|
|||
|
metadata only).
|
|||
|
|
|||
|
+'--with-locale-archive-name=NAME'
|
|||
|
+ Use NAME as the file name of the locale archive, and not the
|
|||
|
+ default 'locale-archive'. Usually, the locale archive is stored in
|
|||
|
+ the directory '/usr/lib/locale' (for both 32-bit and 64-bit
|
|||
|
+ targets). For parallel installation of partially compatible
|
|||
|
+ versions of the GNU C Library, this option can be used to alter the
|
|||
|
+ name of the file used by glibc and by the 'localedef' tool.
|
|||
|
+
|
|||
|
'--disable-shared'
|
|||
|
Don't build shared libraries even if it is possible. Not all
|
|||
|
systems support shared libraries; you need ELF support and
|
|||
|
diff --git a/config.h.in b/config.h.in
|
|||
|
index 824dfe8d8cb61dd1..7d263447ed153766 100644
|
|||
|
--- a/config.h.in
|
|||
|
+++ b/config.h.in
|
|||
|
@@ -189,6 +189,9 @@
|
|||
|
/* Define if the linker defines __ehdr_start. */
|
|||
|
#undef HAVE_EHDR_START
|
|||
|
|
|||
|
+/* The file name of the locale archive (without the directory). */
|
|||
|
+#undef LOCALE_ARCHIVE_NAME
|
|||
|
+
|
|||
|
/*
|
|||
|
*/
|
|||
|
|
|||
|
diff --git a/config.make.in b/config.make.in
|
|||
|
index 2fed3da773020a09..a6421039ebbbd966 100644
|
|||
|
--- a/config.make.in
|
|||
|
+++ b/config.make.in
|
|||
|
@@ -23,6 +23,7 @@ datarootdir = @datarootdir@
|
|||
|
localstatedir = @libc_cv_localstatedir@
|
|||
|
localedir = @localedir@
|
|||
|
multidir= @libc_cv_multidir@
|
|||
|
+locale-archive-name = @locale_archive_name@
|
|||
|
|
|||
|
# Should we use and build ldconfig?
|
|||
|
use-ldconfig = @use_ldconfig@
|
|||
|
diff --git a/configure b/configure
|
|||
|
index c773c487b542b3be..0d9645c389d3f111 100755
|
|||
|
--- a/configure
|
|||
|
+++ b/configure
|
|||
|
@@ -687,6 +687,7 @@ hardcoded_path_in_tests
|
|||
|
enable_timezone_tools
|
|||
|
extra_nonshared_cflags
|
|||
|
use_default_link
|
|||
|
+locale_archive_name
|
|||
|
sysheaders
|
|||
|
ac_ct_CXX
|
|||
|
CXXFLAGS
|
|||
|
@@ -763,6 +764,7 @@ with_gd_lib
|
|||
|
with_binutils
|
|||
|
with_selinux
|
|||
|
with_headers
|
|||
|
+with_locale_archive_name
|
|||
|
with_default_link
|
|||
|
with_nonshared_cflags
|
|||
|
enable_sanity_checks
|
|||
|
@@ -1484,6 +1486,9 @@ Optional Packages:
|
|||
|
--with-selinux if building with SELinux support
|
|||
|
--with-headers=PATH location of system headers to use (for example
|
|||
|
/usr/src/linux/include) [default=compiler default]
|
|||
|
+ --with-locale-archive-name=NAME
|
|||
|
+ file name of the locale archive
|
|||
|
+ [default=locale-archive]
|
|||
|
--with-default-link do not use explicit linker scripts
|
|||
|
--with-nonshared-cflags=CFLAGS
|
|||
|
build nonshared libraries with additional CFLAGS
|
|||
|
@@ -3335,6 +3340,20 @@ fi
|
|||
|
|
|||
|
|
|||
|
|
|||
|
+# Check whether --with-locale-archive-name was given.
|
|||
|
+if test "${with_locale_archive_name+set}" = set; then :
|
|||
|
+ withval=$with_locale_archive_name; locale_archive_name=$withval
|
|||
|
+else
|
|||
|
+ locale_archive_name=locale-archive
|
|||
|
+fi
|
|||
|
+
|
|||
|
+cat >>confdefs.h <<_ACEOF
|
|||
|
+#define LOCALE_ARCHIVE_NAME "$locale_archive_name"
|
|||
|
+_ACEOF
|
|||
|
+
|
|||
|
+
|
|||
|
+
|
|||
|
+
|
|||
|
|
|||
|
# Check whether --with-default-link was given.
|
|||
|
if test "${with_default_link+set}" = set; then :
|
|||
|
diff --git a/configure.ac b/configure.ac
|
|||
|
index 598ba6c4aed08a3b..1b33559103b65e8f 100644
|
|||
|
--- a/configure.ac
|
|||
|
+++ b/configure.ac
|
|||
|
@@ -147,6 +147,15 @@ AC_ARG_WITH([headers],
|
|||
|
[sysheaders=''])
|
|||
|
AC_SUBST(sysheaders)
|
|||
|
|
|||
|
+AC_ARG_WITH([locale-archive-name],
|
|||
|
+ AC_HELP_STRING([--with-locale-archive-name=NAME],
|
|||
|
+ [file name of the locale archive
|
|||
|
+ @<:@default=locale-archive@:>@]),
|
|||
|
+ [locale_archive_name=$withval],
|
|||
|
+ [locale_archive_name=locale-archive])
|
|||
|
+AC_DEFINE_UNQUOTED(LOCALE_ARCHIVE_NAME, "$locale_archive_name")
|
|||
|
+AC_SUBST(locale_archive_name)
|
|||
|
+
|
|||
|
AC_SUBST(use_default_link)
|
|||
|
AC_ARG_WITH([default-link],
|
|||
|
AC_HELP_STRING([--with-default-link],
|
|||
|
diff --git a/locale/loadarchive.c b/locale/loadarchive.c
|
|||
|
index 803c1cf2a45838a7..834f794abf6a830c 100644
|
|||
|
--- a/locale/loadarchive.c
|
|||
|
+++ b/locale/loadarchive.c
|
|||
|
@@ -42,7 +42,7 @@
|
|||
|
|
|||
|
|
|||
|
/* Name of the locale archive file. */
|
|||
|
-static const char archfname[] = COMPLOCALEDIR "/locale-archive";
|
|||
|
+static const char archfname[] = COMPLOCALEDIR "/" LOCALE_ARCHIVE_NAME;
|
|||
|
|
|||
|
/* Size of initial mapping window, optimal if large enough to
|
|||
|
cover the header plus the initial locale. */
|
|||
|
diff --git a/locale/programs/locale.c b/locale/programs/locale.c
|
|||
|
index 6eae3175bb3cad9a..be8f07b20f100a10 100644
|
|||
|
--- a/locale/programs/locale.c
|
|||
|
+++ b/locale/programs/locale.c
|
|||
|
@@ -46,7 +46,7 @@
|
|||
|
#include "../locarchive.h"
|
|||
|
#include <programs/xmalloc.h>
|
|||
|
|
|||
|
-#define ARCHIVE_NAME COMPLOCALEDIR "/locale-archive"
|
|||
|
+#define ARCHIVE_NAME COMPLOCALEDIR "/" LOCALE_ARCHIVE_NAME
|
|||
|
|
|||
|
/* If set print the name of the category. */
|
|||
|
static int show_category_name;
|
|||
|
diff --git a/locale/programs/locarchive.c b/locale/programs/locarchive.c
|
|||
|
index e6310b18beee8dd2..02f44f682452de3e 100644
|
|||
|
--- a/locale/programs/locarchive.c
|
|||
|
+++ b/locale/programs/locarchive.c
|
|||
|
@@ -57,7 +57,7 @@
|
|||
|
|
|||
|
extern const char *output_prefix;
|
|||
|
|
|||
|
-#define ARCHIVE_NAME COMPLOCALEDIR "/locale-archive"
|
|||
|
+#define ARCHIVE_NAME COMPLOCALEDIR "/" LOCALE_ARCHIVE_NAME
|
|||
|
|
|||
|
static const char *locnames[] =
|
|||
|
{
|
|||
|
diff --git a/manual/install.texi b/manual/install.texi
|
|||
|
index 29f6b68e25d04e4b..19e1f9ca161032b1 100644
|
|||
|
--- a/manual/install.texi
|
|||
|
+++ b/manual/install.texi
|
|||
|
@@ -131,6 +131,14 @@ that the objects in @file{libc_nonshared.a} are compiled with this flag
|
|||
|
(although this will not affect the generated code in this particular
|
|||
|
case and potentially change debugging information and metadata only).
|
|||
|
|
|||
|
+@item --with-locale-archive-name=@var{name}
|
|||
|
+Use @var{name} as the file name of the locale archive, and not the
|
|||
|
+default @file{locale-archive}. Usually, the locale archive is stored
|
|||
|
+in the directory @file{/usr/lib/locale} (for both 32-bit and 64-bit
|
|||
|
+targets). For parallel installation of partially compatible versions
|
|||
|
+of @theglibc{}, this option can be used to alter the name of the file
|
|||
|
+used by glibc and by the @command{localedef} tool.
|
|||
|
+
|
|||
|
@c disable static doesn't work currently
|
|||
|
@c @item --disable-static
|
|||
|
@c Don't build static libraries. Static libraries aren't that useful these
|