diff --git a/.gitignore b/.gitignore index 86df98c..f2ea7d9 100644 --- a/.gitignore +++ b/.gitignore @@ -2,9 +2,3 @@ /wlcs-1.1.0.tar.xz /wlcs-1.2.0.tar.xz /wlcs-1.3.0.tar.xz -/wlcs-1.4.0.tar.xz -/wlcs-1.5.0.tar.gz -/wlcs-1.6.0.tar.gz -/wlcs-1.6.1.tar.gz -/wlcs-1.7.0.tar.gz -/wlcs-1.8.1.tar.gz diff --git a/215.patch b/215.patch new file mode 100644 index 0000000..6dfbf93 --- /dev/null +++ b/215.patch @@ -0,0 +1,26 @@ +From 6aa1becb3cee328f715af76d16de544974b6646e Mon Sep 17 00:00:00 2001 +From: "Benjamin A. Beasley" +Date: Tue, 2 Nov 2021 13:40:07 -0400 +Subject: [PATCH] =?UTF-8?q?Fix=20a=20trivial=20typo=20(=E2=80=9Caid?= + =?UTF-8?q?=E2=80=9D=20for=20=E2=80=9Cand=E2=80=9D)=20in=20README.rst?= +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +--- + README.rst | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/README.rst b/README.rst +index 50f8ec1f..7656dc30 100644 +--- a/README.rst ++++ b/README.rst +@@ -25,7 +25,7 @@ happens-before ordering available. + + Instead, ``wlcs`` relies on compositors providing an integration module, + providing ``wlcs`` with API hooks to start a compositor, connect a client, +-move a window, and so on. This makes both writing aid debugging tests easier - ++move a window, and so on. This makes both writing and debugging tests easier - + the tests are (generally) in the same address space as the compositor, so there + is a consistent global clock available, it's easier to poke around in + compositor internals, and standard debugging tools can follow control flow from diff --git a/f6ff93f7b7db154b7899f415ec67677e6ddd7ff5.patch b/f6ff93f7b7db154b7899f415ec67677e6ddd7ff5.patch new file mode 100644 index 0000000..31981c6 --- /dev/null +++ b/f6ff93f7b7db154b7899f415ec67677e6ddd7ff5.patch @@ -0,0 +1,49 @@ +From f6ff93f7b7db154b7899f415ec67677e6ddd7ff5 Mon Sep 17 00:00:00 2001 +From: Victor Berger +Date: Thu, 8 Jul 2021 19:39:30 +0200 +Subject: [PATCH] Fix build when using GTest-1.11 + +Some change in GTest 1.11 headers caused a conflict on the name +`Pointer`. Removing the unconditional import of namespace `testing` +in favor of individual imports of the used items fixes it. + +cc #205 +--- + tests/pointer_constraints.cpp | 6 +++++- + tests/relative_pointer.cpp | 6 +++++- + 2 files changed, 10 insertions(+), 2 deletions(-) + +diff --git a/tests/pointer_constraints.cpp b/tests/pointer_constraints.cpp +index d306710..6ee856f 100644 +--- a/tests/pointer_constraints.cpp ++++ b/tests/pointer_constraints.cpp +@@ -24,7 +24,11 @@ + + #include + +-using namespace testing; ++using testing::AnyNumber; ++using testing::Eq; ++using testing::Ne; ++using testing::NotNull; ++ + using namespace wlcs; + + namespace +diff --git a/tests/relative_pointer.cpp b/tests/relative_pointer.cpp +index c33316c..c5c5358 100644 +--- a/tests/relative_pointer.cpp ++++ b/tests/relative_pointer.cpp +@@ -22,7 +22,11 @@ + + #include + +-using namespace testing; ++using testing::AnyNumber; ++using testing::IsTrue; ++using testing::NotNull; ++using testing::_; ++ + using namespace wlcs; + + namespace diff --git a/sources b/sources index cb94fbc..483acbf 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (wlcs-1.8.1.tar.gz) = 5a76c9a5b88ab0627300bd9a3cb63ceaf68824a15b79a605aa5fd3a9b12e2877489a7150a21da68bda21434bd947e4f0d1ecc8b6d81ab9a1faf84ee75e6d1ca2 +SHA512 (wlcs-1.3.0.tar.xz) = 3c4ffd9fa1a087fe58912792f0747884bc42bb344be07e937079d399d2bf85c0e9e445880d8e503bad0028c48ffbf2338174c3c74faee5057bf62ff7f121f0de diff --git a/wlcs.rpmlintrc b/wlcs.rpmlintrc deleted file mode 100644 index 499c66f..0000000 --- a/wlcs.rpmlintrc +++ /dev/null @@ -1,2 +0,0 @@ -# Not a real spelling error: -addFilter(r" spelling-error \('(implementors?)',") diff --git a/wlcs.spec b/wlcs.spec index 7dca8f9..9b32f5a 100644 --- a/wlcs.spec +++ b/wlcs.spec @@ -1,104 +1,98 @@ -# Lists copied from gcc.spec -# Current as of 16.0.1 (lines 83, 103, and 93, respectively). -# Note that asan and ubsan are available on all Fedora primary architectures; -# tsan is missing on i686 only. -%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64 riscv64 -%global arch_has_asan 1 -%endif -%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64 riscv64 -%global arch_has_ubsan 1 -%endif -%ifarch x86_64 ppc64 ppc64le aarch64 s390x riscv64 -%global arch_has_tsan 1 +# List copied from gcc.spec +# Current as of 11.2.1 (line 59) +# Note that this covers all Fedora primary architectures. +%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64 +%bcond_without asan +%else +%bcond_with asan %endif -# By default, enable sanitizers whenever they are available on the architecture. -%bcond asan 0%{?arch_has_asan:1} -%bcond ubsan 0%{?arch_has_ubsan:1} -%bcond tsan 0%{?arch_has_tsan:1} +# List copied from gcc.spec +# Current as of 11.2.1 (line 74) +# Note that this covers all Fedora primary architectures. +%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64 +%bcond_without ubsan +%else +%bcond_with ubsan +%endif + +# List copied from gcc.spec +# Current as of 11.2.1 (line 64) +%ifarch x86_64 ppc64 ppc64le aarch64 +%bcond_without tsan +%else +%bcond_with tsan +%endif Name: wlcs -Version: 1.8.1 +Version: 1.3.0 Release: %autorelease Summary: Wayland Conformance Test Suite -# The entire source is GPL-3.0-only, except: +# The entire source is GPLv3, except: # -# (GPL-2.0-only OR GPL-3.0-only): +# (GPLv2 or GPLv3): # - CMakeLists.txt # > Build system file that does not contribute to the licenses of the binary # RPMs # -# (LGPL-2.0-only OR LGPL-3.0-only): -# - include/geometry/* +# (LGPLv2 or LGPLv3): # - include/mutex.h # - include/shared_library.h # - src/helpers.cpp # - src/shared_library.cpp # > Since (L)GPLv2-only code is not compatible with (L)GPLv3 or (L)GPLv3+ code, # and these sources are combined with GPLv3 code, the LGPLv3 option is used -# in this package. However, we encode both options in the SPDX expression. +# in this package. # -# GPL-2.0-or-later +# GPLv2+: # - debian/* # > Not used in this package # # MIT: # - src/protocol/gtk-primary-selection.xml -# - src/protocol/input-method-unstable-v1.xml # - src/protocol/pointer-constraints-unstable-v1.xml # - src/protocol/primary-selection-unstable-v1.xml # - src/protocol/relative-pointer-unstable-v1.xml # - src/protocol/wayland.xml -# - src/protocol/wlr-virtual-pointer-unstable-v1.xml # - src/protocol/xdg-output-unstable-v1.xml # - src/protocol/xdg-shell-unstable-v6.xml # - src/protocol/xdg-shell.xml # - tests/test_bad_buffer.cpp # - tests/test_surface_events.cpp -# - tests/text_input_v3_with_input_method_v2.cpp -# - tests/wlr_virtual_pointer_v1.cpp # - tests/xdg_popup_v6.cpp # - tests/xdg_surface_stable.cpp # - tests/xdg_surface_v6.cpp # - tests/xdg_toplevel_stable.cpp # - tests/xdg_toplevel_v6.cpp -# > Files in tests/ are included in the test-suite executables and do -# contribute to the licenses of the binary RPMs. Files in src/protocol/ are +# > Files in tests/ are all test code that is not installed (so does not +# contribute to the licenses of the binary RPMs). Files in src/protocol/ are # used as inputs to “wayland-scanner” to generate C source files and headers, # and are not directly included in the binary RPMs. # -# HPND-sell-variant: -# - src/protocol/text-input-unstable-v2.xml -# > Files in src/protocol/ are used as inputs to “wayland-scanner” to generate -# C source files and headers, and are not directly included in the binary -# RPMs. -License: GPL-3.0-only AND (LGPL-2.0-only OR LGPL-3.0-only) AND MIT -SourceLicense: %{shrink: - %{license} AND - (GPL-2.0-only OR GPL-3.0-only) AND - GPL-2.0-or-later AND - HPND-sell-variant - } +# Thus, files under GPLv3 and (LGPLv2 or LGPLv3) licenses contribute to the +# installed binaries, and the effective license remains GPLv3. +License: GPLv3 URL: https://github.com/MirServer/wlcs -Source: %{url}/archive/v%{version}/wlcs-%{version}.tar.gz - -BuildSystem: cmake -# WLCS_FATAL_COMPILE_WARNINGS: makes sense for upstream CI, but too strict for -# downstream packaging -BuildOption(conf): %{shrink: - -DWLCS_BUILD_ASAN=%{?with_asan:ON}%{?!with_asan:OFF} - -DWLCS_BUILD_TSAN=%{?with_tsan:ON}%{?!with_tsan:OFF} - -DWLCS_BUILD_UBSAN=%{?with_ubsan:ON}%{?!with_ubsan:OFF} - -DWLCS_FATAL_COMPILE_WARNINGS:BOOL=OFF - } -# We have built a test suite for compositors, but we have no tests for the test -# suite, i.e., %%ctest would find no tests and there is nothing useful we could -# do in %%check. +Source0: %{url}/releases/download/v%{version}/wlcs-%{version}.tar.xz +# Backport upstream commit f6ff93f7b7db154b7899f415ec67677e6ddd7ff5: +# +# Fix build when using GTest-1.11 +# +# Some change in GTest 1.11 headers caused a conflict on the name +# `Pointer`. Removing the unconditional import of namespace `testing` +# in favor of individual imports of the used items fixes it. +Patch0: %{url}/commit/f6ff93f7b7db154b7899f415ec67677e6ddd7ff5.patch +# Fix a trivial typo (“aid” for “and”) in README.rst +# https://github.com/MirServer/wlcs/pull/215 +Patch1: %{url}/pull/215.patch BuildRequires: gcc BuildRequires: gcc-c++ +BuildRequires: cmake +BuildRequires: ninja-build + BuildRequires: boost-devel BuildRequires: cmake(GTest) BuildRequires: gmock-devel @@ -132,7 +126,6 @@ clock available, it’s easier to poke around in compositor internals, and standard debugging tools can follow control flow from the test client to the compositor and back again. - %package devel Summary: Development files for wlcs Requires: wlcs%{?_isa} = %{version}-%{release} @@ -145,6 +138,23 @@ The wlcs-devel package contains libraries and header files for developing Wayland compositor tests that use wlcs. +%prep +%autosetup -p1 + + +%build +%cmake \ + -DWLCS_BUILD_ASAN=%{?with_asan:ON}%{?!with_asan:OFF} \ + -DWLCS_BUILD_TSAN=%{?with_tsan:ON}%{?!with_tsan:OFF} \ + -DWLCS_BUILD_UBSAN=%{?with_ubsan:ON}%{?!with_ubsan:OFF} \ + -GNinja +%cmake_build + + +%install +%cmake_install + + %files %license COPYING.* %doc README.rst @@ -154,7 +164,7 @@ Wayland compositor tests that use wlcs. %files devel %doc README.rst -%doc example/ +%doc example %{_includedir}/wlcs/ %{_libdir}/pkgconfig/wlcs.pc