summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2007-03-09 08:33:34 +0000
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2007-03-09 08:33:34 +0000
commit1506b0cfd5708c81fe286549d63843c5030c0e8a (patch)
tree46ed27097f9ccc05feaa4e021534519a50235ee4
parenta9612bfdd90268cf065b09e8a0ff1b6c8a99b399 (diff)
downloadbuildroot-novena-1506b0cfd5708c81fe286549d63843c5030c0e8a.tar.gz
buildroot-novena-1506b0cfd5708c81fe286549d63843c5030c0e8a.zip
Improve the checking of sed by adding some common GNU sed installation
names (gsed/gnused), checking for a basic OS X sed feature in command line option handling, checking the actual result of the sed run against the expected result, and placing common code for the check under toolchain/dependencies/. (Heikki Lindholm)
-rwxr-xr-xpackage/sed/sedcheck.sh18
-rwxr-xr-xtoolchain/dependencies/check-host-sed.sh38
-rwxr-xr-xtoolchain/dependencies/dependencies.sh43
3 files changed, 59 insertions, 40 deletions
diff --git a/package/sed/sedcheck.sh b/package/sed/sedcheck.sh
index 535ad6023..3fe44e85e 100755
--- a/package/sed/sedcheck.sh
+++ b/package/sed/sedcheck.sh
@@ -2,24 +2,10 @@
# Make sure the host sed supports '-i' (in-place).
# If it doesn't, we'll build and use our own.
+SED=$(toolchain/dependencies/check-host-sed.sh)
-if test -x /usr/bin/sed ; then
- SED="/usr/bin/sed"
-else
- if test -x /bin/sed ; then
- SED="/bin/sed"
- else
- SED="sed"
- fi
-fi
-
-echo "HELLO" > .sedtest
-$SED -i -e "s/HELLO/GOODBYE/" .sedtest >/dev/null 2>&1
-
-if test $? != 0 ; then
+if [ -z "$SED" ] ; then
echo build-sed-host-binary
else
echo use-sed-host-binary
fi
-
-rm -f .sedtest
diff --git a/toolchain/dependencies/check-host-sed.sh b/toolchain/dependencies/check-host-sed.sh
new file mode 100755
index 000000000..ba99a4258
--- /dev/null
+++ b/toolchain/dependencies/check-host-sed.sh
@@ -0,0 +1,38 @@
+SEDLIST="/usr/bin/sed /bin/sed sed gnused gsed"
+
+DIFF=$(which diff)
+if ! test -x "$DIFF" ; then
+ /bin/echo -e "\n\ntesting for sed needs 'diff' on your build machine\n";
+ exit 1;
+fi;
+
+for SED in $SEDLIST
+do
+ if ! test -x $SED ; then
+ SED=$(which $SED)
+ if ! test -x "$SED" > /dev/null ; then
+ SED=""
+ continue
+ fi
+ fi
+
+ echo "HELLO" > .sedtest
+ echo "GOODBYE" > .sedtest-correct
+ $SED -i -e "s/HELLO/GOODBYE/" .sedtest >/dev/null 2>&1
+
+ if test $? != 0 ; then
+ SED=""
+ elif test -e ".sedtest-e" ; then
+ rm -f ".sedtest-e"
+ SED=""
+ elif ! $DIFF ".sedtest" ".sedtest-correct" > /dev/null ; then
+ echo "diff failed"
+ SED=""
+ fi
+
+ rm -f .sedtest .sedtest-correct
+ if [ ! -z "$SED" ] ; then
+ break
+ fi
+done
+echo $SED
diff --git a/toolchain/dependencies/dependencies.sh b/toolchain/dependencies/dependencies.sh
index 084e835cb..40bfd9a2a 100755
--- a/toolchain/dependencies/dependencies.sh
+++ b/toolchain/dependencies/dependencies.sh
@@ -88,30 +88,6 @@ fi;
#############################################################
#
-# check build system 'sed'
-#
-#############################################################
-if test -x /usr/bin/sed ; then
- SED="/usr/bin/sed"
-else
- if test -x /bin/sed ; then
- SED="/bin/sed"
- else
- SED="sed"
- fi
-fi
-echo "HELLO" > .sedtest
-$SED -i -e "s/HELLO/GOODBYE/" .sedtest >/dev/null 2>&1
-if test $? != 0 ; then
- echo "sed works: No, using buildroot version instead"
-else
- echo "sed works: Ok"
-fi
-rm -f .sedtest
-XSED=$HOST_SED_DIR/bin/sed
-
-#############################################################
-#
# check build system 'which'
#
#############################################################
@@ -123,6 +99,25 @@ fi;
echo "which installed: Ok"
+
+#############################################################
+#
+# check build system 'sed'
+#
+#############################################################
+SED=$(toolchain/dependencies/check-host-sed.sh)
+
+if [ -z "$SED" ] ; then
+ XSED=$HOST_SED_DIR/bin/sed
+ echo "sed works: No, using buildroot version instead"
+else
+ XSED=$SED
+ echo "sed works: Ok ($SED)"
+fi
+
+
+
+
#############################################################
#
# check build system 'make'