Gentoo Archives: gentoo-dev

From: Lars Wendler <polynomial-c@g.o>
To: gentoo-dev@l.g.o
Cc: orbea <orbea@××××××.net>, Lars Wendler <polynomial-c@g.o>
Subject: [gentoo-dev] [PATCH] eclass: Support dev-util/samurai
Date: Fri, 09 Apr 2021 16:42:39
Message-Id: 20210409164217.22243-1-polynomial-c@gentoo.org
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