Index: BOOK/final-system/common/coreutils.xml
===================================================================
--- BOOK/final-system/common/coreutils.xml	(revision b6045393dac5f4c06262a3b370cc219bcb9f3124)
+++ BOOK/final-system/common/coreutils.xml	(revision 9e7e74c22a6b6d68ebda201b32b6c25c38eb38da)
@@ -41,13 +41,4 @@
 <screen os="ab"><userinput>touch man/uname.1 man/hostname.1</userinput></screen>
 
-    <para os="s1">Coreutils attempts to use the <command>install</command>
-    program it just built to perform the install. This will not work if the
-    target architecture is incompatible with the host architecture. The
-    following command causes the Makefile to use the host's
-    <command>install</command> to perform the install:</para>
-
-<screen os="s2"><userinput>cp -v src/Makefile.in{,.orig}
-sed -e "/binPROGRAMS_INSTALL=/s:./ginstall:install:" src/Makefile.in.orig &gt; src/Makefile.in</userinput></screen>
-
     <para os="a">Configure can not properly determine how to get free space
     when cross-compiling - as a result, the <command>df</command> program will
@@ -57,4 +48,5 @@
 <screen os="b"><userinput>cat &gt; config.cache &lt;&lt; EOF
 fu_cv_sys_stat_statfs2_bsize=yes
+gl_cv_func_rename_trailing_slash_bug=no
 gl_cv_func_mbrtowc_incomplete_state=yes
 gl_cv_func_mbrtowc_nul_retval=yes
Index: BOOK/introduction/common/changelog.xml
===================================================================
--- BOOK/introduction/common/changelog.xml	(revision b6045393dac5f4c06262a3b370cc219bcb9f3124)
+++ BOOK/introduction/common/changelog.xml	(revision 9e7e74c22a6b6d68ebda201b32b6c25c38eb38da)
@@ -40,4 +40,7 @@
       <para>July 9, 2009</para>
       <itemizedlist>
+        <listitem>
+          <para>[jciccone] - Updated Coreutils to 7.4.</para>
+        </listitem>
         <listitem>
           <para>[jciccone] - Updated IPRoute2 to 2.6.29-1.</para>
Index: BOOK/packages.ent
===================================================================
--- BOOK/packages.ent	(revision b6045393dac5f4c06262a3b370cc219bcb9f3124)
+++ BOOK/packages.ent	(revision 9e7e74c22a6b6d68ebda201b32b6c25c38eb38da)
@@ -48,8 +48,8 @@
 <!ENTITY bzip2-home "http://www.bzip.org">
 
-<!ENTITY coreutils-version "7.1">
-<!ENTITY coreutils-size "9,039 KB">
+<!ENTITY coreutils-version "7.4">
+<!ENTITY coreutils-size "9,481 KB">
 <!ENTITY coreutils-url "&gnu;coreutils/coreutils-&coreutils-version;.tar.gz">
-<!ENTITY coreutils-md5 "cbb2b3d1718ee1237b808e00b5c11b1e">
+<!ENTITY coreutils-md5 "c52f4f64dda9a245c38e74c09fdd86d2">
 <!ENTITY coreutils-home "&gnu-software;coreutils">
 
