vapier      14/07/28 09:43:14

  Added:                003_all_coreutils-gentoo-uname.patch
                        010_all_coreutils-tests.patch
                        030_all_coreutils-more-dir-colors.patch
                        040_all_coreutils-cp-mkdir-eexist.patch
                        051_all_coreutils-mangen.patch README.history
  Log:
  initial 8.23 patchset based on last 8.22 patchset

Revision  Changes    Path
1.1                  
src/patchsets/coreutils/8.23/003_all_coreutils-gentoo-uname.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/coreutils/8.23/003_all_coreutils-gentoo-uname.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/coreutils/8.23/003_all_coreutils-gentoo-uname.patch?rev=1.1&content-type=text/plain

Index: 003_all_coreutils-gentoo-uname.patch
===================================================================
On linux platforms, grok /proc/cpuinfo for the CPU/vendor info.

Prob not suitable for upstream seeing as how it's 100% linux-specific
http://lists.gnu.org/archive/html/bug-coreutils/2005-09/msg00063.html

Patch originally by Carlos E. Gorges <car...@techlinux.com.br>, but 
heavily reworked to suck less.

To add support for additional platforms, check out the show_cpuinfo()
func in the linux/arch/<ARCH>/ source tree of the kernel.

--- coreutils/src/uname.c
+++ coreutils/src/uname.c
@@ -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"
@@ -138,6 +143,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__)
+                       "model name", "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.  */
 
@@ -250,10 +344,14 @@ main (int argc, char **argv)
   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
@@ -306,9 +404,13 @@ main (int argc, char **argv)
       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



1.1                  src/patchsets/coreutils/8.23/010_all_coreutils-tests.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/coreutils/8.23/010_all_coreutils-tests.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/coreutils/8.23/010_all_coreutils-tests.patch?rev=1.1&content-type=text/plain

Index: 010_all_coreutils-tests.patch
===================================================================
this test only gets run as non-root, so giving it temp write access to the
root dir is safe since normal unix access will deny it #259876
--- a/tests/touch/not-owner.sh
+++ b/tests/touch/not-owner.sh
@@ -34,6 +34,7 @@
 # Before fileutils-4.1, we'd get the following misleading
 # diagnostic instead of '...: Permission denied'.
 # touch: creating '/': Is a directory
+env SANDBOX_WRITE=${SANDBOX_WRITE}:/ \
 touch / > out 2>&1 && fail=1
 
 # On SunOS4, EPERM is 'Not owner'.

the dd test looks up a device and tries to test seeking on it.  it shouldnt
cause any corruption because it uses a count of 0 and seeks past the end of
the device
--- a/tests/dd/skip-seek-past-dev.sh
+++ b/tests/dd/skip-seek-past-dev.sh
@@ -48,6 +48,7 @@
 0+0 records out" > err_ok || framework_failure_
 compare err_ok err || fail=1
 
+env SANDBOX_WRITE=${SANDBOX_WRITE}:$device \
 timeout 10 dd bs=1 seek=$DEV_OFLOW count=0 status=noxfer > "$device" 2> err
 test "$?" = "1" || fail=1
 echo "dd: 'standard output': cannot seek: Invalid argument

running through strace and counting stat syscalls is off when using sandbox
https://bugs.gentoo.org/415487
--- a/tests/ls/stat-free-color.sh
+++ b/tests/ls/stat-free-color.sh
@@ -19,6 +19,8 @@
 . "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
 print_ver_ ls
 
+skip_ 'strace does not work under sandbox #415487'
+
 # Note this list of _file name_ stat functions must be
 # as cross platform as possible and so doesn't include
 # fstatat64 as that's not available on aarch64 for example.



1.1                  
src/patchsets/coreutils/8.23/030_all_coreutils-more-dir-colors.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/coreutils/8.23/030_all_coreutils-more-dir-colors.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/coreutils/8.23/030_all_coreutils-more-dir-colors.patch?rev=1.1&content-type=text/plain

Index: 030_all_coreutils-more-dir-colors.patch
===================================================================
--- coreutils-7.5/src/dircolors.hin
+++ coreutils-7.5/src/dircolors.hin
@@ -5,6 +5,9 @@
 
 # The keywords COLOR, OPTIONS, and EIGHTBIT (honored by the
 # slackware version of dircolors) are recognized but ignored.
+
+# You can copy this file to .dir_colors in your $HOME directory to override
+# the system defaults.
 
 # Below, there should be one TERM entry for each termtype that is colorizable
 TERM Eterm
@@ -66,7 +66,8 @@
 DOOR 01;35     # door
 BLK 40;33;01   # block device driver
 CHR 40;33;01   # character device driver
