Blob Blame History Raw
# 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

# 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.3.0
Release:        %autorelease
Summary:        Wayland Conformance Test Suite

# The entire source is GPLv3, except:
#
# (GPLv2 or GPLv3):
#   - CMakeLists.txt
# > Build system file that does not contribute to the licenses of the binary
#   RPMs
#
# (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.
#
# GPLv2+:
#   - debian/*
# > Not used in this package
#
# MIT:
#   - src/protocol/gtk-primary-selection.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/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/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 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.
#
# 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
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
BuildRequires:  pkgconfig(wayland-client)
BuildRequires:  pkgconfig(wayland-server)
BuildRequires:  pkgconfig(wayland-scanner)

%if %{with asan}
BuildRequires:  libasan
%endif
%if %{with ubsan}
BuildRequires:  libubsan
%endif
%if %{with tsan}
BuildRequires:  libtsan
%endif

%description
wlcs aspires to be a protocol-conformance-verifying test suite usable by
Wayland compositor implementors.

It is growing out of porting the existing Weston test suite to be run in Mir’s
test suite, but it is designed to be usable by any compositor.

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 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 the test client to the
compositor and back again.

%package        devel
Summary:        Development files for wlcs
Requires:       wlcs%{?_isa} = %{version}-%{release}

%description    devel
wlcs aspires to be a protocol-conformance-verifying test suite usable by
Wayland compositor implementors.

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

%{_libexecdir}/wlcs/


%files devel
%doc README.rst
%doc example

%{_includedir}/wlcs/
%{_libdir}/pkgconfig/wlcs.pc


%changelog
%autochangelog