Index: tches/coreutils-7.1-uname-1.patch
===================================================================
--- patches/coreutils-7.1-uname-1.patch	(revision b6045393dac5f4c06262a3b370cc219bcb9f3124)
+++ 	(revision )
@@ -1,173 +1,0 @@
-Submitted By: Jim Gifford <jim at cross-lfs dot org>
-Date: 2009-02-21
-Initial Package Version: 7.1
-Upstream Status: Not Accepted
-Origin: Gentoo - http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/coreutils
-Description: Display CPU Information from /proc/cpuinfo or /proc/sysinfo
-
-Rediffed for 7.1 by Jim Gifford
-Original Patch by - Matthew Burgess and Scot McPherson
-
-diff -Naur coreutils-7.1.orig/src/uname.c coreutils-7.1/src/uname.c
---- coreutils-7.1.orig/src/uname.c	2008-09-18 00:06:57.000000000 -0700
-+++ coreutils-7.1/src/uname.c	2009-02-21 21:48:22.417139823 -0800
-@@ -50,6 +50,11 @@
- # include <mach-o/arch.h>
- #endif
- 
-+#if defined (__linux__)
-+# define USE_PROCINFO
-+# define UNAME_HARDWARE_PLATFORM
-+#endif
-+
- #include "system.h"
- #include "error.h"
- #include "quote.h"
-@@ -155,6 +160,117 @@
-   exit (status);
- }
- 
-+#if defined(USE_PROCINFO)
-+
-+# if defined(__s390__) || defined(__s390x__)
-+#  define CPUINFO_FILE    "/proc/sysinfo"
-+#  define CPUINFO_FORMAT  "%64[^\t :]%*[ :]%256[^\n]%c"
-+# else
-+#  define CPUINFO_FILE    "/proc/cpuinfo"
-+#  define CPUINFO_FORMAT  "%64[^\t:]\t:%256[^\n]%c"
-+# endif
-+
-+# define PROCINFO_PROCESSOR      0
-+# define PROCINFO_HARDWARE_PLATFORM 1
-+
-+static void __eat_cpuinfo_space(char *buf)
-+{
-+	/* first eat trailing space */
-+	char *tmp = buf + strlen(buf) - 1;
-+	while (tmp > buf && isspace(*tmp))
-+		*tmp-- = '\0';
-+	/* then eat leading space */
-+	tmp = buf;
-+	while (*tmp && isspace(*tmp))
-+		tmp++;
-+	if (tmp != buf)
-+		memmove(buf, tmp, strlen(tmp)+1);
-+	/* finally collapse whitespace */
-+	tmp = buf;
-+	while (tmp[0] && tmp[1]) {
-+		if (isspace(tmp[0]) && isspace(tmp[1])) {
-+			memmove(tmp, tmp+1, strlen(tmp));
-+			continue;
-+		}
-+		++tmp;
-+	}
-+}
-+
-+static int __linux_procinfo (int x, char *fstr, size_t s)
-+{
-+	FILE *fp;
-+
-+	char *procinfo_keys[] = {
-+		/* --processor --hardware-platform */
-+		#if defined(__alpha__)
-+			"cpu model", "system type"
-+		#elif defined(__arm__)
-+			"Processor", "Hardware"
-+		#elif defined(__avr32__)
-+			"processor", "cpu family"
-+		#elif defined(__bfin__)
-+			"CPU", "BOARD Name"
-+		#elif defined(__cris__)
-+			"cpu", "cpu model"
-+		#elif defined(__frv__)
-+			"CPU-Core", "System"
-+		#elif defined(__i386__) || defined(__x86_64__)
-+			"model name", "vendor_id"
-+		#elif defined(__ia64__)
-+			"family", "vendor"
-+		#elif defined(__hppa__)
-+			"cpu", "model"
-+		#elif defined(__m68k__)
-+			"CPU", "MMU"
-+		#elif defined(__mips__)
-+			"cpu model", "system type"
-+		#elif defined(__powerpc__) || defined(__powerpc64__)
-+			"cpu", "machine"
-+		#elif defined(__s390__) || defined(__s390x__)
-+			"Type", "Manufacturer"
-+		#elif defined(__sh__)
-+			"cpu type", "machine"
-+		#elif defined(sparc) || defined(__sparc__)
-+			"type", "cpu"
-+		#elif defined(__vax__)
-+			"cpu type", "cpu"
-+		#else
-+			"unknown", "unknown"
-+		#endif
-+	};
-+
-+	if ((fp = fopen(CPUINFO_FILE, "r")) != NULL) {
-+		char key[65], value[257], eol, *ret = NULL;
-+
-+		while (fscanf(fp, CPUINFO_FORMAT, key, value, &eol) != EOF) {
-+			__eat_cpuinfo_space(key);
-+			if (!strcmp(key, procinfo_keys[x])) {
-+				__eat_cpuinfo_space(value);
-+				ret = value;
-+				break;
-+			}
-+			if (eol != '\n') {
-+				/* we need two fscanf's here in case the previous
-+				 * length limit caused us to read right up to the
-+				 * newline ... doing "%*[^\n]\n" wont eat the newline
-+				 */
-+				fscanf(fp, "%*[^\n]");
-+				fscanf(fp, "\n");
-+			}
-+		}
-+		fclose(fp);
-+
-+		if (ret) {
-+			strncpy(fstr, ret, s);
-+			return 0;
-+		}
-+	}
-+
-+	return -1;
-+}
-+
-+#endif
-+
- /* Print ELEMENT, preceded by a space if something has already been
-    printed.  */
- 
-@@ -302,10 +418,14 @@
-   if (toprint & PRINT_PROCESSOR)
-     {
-       char const *element = unknown;
--#if HAVE_SYSINFO && defined SI_ARCHITECTURE
-+#if ( HAVE_SYSINFO && defined SI_ARCHITECTURE ) || defined(USE_PROCINFO)
-       {
- 	static char processor[257];
-+#if defined(USE_PROCINFO)
-+	if (0 <= __linux_procinfo (PROCINFO_PROCESSOR, processor, sizeof processor))
-+#else
- 	if (0 <= sysinfo (SI_ARCHITECTURE, processor, sizeof processor))
-+#endif
- 	  element = processor;
-       }
- #endif
-@@ -358,9 +478,13 @@
-       if (element == unknown)
- 	{
- 	  static char hardware_platform[257];
-+#if defined(USE_PROCINFO)
-+	  if (0 <= __linux_procinfo (PROCINFO_HARDWARE_PLATFORM, hardware_platform, sizeof hardware_platform))
-+#else
- 	  size_t s = sizeof hardware_platform;
- 	  static int mib[] = { CTL_HW, UNAME_HARDWARE_PLATFORM };
- 	  if (sysctl (mib, 2, hardware_platform, &s, 0, 0) >= 0)
-+#endif
- 	    element = hardware_platform;
- 	}
- #endif
Index: patches/coreutils-7.4-uname-1.patch
===================================================================
--- patches/coreutils-7.4-uname-1.patch	(revision 9e7e74c22a6b6d68ebda201b32b6c25c38eb38da)
+++ patches/coreutils-7.4-uname-1.patch	(revision 9e7e74c22a6b6d68ebda201b32b6c25c38eb38da)
@@ -0,0 +1,173 @@
+Submitted By: Jim Gifford <jim at cross-lfs dot org>
+Date: 2009-02-21
+Initial Package Version: 7.1
+Upstream Status: Not Accepted
+Origin: Gentoo - http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/coreutils
+Description: Display CPU Information from /proc/cpuinfo or /proc/sysinfo
+
+Rediffed for 7.1 by Jim Gifford
+Original Patch by - Matthew Burgess and Scot McPherson
+
+diff -Naur coreutils-7.1.orig/src/uname.c coreutils-7.1/src/uname.c
+--- coreutils-7.1.orig/src/uname.c	2008-09-18 00:06:57.000000000 -0700
++++ coreutils-7.1/src/uname.c	2009-02-21 21:48:22.417139823 -0800
+@@ -50,6 +50,11 @@
+ # include <mach-o/arch.h>
+ #endif
+ 
++#if defined (__linux__)
++# define USE_PROCINFO
++# define UNAME_HARDWARE_PLATFORM
++#endif
++
+ #include "system.h"
+ #include "error.h"
+ #include "quote.h"
+@@ -155,6 +160,117 @@
+   exit (status);
+ }
+ 
++#if defined(USE_PROCINFO)
++
++# if defined(__s390__) || defined(__s390x__)
++#  define CPUINFO_FILE    "/proc/sysinfo"
++#  define CPUINFO_FORMAT  "%64[^\t :]%*[ :]%256[^\n]%c"
++# else
++#  define CPUINFO_FILE    "/proc/cpuinfo"
++#  define CPUINFO_FORMAT  "%64[^\t:]\t:%256[^\n]%c"
++# endif
++
++# define PROCINFO_PROCESSOR      0
++# define PROCINFO_HARDWARE_PLATFORM 1
++
++static void __eat_cpuinfo_space(char *buf)
++{
++	/* first eat trailing space */
++	char *tmp = buf + strlen(buf) - 1;
++	while (tmp > buf && isspace(*tmp))
++		*tmp-- = '\0';
++	/* then eat leading space */
++	tmp = buf;
++	while (*tmp && isspace(*tmp))
++		tmp++;
++	if (tmp != buf)
++		memmove(buf, tmp, strlen(tmp)+1);
++	/* finally collapse whitespace */
++	tmp = buf;
++	while (tmp[0] && tmp[1]) {
++		if (isspace(tmp[0]) && isspace(tmp[1])) {
++			memmove(tmp, tmp+1, strlen(tmp));
++			continue;
++		}
++		++tmp;
++	}
++}
++
++static int __linux_procinfo (int x, char *fstr, size_t s)
++{
++	FILE *fp;
++
++	char *procinfo_keys[] = {
++		/* --processor --hardware-platform */
++		#if defined(__alpha__)
++			"cpu model", "system type"
++		#elif defined(__arm__)
++			"Processor", "Hardware"
++		#elif defined(__avr32__)
++			"processor", "cpu family"
++		#elif defined(__bfin__)
++			"CPU", "BOARD Name"
++		#elif defined(__cris__)
++			"cpu", "cpu model"
++		#elif defined(__frv__)
++			"CPU-Core", "System"
++		#elif defined(__i386__) || defined(__x86_64__)
++			"model name", "vendor_id"
++		#elif defined(__ia64__)
++			"family", "vendor"
++		#elif defined(__hppa__)
++			"cpu", "model"
++		#elif defined(__m68k__)
++			"CPU", "MMU"
++		#elif defined(__mips__)
++			"cpu model", "system type"
++		#elif defined(__powerpc__) || defined(__powerpc64__)
++			"cpu", "machine"
++		#elif defined(__s390__) || defined(__s390x__)
++			"Type", "Manufacturer"
++		#elif defined(__sh__)
++			"cpu type", "machine"
++		#elif defined(sparc) || defined(__sparc__)
++			"type", "cpu"
++		#elif defined(__vax__)
++			"cpu type", "cpu"
++		#else
++			"unknown", "unknown"
++		#endif
++	};
++
++	if ((fp = fopen(CPUINFO_FILE, "r")) != NULL) {
++		char key[65], value[257], eol, *ret = NULL;
++
++		while (fscanf(fp, CPUINFO_FORMAT, key, value, &eol) != EOF) {
++			__eat_cpuinfo_space(key);
++			if (!strcmp(key, procinfo_keys[x])) {
++				__eat_cpuinfo_space(value);
++				ret = value;
++				break;
++			}
++			if (eol != '\n') {
++				/* we need two fscanf's here in case the previous
++				 * length limit caused us to read right up to the
++				 * newline ... doing "%*[^\n]\n" wont eat the newline
++				 */
++				fscanf(fp, "%*[^\n]");
++				fscanf(fp, "\n");
++			}
++		}
++		fclose(fp);
++
++		if (ret) {
++			strncpy(fstr, ret, s);
++			return 0;
++		}
++	}
++
++	return -1;
++}
++
++#endif
++
+ /* Print ELEMENT, preceded by a space if something has already been
+    printed.  */
+ 
+@@ -302,10 +418,14 @@
+   if (toprint & PRINT_PROCESSOR)
+     {
+       char const *element = unknown;
+-#if HAVE_SYSINFO && defined SI_ARCHITECTURE
++#if ( HAVE_SYSINFO && defined SI_ARCHITECTURE ) || defined(USE_PROCINFO)
+       {
+ 	static char processor[257];
++#if defined(USE_PROCINFO)
++	if (0 <= __linux_procinfo (PROCINFO_PROCESSOR, processor, sizeof processor))
++#else
+ 	if (0 <= sysinfo (SI_ARCHITECTURE, processor, sizeof processor))
++#endif
+ 	  element = processor;
+       }
+ #endif
+@@ -358,9 +478,13 @@
+       if (element == unknown)
+ 	{
+ 	  static char hardware_platform[257];
++#if defined(USE_PROCINFO)
++	  if (0 <= __linux_procinfo (PROCINFO_HARDWARE_PLATFORM, hardware_platform, sizeof hardware_platform))
++#else
+ 	  size_t s = sizeof hardware_platform;
+ 	  static int mib[] = { CTL_HW, UNAME_HARDWARE_PLATFORM };
+ 	  if (sysctl (mib, 2, hardware_platform, &s, 0, 0) >= 0)
++#endif
+ 	    element = hardware_platform;
+ 	}
+ #endif
