The locale code uses the archive location in two places, ensure both are
corrected to use the environment variable which avoids nasty build
failures when archiving locales in images.

Signed-off-by: Richard Purdie <[email protected]>
---
 ...-archive-uses-a-hard-coded-locale-pa.patch | 54 +++++++++++++++----
 1 file changed, 45 insertions(+), 9 deletions(-)

diff --git 
a/meta/recipes-core/glibc/glibc/0029-localedef-add-to-archive-uses-a-hard-coded-locale-pa.patch
 
b/meta/recipes-core/glibc/glibc/0029-localedef-add-to-archive-uses-a-hard-coded-locale-pa.patch
index aa3a9e26546..974fecdd569 100644
--- 
a/meta/recipes-core/glibc/glibc/0029-localedef-add-to-archive-uses-a-hard-coded-locale-pa.patch
+++ 
b/meta/recipes-core/glibc/glibc/0029-localedef-add-to-archive-uses-a-hard-coded-locale-pa.patch
@@ -18,11 +18,50 @@ Signed-off-by: Khem Raj <[email protected]>
  locale/programs/locarchive.c | 13 ++++++++-----
  1 file changed, 8 insertions(+), 5 deletions(-)
 
-diff --git a/locale/programs/locarchive.c b/locale/programs/locarchive.c
-index ca332a345f..6b7ba9b2e3 100644
---- a/locale/programs/locarchive.c
-+++ b/locale/programs/locarchive.c
-@@ -569,10 +569,13 @@ open_archive (struct locarhandle *ah, bool readonly)
+Index: git/locale/programs/locarchive.c
+===================================================================
+--- git.orig/locale/programs/locarchive.c
++++ git/locale/programs/locarchive.c
+@@ -340,12 +340,24 @@ enlarge_archive (struct locarhandle *ah,
+   struct namehashent *oldnamehashtab;
+   struct locarhandle new_ah;
+   size_t prefix_len = output_prefix ? strlen (output_prefix) : 0;
+-  char archivefname[prefix_len + sizeof (ARCHIVE_NAME)];
+-  char fname[prefix_len + sizeof (ARCHIVE_NAME) + sizeof (".XXXXXX") - 1];
++  char *archivefname;
++  char *fname;
++  char *envarchive = getenv("LOCALEARCHIVE");
+ 
+-  if (output_prefix)
+-    memcpy (archivefname, output_prefix, prefix_len);
+-  strcpy (archivefname + prefix_len, ARCHIVE_NAME);
++  if (envarchive != NULL) 
++    {
++      archivefname = xmalloc(strlen(envarchive));
++      fname = xmalloc(strlen(envarchive) + sizeof (".XXXXXX") - 1);
++      strcpy (archivefname, envarchive);
++    }
++  else
++    {
++      archivefname = xmalloc(prefix_len + sizeof (ARCHIVE_NAME));
++      fname = xmalloc(prefix_len + sizeof (ARCHIVE_NAME) + sizeof (".XXXXXX") 
- 1);
++      if (output_prefix)
++        memcpy (archivefname, output_prefix, prefix_len);
++      strcpy (archivefname + prefix_len, ARCHIVE_NAME);
++    }
+   strcpy (stpcpy (fname, archivefname), ".XXXXXX");
+ 
+   /* Not all of the old file has to be mapped.  Change this now this
+@@ -551,6 +563,8 @@ enlarge_archive (struct locarhandle *ah,
+ 
+   /* Add the information for the new one.  */
+   *ah = new_ah;
++  free(archivefname);
++  free(fname);
+ }
+ 
+ 
+@@ -569,10 +583,13 @@ open_archive (struct locarhandle *ah, bo
    /* If ah has a non-NULL fname open that otherwise open the default.  */
    if (archivefname == NULL)
      {
@@ -40,7 +79,7 @@ index ca332a345f..6b7ba9b2e3 100644
      }
  
    while (1)
-@@ -585,7 +588,7 @@ open_archive (struct locarhandle *ah, bool readonly)
+@@ -585,7 +602,7 @@ open_archive (struct locarhandle *ah, bo
             the default locale archive we ignore the failure and
             list an empty archive, otherwise we print an error
             and exit.  */
@@ -49,6 +88,3 @@ index ca332a345f..6b7ba9b2e3 100644
            {
              if (readonly)
                {
--- 
-2.18.0
-
-- 
2.17.1

-- 
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Reply via email to