This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] localedef: Add --localedir and --archive-file options (Bug 19130)


On 10/20/2015 11:54 AM, Andreas Schwab wrote:
> "Carlos O'Donell" <carlos@redhat.com> writes:
> 
>> (2) Rename the uses of LOCALEDIR and $(localedir) within the glibc configury
>>     to avoid confusion. I suggest LOCARCHDIR and $(locarchdir).
> 
> What is a locarch?

The binary locale archive and binary compiled locales are loaded from
$(libdir)/locale. What variable name can we use for this path? The selected
name should be distinguishable from `localedir` which is the name of the
GNU standard configure name for the location to search for locale-specific
message catalogs e.g. --localedir.

My present suggestions are:

(1) LOCARCHDIR / $(locarchdir)

(2) LOCALE_ARCHIVE_DIR / $(locale_archive_dir)

(3) LOCARDIR / $(locardir)

For example the following patch does (2).

diff --git a/Makeconfig b/Makeconfig
index 1dc522c..4e585ce 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -190,11 +190,11 @@ zonedir = $(datadir)/zoneinfo
 endif
 inst_zonedir = $(install_root)$(zonedir)
 
-# Where to install the locale files.
-ifndef localedir
-localedir = $(libdir)/locale
+# Where to install the binary locale archive and binary locale files.
+ifndef locale_archive_dir
+locale_archive_dir = $(libdir)/locale
 endif
-inst_localedir = $(install_root)$(localedir)
+inst_locale_archive_dir = $(install_root)$(locale_archive_dir)
 
 # Where to install the message catalog data files (which are
 # machine-independent).
diff --git a/aclocal.m4 b/aclocal.m4
index abc34d2..86247bd 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -296,7 +296,7 @@ case "$prefix" in
   if test "$libdir" = '${exec_prefix}/lib'; then
     libdir='${exec_prefix}/$1';
     # Locale data can be shared between 32-bit and 64-bit libraries.
-    libc_cv_localedir='${exec_prefix}/lib/locale'
+    libc_cv_locale_archive_dir='${exec_prefix}/lib/locale'
   fi
   ;;
 esac])
diff --git a/config.make.in b/config.make.in
index 7f561eb..54377a7 100644
--- a/config.make.in
+++ b/config.make.in
@@ -12,7 +12,7 @@ datadir = @datadir@
 libdir = @libdir@
 slibdir = @libc_cv_slibdir@
 rtlddir = @libc_cv_rtlddir@
-localedir = @libc_cv_localedir@
+locale_archive_dir = @libc_cv_locale_archive_dir@
 sysconfdir = @libc_cv_sysconfdir@
 libexecdir = @libexecdir@
 rootsbindir = @libc_cv_rootsbindir@
diff --git a/configure.ac b/configure.ac
index eba7a15..a8df166 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1920,7 +1920,7 @@ AC_SUBST(old_glibc_headers)
 
 AC_SUBST(libc_cv_slibdir)
 AC_SUBST(libc_cv_rtlddir)
-AC_SUBST(libc_cv_localedir)
+AC_SUBST(libc_cv_locale_archive_dir)
 AC_SUBST(libc_cv_sysconfdir)
 AC_SUBST(libc_cv_localstatedir)
 AC_SUBST(libc_cv_rootsbindir)
diff --git a/locale/Makefile b/locale/Makefile
index f1b4343..f5e3e92 100644
--- a/locale/Makefile
+++ b/locale/Makefile
@@ -76,12 +76,15 @@ C-translit.h: C-translit.h.in gen-translit.pl
 	$(PERL) gen-translit.pl < $< > $@.tmp
 	mv -f $@.tmp $@
 
-localepath = "$(localedir):$(i18ndir)"
+# The path to the binary locale archive or compiled archvies,
+# along with the parent path to the source locales and source
+# charmaps.
+localepath = "$(locale_archive_dir):$(i18ndir)"
 
 # -Iprograms doesn't really belong here, but this gets it at the head
 # of the list instead of the tail, where CPPFLAGS-$(lib) gets added.
 # We need it before the standard -I's to see programs/config.h first.
-locale-CPPFLAGS = -DLOCALEDIR='"$(localedir)"' \
+locale-CPPFLAGS = -DLOCALE_ARCHIVE_DIR='"$(locale_archvie_dir)"' \
 		  -DLOCALE_ALIAS_PATH='"$(msgcatdir)"' \
 		  -Iprograms
 
diff --git a/locale/findlocale.c b/locale/findlocale.c
index 9e7df12..b1341a8 100644
--- a/locale/findlocale.c
+++ b/locale/findlocale.c
@@ -56,7 +56,7 @@ struct __locale_data *const _nl_C[] attribute_hidden =
    which are somehow addressed.  */
 struct loaded_l10nfile *_nl_locale_file_list[__LC_LAST];
 
-const char _nl_default_locale_path[] attribute_hidden = LOCALEDIR;
+const char _nl_default_locale_path[] attribute_hidden = LOCALE_ARCHIVE_DIR;
 
 /* Checks if the name is actually present, that is, not NULL and not
    empty.  */
