changeset 213:d4ef88a663b2

dev/ninja: initial import, closes #1089
author David Demelier <markand@malikania.fr>
date Tue, 19 Mar 2019 21:10:29 +0100
parents bf67dd1caa1e
children ab744307e379
files dev/ninja/musl.patch dev/ninja/ninja.sh
diffstat 2 files changed, 77 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dev/ninja/musl.patch	Tue Mar 19 21:10:29 2019 +0100
@@ -0,0 +1,39 @@
+2ff54ad7478a90bd75c91e434236a Mon Sep 17 00:00:00 2001
+From: makepost <makepost@firemail.cc>
+Date: Mon, 24 Dec 2018 03:13:16 +0200
+Subject: [PATCH] Use st_mtim if st_mtime is macro, fix #1510
+
+In POSIX.1-2008, sys_stat has a st_mtim member and a st_mtime backward
+compatibility macro. Should help avoid hardcoding platform detection.
+---
+ src/disk_interface.cc | 14 ++++----------
+ 1 file changed, 4 insertions(+), 10 deletions(-)
+
+diff --git a/src/disk_interface.cc b/src/disk_interface.cc
+index d4c2fb087..dc297c449 100644
+--- src/disk_interface.cc
++++ /src/disk_interface.cc
+@@ -202,19 +202,13 @@ TimeStamp RealDiskInterface::Stat(const string& path, string* err) const {
+   // that it doesn't exist.
+   if (st.st_mtime == 0)
+     return 1;
+-#if defined(__APPLE__) && !defined(_POSIX_C_SOURCE)
++#if defined(_AIX)
++  return (int64_t)st.st_mtime * 1000000000LL + st.st_mtime_n;
++#elif defined(__APPLE__)
+   return ((int64_t)st.st_mtimespec.tv_sec * 1000000000LL +
+           st.st_mtimespec.tv_nsec);
+-#elif (_POSIX_C_SOURCE >= 200809L || _XOPEN_SOURCE >= 700 || defined(_BSD_SOURCE) || defined(_SVID_SOURCE) || \
+-       defined(__BIONIC__) || (defined (__SVR4) && defined (__sun)) || defined(__FreeBSD__))
+-  // For glibc, see "Timestamp files" in the Notes of http://www.kernel.org/doc/man-pages/online/pages/man2/stat.2.html
+-  // newlib, uClibc and musl follow the kernel (or Cygwin) headers and define the right macro values above.
+-  // For bsd, see https://github.com/freebsd/freebsd/blob/master/sys/sys/stat.h and similar
+-  // For bionic, C and POSIX API is always enabled.
+-  // For solaris, see https://docs.oracle.com/cd/E88353_01/html/E37841/stat-2.html.
++#elif defined(st_mtime) // A macro, so we're likely on modern POSIX.
+   return (int64_t)st.st_mtim.tv_sec * 1000000000LL + st.st_mtim.tv_nsec;
+-#elif defined(_AIX)
+-  return (int64_t)st.st_mtime * 1000000000LL + st.st_mtime_n;
+ #else
+   return (int64_t)st.st_mtime * 1000000000LL + st.st_mtimensec;
+ #endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dev/ninja/ninja.sh	Tue Mar 19 21:10:29 2019 +0100
@@ -0,0 +1,38 @@
+#!/bin/sh
+#
+# Copyright (c) 2019 David Demelier <markand@malikania.fr>
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+#
+
+PKGNAME=ninja
+PKGVERSION=1.9.0
+PKGREVISION=1
+PKGLICENSE="APACHE20"
+PKGSUMMARY="fast build system"
+PKGDOWNLOAD="https://github.com/martine/ninja/archive/v$PKGVERSION.tar.gz"
+
+build()
+{
+	rm -rf $PKGNAME-$PKGVERSION
+	tar xvaf v$PKGVERSION.tar.gz
+	pushd $PKGNAME-$PKGVERSION
+
+	# https://git.alpinelinux.org/aports/tree/main/ninja
+	patch -p1 < ../musl.patch
+	python3 ./configure.py --bootstrap
+	install -Dm0755 ninja $DESTDIR/usr/bin/ninja
+
+	popd
+	rm -rf $PKGNAME-$PKGVERSION
+}