Date: Thursday, April 3, 2014 @ 20:31:50 Author: dreisner Revision: 209766
archrelease: copy trunk to testing-i686, testing-x86_64 Added: coreutils/repos/testing-i686/ coreutils/repos/testing-i686/0001-cp-don-t-reserve-a-device-number.patch (from rev 209765, coreutils/trunk/0001-cp-don-t-reserve-a-device-number.patch) coreutils/repos/testing-i686/PKGBUILD (from rev 209765, coreutils/trunk/PKGBUILD) coreutils/repos/testing-i686/coreutils-8.22-shuf-segfault.patch (from rev 209765, coreutils/trunk/coreutils-8.22-shuf-segfault.patch) coreutils/repos/testing-i686/coreutils.install (from rev 209765, coreutils/trunk/coreutils.install) coreutils/repos/testing-x86_64/ coreutils/repos/testing-x86_64/0001-cp-don-t-reserve-a-device-number.patch (from rev 209765, coreutils/trunk/0001-cp-don-t-reserve-a-device-number.patch) coreutils/repos/testing-x86_64/PKGBUILD (from rev 209765, coreutils/trunk/PKGBUILD) coreutils/repos/testing-x86_64/coreutils-8.22-shuf-segfault.patch (from rev 209765, coreutils/trunk/coreutils-8.22-shuf-segfault.patch) coreutils/repos/testing-x86_64/coreutils.install (from rev 209765, coreutils/trunk/coreutils.install) ------------------------------------------------------------+ testing-i686/0001-cp-don-t-reserve-a-device-number.patch | 77 +++++++++++ testing-i686/PKGBUILD | 46 ++++++ testing-i686/coreutils-8.22-shuf-segfault.patch | 74 ++++++++++ testing-i686/coreutils.install | 17 ++ testing-x86_64/0001-cp-don-t-reserve-a-device-number.patch | 77 +++++++++++ testing-x86_64/PKGBUILD | 46 ++++++ testing-x86_64/coreutils-8.22-shuf-segfault.patch | 74 ++++++++++ testing-x86_64/coreutils.install | 17 ++ 8 files changed, 428 insertions(+) Copied: coreutils/repos/testing-i686/0001-cp-don-t-reserve-a-device-number.patch (from rev 209765, coreutils/trunk/0001-cp-don-t-reserve-a-device-number.patch) =================================================================== --- testing-i686/0001-cp-don-t-reserve-a-device-number.patch (rev 0) +++ testing-i686/0001-cp-don-t-reserve-a-device-number.patch 2014-04-03 18:31:50 UTC (rev 209766) @@ -0,0 +1,77 @@ +From d0294ff3b90430750a631556277c75f1a555dd44 Mon Sep 17 00:00:00 2001 +From: Paul Eggert <egg...@cs.ucla.edu> +Date: Thu, 3 Apr 2014 09:48:22 -0700 +Subject: [PATCH] cp: don't reserve a device number + +* src/copy.c (copy_internal): Replace dev_t arg DEVICE with struct +stat pointer arg PARENT. All callers changed. This removes an +unwarranted assumption that dev_t values of 0 cannot occur in file +systems. See: http://bugs.gnu.org/17179 +--- + src/copy.c | 15 +++++++-------- + 1 file changed, 7 insertions(+), 8 deletions(-) + +diff --git a/src/copy.c b/src/copy.c +index 781cc1e..d471a77 100644 +--- a/src/copy.c ++++ b/src/copy.c +@@ -117,7 +117,7 @@ struct dir_list + #define DEST_INFO_INITIAL_CAPACITY 61 + + static bool copy_internal (char const *src_name, char const *dst_name, +- bool new_dst, dev_t device, ++ bool new_dst, struct stat const *parent, + struct dir_list *ancestors, + const struct cp_options *x, + bool command_line_arg, +@@ -621,7 +621,7 @@ copy_dir (char const *src_name_in, char const *dst_name_in, bool new_dst, + char *dst_name = file_name_concat (dst_name_in, namep, NULL); + bool first_dir_created = *first_dir_created_per_command_line_arg; + +- ok &= copy_internal (src_name, dst_name, new_dst, src_sb->st_dev, ++ ok &= copy_internal (src_name, dst_name, new_dst, src_sb, + ancestors, &non_command_line_options, false, + &first_dir_created, + &local_copy_into_self, NULL); +@@ -1725,9 +1725,8 @@ should_dereference (const struct cp_options *x, bool command_line_arg) + /* Copy the file SRC_NAME to the file DST_NAME. The files may be of + any type. NEW_DST should be true if the file DST_NAME cannot + exist because its parent directory was just created; NEW_DST should +- be false if DST_NAME might already exist. DEVICE is the device +- number of the parent directory, or 0 if the parent of this file is +- not known. ANCESTORS points to a linked, null terminated list of ++ be false if DST_NAME might already exist. A nonnull PARENT describes the ++ parent directory. ANCESTORS points to a linked, null terminated list of + devices and inodes of parent directories of SRC_NAME. COMMAND_LINE_ARG + is true iff SRC_NAME was specified on the command line. + FIRST_DIR_CREATED_PER_COMMAND_LINE_ARG is both input and output. +@@ -1737,7 +1736,7 @@ should_dereference (const struct cp_options *x, bool command_line_arg) + static bool + copy_internal (char const *src_name, char const *dst_name, + bool new_dst, +- dev_t device, ++ struct stat const *parent, + struct dir_list *ancestors, + const struct cp_options *x, + bool command_line_arg, +@@ -2434,7 +2433,7 @@ copy_internal (char const *src_name, char const *dst_name, + } + + /* Decide whether to copy the contents of the directory. */ +- if (x->one_file_system && device != 0 && device != src_sb.st_dev) ++ if (x->one_file_system && parent && parent->st_dev != src_sb.st_dev) + { + /* Here, we are crossing a file system boundary and cp's -x option + is in effect: so don't copy the contents of this directory. */ +@@ -2827,7 +2826,7 @@ copy (char const *src_name, char const *dst_name, + top_level_dst_name = dst_name; + + bool first_dir_created_per_command_line_arg = false; +- return copy_internal (src_name, dst_name, nonexistent_dst, 0, NULL, ++ return copy_internal (src_name, dst_name, nonexistent_dst, NULL, NULL, + options, true, + &first_dir_created_per_command_line_arg, + copy_into_self, rename_succeeded); +-- +1.9.1 + Copied: coreutils/repos/testing-i686/PKGBUILD (from rev 209765, coreutils/trunk/PKGBUILD) =================================================================== --- testing-i686/PKGBUILD (rev 0) +++ testing-i686/PKGBUILD 2014-04-03 18:31:50 UTC (rev 209766) @@ -0,0 +1,46 @@ +# $Id$ +# Maintainer: Sébastien "Seblu" Luttringer +# Maintainer: Bartłomiej Piotrowski <bpiotrow...@archlinux.org> +# Contributor: Allan McRae <al...@archlinux.org> +# Contributor: judd <jvi...@zeroflux.org> + +pkgname=coreutils +pkgver=8.22 +pkgrel=4 +pkgdesc='The basic file, shell and text manipulation utilities of the GNU operating system' +arch=('i686' 'x86_64') +license=('GPL3') +url='http://www.gnu.org/software/coreutils' +groups=('base') +depends=('glibc' 'pam' 'acl' 'gmp' 'libcap' 'openssl') +install=$pkgname.install +source=(ftp://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.xz{,.sig} + coreutils-8.22-shuf-segfault.patch + 0001-cp-don-t-reserve-a-device-number.patch) +md5sums=('8fb0ae2267aa6e728958adc38f8163a2' + 'SKIP' + '94f7e6f373f37beb236caabed8fcdb52' + 'ac3825f60b6e0300e375f656a3667c52') + +prepare() { + cd $pkgname-$pkgver + patch -p1 -i ../coreutils-8.22-shuf-segfault.patch + patch -p1 -i ../0001-cp-don-t-reserve-a-device-number.patch +} + +build() { + cd $pkgname-$pkgver + ./configure --prefix=/usr --libexecdir=/usr/lib --with-openssl \ + --enable-no-install-program=groups,hostname,kill,uptime + make +} + +check() { + cd $pkgname-$pkgver + make RUN_EXPENSIVE_TESTS=yes check +} + +package() { + cd $pkgname-$pkgver + make DESTDIR="$pkgdir" install +} Copied: coreutils/repos/testing-i686/coreutils-8.22-shuf-segfault.patch (from rev 209765, coreutils/trunk/coreutils-8.22-shuf-segfault.patch) =================================================================== --- testing-i686/coreutils-8.22-shuf-segfault.patch (rev 0) +++ testing-i686/coreutils-8.22-shuf-segfault.patch 2014-04-03 18:31:50 UTC (rev 209766) @@ -0,0 +1,74 @@ +From 24eb395471176e24762b08bfcef7562911537504 Mon Sep 17 00:00:00 2001 +From: Paul Eggert <egg...@cs.ucla.edu> +Date: Sun, 23 Feb 2014 15:34:48 -0800 +Subject: [PATCH] shuf: with -r, don't dump core if the input is empty + +Problem reported by valiant xiao in <http://bugs.gnu.org/16855>. +* NEWS: Document this. +* src/shuf.c (main): With -r, report an error if the input is empty. +* tests/misc/shuf.sh: Test for the bug. +--- + NEWS | 3 +++ + src/shuf.c | 15 +++++++++++---- + tests/misc/shuf.sh | 4 ++++ + 3 files changed, 18 insertions(+), 4 deletions(-) + +diff --git a/NEWS b/NEWS +index e72942b..2df246d 100644 +--- a/NEWS ++++ b/NEWS +@@ -22,6 +22,9 @@ GNU coreutils NEWS -*- outline -*- + it would display an error, requiring --no-dereference to avoid the issue. + [bug introduced in coreutils-5.3.0] + ++ shuf -r no longer dumps core if the input is empty. ++ [bug introduced in coreutils-8.22] ++ + ** New features + + od accepts a new option: --endian=TYPE to handle inputs with different byte +diff --git a/src/shuf.c b/src/shuf.c +index d4641fe..2a91072 100644 +--- a/src/shuf.c ++++ b/src/shuf.c +@@ -576,11 +576,18 @@ main (int argc, char **argv) + /* Generate output according to requested method */ + if (repeat) + { +- if (input_range) +- i = write_random_numbers (randint_source, head_lines, +- lo_input, hi_input, eolbyte); ++ if (head_lines == 0) ++ i = 0; + else +- i = write_random_lines (randint_source, head_lines, line, n_lines); ++ { ++ if (n_lines == 0) ++ error (EXIT_FAILURE, 0, _("No lines to repeat")); ++ if (input_range) ++ i = write_random_numbers (randint_source, head_lines, ++ lo_input, hi_input, eolbyte); ++ else ++ i = write_random_lines (randint_source, head_lines, line, n_lines); ++ } + } + else + { +diff --git a/tests/misc/shuf.sh b/tests/misc/shuf.sh +index d3ea1f2..d7251d1 100755 +--- a/tests/misc/shuf.sh ++++ b/tests/misc/shuf.sh +@@ -43,6 +43,10 @@ compare in out1 || { fail=1; echo "not a permutation" 1>&2; } + t=$(shuf -e a b c d e | sort | fmt) + test "$t" = 'a b c d e' || { fail=1; echo "not a permutation" 1>&2; } + ++# coreutils-8.22 dumps core. ++shuf -er ++test $? -eq 1 || fail=1 ++ + # Before coreutils-6.3, this would infloop. + # "seq 1860" produces 8193 (8K + 1) bytes of output. + seq 1860 | shuf > /dev/null || fail=1 +-- +1.8.5.3 + Copied: coreutils/repos/testing-i686/coreutils.install (from rev 209765, coreutils/trunk/coreutils.install) =================================================================== --- testing-i686/coreutils.install (rev 0) +++ testing-i686/coreutils.install 2014-04-03 18:31:50 UTC (rev 209766) @@ -0,0 +1,17 @@ +infodir=usr/share/info +file=coreutils.info + +post_install() { + [[ -x usr/bin/install-info ]] || return 0 + install-info $infodir/$file.gz $infodir/dir 2> /dev/null +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + [[ -x usr/bin/install-info ]] || return 0 + install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null +} + Copied: coreutils/repos/testing-x86_64/0001-cp-don-t-reserve-a-device-number.patch (from rev 209765, coreutils/trunk/0001-cp-don-t-reserve-a-device-number.patch) =================================================================== --- testing-x86_64/0001-cp-don-t-reserve-a-device-number.patch (rev 0) +++ testing-x86_64/0001-cp-don-t-reserve-a-device-number.patch 2014-04-03 18:31:50 UTC (rev 209766) @@ -0,0 +1,77 @@ +From d0294ff3b90430750a631556277c75f1a555dd44 Mon Sep 17 00:00:00 2001 +From: Paul Eggert <egg...@cs.ucla.edu> +Date: Thu, 3 Apr 2014 09:48:22 -0700 +Subject: [PATCH] cp: don't reserve a device number + +* src/copy.c (copy_internal): Replace dev_t arg DEVICE with struct +stat pointer arg PARENT. All callers changed. This removes an +unwarranted assumption that dev_t values of 0 cannot occur in file +systems. See: http://bugs.gnu.org/17179 +--- + src/copy.c | 15 +++++++-------- + 1 file changed, 7 insertions(+), 8 deletions(-) + +diff --git a/src/copy.c b/src/copy.c +index 781cc1e..d471a77 100644 +--- a/src/copy.c ++++ b/src/copy.c +@@ -117,7 +117,7 @@ struct dir_list + #define DEST_INFO_INITIAL_CAPACITY 61 + + static bool copy_internal (char const *src_name, char const *dst_name, +- bool new_dst, dev_t device, ++ bool new_dst, struct stat const *parent, + struct dir_list *ancestors, + const struct cp_options *x, + bool command_line_arg, +@@ -621,7 +621,7 @@ copy_dir (char const *src_name_in, char const *dst_name_in, bool new_dst, + char *dst_name = file_name_concat (dst_name_in, namep, NULL); + bool first_dir_created = *first_dir_created_per_command_line_arg; + +- ok &= copy_internal (src_name, dst_name, new_dst, src_sb->st_dev, ++ ok &= copy_internal (src_name, dst_name, new_dst, src_sb, + ancestors, &non_command_line_options, false, + &first_dir_created, + &local_copy_into_self, NULL); +@@ -1725,9 +1725,8 @@ should_dereference (const struct cp_options *x, bool command_line_arg) + /* Copy the file SRC_NAME to the file DST_NAME. The files may be of + any type. NEW_DST should be true if the file DST_NAME cannot + exist because its parent directory was just created; NEW_DST should +- be false if DST_NAME might already exist. DEVICE is the device +- number of the parent directory, or 0 if the parent of this file is +- not known. ANCESTORS points to a linked, null terminated list of ++ be false if DST_NAME might already exist. A nonnull PARENT describes the ++ parent directory. ANCESTORS points to a linked, null terminated list of + devices and inodes of parent directories of SRC_NAME. COMMAND_LINE_ARG + is true iff SRC_NAME was specified on the command line. + FIRST_DIR_CREATED_PER_COMMAND_LINE_ARG is both input and output. +@@ -1737,7 +1736,7 @@ should_dereference (const struct cp_options *x, bool command_line_arg) + static bool + copy_internal (char const *src_name, char const *dst_name, + bool new_dst, +- dev_t device, ++ struct stat const *parent, + struct dir_list *ancestors, + const struct cp_options *x, + bool command_line_arg, +@@ -2434,7 +2433,7 @@ copy_internal (char const *src_name, char const *dst_name, + } + + /* Decide whether to copy the contents of the directory. */ +- if (x->one_file_system && device != 0 && device != src_sb.st_dev) ++ if (x->one_file_system && parent && parent->st_dev != src_sb.st_dev) + { + /* Here, we are crossing a file system boundary and cp's -x option + is in effect: so don't copy the contents of this directory. */ +@@ -2827,7 +2826,7 @@ copy (char const *src_name, char const *dst_name, + top_level_dst_name = dst_name; + + bool first_dir_created_per_command_line_arg = false; +- return copy_internal (src_name, dst_name, nonexistent_dst, 0, NULL, ++ return copy_internal (src_name, dst_name, nonexistent_dst, NULL, NULL, + options, true, + &first_dir_created_per_command_line_arg, + copy_into_self, rename_succeeded); +-- +1.9.1 + Copied: coreutils/repos/testing-x86_64/PKGBUILD (from rev 209765, coreutils/trunk/PKGBUILD) =================================================================== --- testing-x86_64/PKGBUILD (rev 0) +++ testing-x86_64/PKGBUILD 2014-04-03 18:31:50 UTC (rev 209766) @@ -0,0 +1,46 @@ +# $Id$ +# Maintainer: Sébastien "Seblu" Luttringer +# Maintainer: Bartłomiej Piotrowski <bpiotrow...@archlinux.org> +# Contributor: Allan McRae <al...@archlinux.org> +# Contributor: judd <jvi...@zeroflux.org> + +pkgname=coreutils +pkgver=8.22 +pkgrel=4 +pkgdesc='The basic file, shell and text manipulation utilities of the GNU operating system' +arch=('i686' 'x86_64') +license=('GPL3') +url='http://www.gnu.org/software/coreutils' +groups=('base') +depends=('glibc' 'pam' 'acl' 'gmp' 'libcap' 'openssl') +install=$pkgname.install +source=(ftp://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.xz{,.sig} + coreutils-8.22-shuf-segfault.patch + 0001-cp-don-t-reserve-a-device-number.patch) +md5sums=('8fb0ae2267aa6e728958adc38f8163a2' + 'SKIP' + '94f7e6f373f37beb236caabed8fcdb52' + 'ac3825f60b6e0300e375f656a3667c52') + +prepare() { + cd $pkgname-$pkgver + patch -p1 -i ../coreutils-8.22-shuf-segfault.patch + patch -p1 -i ../0001-cp-don-t-reserve-a-device-number.patch +} + +build() { + cd $pkgname-$pkgver + ./configure --prefix=/usr --libexecdir=/usr/lib --with-openssl \ + --enable-no-install-program=groups,hostname,kill,uptime + make +} + +check() { + cd $pkgname-$pkgver + make RUN_EXPENSIVE_TESTS=yes check +} + +package() { + cd $pkgname-$pkgver + make DESTDIR="$pkgdir" install +} Copied: coreutils/repos/testing-x86_64/coreutils-8.22-shuf-segfault.patch (from rev 209765, coreutils/trunk/coreutils-8.22-shuf-segfault.patch) =================================================================== --- testing-x86_64/coreutils-8.22-shuf-segfault.patch (rev 0) +++ testing-x86_64/coreutils-8.22-shuf-segfault.patch 2014-04-03 18:31:50 UTC (rev 209766) @@ -0,0 +1,74 @@ +From 24eb395471176e24762b08bfcef7562911537504 Mon Sep 17 00:00:00 2001 +From: Paul Eggert <egg...@cs.ucla.edu> +Date: Sun, 23 Feb 2014 15:34:48 -0800 +Subject: [PATCH] shuf: with -r, don't dump core if the input is empty + +Problem reported by valiant xiao in <http://bugs.gnu.org/16855>. +* NEWS: Document this. +* src/shuf.c (main): With -r, report an error if the input is empty. +* tests/misc/shuf.sh: Test for the bug. +--- + NEWS | 3 +++ + src/shuf.c | 15 +++++++++++---- + tests/misc/shuf.sh | 4 ++++ + 3 files changed, 18 insertions(+), 4 deletions(-) + +diff --git a/NEWS b/NEWS +index e72942b..2df246d 100644 +--- a/NEWS ++++ b/NEWS +@@ -22,6 +22,9 @@ GNU coreutils NEWS -*- outline -*- + it would display an error, requiring --no-dereference to avoid the issue. + [bug introduced in coreutils-5.3.0] + ++ shuf -r no longer dumps core if the input is empty. ++ [bug introduced in coreutils-8.22] ++ + ** New features + + od accepts a new option: --endian=TYPE to handle inputs with different byte +diff --git a/src/shuf.c b/src/shuf.c +index d4641fe..2a91072 100644 +--- a/src/shuf.c ++++ b/src/shuf.c +@@ -576,11 +576,18 @@ main (int argc, char **argv) + /* Generate output according to requested method */ + if (repeat) + { +- if (input_range) +- i = write_random_numbers (randint_source, head_lines, +- lo_input, hi_input, eolbyte); ++ if (head_lines == 0) ++ i = 0; + else +- i = write_random_lines (randint_source, head_lines, line, n_lines); ++ { ++ if (n_lines == 0) ++ error (EXIT_FAILURE, 0, _("No lines to repeat")); ++ if (input_range) ++ i = write_random_numbers (randint_source, head_lines, ++ lo_input, hi_input, eolbyte); ++ else ++ i = write_random_lines (randint_source, head_lines, line, n_lines); ++ } + } + else + { +diff --git a/tests/misc/shuf.sh b/tests/misc/shuf.sh +index d3ea1f2..d7251d1 100755 +--- a/tests/misc/shuf.sh ++++ b/tests/misc/shuf.sh +@@ -43,6 +43,10 @@ compare in out1 || { fail=1; echo "not a permutation" 1>&2; } + t=$(shuf -e a b c d e | sort | fmt) + test "$t" = 'a b c d e' || { fail=1; echo "not a permutation" 1>&2; } + ++# coreutils-8.22 dumps core. ++shuf -er ++test $? -eq 1 || fail=1 ++ + # Before coreutils-6.3, this would infloop. + # "seq 1860" produces 8193 (8K + 1) bytes of output. + seq 1860 | shuf > /dev/null || fail=1 +-- +1.8.5.3 + Copied: coreutils/repos/testing-x86_64/coreutils.install (from rev 209765, coreutils/trunk/coreutils.install) =================================================================== --- testing-x86_64/coreutils.install (rev 0) +++ testing-x86_64/coreutils.install 2014-04-03 18:31:50 UTC (rev 209766) @@ -0,0 +1,17 @@ +infodir=usr/share/info +file=coreutils.info + +post_install() { + [[ -x usr/bin/install-info ]] || return 0 + install-info $infodir/$file.gz $infodir/dir 2> /dev/null +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + [[ -x usr/bin/install-info ]] || return 0 + install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null +} +