From 5b851f3a9ce17b15b948a462b57528ee9c2e1d62 Mon Sep 17 00:00:00 2001 From: Ben Gras Date: Tue, 18 Mar 2014 11:43:08 +0100 Subject: [PATCH] patch(1) problems workaround . NUL input in 2 source files cause patch(1) to truncate the input (and fail the patches); a sed command removes the NULs . in binutils/ld, configdoc.texi is patched to be removed but some patch(1)es leave an empty file, causing build problems; this file is explicitly removed. Change-Id: Iec38d3992b0df4f7bbb9a87b1320005ab3272ff1 --- external/gpl3/binutils/fetch.sh | 3 ++- external/gpl3/gcc/fetch.sh | 35 ++++++++++++++++++++++----------- tools/Makefile.gnuhost | 2 +- 3 files changed, 26 insertions(+), 14 deletions(-) diff --git a/external/gpl3/binutils/fetch.sh b/external/gpl3/binutils/fetch.sh index 1cb5b332a..c2c9fcd78 100755 --- a/external/gpl3/binutils/fetch.sh +++ b/external/gpl3/binutils/fetch.sh @@ -28,6 +28,7 @@ then cd dist && \ cat ../patches/* | patch -p1 && \ cp ../files/yyscript.h gold && \ - cp ../files/yyscript.c gold + cp ../files/yyscript.c gold && \ + rm -f ld/configdoc.texi fi diff --git a/external/gpl3/gcc/fetch.sh b/external/gpl3/gcc/fetch.sh index 66e689d11..596c10536 100755 --- a/external/gpl3/gcc/fetch.sh +++ b/external/gpl3/gcc/fetch.sh @@ -1,15 +1,21 @@ #!/bin/sh +set -e + # Make sure we're in our directory (i.e., where this shell script is) echo $0 cd `dirname $0` +# Default sed: whatever's in $PATH; set by the buildsystem to be the +# host-built sed tool we know supports the syntax we use +: ${SED=sed} + # Configure fetch method URL="http://www.minix3.org/distfiles-minix/gcc-4.5.3.tar.bz2" BACKUP_URL="ftp://ftp.gwdg.de/pub/misc/gcc/releases/gcc-4.5.3/gcc-4.5.3.tar.bz2" FETCH=ftp -which curl >/dev/null -if [ $? -eq 0 ]; then +if which curl >/dev/null +then FETCH="curl -O -f" fi @@ -32,16 +38,21 @@ then fi fi - tar -oxjf gcc-4.5.3.tar.bz2 && \ - mv gcc-4.5.3 dist && \ - cd dist && \ - rm -rf $DELETEDIRS && \ - cat ../patches/* | patch -p1 && \ - cp ../files/minix.h gcc/config/ && \ - cp ../files/t-minix gcc/config/ && \ - cp ../files/minix-spec.h gcc/config/ && \ - cp ../files/arm-minix.h gcc/config/arm/minix.h && \ - cp ../files/i386-minix.h gcc/config/i386/minix.h && \ + tar -oxjf gcc-4.5.3.tar.bz2 + mv gcc-4.5.3 dist + cd dist + rm -rf $DELETEDIRS + for f in gcc/doc/gccinstall.info gcc/doc/gccint.info + do # This is a hack to remove NUL characters in these .info + # files. They make some patch(1)es fail. + $SED 's/^..\[index..\]$/[index]/' <$f >k && mv k $f + done + cat ../patches/* | patch -p1 + cp ../files/minix.h gcc/config/ + cp ../files/t-minix gcc/config/ + cp ../files/minix-spec.h gcc/config/ + cp ../files/arm-minix.h gcc/config/arm/minix.h + cp ../files/i386-minix.h gcc/config/i386/minix.h cp ../files/gcov-minix-fs-wrapper.h gcc/ fi diff --git a/tools/Makefile.gnuhost b/tools/Makefile.gnuhost index faf15a942..63ddd0d06 100644 --- a/tools/Makefile.gnuhost +++ b/tools/Makefile.gnuhost @@ -34,7 +34,7 @@ GNUHOSTDIST?= ${.CURDIR}/../../gnu/dist/${MODULE} # the corresponding ${.CURDIR}, which also conveniently hides from git. .if exists(${GNUHOSTDIST:H}/fetch.sh) ${GNUHOSTDIST:H}/.gitignore: ${GNUHOSTDIST:H}/fetch.sh - ${HOST_SH} ${GNUHOSTDIST:H}/fetch.sh + SED=${TOOL_SED} ${HOST_SH} ${GNUHOSTDIST:H}/fetch.sh @test -e ${GNUHOSTDIST}/configure @echo "${MODULE:U${.CURDIR:T}:C,gcc[0-9]*,gcc,}-*.tar.*z*" >> $@ @echo ${GNUHOSTDIST:T} >> $@