Files
haikuports/dev-util/ninja/patches/ninja-1.8.2.patchset
2017-11-01 12:04:16 +01:00

218 lines
7.6 KiB
Plaintext

From be68eec712437089c9147ba485cadf5c2daec250 Mon Sep 17 00:00:00 2001
From: Augustin Cavalier <waddlesplash@gmail.com>
Date: Sat, 16 Sep 2017 12:25:48 +0200
Subject: Add minimal Haiku support; based on Adrien's patch.
diff --git a/configure.py b/configure.py
index a443748..42489e7 100755
--- a/configure.py
+++ b/configure.py
@@ -56,6 +56,8 @@ class Platform(object):
self._platform = 'msvc'
elif self._platform.startswith('bitrig'):
self._platform = 'bitrig'
+ elif self._platform.startswith('haiku'):
+ self._platform = 'haiku'
elif self._platform.startswith('netbsd'):
self._platform = 'netbsd'
elif self._platform.startswith('aix'):
@@ -67,7 +69,7 @@ class Platform(object):
def known_platforms():
return ['linux', 'darwin', 'freebsd', 'openbsd', 'solaris', 'sunos5',
'mingw', 'msvc', 'gnukfreebsd', 'bitrig', 'netbsd', 'aix',
- 'dragonfly']
+ 'dragonfly', 'haiku']
def platform(self):
return self._platform
@@ -94,6 +96,9 @@ class Platform(object):
def is_solaris(self):
return self._platform == 'solaris'
+ def is_haiku(self):
+ return self._platform == 'is_haiku'
+
def is_aix(self):
return self._platform == 'aix'
@@ -458,11 +463,7 @@ if platform.supports_ninja_browse():
n.comment('the depfile parser and ninja lexers are generated using re2c.')
def has_re2c():
- try:
- proc = subprocess.Popen(['re2c', '-V'], stdout=subprocess.PIPE)
- return int(proc.communicate()[0], 10) >= 1103
- except OSError:
- return False
+ return False
if has_re2c():
n.rule('re2c',
command='re2c -b -i --no-generation-date -o $out $in',
diff --git a/src/util.cc b/src/util.cc
index ae94d34..8af4b86 100644
--- a/src/util.cc
+++ b/src/util.cc
@@ -480,7 +480,7 @@ int GetProcessorCount() {
#endif
}
-#if defined(_WIN32) || defined(__CYGWIN__)
+#if defined(_WIN32) || defined(__CYGWIN__) || defined(__HAIKU__)
static double CalculateProcessorLoad(uint64_t idle_ticks, uint64_t total_ticks)
{
static uint64_t previous_idle_ticks = 0;
--
2.14.2
From f8d8e1ca23dd5162f3b1cda42a574fc4b8ac0712 Mon Sep 17 00:00:00 2001
From: Michael Lotz <mmlr@mlotz.ch>
Date: Sat, 16 Sep 2017 12:27:48 +0200
Subject: Add include of sys/select.h to get FD_* definitions.
Apparently these are pulled in by one of the already present headers
on other platforms. A cursory look at the POSIX specs did not reveal
a requirement to expose these types with the given headers though.
diff --git a/src/subprocess-posix.cc b/src/subprocess-posix.cc
index 1de22c3..f77c559 100644
--- a/src/subprocess-posix.cc
+++ b/src/subprocess-posix.cc
@@ -21,6 +21,7 @@
#include <unistd.h>
#include <stdio.h>
#include <string.h>
+#include <sys/select.h>
#include <sys/wait.h>
#include <spawn.h>
--
2.14.2
From 28928297b7ee4e90ef9addb596149a0f9c2211c1 Mon Sep 17 00:00:00 2001
From: Jerome Duval <jerome.duval@gmail.com>
Date: Sat, 16 Sep 2017 12:48:42 +0200
Subject: GetLoadAvg to be implemented for Haiku
diff --git a/src/util.cc b/src/util.cc
index 8af4b86..1de47b8 100644
--- a/src/util.cc
+++ b/src/util.cc
@@ -480,7 +480,7 @@ int GetProcessorCount() {
#endif
}
-#if defined(_WIN32) || defined(__CYGWIN__) || defined(__HAIKU__)
+#if defined(_WIN32) || defined(__CYGWIN__)
static double CalculateProcessorLoad(uint64_t idle_ticks, uint64_t total_ticks)
{
static uint64_t previous_idle_ticks = 0;
@@ -563,6 +563,10 @@ double GetLoadAverage() {
return -0.0f;
return 1.0 / (1 << SI_LOAD_SHIFT) * si.loads[0];
}
+#elif defined(__HAIKU__)
+double GetLoadAverage() {
+ return -0.0f;
+}
#else
double GetLoadAverage() {
double loadavg[3] = { 0.0f, 0.0f, 0.0f };
--
2.14.2
From b19f7582445dd8f5ab550844bcbbace751776589 Mon Sep 17 00:00:00 2001
From: Jerome Duval <jerome.duval@gmail.com>
Date: Tue, 31 Oct 2017 21:37:20 +0100
Subject: posix_spawn_* calls don't set errno.
diff --git a/src/subprocess-posix.cc b/src/subprocess-posix.cc
index f77c559..5b34a36 100644
--- a/src/subprocess-posix.cc
+++ b/src/subprocess-posix.cc
@@ -55,21 +55,25 @@ bool Subprocess::Start(SubprocessSet* set, const string& command) {
SetCloseOnExec(fd_);
posix_spawn_file_actions_t action;
- if (posix_spawn_file_actions_init(&action) != 0)
- Fatal("posix_spawn_file_actions_init: %s", strerror(errno));
+ int err = posix_spawn_file_actions_init(&action);
+ if (err != 0)
+ Fatal("posix_spawn_file_actions_init: %s", strerror(err));
- if (posix_spawn_file_actions_addclose(&action, output_pipe[0]) != 0)
- Fatal("posix_spawn_file_actions_addclose: %s", strerror(errno));
+ err = posix_spawn_file_actions_addclose(&action, output_pipe[0]);
+ if (err != 0)
+ Fatal("posix_spawn_file_actions_addclose: %s", strerror(err));
posix_spawnattr_t attr;
- if (posix_spawnattr_init(&attr) != 0)
- Fatal("posix_spawnattr_init: %s", strerror(errno));
+ err = posix_spawnattr_init(&attr);
+ if (err != 0)
+ Fatal("posix_spawnattr_init: %s", strerror(err));
short flags = 0;
flags |= POSIX_SPAWN_SETSIGMASK;
- if (posix_spawnattr_setsigmask(&attr, &set->old_mask_) != 0)
- Fatal("posix_spawnattr_setsigmask: %s", strerror(errno));
+ err = posix_spawnattr_setsigmask(&attr, &set->old_mask_);
+ if (err != 0)
+ Fatal("posix_spawnattr_setsigmask: %s", strerror(err));
// Signals which are set to be caught in the calling process image are set to
// default action in the new process image, so no explicit
// POSIX_SPAWN_SETSIGDEF parameter is needed.
@@ -80,17 +84,21 @@ bool Subprocess::Start(SubprocessSet* set, const string& command) {
// No need to posix_spawnattr_setpgroup(&attr, 0), it's the default.
// Open /dev/null over stdin.
- if (posix_spawn_file_actions_addopen(&action, 0, "/dev/null", O_RDONLY,
- 0) != 0) {
- Fatal("posix_spawn_file_actions_addopen: %s", strerror(errno));
+ err = posix_spawn_file_actions_addopen(&action, 0, "/dev/null", O_RDONLY,
+ 0);
+ if (err != 0) {
+ Fatal("posix_spawn_file_actions_addopen: %s", strerror(err));
}
- if (posix_spawn_file_actions_adddup2(&action, output_pipe[1], 1) != 0)
- Fatal("posix_spawn_file_actions_adddup2: %s", strerror(errno));
- if (posix_spawn_file_actions_adddup2(&action, output_pipe[1], 2) != 0)
- Fatal("posix_spawn_file_actions_adddup2: %s", strerror(errno));
- if (posix_spawn_file_actions_addclose(&action, output_pipe[1]) != 0)
- Fatal("posix_spawn_file_actions_addclose: %s", strerror(errno));
+ err = posix_spawn_file_actions_adddup2(&action, output_pipe[1], 1);
+ if (err != 0)
+ Fatal("posix_spawn_file_actions_adddup2: %s", strerror(err));
+ err = posix_spawn_file_actions_adddup2(&action, output_pipe[1], 2);
+ if (err != 0)
+ Fatal("posix_spawn_file_actions_adddup2: %s", strerror(err));
+ err = posix_spawn_file_actions_addclose(&action, output_pipe[1]);
+ if (err != 0)
+ Fatal("posix_spawn_file_actions_addclose: %s", strerror(err));
// In the console case, output_pipe is still inherited by the child and
// closed when the subprocess finishes, which then notifies ninja.
}
@@ -98,8 +106,9 @@ bool Subprocess::Start(SubprocessSet* set, const string& command) {
flags |= POSIX_SPAWN_USEVFORK;
#endif
- if (posix_spawnattr_setflags(&attr, flags) != 0)
- Fatal("posix_spawnattr_setflags: %s", strerror(errno));
+ err = posix_spawnattr_setflags(&attr, flags);
+ if (err != 0)
+ Fatal("posix_spawnattr_setflags: %s", strerror(err));
const char* spawned_args[] = { "/bin/sh", "-c", command.c_str(), NULL };
if (posix_spawn(&pid_, "/bin/sh", &action, &attr,
--
2.14.2