Name:           perl-Tickit
Version:        0.73
Release:        1%{?dist}
Summary:        Perl bindings for Tickit
License:        GPL-1.0-or-later OR Artistic-1.0-Perl
URL:            https://metacpan.org/release/Tickit
Source0:        https://cpan.metacpan.org/authors/id/P/PE/PEVANS/Tickit-%{version}.tar.gz

BuildRequires:  coreutils
BuildRequires:  findutils
BuildRequires:  gcc
BuildRequires:  make
BuildRequires:  pkgconfig(tickit)

BuildRequires:  perl-interpreter
BuildRequires:  perl-devel
BuildRequires:  perl-generators
BuildRequires:  perl(base)
BuildRequires:  perl(Carp)
BuildRequires:  perl(Config)
BuildRequires:  perl(constant)
BuildRequires:  perl(Exporter) >= 5.57
BuildRequires:  perl(integer)
BuildRequires:  perl(IO::Handle)
BuildRequires:  perl(List::Util)
BuildRequires:  perl(Module::Build::Using::PkgConfig)
BuildRequires:  perl(overload)
BuildRequires:  perl(Scalar::Util)
BuildRequires:  perl(strict)
BuildRequires:  perl(Struct::Dumb) >= 0.04
BuildRequires:  perl(Test::Builder)
BuildRequires:  perl(Time::HiRes)
BuildRequires:  perl(warnings)
BuildRequires:  perl(XSLoader)
BuildRequires:  perl(ExtUtils::CBuilder)
# Provided by generator
#BuildRequires:  perl(Module::Build)
# Tests
BuildRequires:  perl(Errno)
BuildRequires:  perl(POSIX)
BuildRequires:  perl(Test::Builder::Tester)
BuildRequires:  perl(Test::Fatal)
BuildRequires:  perl(Test::HexString)
BuildRequires:  perl(Test::More) >= 0.88
BuildRequires:  perl(Test::Refcount)
BuildRequires:  perl(utf8)
# Runtime
Requires:       perl(XSLoader)
Requires:       perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))

%description
Tickit is a high-level toolkit for creating full-screen terminal-based
interactive programs. It allows programs to be written in an abstracted
way, working with a tree of widget objects, to represent the layout of the
interface and implement its behaviours.

# Note: The tests subpackage requires some terminal features that are not
#       present in vt100 (mock uses this by default). To get around this
#       in mock, you can set TERM to something like xterm (See the check
#       segment of this file)
%package tests
Summary:        Tests for %{name}
Requires:       %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
Requires:       perl(Test::Harness)
Requires:       perl(constant)

%description tests
Tests from %{name}. Execute them
with "%{_libexecdir}/%{name}/test".

%prep
%setup -q -n Tickit-%{version}

# Help generators to recognize Perl scripts
for F in t/*.t; do
    perl -i -MConfig -ple 'print $Config{startperl} if $. == 1 && !s{\A#!.*perl\b}{$Config{startperl}}' "$F"
    chmod +x "$F"
done

%build
%{__perl} Build.PL --installdirs=vendor --optimize="%{optflags}"
./Build

%install
./Build install --destdir=%{buildroot} --create_packlist=0
find %{buildroot} -type f -name '*.bs' -size 0 -delete
# Install tests
mkdir -p %{buildroot}%{_libexecdir}/%{name}
cp -a t %{buildroot}%{_libexecdir}/%{name}
rm %{buildroot}%{_libexecdir}/%{name}/t/99pod.t
cat > %{buildroot}%{_libexecdir}/%{name}/test << 'EOF'
#!/bin/sh
cd %{_libexecdir}/%{name} && exec prove -I . -j "$(getconf _NPROCESSORS_ONLN)"
EOF
chmod +x %{buildroot}%{_libexecdir}/%{name}/test
%{_fixperms} %{buildroot}/*

%check
# Default mock terminal (vt100) does not support param_ich
export TERM=xterm
./Build test

%files
%doc Changes examples README
%license LICENSE
%{perl_vendorarch}/auto/*
%{perl_vendorarch}/Tickit*
%{_mandir}/man3/*

%files tests
%{_libexecdir}/%{name}

%changelog
* Mon Oct 24 2022 Petr Salaba <psalaba@redhat.com> 0.73-1
- Initial spec