--- admin/PlamoBuild.template.common.without_comment 2016-06-15 20:51:13.000000000 +0900 +++ plamo/01_minimum/devel.txz/old/libc-20160607/PlamoBuild.libc-2.20 2016-06-07 07:55:19.000000000 +0900 @@ -1,15 +1,24 @@ #!/bin/sh ###################################################################### -url="" -pkgbase= -vers= +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.new/plamo/00_base/glibc/CVE-2015-7547.patch + ftp://plamo.linet.gr.jp/pub/Plamo-src.new/plamo/00_base/glibc/CVE-2015-8776.patch + ftp://plamo.linet.gr.jp/pub/Plamo-src.new/plamo/00_base/glibc/CVE-2015-8778.patch + ftp://plamo.linet.gr.jp/pub/Plamo-src.new/plamo/00_base/glibc/CVE-2015-8779.patch" +pkgbase=libc +vers=2.20 arch=`uname -m` -build=P1 -src=$pkgbase-$vers -patchfiles="" -OPT_CONFIG="" -DOCS="README" +build=P4 +src=glibc-$vers +OPT_CONFIG="--enable-kernel=2.6.32 --enable-obsolete-rpc" +DOCS="BUGS CONFORMANCE COPYING* ChangeLog* INSTALL LICENSES NEWS + PROJECTS README" ###################################################################### fscheck() { @@ -163,6 +172,7 @@ W=`pwd` for i in `seq 0 $((${#src[@]} - 1))` ; do S[$i]=$W/${src[$i]} ; B[$i]=$W/build`test ${#src[@]} -eq 1 || echo $i` + S2[$i]=$W/source`test ${#src[@]} -eq 1 || echo $i` done P=$W/work ; C=$W/pivot infodir=$P/usr/share/info @@ -220,31 +230,54 @@ 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]} - done - for i in `seq 0 $((${#B[@]} - 1))` ; do - cd ${B[$i]} - for j in ${patchfiles[$i]} ; do - case ${j##*.} in - gz) gunzip -c $W/$j | patch -Np1 -i - ;; - bz2) bunzip2 -c $W/j | patch -Np1 -i - ;; - xz) unxz -c $W/$j | patch -Np1 -i - ;; - *) patch -Np1 -i $W/$j ;; - esac - done + 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 + cd $S2 + patch -Np1 -i $W/glibc-2.19-fhs-1.patch + patch -Np1 -i $W/glibc-2.20-do_ftell_wide-memleak.patch + patch -Np1 -i $W/glibc-2.20-getifaddrs_internal-segfault.patch + patch -Np1 -i $W/glibc-2.20-linux-3.16-additions.patch + gunzip -c $W/glibc-c-utf8-locale.patch.gz | patch -Np1 -i - + patch -Np1 -i $W/CVE-2015-7547.patch + patch -Np1 -i $W/CVE-2015-8776.patch + patch -Np1 -i $W/CVE-2015-8778.patch + patch -Np1 -i $W/CVE-2015-8779.patch + 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]} + cd ${S2[$i]} if [ -f Makefile ] ; then make clean fi if [ -f config.log ] ; then rm -rf config.cache config.log fi - if [ -x configure ] ; then - ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \ + cd ${B[$i]} + 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 --target=$arch-pc-linux fi done fi @@ -295,9 +328,11 @@ ( cd $docdir ; find ${src[$i]} -type d -exec touch -r $W/{} {} \; ) done convert - 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` + tar cvpf $pkg.tar -C $P `cd $P ; find usr/$libdir -maxdepth 1 ! -type d` + tar rvpf $pkg.tar -C $P `cd $P ; find usr/include -maxdepth 1 | tail -n+2` + tar rvpf $pkg.tar -C $P `cd $P ; find usr/share/info | tail -n+2` 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 read -p "Do you want to keep work files? [y/N] " ans