--- admin/PlamoBuild-template-20170323 2017-03-23 06:38:12.000000000 +0900 +++ plamo/00_base/old/glibc-20170405/PlamoBuild.glibc-2.20 2017-04-05 20:52:20.000000000 +0900 @@ -1,17 +1,30 @@ #!/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= commitid= -pkgbase= -vers= +pkgbase=glibc +vers=2.20 arch=`uname -m` -build=P1 +build=P6 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=20170323 tmplurl=ftp://plamo.linet.gr.jp/pub/Plamo-src/admin ###################################################################### @@ -27,20 +40,51 @@ 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 --target=$arch-pc-linux fi done fi @@ -61,18 +105,117 @@ 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/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