diff options
author | Sam James <sam@gentoo.org> | 2024-07-03 03:21:41 +0100 |
---|---|---|
committer | Sam James <sam@gentoo.org> | 2024-07-03 03:27:10 +0100 |
commit | b83f3dd72d19efe734aae9862400ba4f38b17a57 (patch) | |
tree | 774518a1f83afb4b4031110c43f9cbeb7c92f31c /dev-build | |
parent | games-util/cartridges: add missing dependencies (diff) | |
download | gentoo-b83f3dd72d19efe734aae9862400ba4f38b17a57.tar.gz gentoo-b83f3dd72d19efe734aae9862400ba4f38b17a57.tar.bz2 gentoo-b83f3dd72d19efe734aae9862400ba4f38b17a57.zip |
dev-build/ninja: wire up tests again
Bug: https://bugs.gentoo.org/929221
Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'dev-build')
-rw-r--r-- | dev-build/ninja/Manifest | 1 | ||||
-rw-r--r-- | dev-build/ninja/files/ninja-1.12.1-restore-tests-bootstrap.patch | 135 | ||||
-rw-r--r-- | dev-build/ninja/ninja-1.12.1.ebuild | 39 | ||||
-rw-r--r-- | dev-build/ninja/ninja-9999.ebuild | 38 |
4 files changed, 201 insertions, 12 deletions
diff --git a/dev-build/ninja/Manifest b/dev-build/ninja/Manifest index 31bb62aaf6a5..621e98b62756 100644 --- a/dev-build/ninja/Manifest +++ b/dev-build/ninja/Manifest @@ -1,2 +1,3 @@ +DIST gtest-1.14.0.tar.gz 867764 BLAKE2B c457f55ac572b9fb1553eee3df7eeeaf1e7dd2c3d747dd5e90dd279038fa5c71bb7b7d9ba1cf7e6143898b2a1d24d100584bd2a48ded41a426870c4825eec1b2 SHA512 765c326ccc1b87a01027385e69238266e356361cd4ee3e18e3c9d137a5d11fa5d657c164d02dd1be8fe693c8e10f2b580588dbfa57d27f070e2750f50d3e662c DIST ninja-1.11.1.tar.gz 229479 BLAKE2B c96cf7c319b7abd65f644465688d256f8b3a576c4616d0c63852e25dd0dc5f63c66708d429d8dddb6228502eb147211a86a5dd369b80ec2228902b370d2343e5 SHA512 1bca38877c70ee6613f347ffccef5adc02ba0a3947c62ae004ea97f918442b5a3de92378e4f820ae2a7676bc7609d25fbc7d41f6cfb3a61e5e4b26ec3639e403 DIST ninja-1.12.1.tar.gz 240483 BLAKE2B 915545888cbd7d9e6e7e4fb0bad42f6c36ecef2de93356966541de0f8f4315e59e47cf20f189de5de11ba2a038488c7964ec709bad8868488cc03524a88483f4 SHA512 d6e6f0e89a4844a69069ff0c7cefc07704a41c7b0c062a57534de87decdde63e27928147b321111b806aa7efa1061f031a1319b074391db61b0cbdccf096954c diff --git a/dev-build/ninja/files/ninja-1.12.1-restore-tests-bootstrap.patch b/dev-build/ninja/files/ninja-1.12.1-restore-tests-bootstrap.patch new file mode 100644 index 000000000000..94aa8ab5b397 --- /dev/null +++ b/dev-build/ninja/files/ninja-1.12.1-restore-tests-bootstrap.patch @@ -0,0 +1,135 @@ +https://bugs.gentoo.org/929221 +https://github.com/ninja-build/ninja/issues/2447 +https://github.com/ninja-build/ninja/commit/afcd4a146fb82843f6ff695f89504ce4ca65ddfd + +From afcd4a146fb82843f6ff695f89504ce4ca65ddfd Mon Sep 17 00:00:00 2001 +From: David 'Digit' Turner <digit+github@google.com> +Date: Sun, 12 May 2024 23:45:28 +0200 +Subject: [PATCH] configure.py: Support --gtest-source-dir to build tests. + +Allow the Ninja build plan generated by configure.py to +build `ninja_test` by compiling GoogleTest from source if +the path to the library if passed through the new option +`--gtest-source-dir` or the GTEST_SOURCE_DIR environment +variable. + +For simplicity, probing for an installed version of the +library, and linking to it, is not supported (use the +CMake build for this). + +This also removes the obsolete `--gtest-dir` option. + +Fixes #2447 +--- + configure.py | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++- + 2 files changed, 95 insertions(+), 1 deletion(-) + +diff --git a/configure.py b/configure.py +index f9e49f9cdf..2b16618c43 100755 +--- a/configure.py ++++ b/configure.py +@@ -223,7 +223,10 @@ def _run_command(self, cmdline: str) -> None: + parser.add_option('--profile', metavar='TYPE', + choices=profilers, + help='enable profiling (' + '/'.join(profilers) + ')',) +-parser.add_option('--with-gtest', metavar='PATH', help='ignored') ++parser.add_option('--gtest-source-dir', metavar='PATH', ++ help='Path to GoogleTest source directory. If not provided ' + ++ 'GTEST_SOURCE_DIR will be probed in the environment. ' + ++ 'Tests will not be built without a value.') + parser.add_option('--with-python', metavar='EXE', + help='use EXE as the Python interpreter', + default=os.path.basename(sys.executable)) +@@ -435,6 +438,7 @@ def shell_escape(str: str) -> str: + if 'LDFLAGS' in configure_env: + ldflags.append(configure_env['LDFLAGS']) + n.variable('ldflags', ' '.join(shell_escape(flag) for flag in ldflags)) ++ + n.newline() + + if platform.is_msvc(): +@@ -592,6 +596,83 @@ def has_re2c() -> bool: + # build.ninja file. + n = ninja_writer + ++# Build the ninja_test executable only if the GTest source directory ++# is provided explicitly. Either from the environment with GTEST_SOURCE_DIR ++# or with the --gtest-source-dir command-line option. ++# ++# Do not try to look for an installed binary version, and link against it ++# because doing so properly is platform-specific (use the CMake build for ++# this). ++if options.gtest_source_dir: ++ gtest_src_dir = options.gtest_source_dir ++else: ++ gtest_src_dir = os.environ.get('GTEST_SOURCE_DIR') ++ ++if gtest_src_dir: ++ # Verify GoogleTest source directory, and add its include directory ++ # to the global include search path (even for non-test sources) to ++ # keep the build plan generation simple. ++ gtest_all_cc = os.path.join(gtest_src_dir, 'googletest', 'src', 'gtest-all.cc') ++ if not os.path.exists(gtest_all_cc): ++ print('ERROR: Missing GoogleTest source file: %s' % gtest_all_cc) ++ sys.exit(1) ++ ++ n.comment('Tests all build into ninja_test executable.') ++ ++ # Test-specific version of cflags, must include the GoogleTest ++ # include directory. Also GoogleTest can only build with a C++14 compiler. ++ test_cflags = [f.replace('std=c++11', 'std=c++14') for f in cflags] ++ test_cflags.append('-I' + os.path.join(gtest_src_dir, 'googletest', 'include')) ++ ++ test_variables = [('cflags', test_cflags)] ++ if platform.is_msvc(): ++ test_variables += [('pdb', 'ninja_test.pdb')] ++ ++ test_names = [ ++ 'build_log_test', ++ 'build_test', ++ 'clean_test', ++ 'clparser_test', ++ 'depfile_parser_test', ++ 'deps_log_test', ++ 'disk_interface_test', ++ 'dyndep_parser_test', ++ 'edit_distance_test', ++ 'graph_test', ++ 'json_test', ++ 'lexer_test', ++ 'manifest_parser_test', ++ 'ninja_test', ++ 'state_test', ++ 'string_piece_util_test', ++ 'subprocess_test', ++ 'test', ++ 'util_test', ++ ] ++ if platform.is_windows(): ++ test_names += [ ++ 'includes_normalize_test', ++ 'msvc_helper_test', ++ ] ++ ++ objs = [] ++ for name in test_names: ++ objs += cxx(name, variables=test_variables) ++ ++ # Build GTest as a monolithic source file. ++ # This requires one extra include search path, so replace the ++ # value of 'cflags' in our list. ++ gtest_all_variables = test_variables[1:] + [ ++ ('cflags', test_cflags + ['-I' + os.path.join(gtest_src_dir, 'googletest') ]), ++ ] ++ # Do not use cxx() directly to ensure the object file is under $builddir. ++ objs += n.build(built('gtest_all' + objext), 'cxx', gtest_all_cc, variables=gtest_all_variables) ++ ++ ninja_test = n.build(binary('ninja_test'), 'link', objs, implicit=ninja_lib, ++ variables=[('libs', libs)]) ++ n.newline() ++ all_targets += ninja_test ++ + n.comment('Ancillary executables.') + + if platform.is_aix() and '-maix64' not in ldflags: + diff --git a/dev-build/ninja/ninja-1.12.1.ebuild b/dev-build/ninja/ninja-1.12.1.ebuild index b387ddf90c06..1d8f3d0a0b09 100644 --- a/dev-build/ninja/ninja-1.12.1.ebuild +++ b/dev-build/ninja/ninja-1.12.1.ebuild @@ -15,12 +15,16 @@ else KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" fi +GTEST_VER=1.14.0 +SRC_URI+=" test? ( https://github.com/google/googletest/archive/refs/tags/v${GTEST_VER}.tar.gz -> gtest-${GTEST_VER}.tar.gz )" + DESCRIPTION="A small build system similar to make" HOMEPAGE="https://ninja-build.org/" LICENSE="Apache-2.0" SLOT="0" -IUSE="doc" +IUSE="doc test" +RESTRICT="!test? ( test )" BDEPEND=" ${PYTHON_DEPS} @@ -36,14 +40,20 @@ PDEPEND=" app-alternatives/ninja " +PATCHES=( + "${FILESDIR}"/ninja-cflags.patch + "${FILESDIR}"/${P}-restore-tests-bootstrap.patch +) + pkg_setup() { : } -src_prepare() { - local PATCHES=( - "${FILESDIR}"/ninja-cflags.patch - ) +src_unpack() { + if [[ ${PV} == 9999 ]] ; then + git-r3_src_unpack + fi + default } @@ -55,7 +65,15 @@ bootstrap() { local -x CXXFLAGS="${BUILD_CXXFLAGS} -D_FILE_OFFSET_BITS=64" local -x LDFLAGS=${BUILD_LDFLAGS} fi - edo ${EPYTHON} configure.py --with-python=python --bootstrap --verbose + + local bootstrap_args=( + --with-python=python + --bootstrap + --verbose + $(usev test --gtest-source-dir="${WORKDIR}"/googletest-${GTEST_VER}) + ) + + edo ${EPYTHON} configure.py "${bootstrap_args[@]}" } src_compile() { @@ -77,6 +95,15 @@ src_compile() { fi } +src_test() { + if ! tc-is-cross-compiler; then + # Bug 485772 + ulimit -n 2048 + edo ./ninja -v ninja_test + edo ./ninja_test + fi +} + src_install() { newbin ninja{,-reference} diff --git a/dev-build/ninja/ninja-9999.ebuild b/dev-build/ninja/ninja-9999.ebuild index b387ddf90c06..1f7a8e02d01c 100644 --- a/dev-build/ninja/ninja-9999.ebuild +++ b/dev-build/ninja/ninja-9999.ebuild @@ -15,12 +15,16 @@ else KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" fi +GTEST_VER=1.14.0 +SRC_URI+=" test? ( https://github.com/google/googletest/archive/refs/tags/v${GTEST_VER}.tar.gz -> gtest-${GTEST_VER}.tar.gz )" + DESCRIPTION="A small build system similar to make" HOMEPAGE="https://ninja-build.org/" LICENSE="Apache-2.0" SLOT="0" -IUSE="doc" +IUSE="doc test" +RESTRICT="!test? ( test )" BDEPEND=" ${PYTHON_DEPS} @@ -36,14 +40,19 @@ PDEPEND=" app-alternatives/ninja " +PATCHES=( + "${FILESDIR}"/ninja-cflags.patch +) + pkg_setup() { : } -src_prepare() { - local PATCHES=( - "${FILESDIR}"/ninja-cflags.patch - ) +src_unpack() { + if [[ ${PV} == 9999 ]] ; then + git-r3_src_unpack + fi + default } @@ -55,7 +64,15 @@ bootstrap() { local -x CXXFLAGS="${BUILD_CXXFLAGS} -D_FILE_OFFSET_BITS=64" local -x LDFLAGS=${BUILD_LDFLAGS} fi - edo ${EPYTHON} configure.py --with-python=python --bootstrap --verbose + + local bootstrap_args=( + --with-python=python + --bootstrap + --verbose + $(usev test --gtest-source-dir="${WORKDIR}"/googletest-${GTEST_VER}) + ) + + edo ${EPYTHON} configure.py "${bootstrap_args[@]}" } src_compile() { @@ -77,6 +94,15 @@ src_compile() { fi } +src_test() { + if ! tc-is-cross-compiler; then + # Bug 485772 + ulimit -n 2048 + edo ./ninja -v ninja_test + edo ./ninja_test + fi +} + src_install() { newbin ninja{,-reference} |