diff options
Diffstat (limited to 'recipes/coreutils')
24 files changed, 686 insertions, 0 deletions
diff --git a/recipes/coreutils/coreutils-6.0.inc b/recipes/coreutils/coreutils-6.0.inc new file mode 100644 index 0000000000..fb5abbcaf5 --- /dev/null +++ b/recipes/coreutils/coreutils-6.0.inc @@ -0,0 +1,9 @@ +require coreutils.inc + +LICENSE = GPLv2 + +SRC_URI = "\ + ftp://alpha.gnu.org/gnu/coreutils/coreutils-${PV}.tar.bz2 \ + file://futimens.patch \ + file://coreutils-install-use-STRIP.patch \ +" diff --git a/recipes/coreutils/coreutils-6.0/coreutils-install-use-STRIP.patch b/recipes/coreutils/coreutils-6.0/coreutils-install-use-STRIP.patch new file mode 100644 index 0000000000..1af9fb97b6 --- /dev/null +++ b/recipes/coreutils/coreutils-6.0/coreutils-install-use-STRIP.patch @@ -0,0 +1,29 @@ +Index: coreutils-6.0/src/install.c +=================================================================== +--- coreutils-6.0.orig/src/install.c 2009-03-04 15:37:45.000000000 -0800 ++++ coreutils-6.0/src/install.c 2009-03-04 15:38:57.000000000 -0800 +@@ -526,7 +526,14 @@ + strip (char const *name) + { + int status; +- pid_t pid = fork (); ++ pid_t pid; ++ char *strip_name; ++ ++ strip_name = getenv ("STRIP"); ++ if (strip_name == NULL) ++ strip_name = "strip"; ++ ++ pid = fork (); + + switch (pid) + { +@@ -534,7 +541,7 @@ + error (EXIT_FAILURE, errno, _("fork system call failed")); + break; + case 0: /* Child. */ +- execlp ("strip", "strip", name, NULL); ++ execlp (strip_name, "strip", name, NULL); + error (EXIT_FAILURE, errno, _("cannot run strip")); + break; + default: /* Parent. */ diff --git a/recipes/coreutils/coreutils-6.0/futimens.patch b/recipes/coreutils/coreutils-6.0/futimens.patch new file mode 100644 index 0000000000..b3089b1c05 --- /dev/null +++ b/recipes/coreutils/coreutils-6.0/futimens.patch @@ -0,0 +1,57 @@ +Index: coreutils-6.0/lib/utimens.c +=================================================================== +--- coreutils-6.0.orig/lib/utimens.c 2006-06-11 09:14:31.000000000 +0200 ++++ coreutils-6.0/lib/utimens.c 2008-12-04 13:36:46.000000000 +0100 +@@ -75,8 +75,8 @@ + Return 0 on success, -1 (setting errno) on failure. */ + + int +-futimens (int fd ATTRIBUTE_UNUSED, +- char const *file, struct timespec const timespec[2]) ++gl_futimens (int fd ATTRIBUTE_UNUSED, ++ char const *file, struct timespec const timespec[2]) + { + /* There's currently no interface to set file timestamps with + nanosecond resolution, so do the best we can, discarding any +@@ -168,5 +168,5 @@ + int + utimens (char const *file, struct timespec const timespec[2]) + { +- return futimens (-1, file, timespec); ++ return gl_futimens (-1, file, timespec); + } +Index: coreutils-6.0/lib/utimens.h +=================================================================== +--- coreutils-6.0.orig/lib/utimens.h 2004-11-23 21:41:51.000000000 +0100 ++++ coreutils-6.0/lib/utimens.h 2008-12-04 13:36:46.000000000 +0100 +@@ -1,3 +1,3 @@ + #include "timespec.h" +-int futimens (int, char const *, struct timespec const [2]); ++int gl_futimens (int, char const *, struct timespec const [2]); + int utimens (char const *, struct timespec const [2]); +Index: coreutils-6.0/src/touch.c +=================================================================== +--- coreutils-6.0.orig/src/touch.c 2005-11-02 11:01:07.000000000 +0100 ++++ coreutils-6.0/src/touch.c 2008-12-04 13:37:43.000000000 +0100 +@@ -182,7 +182,7 @@ + t = timespec; + } + +- ok = (futimens (fd, (fd == STDOUT_FILENO ? NULL : file), t) == 0); ++ ok = (gl_futimens (fd, (fd == STDOUT_FILENO ? NULL : file), t) == 0); + + if (fd == STDIN_FILENO) + { +Index: coreutils-6.0/src/copy.c +=================================================================== +--- coreutils-6.0.orig/src/copy.c 2008-12-04 13:38:56.000000000 +0100 ++++ coreutils-6.0/src/copy.c 2008-12-04 13:39:01.000000000 +0100 +@@ -490,7 +490,7 @@ + timespec[0] = get_stat_atime (src_sb); + timespec[1] = get_stat_mtime (src_sb); + +- if (futimens (dest_desc, dst_name, timespec) != 0) ++ if (gl_futimens (dest_desc, dst_name, timespec) != 0) + { + error (0, errno, _("preserving times for %s"), quote (dst_name)); + if (x->require_preserve) diff --git a/recipes/coreutils/coreutils-6.0/man.patch b/recipes/coreutils/coreutils-6.0/man.patch new file mode 100644 index 0000000000..5060e4fdff --- /dev/null +++ b/recipes/coreutils/coreutils-6.0/man.patch @@ -0,0 +1,42 @@ + +# +# Patch managed by http://www.holgerschurig.de/patcher.html +# + +--- coreutils-5.3.0/configure.ac~man ++++ coreutils-5.3.0/configure.ac +@@ -237,6 +237,20 @@ + AM_GNU_GETTEXT([external], [need-ngettext]) + AM_GNU_GETTEXT_VERSION(0.13.1) + ++AC_MSG_CHECKING([whether to build man pages]) ++AC_ARG_WITH(manpages, ++ AS_HELP_STRING([--with-manpages], ++ [Enable building of manpages (default=yes)]), ++ [cu_cv_build_manpages=$enableval], ++ [cu_cv_build_manpages=yes]) ++# help2man doesn't work when crosscompiling, as it needs to run the ++# binary that was built. ++if test x"$cross_compiling" = x"yes"; then ++ cu_cv_build_manpages=no ++fi ++AC_MSG_RESULT($cu_cv_build_manpages) ++AM_CONDITIONAL(ENABLE_MANPAGES, test x"$cu_cv_build_manpages" = x"yes") ++ + AC_CONFIG_FILES( + Makefile + doc/Makefile +--- coreutils-5.3.0/Makefile.am~man ++++ coreutils-5.3.0/Makefile.am +@@ -1,6 +1,11 @@ + ## Process this file with automake to produce Makefile.in -*-Makefile-*- + ++if ENABLE_MANPAGES + SUBDIRS = lib src doc man po tests ++else ++SUBDIRS = lib src doc po tests ++endif ++ + EXTRA_DIST = Makefile.cfg Makefile.maint GNUmakefile \ + .kludge-stamp .prev-version THANKS-to-translators THANKStt.in \ + .x-sc_space_tab .x-sc_sun_os_names \ diff --git a/recipes/coreutils/coreutils-6.0/oe-old-tools.patch b/recipes/coreutils/coreutils-6.0/oe-old-tools.patch new file mode 100644 index 0000000000..495da36cf7 --- /dev/null +++ b/recipes/coreutils/coreutils-6.0/oe-old-tools.patch @@ -0,0 +1,26 @@ +Index: coreutils-6.0/configure.ac +=================================================================== +--- coreutils-6.0.orig/configure.ac 2007-04-02 11:21:27.000000000 +0200 ++++ coreutils-6.0/configure.ac 2007-04-02 11:21:36.000000000 +0200 +@@ -26,7 +26,7 @@ + AC_CONFIG_HEADERS([config.h:config.hin]) + + AB_INIT() +-AM_INIT_AUTOMAKE([1.9.6 gnits dist-bzip2]) ++AM_INIT_AUTOMAKE([1.9.3 gnits dist-bzip2]) + + gl_DEFAULT_POSIX2_VERSION + gl_USE_SYSTEM_EXTENSIONS +Index: coreutils-6.0/m4/jm-macros.m4 +=================================================================== +--- coreutils-6.0.orig/m4/jm-macros.m4 2007-04-02 11:21:54.000000000 +0200 ++++ coreutils-6.0/m4/jm-macros.m4 2007-04-02 11:22:02.000000000 +0200 +@@ -23,7 +23,7 @@ + + AC_DEFUN([gl_MACROS], + [ +- AC_PREREQ(2.60) ++ AC_PREREQ(2.59) + + GNU_PACKAGE="GNU $PACKAGE" + AC_DEFINE_UNQUOTED(GNU_PACKAGE, "$GNU_PACKAGE", diff --git a/recipes/coreutils/coreutils-6.0/onceonly.m4 b/recipes/coreutils/coreutils-6.0/onceonly.m4 new file mode 100644 index 0000000000..f6fec37cbf --- /dev/null +++ b/recipes/coreutils/coreutils-6.0/onceonly.m4 @@ -0,0 +1,63 @@ +# onceonly.m4 serial 3 +dnl Copyright (C) 2002, 2003 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +dnl This file defines some "once only" variants of standard autoconf macros. +dnl AC_CHECK_HEADERS_ONCE like AC_CHECK_HEADERS +dnl AC_CHECK_FUNCS_ONCE like AC_CHECK_FUNCS +dnl AC_CHECK_DECLS_ONCE like AC_CHECK_DECLS +dnl AC_REQUIRE([AC_HEADER_STDC]) like AC_HEADER_STDC +dnl The advantage is that the check for each of the headers/functions/decls +dnl will be put only once into the 'configure' file. It keeps the size of +dnl the 'configure' file down, and avoids redundant output when 'configure' +dnl is run. +dnl The drawback is that the checks cannot be conditionalized. If you write +dnl if some_condition; then gl_CHECK_HEADERS(stdlib.h); fi +dnl inside an AC_DEFUNed function, the gl_CHECK_HEADERS macro call expands to +dnl empty, and the check will be inserted before the body of the AC_DEFUNed +dnl function. + +dnl Autoconf version 2.57 or newer is recommended. +AC_PREREQ(2.54) + +# AC_CHECK_HEADERS_ONCE(HEADER1 HEADER2 ...) is a once-only variant of +# AC_CHECK_HEADERS(HEADER1 HEADER2 ...). +AC_DEFUN([AC_CHECK_HEADERS_ONCE], [ + : + AC_FOREACH([gl_HEADER_NAME], [$1], [ + AC_DEFUN([gl_CHECK_HEADER_]m4_quote(translit(defn([gl_HEADER_NAME]), + [-./], [___])), [ + AC_CHECK_HEADERS(gl_HEADER_NAME) + ]) + AC_REQUIRE([gl_CHECK_HEADER_]m4_quote(translit(gl_HEADER_NAME, + [-./], [___]))) + ]) +]) + +# AC_CHECK_FUNCS_ONCE(FUNC1 FUNC2 ...) is a once-only variant of +# AC_CHECK_FUNCS(FUNC1 FUNC2 ...). +AC_DEFUN([AC_CHECK_FUNCS_ONCE], [ + : + AC_FOREACH([gl_FUNC_NAME], [$1], [ + AC_DEFUN([gl_CHECK_FUNC_]defn([gl_FUNC_NAME]), [ + AC_CHECK_FUNCS(defn([gl_FUNC_NAME])) + ]) + AC_REQUIRE([gl_CHECK_FUNC_]defn([gl_FUNC_NAME])) + ]) +]) + +# AC_CHECK_DECLS_ONCE(DECL1 DECL2 ...) is a once-only variant of +# AC_CHECK_DECLS(DECL1, DECL2, ...). +AC_DEFUN([AC_CHECK_DECLS_ONCE], [ + : + AC_FOREACH([gl_DECL_NAME], [$1], [ + AC_DEFUN([gl_CHECK_DECL_]defn([gl_DECL_NAME]), [ + AC_CHECK_DECLS(defn([gl_DECL_NAME])) + ]) + AC_REQUIRE([gl_CHECK_DECL_]defn([gl_DECL_NAME])) + ]) +]) diff --git a/recipes/coreutils/coreutils-6.0/uptime-pow-lib.patch b/recipes/coreutils/coreutils-6.0/uptime-pow-lib.patch new file mode 100644 index 0000000000..5eb3fca676 --- /dev/null +++ b/recipes/coreutils/coreutils-6.0/uptime-pow-lib.patch @@ -0,0 +1,11 @@ +--- coreutils-5.3.0/src/Makefile.am.orig 2005-09-27 22:34:35.659272058 -0700 ++++ coreutils-5.3.0/src/Makefile.am 2005-09-27 22:34:39.403507668 -0700 +@@ -74,7 +74,7 @@ + sleep_LDADD = $(nanosec_libs) + tail_LDADD = $(nanosec_libs) + +-uptime_LDADD = $(LDADD) $(GETLOADAVG_LIBS) ++uptime_LDADD = $(LDADD) $(POW_LIB) $(GETLOADAVG_LIBS) + + su_LDADD = $(LDADD) $(LIB_CRYPT) + diff --git a/recipes/coreutils/coreutils-7.1.inc b/recipes/coreutils/coreutils-7.1.inc new file mode 100644 index 0000000000..7f77b9b1ca --- /dev/null +++ b/recipes/coreutils/coreutils-7.1.inc @@ -0,0 +1,6 @@ +require coreutils.inc + +SRC_URI = "ftp://ftp.gnu.org/gnu/coreutils/coreutils-${PV}.tar.gz" + +# not thoroughly tested yet +DEFAULT_PREFERENCE = "-1" diff --git a/recipes/coreutils/coreutils-7.1/automake-version.patch b/recipes/coreutils/coreutils-7.1/automake-version.patch new file mode 100644 index 0000000000..497ef15385 --- /dev/null +++ b/recipes/coreutils/coreutils-7.1/automake-version.patch @@ -0,0 +1,13 @@ +Index: coreutils-7.1/configure.ac +=================================================================== +--- coreutils-7.1.orig/configure.ac ++++ coreutils-7.1/configure.ac +@@ -32,7 +32,7 @@ + AC_CONFIG_AUX_DIR([build-aux]) + AC_CONFIG_HEADERS([lib/config.h:lib/config.hin]) + +-AM_INIT_AUTOMAKE([1.10a dist-xz]) ++AM_INIT_AUTOMAKE([1.10.2]) + + AC_PROG_CC_STDC + AM_PROG_CC_C_O diff --git a/recipes/coreutils/coreutils-7.1/man.patch b/recipes/coreutils/coreutils-7.1/man.patch new file mode 100644 index 0000000000..3de7c01b0b --- /dev/null +++ b/recipes/coreutils/coreutils-7.1/man.patch @@ -0,0 +1,47 @@ + +# +# Patch managed by http://www.holgerschurig.de/patcher.html +# + +Index: coreutils-7.1/configure.ac +=================================================================== +--- coreutils-7.1.orig/configure.ac ++++ coreutils-7.1/configure.ac +@@ -373,6 +373,20 @@ + # For a test of uniq: it uses the $LOCALE_FR envvar. + gt_LOCALE_FR + ++AC_MSG_CHECKING([whether to build man pages]) ++AC_ARG_WITH(manpages, ++ AS_HELP_STRING([--with-manpages], ++ [Enable building of manpages (default=yes)]), ++ [cu_cv_build_manpages=$enableval], ++ [cu_cv_build_manpages=yes]) ++# help2man doesn't work when crosscompiling, as it needs to run the ++# binary that was built. ++if test x"$cross_compiling" = x"yes"; then ++ cu_cv_build_manpages=no ++fi ++AC_MSG_RESULT($cu_cv_build_manpages) ++AM_CONDITIONAL(ENABLE_MANPAGES, test x"$cu_cv_build_manpages" = x"yes") ++ + AC_CONFIG_FILES( + Makefile + doc/Makefile +Index: coreutils-7.1/Makefile.am +=================================================================== +--- coreutils-7.1.orig/Makefile.am ++++ coreutils-7.1/Makefile.am +@@ -15,7 +15,12 @@ + # You should have received a copy of the GNU General Public License + # along with this program. If not, see <http://www.gnu.org/licenses/>. + ++if ENABLE_MANPAGES + SUBDIRS = lib src doc man po tests gnulib-tests ++else ++SUBDIRS = lib src doc po tests gnulib-tests ++endif ++ + EXTRA_DIST = cfg.mk maint.mk \ + .prev-version THANKS-to-translators THANKStt.in \ + .version \ diff --git a/recipes/coreutils/coreutils-7.1/oe-old-tools.patch b/recipes/coreutils/coreutils-7.1/oe-old-tools.patch new file mode 100644 index 0000000000..495da36cf7 --- /dev/null +++ b/recipes/coreutils/coreutils-7.1/oe-old-tools.patch @@ -0,0 +1,26 @@ +Index: coreutils-6.0/configure.ac +=================================================================== +--- coreutils-6.0.orig/configure.ac 2007-04-02 11:21:27.000000000 +0200 ++++ coreutils-6.0/configure.ac 2007-04-02 11:21:36.000000000 +0200 +@@ -26,7 +26,7 @@ + AC_CONFIG_HEADERS([config.h:config.hin]) + + AB_INIT() +-AM_INIT_AUTOMAKE([1.9.6 gnits dist-bzip2]) ++AM_INIT_AUTOMAKE([1.9.3 gnits dist-bzip2]) + + gl_DEFAULT_POSIX2_VERSION + gl_USE_SYSTEM_EXTENSIONS +Index: coreutils-6.0/m4/jm-macros.m4 +=================================================================== +--- coreutils-6.0.orig/m4/jm-macros.m4 2007-04-02 11:21:54.000000000 +0200 ++++ coreutils-6.0/m4/jm-macros.m4 2007-04-02 11:22:02.000000000 +0200 +@@ -23,7 +23,7 @@ + + AC_DEFUN([gl_MACROS], + [ +- AC_PREREQ(2.60) ++ AC_PREREQ(2.59) + + GNU_PACKAGE="GNU $PACKAGE" + AC_DEFINE_UNQUOTED(GNU_PACKAGE, "$GNU_PACKAGE", diff --git a/recipes/coreutils/coreutils-7.1/onceonly.m4 b/recipes/coreutils/coreutils-7.1/onceonly.m4 new file mode 100644 index 0000000000..f6fec37cbf --- /dev/null +++ b/recipes/coreutils/coreutils-7.1/onceonly.m4 @@ -0,0 +1,63 @@ +# onceonly.m4 serial 3 +dnl Copyright (C) 2002, 2003 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +dnl This file defines some "once only" variants of standard autoconf macros. +dnl AC_CHECK_HEADERS_ONCE like AC_CHECK_HEADERS +dnl AC_CHECK_FUNCS_ONCE like AC_CHECK_FUNCS +dnl AC_CHECK_DECLS_ONCE like AC_CHECK_DECLS +dnl AC_REQUIRE([AC_HEADER_STDC]) like AC_HEADER_STDC +dnl The advantage is that the check for each of the headers/functions/decls +dnl will be put only once into the 'configure' file. It keeps the size of +dnl the 'configure' file down, and avoids redundant output when 'configure' +dnl is run. +dnl The drawback is that the checks cannot be conditionalized. If you write +dnl if some_condition; then gl_CHECK_HEADERS(stdlib.h); fi +dnl inside an AC_DEFUNed function, the gl_CHECK_HEADERS macro call expands to +dnl empty, and the check will be inserted before the body of the AC_DEFUNed +dnl function. + +dnl Autoconf version 2.57 or newer is recommended. +AC_PREREQ(2.54) + +# AC_CHECK_HEADERS_ONCE(HEADER1 HEADER2 ...) is a once-only variant of +# AC_CHECK_HEADERS(HEADER1 HEADER2 ...). +AC_DEFUN([AC_CHECK_HEADERS_ONCE], [ + : + AC_FOREACH([gl_HEADER_NAME], [$1], [ + AC_DEFUN([gl_CHECK_HEADER_]m4_quote(translit(defn([gl_HEADER_NAME]), + [-./], [___])), [ + AC_CHECK_HEADERS(gl_HEADER_NAME) + ]) + AC_REQUIRE([gl_CHECK_HEADER_]m4_quote(translit(gl_HEADER_NAME, + [-./], [___]))) + ]) +]) + +# AC_CHECK_FUNCS_ONCE(FUNC1 FUNC2 ...) is a once-only variant of +# AC_CHECK_FUNCS(FUNC1 FUNC2 ...). +AC_DEFUN([AC_CHECK_FUNCS_ONCE], [ + : + AC_FOREACH([gl_FUNC_NAME], [$1], [ + AC_DEFUN([gl_CHECK_FUNC_]defn([gl_FUNC_NAME]), [ + AC_CHECK_FUNCS(defn([gl_FUNC_NAME])) + ]) + AC_REQUIRE([gl_CHECK_FUNC_]defn([gl_FUNC_NAME])) + ]) +]) + +# AC_CHECK_DECLS_ONCE(DECL1 DECL2 ...) is a once-only variant of +# AC_CHECK_DECLS(DECL1, DECL2, ...). +AC_DEFUN([AC_CHECK_DECLS_ONCE], [ + : + AC_FOREACH([gl_DECL_NAME], [$1], [ + AC_DEFUN([gl_CHECK_DECL_]defn([gl_DECL_NAME]), [ + AC_CHECK_DECLS(defn([gl_DECL_NAME])) + ]) + AC_REQUIRE([gl_CHECK_DECL_]defn([gl_DECL_NAME])) + ]) +]) diff --git a/recipes/coreutils/coreutils-7.1/uptime-pow-lib.patch b/recipes/coreutils/coreutils-7.1/uptime-pow-lib.patch new file mode 100644 index 0000000000..5eb3fca676 --- /dev/null +++ b/recipes/coreutils/coreutils-7.1/uptime-pow-lib.patch @@ -0,0 +1,11 @@ +--- coreutils-5.3.0/src/Makefile.am.orig 2005-09-27 22:34:35.659272058 -0700 ++++ coreutils-5.3.0/src/Makefile.am 2005-09-27 22:34:39.403507668 -0700 +@@ -74,7 +74,7 @@ + sleep_LDADD = $(nanosec_libs) + tail_LDADD = $(nanosec_libs) + +-uptime_LDADD = $(LDADD) $(GETLOADAVG_LIBS) ++uptime_LDADD = $(LDADD) $(POW_LIB) $(GETLOADAVG_LIBS) + + su_LDADD = $(LDADD) $(LIB_CRYPT) + diff --git a/recipes/coreutils/coreutils-7.2.inc b/recipes/coreutils/coreutils-7.2.inc new file mode 100644 index 0000000000..d91a181429 --- /dev/null +++ b/recipes/coreutils/coreutils-7.2.inc @@ -0,0 +1,4 @@ +require coreutils.inc + +SRC_URI = "ftp://ftp.gnu.org/gnu/coreutils/coreutils-${PV}.tar.gz \ + file://coreutils-7.2-fix-sort-segfault.patch" diff --git a/recipes/coreutils/coreutils-7.2/automake-version.patch b/recipes/coreutils/coreutils-7.2/automake-version.patch new file mode 100644 index 0000000000..497ef15385 --- /dev/null +++ b/recipes/coreutils/coreutils-7.2/automake-version.patch @@ -0,0 +1,13 @@ +Index: coreutils-7.1/configure.ac +=================================================================== +--- coreutils-7.1.orig/configure.ac ++++ coreutils-7.1/configure.ac +@@ -32,7 +32,7 @@ + AC_CONFIG_AUX_DIR([build-aux]) + AC_CONFIG_HEADERS([lib/config.h:lib/config.hin]) + +-AM_INIT_AUTOMAKE([1.10a dist-xz]) ++AM_INIT_AUTOMAKE([1.10.2]) + + AC_PROG_CC_STDC + AM_PROG_CC_C_O diff --git a/recipes/coreutils/coreutils-7.2/coreutils-7.2-fix-sort-segfault.patch b/recipes/coreutils/coreutils-7.2/coreutils-7.2-fix-sort-segfault.patch new file mode 100644 index 0000000000..b4ee5b8c2d --- /dev/null +++ b/recipes/coreutils/coreutils-7.2/coreutils-7.2-fix-sort-segfault.patch @@ -0,0 +1,103 @@ +OE modifications to the original patch: + * Removed NEWS hunk to apply on vanilla 7.2 coreutils + +>From 570beb56f58bb087a614af885bec7e9cf6b19423 Mon Sep 17 00:00:00 2001 +From: Jim Meyering <meyering@redhat.com> +Date: Wed, 22 Apr 2009 08:45:27 +0200 +Subject: [PATCH] sort -m: don't segfault when output file is also an input = +file + +* src/sort.c (avoid_trashing_input): Fix an off-by-one error and +guard the use of memmove. +* NEWS (Bug fixes): Mention it. +* tests/misc/sort: Add tests to exercise the offending code. +* THANKS: Update. +Reported by Otavio Salvador in http://bugs.debian.org/525048. +--- + NEWS | 6 +++++- + THANKS | 1 + + src/sort.c | 10 ++++++---- + tests/misc/sort | 17 ++++++++++++++++- + 4 files changed, 28 insertions(+), 6 deletions(-) + +diff --git a/THANKS b/THANKS +index fe523fe..876a6b6 100644 +--- a/THANKS ++++ b/THANKS +@@ -435,6 +435,7 @@ Ole Laursen olau@hardworking.dk + Oliver Kiddle okiddle@yahoo.co.uk + Ørn E. Hansen oehansen@daimi.aau.dk + Oskar Liljeblad osk@hem.passagen.se ++Otavio Salvador otavio@ossystems.com.br + Pádraig Brady P@draigBrady.com + Patrick Mauritz oxygene@studentenbude.ath.cx + Paul D. Smith psmith@gnu.org +diff --git a/src/sort.c b/src/sort.c +index 2e6ce87..f48d727 100644 +--- a/src/sort.c ++++ b/src/sort.c +@@ -1,5 +1,5 @@ + /* sort - sort lines of text (with all kinds of options). +- Copyright (C) 1988, 1991-2008 Free Software Foundation, Inc. ++ Copyright (C) 1988, 1991-2009 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by +@@ -2602,18 +2602,20 @@ avoid_trashing_input (struct sortfile *files, size_t ntemps, + pid_t pid; + char *temp = create_temp (&tftp, &pid); + size_t num_merged = 0; +- while (i + num_merged < nfiles) ++ do + { + num_merged += mergefiles (&files[i], 0, nfiles - i, tftp, temp); + files[i].name = temp; + files[i].pid = pid; + +- memmove(&files[i], &files[i + num_merged], +- num_merged * sizeof *files); ++ if (i + num_merged < nfiles) ++ memmove(&files[i + 1], &files[i + num_merged], ++ num_merged * sizeof *files); + ntemps += 1; + nfiles -= num_merged - 1;; + i += num_merged; + } ++ while (i < nfiles); + } + } + +diff --git a/tests/misc/sort b/tests/misc/sort +index 4f377df..a27f47a 100755 +--- a/tests/misc/sort ++++ b/tests/misc/sort +@@ -1,6 +1,6 @@ + #!/usr/bin/perl + +-# Copyright (C) 2008 Free Software Foundation, Inc. ++# Copyright (C) 2008, 2009 Free Software Foundation, Inc. + + # This program is free software: you can redistribute it and/or modify + # it under the terms of the GNU General Public License as published by +@@ -339,6 +339,21 @@ my @Tests = + ["sort-numeric", '--sort=numeric', {IN=>".01\n0\n"}, {OUT=>"0\n.01\n"}], + ["sort-gennum", '--sort=general-numeric', + {IN=>"1e2\n2e1\n"}, {OUT=>"2e1\n1e2\n"}], ++ ++# -m with output file also used as an input file ++# In coreutils-7.2, this caused a segfault. ++# This test looks a little strange. Here's why: ++# since we're using "-o f", standard output will be empty, hence OUT=>'' ++# We still want to ensure that the output file, "f" has expected contents, ++# hence the added CMP=> directive. ++["output-is-input", '-m -o f', {IN=> {f=> "a\n"}}, {OUT=>''}, ++ {CMP=> ["a\n", {'f'=> undef}]} ], ++["output-is-input-2", '-m -o f', {OUT=>''}, ++ {IN=> {f=> "a\n"}}, {IN=> {g=> "b\n"}}, {IN=> {h=> "c\n"}}, ++ {CMP=> ["a\nb\nc\n", {'f'=> undef}]} ], ++["output-is-input-3", '-m -o f', {OUT=>''}, ++ {IN=> {g=> "a\n"}}, {IN=> {h=> "b\n"}}, {IN=> {f=> "c\n"}}, ++ {CMP=> ["a\nb\nc\n", {'f'=> undef}]} ], + ); + + # Add _POSIX2_VERSION=199209 to the environment of each test diff --git a/recipes/coreutils/coreutils-7.2/man.patch b/recipes/coreutils/coreutils-7.2/man.patch new file mode 100644 index 0000000000..3de7c01b0b --- /dev/null +++ b/recipes/coreutils/coreutils-7.2/man.patch @@ -0,0 +1,47 @@ + +# +# Patch managed by http://www.holgerschurig.de/patcher.html +# + +Index: coreutils-7.1/configure.ac +=================================================================== +--- coreutils-7.1.orig/configure.ac ++++ coreutils-7.1/configure.ac +@@ -373,6 +373,20 @@ + # For a test of uniq: it uses the $LOCALE_FR envvar. + gt_LOCALE_FR + ++AC_MSG_CHECKING([whether to build man pages]) ++AC_ARG_WITH(manpages, ++ AS_HELP_STRING([--with-manpages], ++ [Enable building of manpages (default=yes)]), ++ [cu_cv_build_manpages=$enableval], ++ [cu_cv_build_manpages=yes]) ++# help2man doesn't work when crosscompiling, as it needs to run the ++# binary that was built. ++if test x"$cross_compiling" = x"yes"; then ++ cu_cv_build_manpages=no ++fi ++AC_MSG_RESULT($cu_cv_build_manpages) ++AM_CONDITIONAL(ENABLE_MANPAGES, test x"$cu_cv_build_manpages" = x"yes") ++ + AC_CONFIG_FILES( + Makefile + doc/Makefile +Index: coreutils-7.1/Makefile.am +=================================================================== +--- coreutils-7.1.orig/Makefile.am ++++ coreutils-7.1/Makefile.am +@@ -15,7 +15,12 @@ + # You should have received a copy of the GNU General Public License + # along with this program. If not, see <http://www.gnu.org/licenses/>. + ++if ENABLE_MANPAGES + SUBDIRS = lib src doc man po tests gnulib-tests ++else ++SUBDIRS = lib src doc po tests gnulib-tests ++endif ++ + EXTRA_DIST = cfg.mk maint.mk \ + .prev-version THANKS-to-translators THANKStt.in \ + .version \ diff --git a/recipes/coreutils/coreutils-7.2/onceonly.m4 b/recipes/coreutils/coreutils-7.2/onceonly.m4 new file mode 100644 index 0000000000..f6fec37cbf --- /dev/null +++ b/recipes/coreutils/coreutils-7.2/onceonly.m4 @@ -0,0 +1,63 @@ +# onceonly.m4 serial 3 +dnl Copyright (C) 2002, 2003 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +dnl This file defines some "once only" variants of standard autoconf macros. +dnl AC_CHECK_HEADERS_ONCE like AC_CHECK_HEADERS +dnl AC_CHECK_FUNCS_ONCE like AC_CHECK_FUNCS +dnl AC_CHECK_DECLS_ONCE like AC_CHECK_DECLS +dnl AC_REQUIRE([AC_HEADER_STDC]) like AC_HEADER_STDC +dnl The advantage is that the check for each of the headers/functions/decls +dnl will be put only once into the 'configure' file. It keeps the size of +dnl the 'configure' file down, and avoids redundant output when 'configure' +dnl is run. +dnl The drawback is that the checks cannot be conditionalized. If you write +dnl if some_condition; then gl_CHECK_HEADERS(stdlib.h); fi +dnl inside an AC_DEFUNed function, the gl_CHECK_HEADERS macro call expands to +dnl empty, and the check will be inserted before the body of the AC_DEFUNed +dnl function. + +dnl Autoconf version 2.57 or newer is recommended. +AC_PREREQ(2.54) + +# AC_CHECK_HEADERS_ONCE(HEADER1 HEADER2 ...) is a once-only variant of +# AC_CHECK_HEADERS(HEADER1 HEADER2 ...). +AC_DEFUN([AC_CHECK_HEADERS_ONCE], [ + : + AC_FOREACH([gl_HEADER_NAME], [$1], [ + AC_DEFUN([gl_CHECK_HEADER_]m4_quote(translit(defn([gl_HEADER_NAME]), + [-./], [___])), [ + AC_CHECK_HEADERS(gl_HEADER_NAME) + ]) + AC_REQUIRE([gl_CHECK_HEADER_]m4_quote(translit(gl_HEADER_NAME, + [-./], [___]))) + ]) +]) + +# AC_CHECK_FUNCS_ONCE(FUNC1 FUNC2 ...) is a once-only variant of +# AC_CHECK_FUNCS(FUNC1 FUNC2 ...). +AC_DEFUN([AC_CHECK_FUNCS_ONCE], [ + : + AC_FOREACH([gl_FUNC_NAME], [$1], [ + AC_DEFUN([gl_CHECK_FUNC_]defn([gl_FUNC_NAME]), [ + AC_CHECK_FUNCS(defn([gl_FUNC_NAME])) + ]) + AC_REQUIRE([gl_CHECK_FUNC_]defn([gl_FUNC_NAME])) + ]) +]) + +# AC_CHECK_DECLS_ONCE(DECL1 DECL2 ...) is a once-only variant of +# AC_CHECK_DECLS(DECL1, DECL2, ...). +AC_DEFUN([AC_CHECK_DECLS_ONCE], [ + : + AC_FOREACH([gl_DECL_NAME], [$1], [ + AC_DEFUN([gl_CHECK_DECL_]defn([gl_DECL_NAME]), [ + AC_CHECK_DECLS(defn([gl_DECL_NAME])) + ]) + AC_REQUIRE([gl_CHECK_DECL_]defn([gl_DECL_NAME])) + ]) +]) diff --git a/recipes/coreutils/coreutils-native_6.0.bb b/recipes/coreutils/coreutils-native_6.0.bb new file mode 100644 index 0000000000..3118c67f92 --- /dev/null +++ b/recipes/coreutils/coreutils-native_6.0.bb @@ -0,0 +1,7 @@ +require coreutils-${PV}.inc +require coreutils-native.inc + +PR = "r4" + +SRC_URI[md5sum] = "c15219721e6590fa13bf50af49e712c2" +SRC_URI[sha256sum] = "efa27532ec6dc12a21f703ad4a0f612e613e9cc2575147685db81cc701952ac9" diff --git a/recipes/coreutils/coreutils-native_7.1.bb b/recipes/coreutils/coreutils-native_7.1.bb new file mode 100644 index 0000000000..7612ec6a73 --- /dev/null +++ b/recipes/coreutils/coreutils-native_7.1.bb @@ -0,0 +1,7 @@ +require coreutils-${PV}.inc +require coreutils-native.inc + +PR = "r1" + +SRC_URI[md5sum] = "cbb2b3d1718ee1237b808e00b5c11b1e" +SRC_URI[sha256sum] = "813cb19fa19a885f342664109c7c5810f0081b624ff317bba8d1b6ccd83c2a05" diff --git a/recipes/coreutils/coreutils-native_7.2.bb b/recipes/coreutils/coreutils-native_7.2.bb new file mode 100644 index 0000000000..ba5081a20b --- /dev/null +++ b/recipes/coreutils/coreutils-native_7.2.bb @@ -0,0 +1,7 @@ +require coreutils-${PV}.inc +require coreutils-native.inc + +PR = "r1" + +SRC_URI[md5sum] = "427c2914d3eab956f317c9ec6a45e62a" +SRC_URI[sha256sum] = "dd77bfec92e5a3ad48abd8a5bda3f8d40149c4e24744e4173abc3cc6a731fdb2" diff --git a/recipes/coreutils/coreutils_6.0.bb b/recipes/coreutils/coreutils_6.0.bb new file mode 100644 index 0000000000..32f0f1f702 --- /dev/null +++ b/recipes/coreutils/coreutils_6.0.bb @@ -0,0 +1,12 @@ +require coreutils-${PV}.inc +require coreutils-target.inc + +PR = "r3" + +SRC_URI += "\ + file://man.patch \ + file://oe-old-tools.patch \ +" + +SRC_URI[md5sum] = "c15219721e6590fa13bf50af49e712c2" +SRC_URI[sha256sum] = "efa27532ec6dc12a21f703ad4a0f612e613e9cc2575147685db81cc701952ac9" diff --git a/recipes/coreutils/coreutils_7.1.bb b/recipes/coreutils/coreutils_7.1.bb new file mode 100644 index 0000000000..539340f910 --- /dev/null +++ b/recipes/coreutils/coreutils_7.1.bb @@ -0,0 +1,10 @@ +require coreutils-${PV}.inc +require coreutils-target.inc + +PR = "r0.1" + +SRC_URI += "file://automake-version.patch \ + file://man.patch" + +SRC_URI[md5sum] = "cbb2b3d1718ee1237b808e00b5c11b1e" +SRC_URI[sha256sum] = "813cb19fa19a885f342664109c7c5810f0081b624ff317bba8d1b6ccd83c2a05" diff --git a/recipes/coreutils/coreutils_7.2.bb b/recipes/coreutils/coreutils_7.2.bb new file mode 100644 index 0000000000..709bd4a67b --- /dev/null +++ b/recipes/coreutils/coreutils_7.2.bb @@ -0,0 +1,10 @@ +require coreutils-${PV}.inc +require coreutils-target.inc + +PR = "r0" + +SRC_URI += "file://automake-version.patch \ + file://man.patch" + +SRC_URI[md5sum] = "427c2914d3eab956f317c9ec6a45e62a" +SRC_URI[sha256sum] = "dd77bfec92e5a3ad48abd8a5bda3f8d40149c4e24744e4173abc3cc6a731fdb2" |