1 |
From: orbea <orbea@××××××.net> |
2 |
|
3 |
Signed-off-by: Lars Wendler <polynomial-c@g.o> |
4 |
--- |
5 |
eclass/cmake.eclass | 10 +++++----- |
6 |
eclass/meson.eclass | 4 ++-- |
7 |
eclass/ninja-utils.eclass | 35 +++++++++++++++++++++++++++++++++-- |
8 |
3 files changed, 40 insertions(+), 9 deletions(-) |
9 |
|
10 |
diff --git a/eclass/cmake.eclass b/eclass/cmake.eclass |
11 |
index 4bd09459ea6..c0c22394a31 100644 |
12 |
--- a/eclass/cmake.eclass |
13 |
+++ b/eclass/cmake.eclass |
14 |
@@ -118,7 +118,7 @@ case ${CMAKE_MAKEFILE_GENERATOR} in |
15 |
BDEPEND="sys-devel/make" |
16 |
;; |
17 |
ninja) |
18 |
- BDEPEND="dev-util/ninja" |
19 |
+ BDEPEND="|| ( dev-util/ninja dev-util/samurai )" |
20 |
;; |
21 |
*) |
22 |
eerror "Unknown value for \${CMAKE_MAKEFILE_GENERATOR}" |
23 |
@@ -337,9 +337,9 @@ cmake_src_prepare() { |
24 |
|
25 |
# if ninja is enabled but not installed, the build could fail |
26 |
# this could happen if ninja is manually enabled (eg. make.conf) but not installed |
27 |
- if [[ ${CMAKE_MAKEFILE_GENERATOR} == ninja ]] && ! has_version -b dev-util/ninja; then |
28 |
- eerror "CMAKE_MAKEFILE_GENERATOR is set to ninja, but ninja is not installed." |
29 |
- die "Please install dev-util/ninja or unset CMAKE_MAKEFILE_GENERATOR." |
30 |
+ if [[ ${CMAKE_MAKEFILE_GENERATOR} == ninja ]] && ! has_version -b dev-util/ninja && ! has_version -b dev-util/samurai; then |
31 |
+ eerror "CMAKE_MAKEFILE_GENERATOR is set to ninja, but neither ninja or samurai are installed." |
32 |
+ die "Please install dev-util/ninja, dev-util/samurai or unset CMAKE_MAKEFILE_GENERATOR." |
33 |
fi |
34 |
|
35 |
local modules_list |
36 |
@@ -653,7 +653,7 @@ cmake_src_install() { |
37 |
|
38 |
_cmake_check_build_dir |
39 |
pushd "${BUILD_DIR}" > /dev/null || die |
40 |
- DESTDIR="${D}" ${CMAKE_MAKEFILE_GENERATOR} install "$@" || |
41 |
+ DESTDIR="${D}" eninja install "$@" || |
42 |
die "died running ${CMAKE_MAKEFILE_GENERATOR} install" |
43 |
popd > /dev/null || die |
44 |
|
45 |
diff --git a/eclass/meson.eclass b/eclass/meson.eclass |
46 |
index d0ce5adb355..ea02402aa83 100644 |
47 |
--- a/eclass/meson.eclass |
48 |
+++ b/eclass/meson.eclass |
49 |
@@ -1,4 +1,4 @@ |
50 |
-# Copyright 2017-2020 Gentoo Authors |
51 |
+# Copyright 2017-2021 Gentoo Authors |
52 |
# Distributed under the terms of the GNU General Public License v2 |
53 |
|
54 |
# @ECLASS: meson.eclass |
55 |
@@ -55,7 +55,7 @@ if [[ -z ${_MESON_ECLASS} ]]; then |
56 |
_MESON_ECLASS=1 |
57 |
|
58 |
MESON_DEPEND=">=dev-util/meson-0.54.0 |
59 |
- >=dev-util/ninja-1.8.2 |
60 |
+ || ( >=dev-util/ninja-1.8.2 dev-util/samurai ) |
61 |
dev-util/meson-format-array |
62 |
" |
63 |
|
64 |
diff --git a/eclass/ninja-utils.eclass b/eclass/ninja-utils.eclass |
65 |
index ca8d67191dc..3b23d4c002a 100644 |
66 |
--- a/eclass/ninja-utils.eclass |
67 |
+++ b/eclass/ninja-utils.eclass |
68 |
@@ -1,4 +1,4 @@ |
69 |
-# Copyright 1999-2018 Gentoo Foundation |
70 |
+# Copyright 1999-2021 Gentoo Authors |
71 |
# Distributed under the terms of the GNU General Public License v2 |
72 |
|
73 |
# @ECLASS: ninja-utils.eclass |
74 |
@@ -27,6 +27,15 @@ case ${EAPI:-0} in |
75 |
*) die "EAPI=${EAPI} is not yet supported" ;; |
76 |
esac |
77 |
|
78 |
+# @ECLASS-VARIABLE: NINJA |
79 |
+# @PRE_INHERIT |
80 |
+# @DEFAULT_UNSET |
81 |
+# @DESCRIPTION: |
82 |
+# Specify a compatible ninja implementation to be used by eninja. |
83 |
+# At this point only "ninja" and "samu" are supported. |
84 |
+# The default is set to "ninja". |
85 |
+: ${NINJA:=ninja} |
86 |
+ |
87 |
# @ECLASS-VARIABLE: NINJAOPTS |
88 |
# @DEFAULT_UNSET |
89 |
# @DESCRIPTION: |
90 |
@@ -36,6 +45,28 @@ esac |
91 |
|
92 |
inherit multiprocessing |
93 |
|
94 |
+_ninja_to_use() { |
95 |
+ case "${NINJA}" in |
96 |
+ ninja) |
97 |
+ local ninja=dev-util/${NINJA} |
98 |
+ ;; |
99 |
+ samu) |
100 |
+ local ninja=dev-util/samurai |
101 |
+ ;; |
102 |
+ *) |
103 |
+ eerror "Unknown value for \${NINJA}" |
104 |
+ die "Value ${NINJA} is not supported" |
105 |
+ ;; |
106 |
+ esac |
107 |
+ |
108 |
+ if ! has_version -b $ninja; then |
109 |
+ eerror "Value ${NINJA} for \${NINJA} is not installed" |
110 |
+ die "Please install $ninja" |
111 |
+ fi |
112 |
+ |
113 |
+ echo ${NINJA} |
114 |
+} |
115 |
+ |
116 |
# @FUNCTION: eninja |
117 |
# @USAGE: [<args>...] |
118 |
# @DESCRIPTION: |
119 |
@@ -49,7 +80,7 @@ eninja() { |
120 |
if [[ -z ${NINJAOPTS+set} ]]; then |
121 |
NINJAOPTS="-j$(makeopts_jobs) -l$(makeopts_loadavg "${MAKEOPTS}" 0)" |
122 |
fi |
123 |
- set -- ninja -v ${NINJAOPTS} "$@" |
124 |
+ set -- "$(_ninja_to_use)" -v ${NINJAOPTS} "$@" |
125 |
echo "$@" >&2 |
126 |
"$@" || die "${nonfatal_args[@]}" "${*} failed" |
127 |
} |
128 |
-- |
129 |
2.31.1 |