forgot to mention that emulators/fedora/base works for me too (i386) with
this diff.
Rui Reis
On Sun, Apr 15, 2007 at 03:12:26PM +0100, Rui Reis wrote:
> Here's an update to archivers/gcpio.
>
> what's new:
> * Improved error checking and diagnostics
> * Fixed CAN-1999-1572
> * Allow to use --sparse in both copy-in and copy-pass.
> * Fix bug that eventually caused copying out the same hard-linked file
> several times to archive.
> * Fix several LFS-related issues.
>
> works for me on i386, amd64, sparc and sparc64.
>
> please test and comment.
>
> Rui Reis
>
>
> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/archivers/gcpio/Makefile,v
> retrieving revision 1.10
> diff -u -r1.10 Makefile
> --- Makefile 20 Oct 2005 21:45:18 -0000 1.10
> +++ Makefile 15 Apr 2007 01:37:51 -0000
> @@ -2,7 +2,7 @@
>
> COMMENT= "GNU copy-in/out (cpio)"
>
> -DISTNAME= cpio-2.6
> +DISTNAME= cpio-2.7
> PKGNAME= g${DISTNAME}
> CATEGORIES= archivers
>
> Index: distinfo
> ===================================================================
> RCS file: /cvs/ports/archivers/gcpio/distinfo,v
> retrieving revision 1.5
> diff -u -r1.5 distinfo
> --- distinfo 5 Apr 2007 15:37:40 -0000 1.5
> +++ distinfo 15 Apr 2007 01:37:51 -0000
> @@ -1,5 +1,5 @@
> -MD5 (cpio-2.6.tar.gz) = drQUXzPfCIpbreO/Q3PRfQ==
> -RMD160 (cpio-2.6.tar.gz) = gka90Iq4cn+agELTPd/jpjMkdrg=
> -SHA1 (cpio-2.6.tar.gz) = Wk6hVlGZCZlP4Fkz3II6vPB+PiE=
> -SHA256 (cpio-2.6.tar.gz) = lUxXBeoYYaRD16YXU+MiZwHCAvyOOYynL2dONWHM9sI=
> -SIZE (cpio-2.6.tar.gz) = 556018
> +MD5 (cpio-2.7.tar.gz) = iFjTRNOS8yYhAyA54b97lQ==
> +RMD160 (cpio-2.7.tar.gz) = gWVZK6+z73coYj39S0BSRf3GDeo=
> +SHA1 (cpio-2.7.tar.gz) = dFtpVhSJXtyFwGnIHgAPB+rKtH4=
> +SHA256 (cpio-2.7.tar.gz) = uupeFtELMXS/WqL9CFy+Pz97CATiLVOIHPlySzHqt6I=
> +SIZE (cpio-2.7.tar.gz) = 895534
> Index: patches/patch-configure
> ===================================================================
> RCS file: /cvs/ports/archivers/gcpio/patches/patch-configure,v
> retrieving revision 1.1
> diff -u -r1.1 patch-configure
> --- patches/patch-configure 20 Oct 2005 21:45:18 -0000 1.1
> +++ patches/patch-configure 15 Apr 2007 01:37:51 -0000
> @@ -1,12 +1,12 @@
> -$OpenBSD: patch-configure,v 1.1 2005/10/20 21:45:18 naddy Exp $
> ---- configure.orig Thu Oct 20 23:11:17 2005
> -+++ configure Thu Oct 20 23:11:43 2005
> -@@ -16167,7 +16167,7 @@ s,@host_vendor@,$host_vendor,;t t
> - s,@host_os@,$host_os,;t t
> - s,@LIBICONV@,$LIBICONV,;t t
> - s,@LTLIBICONV@,$LTLIBICONV,;t t
> --s,@INTLLIBS@,$INTLLIBS,;t t
> -+s,@INTLLIBS@,$LTLIBINTL,;t t
> - s,@LIBINTL@,$LIBINTL,;t t
> - s,@LTLIBINTL@,$LTLIBINTL,;t t
> - s,@POSUB@,$POSUB,;t t
> +$OpenBSD$
> +--- configure.orig Sun Apr 15 01:57:52 2007
> ++++ configure Sun Apr 15 01:58:30 2007
> +@@ -35249,7 +35249,7 @@ MSGMERGE!$MSGMERGE$ac_delim
> + INTL_MACOSX_LIBS!$INTL_MACOSX_LIBS$ac_delim
> + LIBICONV!$LIBICONV$ac_delim
> + LTLIBICONV!$LTLIBICONV$ac_delim
> +-INTLLIBS!$INTLLIBS$ac_delim
> ++INTLLIBS!$LTLIBINTL$ac_delim
> + LIBINTL!$LIBINTL$ac_delim
> + LTLIBINTL!$LTLIBINTL$ac_delim
> + POSUB!$POSUB$ac_delim
> Index: patches/patch-doc_Makefile_in
> ===================================================================
> RCS file: /cvs/ports/archivers/gcpio/patches/patch-doc_Makefile_in,v
> retrieving revision 1.1
> diff -u -r1.1 patch-doc_Makefile_in
> --- patches/patch-doc_Makefile_in 20 Oct 2005 21:45:18 -0000 1.1
> +++ patches/patch-doc_Makefile_in 15 Apr 2007 01:37:51 -0000
> @@ -1,12 +1,12 @@
> -$OpenBSD: patch-doc_Makefile_in,v 1.1 2005/10/20 21:45:18 naddy Exp $
> ---- doc/Makefile.in.orig Thu Oct 20 21:47:43 2005
> -+++ doc/Makefile.in Thu Oct 20 21:47:57 2005
> -@@ -206,7 +206,7 @@ sharedstatedir = @sharedstatedir@
> +$OpenBSD$
> +--- doc/Makefile.in.orig Sun Apr 15 02:18:12 2007
> ++++ doc/Makefile.in Sun Apr 15 02:18:26 2007
> +@@ -290,7 +290,7 @@ sharedstatedir = @sharedstatedir@
> sysconfdir = @sysconfdir@
> target_alias = @target_alias@
> info_TEXINFOS = cpio.texi
> -man_MANS = cpio.1 mt.1
> +man_MANS = cpio.1
> - EXTRA_DIST = $(man_MANS)
> + EXTRA_DIST = $(man_MANS) gendocs_template
> all: all-am
>
> Index: patches/patch-lib_system_h
> ===================================================================
> RCS file: /cvs/ports/archivers/gcpio/patches/patch-lib_system_h,v
> retrieving revision 1.1
> diff -u -r1.1 patch-lib_system_h
> --- patches/patch-lib_system_h 20 Oct 2005 21:45:18 -0000 1.1
> +++ patches/patch-lib_system_h 15 Apr 2007 01:37:51 -0000
> @@ -1,12 +1,12 @@
> -$OpenBSD: patch-lib_system_h,v 1.1 2005/10/20 21:45:18 naddy Exp $
> ---- lib/system.h.orig Thu Oct 20 21:27:34 2005
> -+++ lib/system.h Thu Oct 20 21:27:49 2005
> -@@ -467,7 +467,7 @@ char *getenv ();
> - ((sizeof (t) * CHAR_BIT - TYPE_SIGNED (t)) * 302 / 1000 \
> - + 1 + TYPE_SIGNED (t))
> +$OpenBSD$
> +--- lib/system.h.orig Sat Apr 14 18:08:21 2007
> ++++ lib/system.h Sat Apr 14 18:08:43 2007
> +@@ -425,7 +425,7 @@ char *getenv ();
>
> --#define UINTMAX_STRSIZE_BOUND (INT_STRLEN_BOUND (uintmax_t) + 1)
> -+#define UINTMAX_STRSIZE_BOUND (INT_STRLEN_BOUND (uint64_t) + 1)
> + #include <intprops.h>
> +
> +-#define UINTMAX_STRSIZE_BOUND INT_BUFSIZE_BOUND (uintmax_t)
> ++#define UINTMAX_STRSIZE_BOUND INT_BUFSIZE_BOUND (uint64_t)
>
> /* Prototypes for external functions. */
>
> Index: patches/patch-src_copyin_c
> ===================================================================
> RCS file: patches/patch-src_copyin_c
> diff -N patches/patch-src_copyin_c
> --- patches/patch-src_copyin_c 20 Oct 2005 21:45:18 -0000 1.1
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,100 +0,0 @@
> -$OpenBSD: patch-src_copyin_c,v 1.1 2005/10/20 21:45:18 naddy Exp $
> ---- src/copyin.c.orig Wed Sep 8 13:10:02 2004
> -+++ src/copyin.c Thu Oct 20 23:33:40 2005
> -@@ -389,19 +389,20 @@ create_final_defers ()
> - continue;
> - }
> -
> -- if (close (out_file_des) < 0)
> -- error (0, errno, "%s", d->header.c_name);
> --
> - /* File is now copied; set attributes. */
> - if (!no_chown_flag)
> -- if ((chown (d->header.c_name,
> -+ if ((fchown (out_file_des,
> - set_owner_flag ? set_owner : d->header.c_uid,
> - set_group_flag ? set_group : d->header.c_gid) < 0)
> - && errno != EPERM)
> - error (0, errno, "%s", d->header.c_name);
> - /* chown may have turned off some permissions we wanted. */
> -- if (chmod (d->header.c_name, (int) d->header.c_mode) < 0)
> -+ if (fchmod (out_file_des, (int) d->header.c_mode) < 0)
> - error (0, errno, "%s", d->header.c_name);
> -+
> -+ if (close (out_file_des) < 0)
> -+ error (0, errno, "%s", d->header.c_name);
> -+
> - if (retain_time_flag)
> - {
> - times.actime = times.modtime = d->header.c_mtime;
> -@@ -1335,6 +1336,48 @@ swab_array (char *ptr, int count)
> - }
> - }
> -
> -+/* Return a safer suffix of FILE_NAME, or "." if it has no safer
> -+ suffix. Check for fully specified file names and other atrocities. */
> -+static const char *
> -+safer_name_suffix (char const *file_name)
> -+{
> -+ char const *p;
> -+
> -+ /* Skip leading file name components that contain "..", and leading
> slashes. */
> -+ size_t prefix_len = 0;
> -+
> -+ for (p = file_name; *p;)
> -+ {
> -+ if (p[0] == '.' && p[1] == '.' && ((p[2] == '/') || !p[2]))
> -+ prefix_len = p + 2 - file_name;
> -+
> -+ do
> -+ {
> -+ if (*p++ == '/')
> -+ break;
> -+ }
> -+ while (*p);
> -+ }
> -+
> -+ for (p = file_name + prefix_len; *p == '/'; p++)
> -+ continue;
> -+ prefix_len = p - file_name;
> -+
> -+ if (prefix_len)
> -+ {
> -+ char *prefix = alloca (prefix_len + 1);
> -+ memcpy (prefix, file_name, prefix_len);
> -+ prefix[prefix_len] = '\0';
> -+
> -+ error (0, 0, ("Removing leading `%s' from member names"), prefix);
> -+ }
> -+
> -+ if (!*p)
> -+ p = ".";
> -+
> -+ return p;
> -+}
> -+
> - /* Read the collection from standard input and create files
> - in the file system. */
> -
> -@@ -1445,18 +1488,11 @@ process_copy_in ()
> -
> - /* Do we have to ignore absolute paths, and if so, does the filename
> - have an absolute path? */
> -- if (no_abs_paths_flag && file_hdr.c_name && file_hdr.c_name [0] ==
> '/')
> -+ if (no_abs_paths_flag && file_hdr.c_name && file_hdr.c_name [0])
> - {
> -- char *p;
> -+ const char *p = safer_name_suffix (file_hdr.c_name);
> -
> -- p = file_hdr.c_name;
> -- while (*p == '/')
> -- ++p;
> -- if (*p == '\0')
> -- {
> -- strcpy (file_hdr.c_name, ".");
> -- }
> -- else
> -+ if (p != file_hdr.c_name)
> - {
> - /* Debian hack: file_hrd.c_name is sometimes set to
> - point to static memory by code in tar.c. This
> Index: patches/patch-src_copypass_c
> ===================================================================
> RCS file: patches/patch-src_copypass_c
> diff -N patches/patch-src_copypass_c
> --- patches/patch-src_copypass_c 20 Oct 2005 21:45:18 -0000 1.1
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,29 +0,0 @@
> -$OpenBSD: patch-src_copypass_c,v 1.1 2005/10/20 21:45:18 naddy Exp $
> ---- src/copypass.c.orig Mon Sep 6 14:09:04 2004
> -+++ src/copypass.c Thu Oct 20 23:33:41 2005
> -@@ -181,19 +181,20 @@ process_copy_pass ()
> - }
> - if (close (in_file_des) < 0)
> - error (0, errno, "%s", input_name.ds_string);
> -- if (close (out_file_des) < 0)
> -- error (0, errno, "%s", output_name.ds_string);
> --
> - /* Set the attributes of the new file. */
> - if (!no_chown_flag)
> -- if ((chown (output_name.ds_string,
> -+ if ((fchown (out_file_des,
> - set_owner_flag ? set_owner : in_file_stat.st_uid,
> - set_group_flag ? set_group : in_file_stat.st_gid) < 0)
> - && errno != EPERM)
> - error (0, errno, "%s", output_name.ds_string);
> - /* chown may have turned off some permissions we wanted. */
> -- if (chmod (output_name.ds_string, in_file_stat.st_mode) < 0)
> -+ if (fchmod (out_file_des, in_file_stat.st_mode) < 0)
> - error (0, errno, "%s", output_name.ds_string);
> -+
> -+ if (close (out_file_des) < 0)
> -+ error (0, errno, "%s", output_name.ds_string);
> -+
> - if (reset_time_flag)
> - {
> - times.actime = in_file_stat.st_atime;
> Index: patches/patch-src_main_c
> ===================================================================
> RCS file: patches/patch-src_main_c
> diff -N patches/patch-src_main_c
> --- patches/patch-src_main_c 20 Oct 2005 21:45:18 -0000 1.1
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,19 +0,0 @@
> -$OpenBSD: patch-src_main_c,v 1.1 2005/10/20 21:45:18 naddy Exp $
> ---- src/main.c.orig Tue Nov 23 01:42:18 2004
> -+++ src/main.c Thu Oct 20 21:57:59 2005
> -@@ -740,7 +740,6 @@ main (int argc, char *argv[])
> - textdomain (PACKAGE);
> -
> - program_name = argv[0];
> -- umask (0);
> -
> - #ifdef __TURBOC__
> - _fmode = O_BINARY; /* Put stdin and stdout in binary mode.
> */
> -@@ -751,6 +750,7 @@ main (int argc, char *argv[])
> - #endif
> -
> - process_args (argc, argv);
> -+ umask (0);
> -
> - initialize_buffers ();
> -
> Index: pkg/PLIST
> ===================================================================
> RCS file: /cvs/ports/archivers/gcpio/pkg/PLIST,v
> retrieving revision 1.4
> diff -u -r1.4 PLIST
> --- pkg/PLIST 20 Oct 2005 21:45:18 -0000 1.4
> +++ pkg/PLIST 15 Apr 2007 01:37:51 -0000
> @@ -6,14 +6,19 @@
> share/locale/de/LC_MESSAGES/cpio.mo
> share/locale/es/LC_MESSAGES/cpio.mo
> share/locale/fr/LC_MESSAGES/cpio.mo
> +share/locale/ga/LC_MESSAGES/cpio.mo
> share/locale/gl/LC_MESSAGES/cpio.mo
> -share/locale/hu/LC_MESSAGES/cpio.mo
> share/locale/ko/LC_MESSAGES/cpio.mo
> share/locale/nl/LC_MESSAGES/cpio.mo
> share/locale/pl/LC_MESSAGES/cpio.mo
> share/locale/pt_BR/LC_MESSAGES/cpio.mo
> share/locale/ro/LC_MESSAGES/cpio.mo
> share/locale/ru/LC_MESSAGES/cpio.mo
> +share/locale/rw/
> +share/locale/rw/LC_MESSAGES/
> +share/locale/rw/LC_MESSAGES/cpio.mo
> share/locale/sv/LC_MESSAGES/cpio.mo
> share/locale/tr/LC_MESSAGES/cpio.mo
> +share/locale/uk/LC_MESSAGES/cpio.mo
> +share/locale/vi/LC_MESSAGES/cpio.mo
> share/locale/zh_CN/LC_MESSAGES/cpio.mo