-ORPHAN 40;31;01 # symlink to nonexistent file, or non-stat'able file
+ORPHAN 01;05;37;41  # orphaned syminks
+MISSING 01;05;37;41 # ... and the files they point to
 SETUID 37;41   # file that is setuid (u+s)
 SETGID 30;43   # file that is setgid (g+s)
 STICKY_OTHER_WRITABLE 30;42 # dir that is sticky and other-writable (+t,o+w)
@@ -125,6 +154,16 @@
 .xwd 01;35
 .yuv 01;35
 
+# Document files
+.pdf 00;32
+.ps 00;32
+.txt 00;32
+.patch 00;32
+.diff 00;32
+.log 00;32
+.tex 00;32
+.doc 00;32
+
 # audio formats
 .aac 00;36
 .au 00;36



1.1                  
src/patchsets/coreutils/8.23/040_all_coreutils-cp-mkdir-eexist.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/coreutils/8.23/040_all_coreutils-cp-mkdir-eexist.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/coreutils/8.23/040_all_coreutils-cp-mkdir-eexist.patch?rev=1.1&content-type=text/plain

Index: 040_all_coreutils-cp-mkdir-eexist.patch
===================================================================
https://bugs.gentoo.org/449838
http://lists.gnu.org/archive/html/bug-coreutils/2013-01/msg00002.html

>From 597db089bfa64656540206b3826e0a97759f6720 Mon Sep 17 00:00:00 2001
From: Mike Frysinger <vap...@gentoo.org>
Date: Thu, 3 Jan 2013 18:31:37 -0500
Subject: [PATCH] cp: ignore EEXIST errors from mkdir

If you're copying multiple source trees into a single destination in
parallel (which have overlapping dirs, but not files), you can easily
hit a race condition.

This can crop up more generally if you're running multiple installs
from different build directories in parallel.  You don't get as much
of a speed up due to the parallel I/O, but you do from processing all
the build scripts.

Simple test to reproduce:
        mkdir -p in/`printf %s/ {a..z} {0..10}`
        (rm -rf out; for ((i=0;i<100;++i)); do cp -pPR in out & :; done)

* src/cp.c (make_dir_parents_private): Ignore EEXIST from mkdir.
---
 src/cp.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/cp.c b/src/cp.c
index 625ea0b..b9dff18 100644
--- a/src/cp.c
+++ b/src/cp.c
@@ -473,9 +473,15 @@ make_dir_parents_private (char const *const_dir, size_t 
src_offset,
               mkdir_mode = src_mode & CHMOD_MODE_BITS & ~omitted_permissions;
               if (mkdir (dir, mkdir_mode) != 0)
                 {
-                  error (0, errno, _("cannot make directory %s"),
-                         quote (dir));
-                  return false;
+                  /* If someone else created it between our stat/mkdir,
+                     don't complain.  It's debatable whether we should
+                     also preserve the mode bits in this scenario.  */
+                  if (errno != EEXIST)
+                    {
+                      error (0, errno, _("cannot make directory %s"),
+                             quote (dir));
+                      return false;
+                    }
                 }
               else
                 {
-- 
1.8.0.2




1.1                  src/patchsets/coreutils/8.23/051_all_coreutils-mangen.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/coreutils/8.23/051_all_coreutils-mangen.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/coreutils/8.23/051_all_coreutils-mangen.patch?rev=1.1&content-type=text/plain

Index: 051_all_coreutils-mangen.patch
===================================================================
avoid regenerating man pages all the time (since the locally compiled binaries
will always be newer than the bundled man pages)

--- a/Makefile.in
+++ b/Makefile.in
@@ -14038,7 +14038,6 @@ check-local: check-texinfo
 distclean-local:
        test x$(srcdir) = x$(builddir) || rm -f $(ALL_MANS)
 
-$(ALL_MANS): $(mandeps)
 man/dynamic-deps.mk: Makefile
        $(AM_V_GEN)rm -f $@ $@-t
        $(AM_V_at)for man in $(ALL_MANS); do                            \
@@ -14058,9 +14057,6 @@ man/dynamic-deps.mk: Makefile
        done > $@-t                                                     \
        && mv $@-t $@
 
-# Include the generated man dependencies.
-@AMDEP_TRUE@@am__include@ man/dynamic-deps.mk
-
 .x.1:
        $(AM_V_GEN)name=`echo $@ | sed 's|.*/||; s|\.1$$||'` || exit 1; \
        case $$name in                                                  \



1.1                  src/patchsets/coreutils/8.23/README.history

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/coreutils/8.23/README.history?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/coreutils/8.23/README.history?rev=1.1&content-type=text/plain

Index: README.history
===================================================================
1.0             28 Jul 2014
        + 003_all_coreutils-gentoo-uname.patch
        + 010_all_coreutils-tests.patch
        + 030_all_coreutils-more-dir-colors.patch
        + 040_all_coreutils-cp-mkdir-eexist.patch
        + 051_all_coreutils-mangen.patch




Reply via email to