]> Zhao Yanbai Git Server - minix.git/commitdiff
patch(1) problems workaround
authorBen Gras <ben@minix3.org>
Tue, 18 Mar 2014 10:43:08 +0000 (11:43 +0100)
committerLionel Sambuc <lionel@minix3.org>
Mon, 28 Jul 2014 15:05:20 +0000 (17:05 +0200)
. 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
external/gpl3/gcc/fetch.sh
tools/Makefile.gnuhost

index 1cb5b332af10f2f664745190666ce12c9f5fc672..c2c9fcd78c0a72c46570e6b999994867ded2d868 100755 (executable)
@@ -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
 
index 66e689d1120fc65550d87cc57e235e6bfba7d93d..596c10536dcc8a4ae94b81c5cb942e7bc7156401 100755 (executable)
@@ -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
 
index faf15a94267bf8ba779857251ae42d633453db63..63ddd0d06fb78070dc6fd65959927460d149a384 100644 (file)
@@ -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} >> $@