Revert "Use gethostuuid() on Mac to identify hosts for LockFileManager"

Broke non-Mac builds.

This reverts commit r241005.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241007 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Ben Langmuir 2015-06-29 21:56:03 +00:00
parent d5c333b731
commit cb936df2a9

View File

@ -21,16 +21,6 @@
#if LLVM_ON_UNIX
#include <unistd.h>
#endif
#if defined(__APPLE__) && defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && (__MAC_OS_X_VERSION_MIN_REQUIRED > 1050)
#define USE_OSX_GETHOSTUUID 1
#else
#define USE_OSX_GETHOSTUUID 0
#endif
#if USE_OSX_GETHOSTUUID
#include <uuid/uuid.h>
#endif
using namespace llvm;
/// \brief Attempt to read the lock file with the given name, if it exists.
@ -66,43 +56,14 @@ LockFileManager::readLockFile(StringRef LockFileName) {
return None;
}
static std::error_code getHostID(SmallVectorImpl<char> &HostID) {
HostID.clear();
#if USE_OSX_GETHOSTUUID
// On OS X, use the more stable hardware UUID instead of hostname.
struct timespec wait = {1, 0}; // 1 second.
uuid_t uuid;
if (gethostuuid(uuid, &wait) != 0)
return std::error_code(errno, std::system_category());
uuid_string_t UUIDStr;
uuid_unparse(uuid, UUIDStr);
assert(strlen(UUIDStr) == 36);
HostID.append(&UUIDStr[0], &UUIDStr[36]);
#elif LLVM_ON_UNIX
char hostname[256];
hostname[255] = 0;
hostname[0] = 0;
gethostname(hostname, 255);
HostID = hostname;
#else
HostID = "localhost";
#endif
return std::error_code();
}
bool LockFileManager::processStillExecuting(StringRef HostID, int PID) {
bool LockFileManager::processStillExecuting(StringRef Hostname, int PID) {
#if LLVM_ON_UNIX && !defined(__ANDROID__)
SmallString<256> StoredHostID;
if (getHostID(StoredHostID))
return true; // Conservatively assume it's executing on error.
char MyHostname[256];
MyHostname[255] = 0;
MyHostname[0] = 0;
gethostname(MyHostname, 255);
// Check whether the process is dead. If so, we're done.
if (StoredHostID == HostID && getsid(PID) == -1 && errno == ESRCH)
if (MyHostname == Hostname && getsid(PID) == -1 && errno == ESRCH)
return false;
#endif
@ -165,18 +126,17 @@ LockFileManager::LockFileManager(StringRef FileName)
// Write our process ID to our unique lock file.
{
SmallString<256> HostID;
if (auto EC = getHostID(HostID)) {
Error = EC;
return;
}
raw_fd_ostream Out(UniqueLockFileID, /*shouldClose=*/true);
Out << HostID << ' ';
#if LLVM_ON_UNIX
Out << getpid();
// FIXME: move getpid() call into LLVM
char hostname[256];
hostname[255] = 0;
hostname[0] = 0;
gethostname(hostname, 255);
Out << hostname << ' ' << getpid();
#else
Out << "1";
Out << "localhost 1";
#endif
Out.close();