--- admin/PlamoBuild-template-20170713	2017-07-13 13:07:00.000000000 +0900
+++ plamo/00_base/glibc/PlamoBuild.glibc-2.20	2018-04-21 17:04:05.000000000 +0900
@@ -1,19 +1,32 @@
 #!/bin/sh
 
 ######################################################################
-url=""
+url="http://ftp.gnu.org/gnu/glibc/glibc-2.20.tar.xz
+    http://www.linuxfromscratch.org/patches/downloads/glibc/glibc-2.19-fhs-1.patch
+    http://ftp.su.se/pub/mirrors/lunar-linux.org/lunar/patches/glibc-2.20-do_ftell_wide-memleak.patch
+    http://ftp.su.se/pub/mirrors/lunar-linux.org/lunar/patches/glibc-2.20-getifaddrs_internal-segfault.patch
+    http://ftp.su.se/pub/mirrors/lunar-linux.org/lunar/patches/glibc-2.20-linux-3.16-additions.patch
+    http://slackware.cs.utah.edu/pub/slackware/slackware-current/source/l/glibc/glibc-c-utf8-locale.patch.gz
+    ftp://plamo.linet.gr.jp/pub/Plamo-src/plamo/00_base/glibc/CVE-2015-7547.patch
+    ftp://plamo.linet.gr.jp/pub/Plamo-src/plamo/00_base/glibc/CVE-2015-8776.patch
+    ftp://plamo.linet.gr.jp/pub/Plamo-src/plamo/00_base/glibc/CVE-2015-8778.patch
+    ftp://plamo.linet.gr.jp/pub/Plamo-src/plamo/00_base/glibc/CVE-2015-8779.patch"
 verify=
 digest=
 branch=
 commitid=
-pkgbase=
-vers=
+pkgbase=glibc
+vers=2.20
 arch=`uname -m`
-build=P1
+build=P9
 src=$pkgbase-$vers
-patchfiles=""
-OPT_CONFIG=""
-DOCS="README"
+patchfiles="glibc-2.19-fhs-1.patch glibc-2.20-do_ftell_wide-memleak.patch
+    glibc-2.20-getifaddrs_internal-segfault.patch
+    glibc-2.20-linux-3.16-additions.patch glibc-c-utf8-locale.patch.gz
+    `echo CVE-2015-{7547,877{6,8,9}}.patch`"
+OPT_CONFIG="--enable-kernel=2.6.32 --enable-obsolete-rpc"
+DOCS="BUGS CONFORMANCE COPYING* ChangeLog* INSTALL LICENSES NEWS
+    PROJECTS README"
 template=20170713
 tmplurl=ftp://plamo.linet.gr.jp/pub/Plamo-src/admin
 ######################################################################
@@ -29,20 +42,52 @@
 
 fscheck
 prepare "$@"
+S2=$W/source
 if [ $opt_download -eq 1 ] ; then
   download_sources
 fi
 if [ $opt_config -eq 1 ] ; then
   for i in `seq 0 $((${#B[@]} - 1))` ; do
-    if [ -d ${B[$i]} ] ; then rm -rf ${B[$i]} ; fi ; cp -a ${S[$i]} ${B[$i]}
+    if [ -d ${S2[$i]} ] ; then rm -rf ${S2[$i]} ; fi ; cp -a ${S[$i]} ${S2[$i]}
+    if [ -d ${B[$i]} ] ; then rm -rf ${B[$i]} ; fi ; mkdir ${B[$i]}
   done
-  apply_patches
+  false && apply_patches
+  cd $S2
+  for j in $patchfiles ; do
+    case ${j##*.} in
+    gz) gunzip -c $W/$j | patch -Np1 -i - ;;
+    *) patch -Np1 -i $W/$j ;;
+    esac
+  done
+  cp -p localedata/Makefile{,.orig}
+  cat <<- "EOF" | patch localedata/Makefile
+	235a236
+	> 		     --no-archive \
+	EOF
   for i in `seq 0 $((${#B[@]} - 1))` ; do
     cd ${B[$i]}
-    if [ -x configure ] ; then
-      ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+    case $arch in
+    i686)
+      cat <<- "EOF" > configparms ;;
+	CFLAGS += -march=i486 -mtune=native -O3 -pipe
+	EOF
+    x86_64)
+      cat <<- "EOF" > configparms ;;
+	slibdir=/lib64
+	CFLAGS += -march=x86-64 -mtune=generic -O3 -pipe
+	EOF
+    armv7l)
+      cat <<- "EOF" > configparms ;;
+	CFLAGS += -march=armv7-a -mtune=native -O3 -pipe
+	EOF
+    esac
+    if [ -x ${S2[$i]}/configure ] ; then
+      ${S2[$i]}/configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
           --libdir='${exec_prefix}'/$libdir --infodir='${prefix}'/share/info \
-          --mandir='${prefix}'/share/man ${OPT_CONFIG[$i]}
+          --mandir='${prefix}'/share/man ${OPT_CONFIG[$i]} \
+          --libexecdir=/usr/$libdir/glibc \
+          --build=$arch-pc-linux-gnu`[ $arch == armv7l ] && echo eabi` \
+          --target=$arch-pc-linux-gnu`[ $arch == armv7l ] && echo eabi`
     fi
   done
 fi
@@ -63,18 +108,118 @@
     cd ${B[$i]}
     if [ -f Makefile ] ; then
       make install DESTDIR=$P
+      ln -s $P/usr/share/locale $P/usr/$libdir
+      make localedata/install-locales DESTDIR=$P
     fi
   done
