Add patches to allow PGI to build Tar properly (#3177)

This commit is contained in:
Adam J. Stewart 2017-02-18 21:09:50 -06:00 committed by Todd Gamblin
parent 4397ce8118
commit 49d7f9db3d
6 changed files with 178 additions and 5 deletions

View File

@ -0,0 +1,25 @@
From 8b3e22b18791f2148da46e60040fc4d9270936b5 Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@cs.ucla.edu>
Date: Tue, 14 Feb 2017 08:40:23 -0800
Subject: argp: port to PGI 16.10
* gnu/argp-pin.c (dummy): Declare as needed to make file nonempty.
diff --git a/gnu/argp-pin.c b/gnu/argp-pin.c
index 261191f..64d831d 100644
--- a/gnu/argp-pin.c
+++ b/gnu/argp-pin.c
@@ -24,3 +24,10 @@ char *program_invocation_short_name = 0;
#ifndef HAVE_PROGRAM_INVOCATION_NAME
char *program_invocation_name = 0;
#endif
+
+#if (defined HAVE_PROGRAM_INVOCATION_SHORT_NAME \
+ && defined HAVE_PROGRAM_INVOCATION_NAME)
+/* This declaration is solely to ensure that after preprocessing
+ this file is never empty. */
+typedef int dummy;
+#endif
--
cgit v1.0-41-gc330

View File

@ -0,0 +1,10 @@
--- a/config.h.in
+++ b/config.h.in
@@ -2182,6 +2182,7 @@
? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \
: (199901L <= __STDC_VERSION__ \
&& !defined __HP_cc \
+ && !defined __PGI \
&& !(defined __SUNPRO_C && __STDC__))) \
&& !defined _GL_EXTERN_INLINE_STDHEADER_BUG)
# define _GL_INLINE inline

View File

@ -1,3 +1,7 @@
Fixes major build errors on macOS
See http://lists.gnu.org/archive/html/bug-tar/2014-08/msg00001.html
diff --git a/Makefile.in b/Makefile.in diff --git a/Makefile.in b/Makefile.in
index f9f1d1d..b403e46 100644 index f9f1d1d..b403e46 100644
--- a/Makefile.in --- a/Makefile.in
@ -479,4 +483,4 @@ index 82b2d46..42daaef 100644
-tar_LDADD += -lattr -tar_LDADD += -lattr
-endif -endif
-- --
1.9.3 1.9.3

View File

@ -28,13 +28,15 @@
class Tar(AutotoolsPackage): class Tar(AutotoolsPackage):
"""GNU Tar provides the ability to create tar archives, as well as various """GNU Tar provides the ability to create tar archives, as well as various
other kinds of manipulation.""" other kinds of manipulation."""
homepage = "https://www.gnu.org/software/tar/" homepage = "https://www.gnu.org/software/tar/"
url = "https://ftp.gnu.org/gnu/tar/tar-1.28.tar.gz" url = "https://ftp.gnu.org/gnu/tar/tar-1.29.tar.gz"
version('1.29', 'cae466e6e58c7292355e7080248f244db3a4cf755f33f4fa25ca7f9a7ed09af0') version('1.29', 'cae466e6e58c7292355e7080248f244db3a4cf755f33f4fa25ca7f9a7ed09af0')
version('1.28', '6ea3dbea1f2b0409b234048e021a9fd7') version('1.28', '6ea3dbea1f2b0409b234048e021a9fd7')
# see http://lists.gnu.org/archive/html/bug-tar/2014-08/msg00001.html and patch('tar-pgi.patch', when='@1.29')
# https://github.com/Homebrew/homebrew-core/commit/aef9a1792de4648d0322b4b04d32287532f046bb patch('config-pgi.patch', when='@:1.29')
# TODO: when=sys.platform=='darwin' ? patch('se-selinux.patch', when='@:1.29')
patch('argp-pgi.patch', when='@:1.29')
patch('gnutar-configure-xattrs.patch', when='@1.28') patch('gnutar-configure-xattrs.patch', when='@1.28')

View File

