From patchwork Wed Oct 21 16:08:08 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Carlos O'Donell X-Patchwork-Id: 9294 Received: (qmail 97370 invoked by alias); 21 Oct 2015 16:08:23 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 97313 invoked by uid 89); 21 Oct 2015 16:08:23 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.3 required=5.0 tests=AWL, BAYES_00, RP_MATCHES_RCVD, SPF_HELO_PASS autolearn=ham version=3.3.2 X-HELO: mx1.redhat.com Subject: Re: [PATCH] localedef: Add --localedir and --archive-file options (Bug 19130) To: Andreas Schwab References: <561F230E.5050801@redhat.com> <56257C9D.8090200@redhat.com> <562641A2.8090906@redhat.com> Cc: Joseph Myers , Mike Frysinger , GNU C Library From: "Carlos O'Donell" X-Enigmail-Draft-Status: N1110 Message-ID: <5627B868.2050402@redhat.com> Date: Wed, 21 Oct 2015 12:08:08 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0 MIME-Version: 1.0 In-Reply-To: On 10/20/2015 11:54 AM, Andreas Schwab wrote: > "Carlos O'Donell" 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). --- Cheers, Carlos. 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 -#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-//'`; \