diff --git a/locale/loadarchive.c b/locale/loadarchive.c
index 3e18cf0..2da1ebf 100644
--- a/locale/loadarchive.c
+++ b/locale/loadarchive.c
@@ -42,7 +42,7 @@
 
 
 /* Name of the locale archive file.  */
-static const char archfname[] = LOCALEDIR "/locale-archive";
+static const char archfname[] = LOCALE_ARCHIVE_DIR "/locale-archive";
 
 /* 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 b1de17f..f277c68 100644
--- a/locale/programs/locale.c
+++ b/locale/programs/locale.c
@@ -45,7 +45,7 @@
 #include "../locarchive.h"
 #include <programs/xmalloc.h>
 
-#define ARCHIVE_NAME LOCALEDIR "/locale-archive"
+#define ARCHIVE_NAME LOCALE_ARCHIVE_DIR "/locale-archive"
 
 /* If set print the name of the category.  */
 static int show_category_name;
@@ -325,9 +325,11 @@ select_dirs (const struct dirent *dirent)
 #endif
 	{
 	  struct stat64 st;
-	  char buf[sizeof (LOCALEDIR) + strlen (dirent->d_name) + 1];
+	  char buf[sizeof (LOCALE_ARCHIVE_DIR)
+		   + strlen (dirent->d_name) + 1];
 
-	  stpcpy (stpcpy (stpcpy (buf, LOCALEDIR), "/"), dirent->d_name);
+	  stpcpy (stpcpy (stpcpy (buf, LOCALE_ARCHIVE_DIR), "/"),
+		  dirent->d_name);
 
 	  if (stat64 (buf, &st) == 0)
 	    mode = st.st_mode;
@@ -444,17 +446,21 @@ write_locales (void)
     first_locale = 0;
 
   /* Now we can look for all files in the directory.  */
-  ndirents = scandir (LOCALEDIR, &dirents, select_dirs, alphasort);
+  ndirents = scandir (LOCALE_ARCHIVE_DIR, &dirents, select_dirs,
+		      alphasort);
   for (cnt = 0; cnt < ndirents; ++cnt)
     {
       /* Test whether at least the LC_CTYPE data is there.  Some
 	 directories only contain translations.  */
-      char buf[sizeof (LOCALEDIR) + strlen (dirents[cnt]->d_name)
-	      + sizeof "/LC_IDENTIFICATION"];
+      char buf[sizeof (LOCALE_ARCHIVE_DIR)
+	       + strlen (dirents[cnt]->d_name)
+	       + sizeof "/LC_IDENTIFICATION"];
       char *enddir;
       struct stat64 st;
 
-      stpcpy (enddir = stpcpy (stpcpy (stpcpy (buf, LOCALEDIR), "/"),
+      stpcpy (enddir = stpcpy (stpcpy (stpcpy (buf,
+					       LOCALE_ARCHIVE_DIR),
+					       "/"),
 			       dirents[cnt]->d_name),
 	      "/LC_IDENTIFICATION");
 
diff --git a/locale/programs/localedef.c b/locale/programs/localedef.c
index 06fca12..4ea6fe6 100644
--- a/locale/programs/localedef.c
+++ b/locale/programs/localedef.c
@@ -457,11 +457,11 @@ construct_output_path (char *path)
 	 '/'.  */
       ssize_t n;
       if (normal == NULL)
-	n = asprintf (&result, "%s%s/%s%c",
-		      output_prefix ?: "", LOCALEDIR, path, '\0');
+	n = asprintf (&result, "%s%s/%s%c", output_prefix ?: "",
+		      LOCALE_ARCHIVE_DIR, path, '\0');
       else
 	n = asprintf (&result, "%s%s/%.*s%s%s%c",
-		      output_prefix ?: "", LOCALEDIR,
+		      output_prefix ?: "", LOCALE_ARCHIVE_DIR,
 		      (int) (startp - path), path, normal, endp, '\0');
 
       if (n < 0)
diff --git a/locale/programs/locarchive.c b/locale/programs/locarchive.c
index 49f7f1b..54aba06 100644
--- a/locale/programs/locarchive.c
+++ b/locale/programs/locarchive.c
@@ -57,7 +57,7 @@
 
 extern const char *output_prefix;
 
-#define ARCHIVE_NAME LOCALEDIR "/locale-archive"
+#define ARCHIVE_NAME LOCALE_ARCHIVE_DIR "/locale-archive"
 
 static const char *locnames[] =
   {
diff --git a/localedata/Makefile b/localedata/Makefile
index ebf6ac9..c1f43a1 100644
--- a/localedata/Makefile
+++ b/localedata/Makefile
@@ -199,7 +199,7 @@ $(rtld-prefix) $(common-objpfx)locale/localedef
 install-locales: $(INSTALL-SUPPORTED-LOCALES)
 
 install-locales-dir:
-	$(..)./scripts/mkinstalldirs $(inst_localedir)
+	$(..)./scripts/mkinstalldirs $(inst_locale_archive_dir)
 
 $(INSTALL-SUPPORTED-LOCALES): install-locales-dir
 	@locale=`echo $@ | sed -e 's/^install-//'`; \
---


Cheers,
Carlos.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]