forked from pool/glibc
Accepting request 691281 from home:Andreas_Schwab:Factory
- japanese-era-name-may-2019.patch: ja_JP locale: Add entry for the new Japanese era (BZ #22964) - Replace glibc_post_upgrade with lua script OBS-URL: https://build.opensuse.org/request/show/691281 OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=525
This commit is contained in:
parent
971269e835
commit
8b74a572f5
@ -1,3 +1,10 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Apr 3 14:56:02 UTC 2019 - Andreas Schwab <schwab@suse.de>
|
||||||
|
|
||||||
|
- japanese-era-name-may-2019.patch: ja_JP locale: Add entry for the new
|
||||||
|
Japanese era (BZ #22964)
|
||||||
|
- Replace glibc_post_upgrade with lua script
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Thu Mar 7 09:01:37 UTC 2019 - Andreas Schwab <schwab@suse.de>
|
Thu Mar 7 09:01:37 UTC 2019 - Andreas Schwab <schwab@suse.de>
|
||||||
|
|
||||||
|
102
glibc.spec
102
glibc.spec
@ -170,7 +170,6 @@ Source2: http://savannah.gnu.org/project/memberlist-gpgkeys.php?group=lib
|
|||||||
Source4: manpages.tar.bz2
|
Source4: manpages.tar.bz2
|
||||||
Source5: nsswitch.conf
|
Source5: nsswitch.conf
|
||||||
Source7: bindresvport.blacklist
|
Source7: bindresvport.blacklist
|
||||||
Source8: glibc_post_upgrade.c
|
|
||||||
Source9: glibc.rpmlintrc
|
Source9: glibc.rpmlintrc
|
||||||
Source10: baselibs.conf
|
Source10: baselibs.conf
|
||||||
# For systemd
|
# For systemd
|
||||||
@ -285,6 +284,8 @@ Patch1005: riscv-clone-unwind.patch
|
|||||||
Patch1006: add-new-Fortran-vector-math-header-file.patch
|
Patch1006: add-new-Fortran-vector-math-header-file.patch
|
||||||
# PATCH-FIX-UPSTREAM regex: fix read overrun (CVE-2019-9169, BZ #24114)
|
# PATCH-FIX-UPSTREAM regex: fix read overrun (CVE-2019-9169, BZ #24114)
|
||||||
Patch1007: regex-read-overrun.patch
|
Patch1007: regex-read-overrun.patch
|
||||||
|
# PATCH-FIX-UPSTREAM ja_JP locale: Add entry for the new Japanese era (BZ #22964)
|
||||||
|
Patch1008: japanese-era-name-may-2019.patch
|
||||||
|
|
||||||
###
|
###
|
||||||
# Patches awaiting upstream approval
|
# Patches awaiting upstream approval
|
||||||
@ -504,6 +505,7 @@ makedb: A program to create a database for nss
|
|||||||
%patch1005 -p1
|
%patch1005 -p1
|
||||||
%patch1006 -p1
|
%patch1006 -p1
|
||||||
%patch1007 -p1
|
%patch1007 -p1
|
||||||
|
%patch1008 -p1
|
||||||
|
|
||||||
%patch2000 -p1
|
%patch2000 -p1
|
||||||
%patch2004 -p1
|
%patch2004 -p1
|
||||||
@ -718,39 +720,6 @@ configure_and_build_glibc() {
|
|||||||
make -C cc-base html
|
make -C cc-base html
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
#
|
|
||||||
# Build glibc_post_upgrade binary
|
|
||||||
#
|
|
||||||
mkdir glibc-post-upgrade
|
|
||||||
cat > glibc-post-upgrade/Makefile <<\EOF
|
|
||||||
subdir := glibc-post-upgrade
|
|
||||||
include ../Makeconfig
|
|
||||||
vpath %.c $(dir %{SOURCE8})
|
|
||||||
others = glibc_post_upgrade
|
|
||||||
others-static = glibc_post_upgrade
|
|
||||||
libof-glibc_post_upgrade = glibc_post_upgrade
|
|
||||||
$(objpfx)glibc_post_upgrade: $(common-objpfx)elf/static-stubs.o
|
|
||||||
CFLAGS-glibc_post_upgrade.o = \
|
|
||||||
-Os -Wno-write-strings -DREMOVE_TLS_DIRS -DREMOVE_PPC_OPTIMIZE_POWER5 \
|
|
||||||
%ifarch ppc ppc64
|
|
||||||
%if !%{powerpc_optimize_cpu_power4}
|
|
||||||
-DREMOVE_PPC_OPTIMIZE_POWER4 \
|
|
||||||
%endif
|
|
||||||
%if !%{powerpc_optimize_cpu_power6}
|
|
||||||
-DREMOVE_PPC_OPTIMIZE_POWER6 \
|
|
||||||
%endif
|
|
||||||
%if !%{powerpc_optimize_cpu_power7}
|
|
||||||
-DREMOVE_PPC_OPTIMIZE_POWER7 \
|
|
||||||
%endif
|
|
||||||
%if !%{powerpc_optimize_cpu_cell}
|
|
||||||
-DREMOVE_PPC_OPTIMIZE_CELL \
|
|
||||||
%endif
|
|
||||||
%endif
|
|
||||||
-DLIBDIR='"/%{_lib}"' -DGCONV_MODULES_DIR='"%{_libdir}/gconv"'
|
|
||||||
include ../Rules
|
|
||||||
EOF
|
|
||||||
make -C cc-base subdirs=glibc-post-upgrade glibc-post-upgrade/others
|
|
||||||
|
|
||||||
%check
|
%check
|
||||||
%if %{build_testsuite}
|
%if %{build_testsuite}
|
||||||
# The testsuite will fail if asneeded is used
|
# The testsuite will fail if asneeded is used
|
||||||
@ -891,8 +860,6 @@ cc-base/elf/ldconfig -vn $destdir
|
|||||||
|
|
||||||
# Miscelanna:
|
# Miscelanna:
|
||||||
|
|
||||||
install -m 0700 cc-base/glibc-post-upgrade/glibc_post_upgrade %{buildroot}%{_sbindir}
|
|
||||||
|
|
||||||
install -m 644 %{SOURCE7} %{buildroot}/etc
|
install -m 644 %{SOURCE7} %{buildroot}/etc
|
||||||
install -m 644 %{SOURCE5} %{buildroot}/etc
|
install -m 644 %{SOURCE5} %{buildroot}/etc
|
||||||
install -m 644 posix/gai.conf %{buildroot}/etc
|
install -m 644 posix/gai.conf %{buildroot}/etc
|
||||||
@ -1033,7 +1000,67 @@ rm %{buildroot}/%{_lib}/lp64d %{buildroot}%{_libdir}/lp64d
|
|||||||
|
|
||||||
%if %{build_main}
|
%if %{build_main}
|
||||||
|
|
||||||
%post -p %{_sbindir}/glibc_post_upgrade
|
%post -p <lua>
|
||||||
|
function exec(path, ...)
|
||||||
|
local pid = posix.fork()
|
||||||
|
if pid == 0 then
|
||||||
|
posix.exec(path, ...)
|
||||||
|
io.write(path, ": exec failed: ", posix.errno(), "\n")
|
||||||
|
os.exit(1)
|
||||||
|
end
|
||||||
|
if not pid then
|
||||||
|
error(path .. ": fork failed: " .. posix.errno() .. "\n")
|
||||||
|
end
|
||||||
|
posix.wait(pid)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- First, get rid of platform-optimized libraries. We remove any we have
|
||||||
|
-- ever built, since otherwise we might end up using some old leftover
|
||||||
|
-- libraries when new ones aren't installed in their place anymore.
|
||||||
|
libraries = { "libc.so.6", "libc.so.6.1", "libm.so.6", "libm.so.6.1",
|
||||||
|
"librt.so.1", "libpthread.so.0", "libthread_db.so.1" }
|
||||||
|
remove_dirs = {
|
||||||
|
%ifarch i586
|
||||||
|
"/%{_lib}/i686/",
|
||||||
|
%endif
|
||||||
|
%ifarch ppc ppc64
|
||||||
|
%if !%{powerpc_optimize_cpu_power4}
|
||||||
|
"/%{_lib}/power4/", "/%{_lib}/ppc970/",
|
||||||
|
%endif
|
||||||
|
"/%{_lib}/power5/", "/%{_lib}/power5+/",
|
||||||
|
%if !%{powerpc_optimize_cpu_power6}
|
||||||
|
"/%{_lib}/power6/", "/%{_lib}/power6x/",
|
||||||
|
%endif
|
||||||
|
%if !%{powerpc_optimize_cpu_power7}
|
||||||
|
"/%{_lib}/power7/",
|
||||||
|
%endif
|
||||||
|
%if !%{powerpc_optimize_cpu_cell}
|
||||||
|
"/%{_lib}/ppc-cell-be/",
|
||||||
|
%endif
|
||||||
|
%endif
|
||||||
|
"/%{_lib}/tls/"
|
||||||
|
}
|
||||||
|
for i, remove_dir in ipairs(remove_dirs) do
|
||||||
|
for j, library in ipairs(libraries) do
|
||||||
|
local file = remove_dir .. library
|
||||||
|
-- This file could be a symlink to library-%{version}.so, so check
|
||||||
|
-- this and don't remove only the link, but also the library itself.
|
||||||
|
local link = posix.readlink(file)
|
||||||
|
if link then
|
||||||
|
if link:sub(1, 1) ~= "/" then link = remove_dir .. link end
|
||||||
|
os.remove(link)
|
||||||
|
end
|
||||||
|
os.remove(file)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if posix.access("/sbin/ldconfig", "x") then
|
||||||
|
exec("/sbin/ldconfig", "-X")
|
||||||
|
end
|
||||||
|
if posix.utime("%{_libdir}/gconv/gconv-modules.cache") then
|
||||||
|
exec("/usr/sbin/iconvconfig", "-o", "%{_libdir}/gconv/gconv-modules.cache",
|
||||||
|
"--nostdlib", "%{_libdir}/gconv")
|
||||||
|
end
|
||||||
|
|
||||||
%postun -p /sbin/ldconfig
|
%postun -p /sbin/ldconfig
|
||||||
|
|
||||||
%post locale-base
|
%post locale-base
|
||||||
@ -1214,7 +1241,6 @@ exit 0
|
|||||||
%{_bindir}/localedef
|
%{_bindir}/localedef
|
||||||
%dir %attr(0755,root,root) %{_libexecdir}/getconf
|
%dir %attr(0755,root,root) %{_libexecdir}/getconf
|
||||||
%{_libexecdir}/getconf/*
|
%{_libexecdir}/getconf/*
|
||||||
%{_sbindir}/glibc_post_upgrade
|
|
||||||
%{_sbindir}/iconvconfig
|
%{_sbindir}/iconvconfig
|
||||||
|
|
||||||
%files locale-base -f libc.lang
|
%files locale-base -f libc.lang
|
||||||
|
@ -1,204 +0,0 @@
|
|||||||
/* skeleton based on version from Fedora Core 3 */
|
|
||||||
|
|
||||||
#ifndef _GNU_SOURCE
|
|
||||||
# define _GNU_SOURCE 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/wait.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <sys/time.h>
|
|
||||||
#include <dirent.h>
|
|
||||||
#include <stddef.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <elf.h>
|
|
||||||
|
|
||||||
#define verbose_exec(failcode, path...) \
|
|
||||||
do \
|
|
||||||
{ \
|
|
||||||
char *const arr[] = { path, NULL }; \
|
|
||||||
vexec (failcode, arr); \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
__attribute__((noinline)) void vexec (int failcode, char *const path[]);
|
|
||||||
__attribute__((noinline)) void says (const char *str);
|
|
||||||
__attribute__((noinline)) void sayn (long num);
|
|
||||||
__attribute__((noinline)) void message (char *const path[]);
|
|
||||||
|
|
||||||
int
|
|
||||||
main (void)
|
|
||||||
{
|
|
||||||
/* First, get rid of platform-optimized libraries. We remove any we have
|
|
||||||
ever built, since otherwise we might end up using some old leftover
|
|
||||||
libraries when new ones aren't installed in their place anymore. */
|
|
||||||
#ifdef REMOVE_TLS_DIRS
|
|
||||||
const char *library[] = {"libc.so.6", "libc.so.6.1", "libm.so.6",
|
|
||||||
"libm.so.6.1", "librt.so.1", "librtkaio.so.1",
|
|
||||||
"libpthread.so.0", "libthread_db.so.1"};
|
|
||||||
const char *remove_dir[] = {
|
|
||||||
#ifdef __i386__
|
|
||||||
"/lib/i686/",
|
|
||||||
#endif
|
|
||||||
#ifdef __powerpc64__
|
|
||||||
#ifdef REMOVE_PPC_OPTIMIZE_POWER4
|
|
||||||
"/lib64/power4/",
|
|
||||||
"/lib64/ppc970/",
|
|
||||||
#endif
|
|
||||||
#ifdef REMOVE_PPC_OPTIMIZE_POWER5
|
|
||||||
"/lib64/power5/",
|
|
||||||
"/lib64/power5+/",
|
|
||||||
#endif
|
|
||||||
#ifdef REMOVE_PPC_OPTIMIZE_POWER6
|
|
||||||
"/lib64/power6/",
|
|
||||||
"/lib64/power6x/",
|
|
||||||
#endif
|
|
||||||
#ifdef REMOVE_PPC_OPTIMIZE_POWER7
|
|
||||||
"/lib64/power7/",
|
|
||||||
#endif
|
|
||||||
#ifdef REMOVE_PPC_OPTIMIZE_CELL
|
|
||||||
"/lib64/ppc-cell-be/",
|
|
||||||
#endif
|
|
||||||
#endif /* __powerpc64__ */
|
|
||||||
#ifdef __powerpc__
|
|
||||||
#ifdef REMOVE_PPC_OPTIMIZE_POWER4
|
|
||||||
"/lib/power4/",
|
|
||||||
"/lib/ppc970/",
|
|
||||||
#endif
|
|
||||||
#ifdef REMOVE_PPC_OPTIMIZE_POWER5
|
|
||||||
"/lib/power5/",
|
|
||||||
"/lib/power5+/",
|
|
||||||
#endif
|
|
||||||
#ifdef REMOVE_PPC_OPTIMIZE_POWER6
|
|
||||||
"/lib/power6/",
|
|
||||||
"/lib/power6x/",
|
|
||||||
#endif
|
|
||||||
#ifdef REMOVE_PPC_OPTIMIZE_POWER7
|
|
||||||
"/lib/power7/",
|
|
||||||
#endif
|
|
||||||
#ifdef REMOVE_PPC_OPTIMIZE_CELL
|
|
||||||
"/lib/ppc-cell-be/",
|
|
||||||
#endif
|
|
||||||
#endif /* __powerpc__ */
|
|
||||||
LIBDIR"/tls/" };
|
|
||||||
int i, j;
|
|
||||||
|
|
||||||
for (i = 0; i < sizeof (remove_dir) / sizeof (remove_dir[0]); ++i)
|
|
||||||
for (j = 0; j < sizeof (library) / sizeof (library[0]); j++)
|
|
||||||
{
|
|
||||||
char buf[strlen (remove_dir[i]) + strlen (library[j]) + 1];
|
|
||||||
char readlink_buf[(strlen (remove_dir[i]) + strlen (library[j])) * 2 + 30];
|
|
||||||
ssize_t len;
|
|
||||||
char *cp;
|
|
||||||
|
|
||||||
cp = stpcpy (buf, remove_dir[i]);
|
|
||||||
strcpy (cp, library[j]);
|
|
||||||
/* This file could be a symlink to library-%{version}.so, so check
|
|
||||||
this and don't remove only the link, but also the library itself. */
|
|
||||||
cp = stpcpy (readlink_buf, remove_dir[i]);
|
|
||||||
if ((len = readlink (buf, cp, (sizeof (readlink_buf)
|
|
||||||
- (cp - readlink_buf) - 1))) > 0)
|
|
||||||
{
|
|
||||||
cp[len] = '\0';
|
|
||||||
if (cp[0] != '/') cp = readlink_buf;
|
|
||||||
unlink (cp);
|
|
||||||
}
|
|
||||||
unlink (buf);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* If installing bi-arch glibc, rpm sometimes doesn't unpack all files
|
|
||||||
before running one of the lib's %post scriptlet. /sbin/ldconfig will
|
|
||||||
then be run by the other arch's %post. */
|
|
||||||
if (access ("/sbin/ldconfig", X_OK) == 0)
|
|
||||||
verbose_exec (110, "/sbin/ldconfig", "/sbin/ldconfig", "-X");
|
|
||||||
|
|
||||||
if (utimes (GCONV_MODULES_DIR "/gconv-modules.cache", NULL) == 0)
|
|
||||||
{
|
|
||||||
#ifndef ICONVCONFIG
|
|
||||||
#define ICONVCONFIG "/usr/sbin/iconvconfig"
|
|
||||||
#endif
|
|
||||||
verbose_exec (113, ICONVCONFIG, "/usr/sbin/iconvconfig",
|
|
||||||
"-o", GCONV_MODULES_DIR"/gconv-modules.cache",
|
|
||||||
"--nostdlib", GCONV_MODULES_DIR);
|
|
||||||
}
|
|
||||||
|
|
||||||
_exit(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
vexec (int failcode, char *const path[])
|
|
||||||
{
|
|
||||||
pid_t pid;
|
|
||||||
int status, save_errno;
|
|
||||||
|
|
||||||
pid = vfork ();
|
|
||||||
if (pid == 0)
|
|
||||||
{
|
|
||||||
execv (path[0], path + 1);
|
|
||||||
save_errno = errno;
|
|
||||||
message (path);
|
|
||||||
says (" exec failed with errno ");
|
|
||||||
sayn (save_errno);
|
|
||||||
says ("\n");
|
|
||||||
_exit (failcode);
|
|
||||||
}
|
|
||||||
else if (pid < 0)
|
|
||||||
{
|
|
||||||
save_errno = errno;
|
|
||||||
message (path);
|
|
||||||
says (" fork failed with errno ");
|
|
||||||
sayn (save_errno);
|
|
||||||
says ("\n");
|
|
||||||
_exit (failcode + 1);
|
|
||||||
}
|
|
||||||
if (waitpid (0, &status, 0) != pid || !WIFEXITED (status))
|
|
||||||
{
|
|
||||||
message (path);
|
|
||||||
says (" child terminated abnormally\n");
|
|
||||||
_exit (failcode + 2);
|
|
||||||
}
|
|
||||||
if (WEXITSTATUS (status))
|
|
||||||
{
|
|
||||||
message (path);
|
|
||||||
says (" child exited with exit code ");
|
|
||||||
sayn (WEXITSTATUS (status));
|
|
||||||
says ("\n");
|
|
||||||
_exit (WEXITSTATUS (status));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
says (const char *str)
|
|
||||||
{
|
|
||||||
write (1, str, strlen (str));
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
sayn (long num)
|
|
||||||
{
|
|
||||||
char string[sizeof (long) * 3 + 1];
|
|
||||||
char *p = string + sizeof (string) - 1;
|
|
||||||
|
|
||||||
*p = '\0';
|
|
||||||
if (num == 0)
|
|
||||||
*--p = '0';
|
|
||||||
else
|
|
||||||
while (num)
|
|
||||||
{
|
|
||||||
*--p = '0' + num % 10;
|
|
||||||
num = num / 10;
|
|
||||||
}
|
|
||||||
|
|
||||||
says (p);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
message (char *const path[])
|
|
||||||
{
|
|
||||||
says ("/usr/sbin/glibc_post_upgrade: While trying to execute ");
|
|
||||||
says (path[0]);
|
|
||||||
}
|
|
21
japanese-era-name-may-2019.patch
Normal file
21
japanese-era-name-may-2019.patch
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
2019-04-02 TAMUKI Shoichi <tamuki@linet.gr.jp>
|
||||||
|
|
||||||
|
[BZ #22964]
|
||||||
|
* localedata/locales/ja_JP (LC_TIME): Add entry for the new Japanese
|
||||||
|
era.
|
||||||
|
|
||||||
|
Index: glibc-2.29/localedata/locales/ja_JP
|
||||||
|
===================================================================
|
||||||
|
--- glibc-2.29.orig/localedata/locales/ja_JP
|
||||||
|
+++ glibc-2.29/localedata/locales/ja_JP
|
||||||
|
@@ -14946,7 +14946,9 @@ am_pm "<U5348><U524D>";"<U5348><U5F8C>"
|
||||||
|
|
||||||
|
t_fmt_ampm "%p%I<U6642>%M<U5206>%S<U79D2>"
|
||||||
|
|
||||||
|
-era "+:2:1990//01//01:+*:<U5E73><U6210>:%EC%Ey<U5E74>";/
|
||||||
|
+era "+:2:2020//01//01:+*:<U4EE4><U548C>:%EC%Ey<U5E74>";/
|
||||||
|
+ "+:1:2019//05//01:2019//12//31:<U4EE4><U548C>:%EC<U5143><U5E74>";/
|
||||||
|
+ "+:2:1990//01//01:2019//04//30:<U5E73><U6210>:%EC%Ey<U5E74>";/
|
||||||
|
"+:1:1989//01//08:1989//12//31:<U5E73><U6210>:%EC<U5143><U5E74>";/
|
||||||
|
"+:2:1927//01//01:1989//01//07:<U662D><U548C>:%EC%Ey<U5E74>";/
|
||||||
|
"+:1:1926//12//25:1926//12//31:<U662D><U548C>:%EC<U5143><U5E74>";/
|
Loading…
Reference in New Issue
Block a user