[ https://issues.apache.org/jira/browse/HADOOP-10358?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ilya Maykov resolved HADOOP-10358. ---------------------------------- Resolution: Duplicate Resolving dupe > libhadoop doesn't compile on Mac OS X > ------------------------------------- > > Key: HADOOP-10358 > URL: https://issues.apache.org/jira/browse/HADOOP-10358 > Project: Hadoop Common > Issue Type: Improvement > Components: native > Environment: Mac OS X 10.8.5 > Oracle JDK 1.7.0_51 > Reporter: Ilya Maykov > Priority: Minor > Attachments: HADOOP-10358-fix-hadoop-common-native-on-os-x.patch > > > The native component of hadoop-common (libhadoop.so on linux, libhadoop.dylib > on mac) fails to compile on Mac OS X. The problem is in > hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/security/JniBasedUnixGroupsNetgroupMapping.c > at lines 76-78: > [exec] > /Users/ilyam/src/github/apache/hadoop-common/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/security/JniBasedUnixGroupsNetgroupMapping.c:77:26: > error: invalid operands to binary expression ('void' and 'int') > [exec] if(setnetgrent(cgroup) == 1) { > [exec] ~~~~~~~~~~~~~~~~~~~ ^ ~ > There are two problems in the code: > 1) The #ifndef guard only checks for __FreeBSD__ but should check for either > one of __FreeBSD__ or __APPLE__. This is because Mac OS X inherits its > syscalls from FreeBSD rather than Linux, and thus the setnetgrent() syscall > returns void. > 2) setnetgrentCalledFlag = 1 is set outside the #ifndef guard, but the > syscall is only invoked inside the guard. This means that on FreeBSD, > endnetgrent() can be called in the cleanup code without a corresponding > setnetgrent() invocation. > I have a patch that fixes both issues (will attach in a bit). With this > patch, I'm able to compile libhadoop.dylib on Mac OS X, which in turn lets me > install native snappy, lzo, etc compressor libraries on my client. That lets > me run commands like 'hadoop fs -text somefile.lzo' from the macbook rather > than having to ssh to a linux box, etc. > Note that this patch only fixes the native build of hadoop-common-project. > Some other components of hadoop still fail to build their native components, > but libhadoop.dylib is enough for the client. -- This message was sent by Atlassian JIRA (v6.2#6252)