+  find $P/usr/$libdir -maxdepth 1 ! -type d -exec rm {} \;
+  mv $P/usr/$libdir/{gconv,glibc,audit} $C
+  mv $C/{gconv,glibc,audit} $P/usr/$libdir
+  ln -sf /usr/share/locale $P/usr/$libdir
+  ln -s ja_JP.eucJP $P/usr/share/locale/ja_JP
+  mv $P/usr/share/locale/{ja,ja_JP.eucJP}
+  ln -s ja_JP.eucJP $P/usr/share/locale/ja
+  gunzip $P/usr/share/i18n/charmaps/EUC-JP.gz
+  localedef -f $P/usr/share/i18n/charmaps/EUC-JP \
+      -i $P/usr/share/i18n/locales/ja_JP \
+      $P/usr/share/locale/ja_JP.eucJP
+  gzip $P/usr/share/i18n/charmaps/EUC-JP
+  install -d $P/usr/share/locale/ja_JP.UTF-8
+  gunzip $P/usr/share/i18n/charmaps/UTF-8.gz
+  localedef -f $P/usr/share/i18n/charmaps/UTF-8 \
+      -i $P/usr/share/i18n/locales/ja_JP \
+      $P/usr/share/locale/ja_JP.UTF-8
+  gzip $P/usr/share/i18n/charmaps/UTF-8
+  cat <<- EOF > $P/etc/ld.so.conf.new
+	/usr/local/$libdir
+	/opt/kde/$libdir
+	/usr/$libdir/sasl2
+	/usr/$libdir/pstoedit
+	/usr/heimdal/$libdir
+	/usr/$libdir/xulrunner
+	/opt/mariadb/$libdir
+	/opt/mysql/$libdir
+	/opt/pgsql/$libdir
+	EOF
+  cat <<- "EOF" > $P/etc/nsswitch.conf.new
+	# /etc/nsswitch.conf
+	#
+	# Name Service Switch configuration file.
+	#
+	
+	passwd:		files db nis
+	shadow:		files
+	group:		files db nis
+	
+	hosts:		files nisplus nis dns
+	networks:	files nisplus
+	
+	ethers:		files db nisplus
+	protocols:	files db nisplus
+	rpc:		files db nisplus
+	services:	files db nisplus
+	autofs:		files
+	EOF
   touch $W/i.et
   cd $W
   find $P ! -type l -newer i.st ! -newer i.et \
       -exec touch -t `date '+%m%d0900'` {} \;
   compress
+  strip_libdir $P/usr/$libdir/gconv
+  strip_bindir $P/usr/$libdir/glibc/getconf
+  strip_libdir $P/usr/$libdir/audit
+  touch -t `date '+%m%d0900'` $P/usr/$libdir/{gconv,glibc/getconf,audit}
   setup_docdir
   convert_links
-  tar cvpf $pkg.tar -C $P `cd $P ; find usr/bin | tail -n+2`
-  tar rvpf $pkg.tar -C $P `cd $P ; find usr/share/man/man1 | tail -n+2`
+  prune_symlink $P/usr/share/locale
+  touch -t `date '+%m%d0900'` $P/usr/share/locale
+  cat <<- EOF >> $P/install/doinst.sh
+	#%% begin initialize $pkg
+	EOF
+  cat <<- "EOF" >> $P/install/doinst.sh
+	glibc_config() {
+	  mv /etc/$1.conf.new /tmp
+	  if [ -f /etc/$1.conf ] ; then
+	    mv /tmp/$1.conf.new /etc/$1.conf.dist
+	  else
+	    mv /tmp/$1.conf.new /etc/$1.conf
+	  fi
+	}
+	
+	echo "glibc パッケージの初期化中"
+	# 既存の ld.so.conf が無ければ,新しく ld.so.conf.new を
+	# ld.so.conf とするが,あればそのままにしておく.
+	glibc_config ld.so
+	ldconfig
+	
+	# 既存の nsswitch.conf が無ければ,新しく nsswitch.conf.new を
+	# nsswitch.conf とするが,あればそのままにしておく.
+	glibc_config nsswitch
+	
+	echo "glibc タイムゾーン設定中"
+	# 既存の localtime があればそのまま,無ければ JST で作る.
+	if [ ! -f /etc/localtime ] ; then
+	  TIMEZONE="Japan"
+	  ln -sf posix/$TIMEZONE /usr/share/zoneinfo/localtime
+	  cp -p /usr/share/zoneinfo/localtime /etc/localtime
+	fi
+	
+	echo "glibc パッケージの初期化完了"
+	#%% end
+	EOF
+  touch -t `date '+%m%d0900'` $P/install/doinst.sh
+  tar cvpf $pkg.tar -C $P `cd $P ; find sbin | tail -n+2`
+  tar rvpf $pkg.tar -C $P `cd $P ; find usr/sbin | tail -n+2`
+  tar rvpf $pkg.tar -C $P `cd $P ; find usr/bin | tail -n+2`
+  tar rvpf $pkg.tar -C $P `cd $P ; find $libdir | tail -n+2`
+  tar rvpf $pkg.tar -C $P `cd $P ; find usr/$libdir -maxdepth 1 | tail -n+2`
+# tar rvpf $pkg.tar -C $P `cd $P ; find usr/include -maxdepth 1 | tail -n+2`
+  tar rvpf $pkg.tar -C $P usr/share/{i18n,locale}
+# tar rvpf $pkg.tar -C $P `cd $P ; find usr/share/info | tail -n+2`
+  tar rvpf $pkg.tar -C $P `cd $P ; find etc | tail -n+2`
+  tar rvpf $pkg.tar -C $P var/lib/nss_db
   tar rvpf $pkg.tar -C $P usr/share/doc/$src
+  tar rvpf $pkg.tar -C $P install/doinst.sh
   touch -t `date '+%m%d0900'` $pkg.tar ; xz $pkg.tar ; touch $pkg.tar.xz
   mv $pkg.tar.xz $pkg.txz
   cleanup