@ -0,0 +1,66 @@
From e041ac5f63e23b20c322f2777d6330074c8a7215 Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@cs.ucla.edu>
Date: Tue, 14 Feb 2017 08:46:05 -0800
Subject: selinux-h: port to PGI 16.10
* gnu/se-selinux.in.h: Don't assume that include_next skips over
duplicate -I DIR options.
diff --git a/gnu/se-selinux.in.h b/gnu/se-selinux.in.h
index cd19951..1cf7c00 100644
--- a/gnu/se-selinux.in.h
+++ b/gnu/se-selinux.in.h
@@ -14,26 +14,25 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
-#ifndef _@GUARD_PREFIX@_SELINUX_SELINUX_H
-# define _@GUARD_PREFIX@_SELINUX_SELINUX_H
-
-# if __GNUC__ >= 3
+#if __GNUC__ >= 3
@PRAGMA_SYSTEM_HEADER@
-# endif
+#endif
@PRAGMA_COLUMNS@
-# if HAVE_SELINUX_SELINUX_H
+#if HAVE_SELINUX_SELINUX_H
#@INCLUDE_NEXT@ @NEXT_SELINUX_SELINUX_H@
-# else
+#else
+# if !defined _@GUARD_PREFIX@_SELINUX_SELINUX_H
+# define _@GUARD_PREFIX@_SELINUX_SELINUX_H
# include <sys/types.h>
# include <errno.h>
-#ifndef _GL_INLINE_HEADER_BEGIN
- #error "Please include config.h first."
-#endif
+# ifndef _GL_INLINE_HEADER_BEGIN
+ #error "Please include config.h first."
+# endif
_GL_INLINE_HEADER_BEGIN
# ifndef SE_SELINUX_INLINE
# define SE_SELINUX_INLINE _GL_INLINE
@@ -114,10 +113,10 @@ matchpathcon_init_prefix (char const *path _GL_UNUSED_PARAMETER,
# define GNULIB_defined_security_types 1
# endif
-#ifndef _GL_INLINE_HEADER_BEGIN
- #error "Please include config.h first."
-#endif
+# ifndef _GL_INLINE_HEADER_BEGIN
+ #error "Please include config.h first."
+# endif
_GL_INLINE_HEADER_BEGIN
# endif
-#endif /* _@GUARD_PREFIX@_SELINUX_SELINUX_H */
+#endif
--
cgit v1.0-41-gc330

View File

@ -0,0 +1,66 @@
From 2be02a7c9afa5b4f01261e5b66c64217f7f3c29a Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@cs.ucla.edu>
Date: Tue, 14 Feb 2017 08:55:05 -0800
Subject: Fix incompatibility with PGI 16.10
* src/tar.c (options): Fix incompatibility with the C standard,
which says that arguments to macro calls cannot contain # directives.
diff --git a/src/tar.c b/src/tar.c
index fd29cd3..ea68c82 100644
--- a/src/tar.c
+++ b/src/tar.c
@@ -548,11 +548,11 @@ static struct argp_option options[] = {
N_("cancel the effect of --delay-directory-restore option"), GRID+1 },
{"sort", SORT_OPTION, N_("ORDER"), 0,
#if D_INO_IN_DIRENT
- N_("directory sorting order: none (default), name or inode"
+ N_("directory sorting order: none (default), name or inode")
#else
- N_("directory sorting order: none (default) or name"
+ N_("directory sorting order: none (default) or name")
#endif
- ), GRID+1 },
+ , GRID+1 },
#undef GRID
#define GRID 55
@@ -1758,7 +1758,7 @@ parse_opt (int key, char *arg, struct argp_state *state)
case GROUP_MAP_OPTION:
group_map_read (arg);
break;
-
+
case MODE_OPTION:
mode_option = mode_compile (arg);
if (!mode_option)
@@ -1829,7 +1829,7 @@ parse_opt (int key, char *arg, struct argp_state *state)
case OWNER_MAP_OPTION:
owner_map_read (arg);
break;
-
+
case QUOTE_CHARS_OPTION:
for (;*arg; arg++)
set_char_quoting (NULL, *arg, 1);
@@ -2123,7 +2123,7 @@ find_argp_option (struct argp *ap, int key)
{
struct argp_option const *p = NULL;
struct argp_child const *child;
-
+
p = find_argp_option_key (ap->options, key);
if (!p && ap->children)
{
@@ -2136,7 +2136,7 @@ find_argp_option (struct argp *ap, int key)
}
return p;
}
-
+
static const char *tar_authors[] = {
"John Gilmore",
"Jay Fenlason",
--
cgit v1.0-41-gc330