Date: Tue, 20 Apr 2021 06:59:35 GMT From: Tobias Kortkamp <tobik@FreeBSD.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org Subject: git: a91d65363fe8 - main - Mk/Uses/ninja.mk: Add support for devel/samurai (D29353) Message-ID: <202104200659.13K6xZnl026714@gitrepo.freebsd.org>
next in thread | raw e-mail | index | archive | help
The branch main has been updated by tobik: URL: https://cgit.FreeBSD.org/ports/commit/?id=a91d65363fe8aa72bdf427bb639b0fe258ee7c01 commit a91d65363fe8aa72bdf427bb639b0fe258ee7c01 Author: Tobias Kortkamp <tobik@FreeBSD.org> AuthorDate: 2021-04-06 07:23:13 +0000 Commit: Tobias Kortkamp <tobik@FreeBSD.org> CommitDate: 2021-04-20 06:57:34 +0000 Mk/Uses/ninja.mk: Add support for devel/samurai (D29353) Samurai is a Ninja-compatible build tool with fewer dependencies than Ninja. Hook it to the framework via a new NINJA_DEFAULT. This also adds %p to NINJA_STATUS to make Ninja or Samurai print the percentage of completed jobs to make it easier to eyeball how much of the build is done. PR: 254678 Exp-run by: antoine --- Mk/Uses/ninja.mk | 61 +++++++++++++++++++++++++++++++++++++++---- Mk/bsd.default-versions.mk | 4 ++- devel/jiri/Makefile | 5 ++-- devel/meson/Makefile | 3 +-- devel/tinygo/Makefile | 5 ++-- graphics/py-h3/Makefile | 3 +-- japanese/mozc-server/Makefile | 7 +++-- lang/mono6.8/Makefile | 2 +- lang/rust-bootstrap/Makefile | 3 +-- lang/rust/Makefile | 5 ++-- math/py-pdal/Makefile | 5 ++-- math/sage/Makefile | 8 +++--- multimedia/handbrake/Makefile | 4 +-- sysutils/fluxengine/Makefile | 4 +-- www/deno/Makefile | 4 +-- www/qt5-webengine/Makefile | 3 +-- 16 files changed, 84 insertions(+), 42 deletions(-) diff --git a/Mk/Uses/ninja.mk b/Mk/Uses/ninja.mk index e67d6e488841..6f71484f1ec4 100644 --- a/Mk/Uses/ninja.mk +++ b/Mk/Uses/ninja.mk @@ -2,26 +2,77 @@ # # Feature: ninja # Usage: USES=ninja +# Valid ARGS: build, make (default), run +# +# build add a build dependency on ninja +# make use ninja for the build instead of make, implies "build" +# run add a run dependency on ninja # # MAINTAINER: portmgr@FreeBSD.org .if !defined(_INCLUDE_USES_NINJA_MK) _INCLUDE_USES_NINJA_MK= yes -.if !empty(ninja_ARGS) -IGNORE= Incorrect 'USES+= ninja:${ninja_ARGS}' ninja takes no arguments +_valid_ARGS= build make run + +.for _arg in ${ninja_ARGS} +. if empty(_valid_ARGS:M${_arg}) +IGNORE= 'USES+= ninja:${ninja_ARGS}' usage: argument [${_arg}] is not recognized +. endif +.endfor + +.if empty(ninja_ARGS) +ninja_ARGS+= make .endif -MAKE_ARGS+= -v +.if ${ninja_ARGS:Mmake} +ninja_ARGS+= build +.endif + +.if ${NINJA_DEFAULT} == ninja +NINJA_CMD= ninja +_NINJA_PORT= devel/ninja +.elif ${NINJA_DEFAULT} == samurai +NINJA_CMD= samu +_NINJA_PORT= devel/samurai +MAKE_ENV+= SAMUFLAGS="-v -j${MAKE_JOBS_NUMBER}" +. if ${ninja_ARGS:Mbuild} && !${BINARY_ALIAS:U:Mninja=*} +# Cmake and Meson have native support for Samurai and detect and +# use it when Ninja is not available in the build environment. The +# alias is needed for other ports which call Ninja directly and do +# not fall back to Samurai. There should be no harm in providing it +# generally. +BINARY_ALIAS+= ninja=samu +. endif +.else +IGNORE= invalid DEFAULT_VERSIONS+=ninja=${NINJA_DEFAULT} +.endif -BUILD_DEPENDS+= ninja:devel/ninja +.if ${ninja_ARGS:Mbuild} +BUILD_DEPENDS+= ${NINJA_CMD}:${_NINJA_PORT} +# Humanize build log and include percentage of completed jobs %p in it. +# See samu(1) or the Ninja manual. +MAKE_ENV+= NINJA_STATUS="[%p %s/%t] " +.endif +.if ${ninja_ARGS:Mmake} +. if ${NINJA_DEFAULT} == ninja +# samu does not support GNU-style args, so we cannot just append +# -v last. samu gets this via SAMUFLAGS above but ninja does not +# support an equivalent environment variable. +MAKE_ARGS+= -v +. endif CMAKE_ARGS+= -GNinja MAKEFILE= -MAKE_CMD= ninja +MAKE_CMD= ${NINJA_CMD} MAKE_FLAGS= # Set a minimal job of 1 _MAKE_JOBS= -j${MAKE_JOBS_NUMBER} _DESTDIR_VIA_ENV= yes +.endif + +.if ${ninja_ARGS:Mrun} +RUN_DEPENDS+= ${NINJA_CMD}:${_NINJA_PORT} +.endif .endif diff --git a/Mk/bsd.default-versions.mk b/Mk/bsd.default-versions.mk index 1d0176f8a267..9e41c44e3ef5 100644 --- a/Mk/bsd.default-versions.mk +++ b/Mk/bsd.default-versions.mk @@ -18,7 +18,7 @@ _INCLUDE_BSD_DEFAULT_VERSIONS_MK= yes LOCALBASE?= /usr/local .for lang in APACHE BDB COROSYNC EMACS FIREBIRD FORTRAN FPC GCC GHOSTSCRIPT \ - IMAGEMAGICK JAVA LAZARUS LIBRSVG2 LINUX LLVM LUA MYSQL PERL5 \ + IMAGEMAGICK JAVA LAZARUS LIBRSVG2 LINUX LLVM LUA MYSQL NINJA PERL5 \ PGSQL PHP PYTHON PYTHON2 PYTHON3 RUBY RUST SAMBA SSL TCLTK VARNISH .if defined(${lang}_DEFAULT) ERROR+= "The variable ${lang}_DEFAULT is set and it should only be defined through DEFAULT_VERSIONS+=${lang:tl}=${${lang}_DEFAULT} in /etc/make.conf" @@ -81,6 +81,8 @@ LUA_DEFAULT?= 5.2 MONO_DEFAULT= 5.10 # Possible values: 5.5, 5.6, 5.7, 8.0, 10.3m, 10.4m, 10.5m, 5.5p, 5.6p, 5.7p, 5.6w, 5.7w MYSQL_DEFAULT?= 5.7 +# Possible values: ninja, samurai +NINJA_DEFAULT?= ninja # Possible values: 5.28, 5.30, 5.32, devel .if !exists(${LOCALBASE}/bin/perl) || (!defined(_PORTS_ENV_CHECK) && \ defined(PACKAGE_BUILDING)) diff --git a/devel/jiri/Makefile b/devel/jiri/Makefile index f1fb3cc25a76..ba8c3900e931 100644 --- a/devel/jiri/Makefile +++ b/devel/jiri/Makefile @@ -11,11 +11,10 @@ COMMENT= Tool for multi-repo development LICENSE= BSD3CLAUSE LICENSE_FILE= ${WRKSRC}/LICENSE -BUILD_DEPENDS= cmake:devel/cmake \ - ninja:devel/ninja +BUILD_DEPENDS= cmake:devel/cmake RUN_DEPENDS= git:devel/git -USES= go:modules +USES= go:modules ninja:build GITHASH= 1eee1043d12d1baabae7f2466cc0b1646395e32c TIMESTAMP= 2020-08-28T00:00:00.000000 diff --git a/devel/meson/Makefile b/devel/meson/Makefile index f80ece912514..8a25e36d64ba 100644 --- a/devel/meson/Makefile +++ b/devel/meson/Makefile @@ -11,10 +11,9 @@ COMMENT= High performance build system LICENSE= APACHE20 LICENSE_FILE= ${WRKSRC}/COPYING -RUN_DEPENDS= ninja:devel/ninja TEST_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pytest-xdist>0:devel/py-pytest-xdist@${PY_FLAVOR} -USES= python:3.6+ shebangfix +USES= ninja:run python:3.6+ shebangfix USE_PYTHON= autoplist distutils noflavors SHEBANG_FILES= mesonbuild/rewriter.py \ mesonbuild/scripts/cmake_run_ctgt.py diff --git a/devel/tinygo/Makefile b/devel/tinygo/Makefile index 6b70ccdfcc2e..ca619d83b780 100644 --- a/devel/tinygo/Makefile +++ b/devel/tinygo/Makefile @@ -9,11 +9,10 @@ COMMENT= Go compiler for small places LICENSE= BSD3CLAUSE LICENSE_FILE= ${WRKSRC}/LICENSE -BUILD_DEPENDS= cmake:devel/cmake \ - ninja:devel/ninja +BUILD_DEPENDS= cmake:devel/cmake TEST_DEPENDS= qemu-system-arm:emulators/qemu -USES= gmake go:modules,run python:build +USES= gmake go:modules,run ninja:build python:build USE_GITHUB= yes GH_ACCOUNT= tinygo-org diff --git a/graphics/py-h3/Makefile b/graphics/py-h3/Makefile index b859669b8d85..09a9dccd838f 100644 --- a/graphics/py-h3/Makefile +++ b/graphics/py-h3/Makefile @@ -14,13 +14,12 @@ LICENSE_FILE= ${WRKSRC}/LICENSE BUILD_DEPENDS= cmake:devel/cmake \ h3>=${PORTVERSION:R}:graphics/h3 \ - ninja:devel/ninja \ ${PYTHON_PKGNAMEPREFIX}scikit-build>=0:devel/py-scikit-build@${PY_FLAVOR} LIB_DEPENDS= libh3.so:graphics/h3 TEST_DEPENDS= ${PYTHON_PKGNAMEPREFIX}numpy>=0,1:math/py-numpy@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}pytest>=0:devel/py-pytest@${PY_FLAVOR} -USES= localbase:ldflags python:3.6+ +USES= localbase:ldflags ninja:build python:3.6+ USE_PYTHON= autoplist concurrent cython distutils CFLAGS+= -I${LOCALBASE}/include/h3 diff --git a/japanese/mozc-server/Makefile b/japanese/mozc-server/Makefile index 9f4c90dcbef7..1f575a8fcc9e 100644 --- a/japanese/mozc-server/Makefile +++ b/japanese/mozc-server/Makefile @@ -9,8 +9,7 @@ CATEGORIES= japanese MAINTAINER= hrs@FreeBSD.org COMMENT?= Mozc Japanese Input Method, Server -BUILD_DEPENDS= ninja:devel/ninja \ - ${PYTHON_PKGNAMEPREFIX}gyp>=20200512:devel/py-gyp@${PY_FLAVOR} +BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}gyp>=20200512:devel/py-gyp@${PY_FLAVOR} EXTRACT_DEPENDS=${PYTHON_CMD}:${PYTHON_PORTSDIR} LIB_DEPENDS= libprotobuf.so:devel/protobuf \ libzinnia.so:japanese/zinnia @@ -25,8 +24,8 @@ USE_GITHUB= yes GH_ACCOUNT= hrs-allbsd GH_TUPLE= hiroyuki-komatsu:japanese-usage-dictionary:e5b3425:udic -USES= compiler:c++11-lang pkgconfig gmake \ - tar:bzip2 python:3.5+,build shebangfix +USES= compiler:c++11-lang gmake ninja:build pkgconfig \ + python:3.5+,build shebangfix tar:bzip2 SHEBANG_FILES= src/build_mozc.py BUILD_WRKSRC= ${WRKSRC}/src diff --git a/lang/mono6.8/Makefile b/lang/mono6.8/Makefile index e9d5e9da9746..07ec0a3d15a7 100644 --- a/lang/mono6.8/Makefile +++ b/lang/mono6.8/Makefile @@ -79,7 +79,7 @@ MONODEV_CONFIGURE_ON= --enable-icall-symbol-map --enable-icall-export --with-cra NINJA_DESC= Use ninja to build wherever possible NINJA_CONFIGURE_ON= ninja -NINJA_BUILD_DEPENDS= ninja>0:devel/ninja +NINJA_USES= ninja:build NLS_DESC= NLS Localization Support NLS_CONFIGURE_OFF= --disable-nls diff --git a/lang/rust-bootstrap/Makefile b/lang/rust-bootstrap/Makefile index 883cc5e2144c..4fe3721243c1 100644 --- a/lang/rust-bootstrap/Makefile +++ b/lang/rust-bootstrap/Makefile @@ -29,7 +29,6 @@ ONLY_FOR_ARCHS_REASON= untested on other archs BUILD_DEPENDS= cmake:devel/cmake \ gmake:devel/gmake \ - ninja:devel/ninja \ rust>=${PORTVERSION}:lang/rust FLAVORS= aarch64 amd64 armv6 armv7 i386 powerpc64_elfv1 powerpc64_elfv2 powerpc64le @@ -46,7 +45,7 @@ powerpc64_elfv1_BUILD_DEPENDS= powerpc64-gcc9>0:devel/freebsd-gcc9@powerpc64 powerpc64_elfv2_PKGNAMEPREFIX= powerpc64-elfv2- powerpc64le_PKGNAMEPREFIX= powerpc64le- -USES= perl5 python:3.6+,build tar:xz +USES= ninja:build perl5 python:3.6+,build tar:xz .if ${FLAVOR} == powerpc64_elfv1 USE_GCC= 9:build .endif diff --git a/lang/rust/Makefile b/lang/rust/Makefile index 87c03cd4d9db..f7ad497453a1 100644 --- a/lang/rust/Makefile +++ b/lang/rust/Makefile @@ -28,11 +28,10 @@ IGNORE_FreeBSD_11_powerpc64= is missing a bootstrap for FreeBSD 11.x powerpc64 ONLY_FOR_ARCHS?= aarch64 amd64 armv6 armv7 i386 powerpc64 powerpc64le ONLY_FOR_ARCHS_REASON?= requires prebuilt bootstrap compiler -BUILD_DEPENDS= cmake:devel/cmake \ - ninja:devel/ninja +BUILD_DEPENDS= cmake:devel/cmake LIB_DEPENDS= libcurl.so:ftp/curl -USES= pkgconfig python:3.6+,build ssl tar:xz +USES= ninja:build pkgconfig python:3.6+,build ssl tar:xz MAKE_ENV= DESTDIR=${STAGEDIR} \ OPENSSL_DIR="${OPENSSLBASE}" \ diff --git a/math/py-pdal/Makefile b/math/py-pdal/Makefile index 5c686f8e7266..3d555bc787d9 100644 --- a/math/py-pdal/Makefile +++ b/math/py-pdal/Makefile @@ -12,13 +12,12 @@ LICENSE= BSD3CLAUSE BUILD_DEPENDS= ${PYNUMPY} \ ${PYTHON_PKGNAMEPREFIX}scikit-build>0:devel/py-scikit-build@${PY_FLAVOR} \ - ${LOCALBASE}/bin/cmake:devel/cmake \ - ${LOCALBASE}/bin/ninja:devel/ninja + cmake:devel/cmake LIB_DEPENDS= libpdal_base.so:math/pdal RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}packaging>=0:devel/py-packaging@${PY_FLAVOR} \ ${PYNUMPY} -USES= compiler:c++11-lang python:3.6+ +USES= compiler:c++11-lang ninja:build python:3.6+ USE_PYTHON= autoplist cython distutils post-install: diff --git a/math/sage/Makefile b/math/sage/Makefile index 300a38dd406c..35b1253e5192 100644 --- a/math/sage/Makefile +++ b/math/sage/Makefile @@ -142,7 +142,6 @@ BUILD_DEPENDS= bash:shells/bash \ pari-nftables>0:math/pari_nftables \ pari-seadata>0:math/pari_seadata\ QuadraticSieve:math/flintqs \ - ninja:devel/ninja \ gpatch:devel/patch \ rubiks>0:math/rubiks \ sympow:math/sympow \ @@ -338,9 +337,10 @@ RUN_DEPENDS= bash:shells/bash \ yasm:devel/yasm \ pixz:archivers/pixz -USES= autoreconf blaslapack:openblas compiler:c++11-lib fortran \ - gettext gmake gnome iconv jpeg libtool localbase ncurses perl5 \ - pkgconfig python:3.7+ readline shebangfix sqlite tk xorg +USES= autoreconf blaslapack:openblas compiler:c++11-lib fortran \ + gettext gmake gnome iconv jpeg libtool localbase ncurses \ + ninja:build perl5 pkgconfig python:3.7+ readline shebangfix \ + sqlite tk xorg USE_TEX= latex:build pdftex:build tex:build USE_XORG= x11 xext xscrnsaver USE_GNOME= cairo glib20 pango diff --git a/multimedia/handbrake/Makefile b/multimedia/handbrake/Makefile index beb28467fd9c..82dd220b86d6 100644 --- a/multimedia/handbrake/Makefile +++ b/multimedia/handbrake/Makefile @@ -37,8 +37,8 @@ LIB_DEPENDS= libdbus-1.so:devel/dbus \ libopus.so:audio/opus \ libjansson.so:devel/jansson -USES= autoreconf:build compiler:c11 gmake iconv \ - libtool:build localbase:ldflags pkgconfig python:3.6+,build +USES= autoreconf:build compiler:c11 gmake iconv libtool:build \ + localbase:ldflags ninja:build pkgconfig python:3.6+,build CONTRIB_FILES= fdk-aac-2.0.1.tar.gz \ ffmpeg-4.2.3.tar.bz2 \ diff --git a/sysutils/fluxengine/Makefile b/sysutils/fluxengine/Makefile index 745fba2af39b..f59f46613c09 100644 --- a/sysutils/fluxengine/Makefile +++ b/sysutils/fluxengine/Makefile @@ -8,9 +8,7 @@ COMMENT= USB floppy disk interface for reading and writing non-PC disk formats LICENSE= MIT LICENSE_FILE= ${WRKSRC}/COPYING.md -BUILD_DEPENDS= ninja:devel/ninja - -USES= pkgconfig gmake compiler:gcc-c++11-lib sqlite +USES= compiler:gcc-c++11-lib gmake ninja:build pkgconfig sqlite USE_GITHUB= yes GH_ACCOUNT= davidgiven diff --git a/www/deno/Makefile b/www/deno/Makefile index 7b49f38716d7..304301d68144 100644 --- a/www/deno/Makefile +++ b/www/deno/Makefile @@ -15,7 +15,7 @@ BUILD_DEPENDS= binutils>0:devel/binutils \ gn:devel/gn \ libunwind>0:devel/libunwind -USES= cargo ninja pkgconfig:build python:3.6+,build +USES= cargo ninja:build pkgconfig:build python:3.6+,build USE_GITHUB= yes GH_ACCOUNT= denoland @@ -27,7 +27,7 @@ RUSTY_VERS= 0.21.0 CARGO_ENV+= CLANG_BASE_PATH=/usr \ GN=${PREFIX}/bin/gn \ - NINJA=${PREFIX}/bin/ninja \ + NINJA=${NINJA_CMD} \ V8_FROM_SOURCE=1 RUSTFLAGS+= -C link-arg=-fuse-ld=lld diff --git a/www/qt5-webengine/Makefile b/www/qt5-webengine/Makefile index 95e5dbb87031..1fd7501c7334 100644 --- a/www/qt5-webengine/Makefile +++ b/www/qt5-webengine/Makefile @@ -24,7 +24,6 @@ MAINTAINER= kde@FreeBSD.org COMMENT= Qt 5 library to render web content BUILD_DEPENDS= bison:devel/bison \ - ninja:devel/ninja \ yasm:devel/yasm \ ${LOCALBASE}/include/linux/input.h:devel/evdev-proto \ ${LOCALBASE}/include/linux/videodev2.h:multimedia/v4l_compat @@ -72,7 +71,7 @@ SNDIO_VARS_OFF= QMAKE_CONFIGURE_ARGS+=-no-sndio # We pass `norecursive' to USES=qmake because src/plugins/plugins.pro checks # whether webenginewidgets is available, which fails when qmake processes all # .pro files at once. -USES= gl gnome gperf jpeg python:2.7,build pkgconfig \ +USES= gl gnome gperf jpeg ninja:build pkgconfig python:2.7,build \ qmake:norecursive,outsource qt-dist:5,webengine shebangfix xorg USE_GL= gl USE_GNOME= glib20 libxml2 libxslt
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202104200659.13K6xZnl026714>