Hi,
I'm unable to install rtracklayer because of some error regarding ucsc/os.o. I've attached a snippet of the installation routine with the error reported at the bottom. I've tried to install earlier version including the newest (1.40.2) but all give me the same error. I'm installing on CentOS 7 so perhaps there is a system library that is missing but I don't think so.
Has anyone had similar problems with a resolution?
-todd
In file included from /apps/anaconda3/include/tclUnixPort.h:158:0,
from /apps/anaconda3/include/tclPort.h:23,
from /apps/anaconda3/include/tclInt.h:36,
from /apps/anaconda3/include/regex.h:4,
from ucsc/osunix.c:17,
from ucsc/os.c:6:
/apps/anaconda3/include/compat/unistd.h:35:13: error: conflicting types for 'execl'
extern int execl(const char *path, ...);
^~~~~
In file included from ucsc/common.h:44:0,
from ucsc/osunix.c:6,
from ucsc/os.c:6:
/apps/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/unistd.h:570:12: note: previous declaration of 'execl' was here
extern int execl (__const char *__path, __const char *__arg, ...)
^~~~~
In file included from /apps/anaconda3/include/tclUnixPort.h:158:0,
from /apps/anaconda3/include/tclPort.h:23,
from /apps/anaconda3/include/tclInt.h:36,
from /apps/anaconda3/include/regex.h:4,
from ucsc/osunix.c:17,
from ucsc/os.c:6:
/apps/anaconda3/include/compat/unistd.h:36:13: error: conflicting types for 'execle'
extern int execle(const char *path, ...);
^~~~~~
In file included from ucsc/common.h:44:0,
from ucsc/osunix.c:6,
from ucsc/os.c:6:
/apps/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/unistd.h:565:12: note: previous declaration of 'execle' was here
extern int execle (__const char *__path, __const char *__arg, ...)
^~~~~~
In file included from /apps/anaconda3/include/tclUnixPort.h:158:0,
from /apps/anaconda3/include/tclPort.h:23,
from /apps/anaconda3/include/tclInt.h:36,
from /apps/anaconda3/include/regex.h:4,
from ucsc/osunix.c:17,
from ucsc/os.c:6:
/apps/anaconda3/include/compat/unistd.h:37:13: error: conflicting types for 'execlp'
extern int execlp(const char *file, ...);
^~~~~~
In file included from ucsc/common.h:44:0,
from ucsc/osunix.c:6,
from ucsc/os.c:6:
/apps/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/unistd.h:581:12: note: previous declaration of 'execlp' was here
extern int execlp (__const char *__file, __const char *__arg, ...)
^~~~~~
In file included from /apps/anaconda3/include/tclUnixPort.h:158:0,
from /apps/anaconda3/include/tclPort.h:23,
from /apps/anaconda3/include/tclInt.h:36,
from /apps/anaconda3/include/regex.h:4,
from ucsc/osunix.c:17,
from ucsc/os.c:6:
/apps/anaconda3/include/compat/unistd.h:38:13: error: conflicting types for 'execv'
extern int execv(const char *path, char **argv);
^~~~~
In file included from ucsc/common.h:44:0,
from ucsc/osunix.c:6,
from ucsc/os.c:6:
/apps/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/unistd.h:560:12: note: previous declaration of 'execv' was here
extern int execv (__const char *__path, char *__const __argv[])
^~~~~
In file included from /apps/anaconda3/include/tclUnixPort.h:158:0,
from /apps/anaconda3/include/tclPort.h:23,
from /apps/anaconda3/include/tclInt.h:36,
from /apps/anaconda3/include/regex.h:4,
from ucsc/osunix.c:17,
from ucsc/os.c:6:
/apps/anaconda3/include/compat/unistd.h:39:13: error: conflicting types for 'execve'
extern int execve(const char *path, char **argv, char **envp);
^~~~~~
In file included from ucsc/common.h:44:0,
from ucsc/osunix.c:6,
from ucsc/os.c:6:
/apps/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/unistd.h:548:12: note: previous declaration of 'execve' was here
extern int execve (__const char *__path, char *__const __argv[],
^~~~~~
In file included from /apps/anaconda3/include/tclUnixPort.h:158:0,
from /apps/anaconda3/include/tclPort.h:23,
from /apps/anaconda3/include/tclInt.h:36,
from /apps/anaconda3/include/regex.h:4,
from ucsc/osunix.c:17,
from ucsc/os.c:6:
/apps/anaconda3/include/compat/unistd.h:46:13: error: conflicting types for 'getgroups'
extern int getgroups(int bufSize, int *buffer);
^~~~~~~~~
In file included from /apps/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/features.h:356:0,
from /apps/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/stdio.h:28,
from ucsc/common.h:30,
from ucsc/osunix.c:6,
from ucsc/os.c:6:
/apps/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/unistd.h:266:1: note: previous definition of 'getgroups' was here
__NTH (getgroups (int __size, __gid_t __list[]))
^
In file included from /apps/anaconda3/include/tclUnixPort.h:158:0,
from /apps/anaconda3/include/tclPort.h:23,
from /apps/anaconda3/include/tclInt.h:36,
from /apps/anaconda3/include/regex.h:4,
from ucsc/osunix.c:17,
from ucsc/os.c:6:
/apps/anaconda3/include/compat/unistd.h:52:13: error: conflicting types for 'read'
extern int read(int fd, char *buf, size_t size);
^~~~
In file included from /apps/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/unistd.h:1157:0,
from ucsc/common.h:44,
from ucsc/osunix.c:6,
from ucsc/os.c:6:
/apps/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/bits/unistd.h:35:1: note: previous definition of 'read' was here
read (int __fd, void *__buf, size_t __nbytes)
^~~~
In file included from /apps/anaconda3/include/tclUnixPort.h:158:0,
from /apps/anaconda3/include/tclPort.h:23,
from /apps/anaconda3/include/tclInt.h:36,
from /apps/anaconda3/include/regex.h:4,
from ucsc/osunix.c:17,
from ucsc/os.c:6:
/apps/anaconda3/include/compat/unistd.h:58:13: error: conflicting types for 'write'
extern int write(int fd, const char *buf, size_t size);
^~~~~
In file included from ucsc/common.h:44:0,
from ucsc/osunix.c:6,
from ucsc/os.c:6:
/apps/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/unistd.h:363:16: note: previous declaration of 'write' was here
extern ssize_t write (int __fd, __const void *__buf, size_t __n) __wur;
^~~~~
In file included from ucsc/os.c:6:0:
ucsc/osunix.c: In function 'listDirRegEx':
ucsc/osunix.c:143:11: warning: implicit declaration of function 'regcomp'; did you mean 'memcmp'? [-Wimplicit-function-declaration]
int err = regcomp(&re, regEx, flags | REG_NOSUB);
^~~~~~~
memcmp
ucsc/osunix.c:154:7: warning: implicit declaration of function 'regexec'; did you mean 'rexec'? [-Wimplicit-function-declaration]
if (!regexec(&re, fileName, 0, NULL, 0))
^~~~~~~
rexec
make: *** [ucsc/os.o] Error 1
ERROR: compilation failed for package ‘rtracklayer’
* removing ‘/apps/anaconda3/lib/R/library/rtracklayer’
One can diagnose this to some extent. Versions of
unistd.h
files are found in two different locationsIt seems like this would be solved if
regex.h
were in/apps/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/usr/include/
; this seems like an anaconda problem and I don't know how to address it.Good eye! Definitely an anaconda problem. I resolved it by symlinking to the correct version of regex.h.
Thanks for spotting the problem.