Discussion:
[Bug-tar] Unable to build tar with PGI compilers
(too old to reply)
Pavel Raiskup
2017-02-14 14:02:48 UTC
Permalink
Raw Message
[+cc gnulib, the selinux-at code comes from there]

Thanks for the report!
It might be selinux (even if you didn't specify the platform you use).
You could try to disable it with configure option '--without-selinux'
Yes, for some reason ./configure thinks that tar should be built with
selinux support (so SELinux is working on your box?) and the build fails later.
The --without-selinux really could work-around this issue.
I'm trying to build GNU Tar 1.29 with the PGI 16.10 compilers, but it crashes
I'm not familiar with this compiler, thus the errors below are not
readable to me (maybe undefined symbol because of broken system header?).
Perhaps others might decode better .. but I think that the best guess
would be to provide a patch which fixes gnulib's SELinux module for your
system/compiler.

Pavel
PGC-S-0040-Illegal use of symbol, security_context_t (getfilecon.c: 36)
PGC-W-0156-Type not specified, 'int' assumed (getfilecon.c: 36)
PGC-S-0040-Illegal use of symbol, security_context_t (getfilecon.c: 37)
PGC-W-0156-Type not specified, 'int' assumed (getfilecon.c: 37)
PGC-S-0040-Illegal use of symbol, security_context_t (getfilecon.c: 38)
PGC-W-0156-Type not specified, 'int' assumed (getfilecon.c: 38)
PGC-S-0040-Illegal use of symbol, security_context_t (getfilecon.c: 49)
PGC-W-0156-Type not specified, 'int' assumed (getfilecon.c: 49)
PGC-W-0095-Type cast required for this conversion (getfilecon.c: 57)
PGC-W-0155-Pointer value created from a nonlong integral type (getfilecon.c: 57)
PGC-W-0093-Type cast required for this conversion of constant (getfilecon.c: 60)
PGC-S-0040-Illegal use of symbol, security_context_t (getfilecon.c: 69)
PGC-W-0156-Type not specified, 'int' assumed (getfilecon.c: 69)
PGC-S-0040-Illegal use of symbol, security_context_t (getfilecon.c: 76)
PGC-W-0156-Type not specified, 'int' assumed (getfilecon.c: 76)
PGC-S-0040-Illegal use of symbol, security_context_t (getfilecon.c: 83)
PGC-W-0156-Type not specified, 'int' assumed (getfilecon.c: 83)
PGC/x86-64 Linux 16.10-0: compilation completed with severe errors
make[4]: *** [getfilecon.o] Error 2
Bruno Haible
2017-02-14 14:15:27 UTC
Permalink
Raw Message
PGC-S-0040-Illegal use of symbol, security_context_t (getfilecon.c: 36)
PGC-W-0156-Type not specified, 'int' assumed (getfilecon.c: 36)
It would be good to know:
1. on which platform you are experiencing this (precise distribution
and release date, and the mode in which SELinux is running)
2. the part in config.log around
"checking for library containing setfilecon"

Bruno
Stewart, Adam James
2017-02-15 17:53:04 UTC
Permalink
Raw Message
Hi Bruno,

1. This is on CentOS 6.8.

$ uname -a
Linux blogin4 2.6.32-642.11.1.el6.x86_64 #1 SMP Fri Nov 18 19:25:05 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

I don't know much about SELinux, so I can't tell you what mode it is running in.

2. Here is the relevant section from config.log:

configure:14978: checking for library containing setfilecon
configure:15009: /blues/gpfs/home/software/spack-0.10.0/lib/spack/env/pgi/pgcc -o conftest -g conftest.c >&5
/tmp/pgccAHAFokEnZd9p.o: In function `main.pgi.uni.haswell':
/scratch/ajstewart/spack-stage/spack-stage-SYWwDn/tar-1.29/./conftest.c:221: undefined reference to `setfilecon'
/tmp/pgccAHAFokEnZd9p.o: In function `main.pgi.uni.sandybridge':
/scratch/ajstewart/spack-stage/spack-stage-SYWwDn/tar-1.29/./conftest.c:221: undefined reference to `setfilecon'
configure:15009: $? = 2
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "GNU tar"
| #define PACKAGE_TARNAME "tar"
| #define PACKAGE_VERSION "1.29"
| #define PACKAGE_STRING "GNU tar 1.29"
| #define PACKAGE_BUGREPORT "bug-***@gnu.org"
| #define PACKAGE_URL "http://www.gnu.org/software/tar/"
| #define PACKAGE "tar"
| #define VERSION "1.29"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _DARWIN_C_SOURCE 1
| #define _GNU_SOURCE 1
| #define __USE_MINGW_ANSI_STDIO 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_FSEEKO 1
| #define _DARWIN_USE_64_BIT_INODE 1
| #define _DARWIN_USE_64_BIT_INODE 1
| #define HAVE_FCNTL_H 1
| #define HAVE_LINUX_FD_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_SGTTY_H 1
| #define HAVE_STRING_H 1
| #define HAVE_SYS_PARAM_H 1
| #define HAVE_SYS_MTIO_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_LOCALE_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_DIRENT_H 1
| #define HAVE_WCTYPE_H 1
| #define HAVE_STDIO_EXT_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_GETOPT_H 1
| #define HAVE_WCHAR_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_LANGINFO_H 1
| #define HAVE_XLOCALE_H 1
| #define HAVE_SYS_MMAN_H 1
| #define HAVE_MALLOC_H 1
| #define HAVE_SELINUX_SELINUX_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_SYSEXITS_H 1
| #define HAVE_UTIME_H 1
| #define HAVE_NETDB_H 1
| #define HAVE_SYS_WAIT_H 1
| #define HAVE_PWD_H 1
| #define HAVE_GRP_H 1
| #define major_t int
| #define minor_t int
| #define HAVE_FCHMOD 1
| #define HAVE_FLOCKFILE 1
| #define HAVE_FUNLOCKFILE 1
| #define HAVE_PATHCONF 1
| #define HAVE_BTOWC 1
| #define HAVE_CANONICALIZE_FILE_NAME 1
| #define HAVE_GETCWD 1
| #define HAVE_READLINK 1
| #define HAVE_REALPATH 1
| #define HAVE_READLINKAT 1
| #define HAVE_CHOWN 1
| #define HAVE_FCHOWN 1
| #define HAVE_FCHDIR 1
| #define HAVE_FDOPENDIR 1
| #define HAVE_FACCESSAT 1
| #define HAVE_FCHMODAT 1
| #define HAVE_FCNTL 1
| #define HAVE_SYMLINK 1
| #define HAVE_MEMPCPY 1
| #define HAVE_ISBLANK 1
| #define HAVE_ISWCTYPE 1
| #define HAVE_MBSRTOWCS 1
| #define HAVE_WMEMCHR 1
| #define HAVE_WMEMCPY 1
| #define HAVE_WMEMPCPY 1
| #define HAVE_FSTATAT 1
| #define HAVE_FUTIMENS 1
| #define HAVE_GETDELIM 1
| #define HAVE_GETDTABLESIZE 1
| #define HAVE_GETTIMEOFDAY 1
| #define HAVE_ISWCNTRL 1
| #define HAVE_ISWBLANK 1
| #define HAVE_LINK 1
| #define HAVE_OPENAT 1
| #define HAVE_LINKAT 1
| #define HAVE_LSTAT 1
| #define HAVE_MBSINIT 1
| #define HAVE_MBRTOWC 1
| #define HAVE_MPROTECT 1
| #define HAVE_MKDIRAT 1
| #define HAVE_MKFIFO 1
| #define HAVE_MKFIFOAT 1
| #define HAVE_MKNODAT 1
| #define HAVE_MKNOD 1
| #define HAVE_NL_LANGINFO 1
| #define HAVE_RENAMEAT 1
| #define HAVE_SETENV 1
| #define HAVE_SLEEP 1
| #define HAVE_SNPRINTF 1
| #define HAVE_STRDUP 1
| #define HAVE_TZSET 1
| #define HAVE_STRNDUP 1
| #define HAVE_STRTOIMAX 1
| #define HAVE_STRTOUMAX 1
| #define HAVE_SYMLINKAT 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_TIMEGM 1
| #define HAVE_PIPE 1
| #define HAVE_UNLINKAT 1
| #define HAVE_FUTIMES 1
| #define HAVE_FUTIMESAT 1
| #define HAVE_UTIMENSAT 1
| #define HAVE_LUTIMES 1
| #define HAVE_WCRTOMB 1
| #define HAVE_WCWIDTH 1
| #define HAVE_SETLOCALE 1
| #define HAVE_FSYNC 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define restrict /**/
| #define HAVE_DECL_CLEARERR_UNLOCKED 1
| #define HAVE_DECL_FEOF_UNLOCKED 1
| #define HAVE_DECL_FERROR_UNLOCKED 1
| #define HAVE_DECL_FFLUSH_UNLOCKED 1
| #define HAVE_DECL_FGETS_UNLOCKED 1
| #define HAVE_DECL_FPUTC_UNLOCKED 1
| #define HAVE_DECL_FPUTS_UNLOCKED 1
| #define HAVE_DECL_FREAD_UNLOCKED 1
| #define HAVE_DECL_FWRITE_UNLOCKED 1
| #define HAVE_DECL_GETC_UNLOCKED 1
| #define HAVE_DECL_GETCHAR_UNLOCKED 1
| #define HAVE_DECL_PUTC_UNLOCKED 1
| #define HAVE_DECL_PUTCHAR_UNLOCKED 1
| #define D_INO_IN_DIRENT 1
| #define HAVE_LONG_FILE_NAMES 1
| #define HAVE_LANGINFO_CODESET 1
| #define FUNC_REALPATH_WORKS 1
| #define HAVE_UNISTD_H 1
| #define HAVE_CHOWN 1
| #define HAVE_ENVIRON_DECL 1
| #define HAVE_DECL_STRERROR_R 1
| #define HAVE_STRERROR_R 1
| #define STRERROR_R_CHAR_P 1
| #define GETGROUPS_T gid_t
| #define HAVE_DECL_FCHDIR 1
| #define HAVE_WORKING_O_NOATIME 1
| #define HAVE_WORKING_O_NOFOLLOW 1
| #define HAVE_MBSTATE_T 1
| #define HAVE_DECL_FSEEKO 1
| #define HAVE_RAW_DECL_FCHMODAT 1
| #define HAVE_RAW_DECL_FSTAT 1
| #define HAVE_RAW_DECL_FSTATAT 1
| #define HAVE_RAW_DECL_FUTIMENS 1
| #define HAVE_RAW_DECL_LCHMOD 1
| #define HAVE_RAW_DECL_LSTAT 1
| #define HAVE_RAW_DECL_MKDIRAT 1
| #define HAVE_RAW_DECL_MKFIFO 1
| #define HAVE_RAW_DECL_MKFIFOAT 1
| #define HAVE_RAW_DECL_MKNOD 1
| #define HAVE_RAW_DECL_MKNODAT 1
| #define HAVE_RAW_DECL_STAT 1
| #define HAVE_RAW_DECL_UTIMENSAT 1
| #define LSTAT_FOLLOWS_SLASHED_SYMLINK 1
| #define HAVE_DECL_GETCWD 1
| #define HAVE_DECL_GETDELIM 1
| #define HAVE_DECL_GETDTABLESIZE 1
| #define HAVE_DECL_GETLINE 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG_ONLY 1
| #define __GETOPT_PREFIX rpl_
| #define HAVE_DECL_GETENV 1
| #define HAVE_RAW_DECL_GETTIMEOFDAY 1
| #define HAVE_UNSIGNED_LONG_LONG_INT 1
| #define HAVE_LONG_LONG_INT 1
| #define HAVE_RAW_DECL_IMAXABS 1
| #define HAVE_RAW_DECL_IMAXDIV 1
| #define HAVE_RAW_DECL_STRTOIMAX 1
| #define HAVE_RAW_DECL_STRTOUMAX 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_WINT_T 1
| #define HAVE_TOWLOWER 1
| #define HAVE_RAW_DECL_WCTYPE 1
| #define HAVE_RAW_DECL_ISWCTYPE 1
| #define HAVE_RAW_DECL_WCTRANS 1
| #define HAVE_RAW_DECL_TOWCTRANS 1
| #define HAVE_WCHAR_T 1
| #define HAVE_STDLIB_H 1
| #define MALLOC_0_IS_NONNULL 1
| #define HAVE_MAP_ANONYMOUS 1
| #define HAVE_DECL_MEMRCHR 1
| #define HAVE_DECL_ALARM 1
| #define PROMOTED_MODE_T mode_t
| #define HAVE__BOOL 1
| #define HAVE_COMPOUND_LITERALS 1
| #define HAVE_TM_GMTOFF 1
| /* end confdefs.h. */
|
| /* Override any GCC internal prototype to avoid an error.
| Use char because int might match the return type of a GCC
| builtin and then its argument prototype would still apply. */
| #ifdef __cplusplus
| extern "C"
| #endif
| char setfilecon ();
| int
| main ()
| {
| return setfilecon ();
| ;
| return 0;
| }
configure:15009: /blues/gpfs/home/software/spack-0.10.0/lib/spack/env/pgi/pgcc -o conftest -g conftest.c -lselinux >&5
configure:15009: $? = 0
configure:15026: result: -lselinux


Adam J. Stewart
Assistant Systems Administrator
Laboratory Computing Resource Center
Computing, Environment and Life Sciences
Argonne National Laboratory

________________________________________
From: Bruno Haible [***@clisp.org]
Sent: Tuesday, February 14, 2017 8:15 AM
To: bug-***@gnu.org
Cc: Pavel Raiskup; bug-***@gnu.org; Lorinczy Zsigmond; Stewart, Adam James
Subject: Re: [Bug-tar] Unable to build tar with PGI compilers
PGC-S-0040-Illegal use of symbol, security_context_t (getfilecon.c: 36)
PGC-W-0156-Type not specified, 'int' assumed (getfilecon.c: 36)
It would be good to know:
1. on which platform you are experiencing this (precise distribution
and release date, and the mode in which SELinux is running)
2. the part in config.log around
"checking for library containing setfilecon"

Bruno

Loading...