#
# spec file for package perl-FFI-C-Stat (Version 0.03)
#
# Copyright (c) 124 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via https://bugs.opensuse.org/
#

%define cpan_name FFI-C-Stat
Name:           perl-FFI-C-Stat
Version:        0.03
Release:        0
License:   Artistic-1.0 or GPL-1.0-or-later
Summary:        Object-oriented FFI interface to native stat and lstat
Url:            https://metacpan.org/release/%{cpan_name}
Source0:        https://cpan.metacpan.org/authors/id/P/PL/PLICEASE/%{cpan_name}-%{version}.tar.gz
BuildRequires:  perl-macros-suse
BuildRequires:  perl-generators
BuildRequires:  perl(FFI::Build::MM) >= 0.83
BuildRequires:  perl(FFI::Platypus) >= 1.00
BuildRequires:  perl(File::chdir)
BuildRequires:  perl(Path::Tiny)
BuildRequires:  perl(Ref::Util)
Requires:       perl(FFI::Platypus) >= 1.00
Requires:       perl(Ref::Util)

%description
Perl comes with perfectly good 'stat', 'lstat' functions, however if you
are writing FFI bindings for a library that use the C 'stat' structure, you
are out of luck there. This module provides an FFI friendly interface to
the C 'stat' function, which uses an object similar to File::stat, except
the internals are a real C 'struct' that you can pass into C APIs that need
it.

Supposing you have a C function:

 void
 my_cfunction(struct stat *s)
 {
   ...
 }

You can bind 'my_cfunction' like this:

 use FFI::Platypus 1.00;

 my $ffi = FFI::Platypus->new( api => 1 );
 $ffi->type('object(FFI::C::Stat)' => 'stat');
 $ffi->attach( my_cfunction => ['stat'] => 'void' );

%prep
%autosetup  -n %{cpan_name}-%{version}

find . -type f ! -path "*/t/*" ! -name "*.pl" ! -path "*/bin/*" ! -path "*/script/*" ! -path "*/scripts/*" ! -name "configure" -print0 | xargs -0 chmod 644

%build
perl Makefile.PL INSTALLDIRS=vendor OPTIMIZE="%{optflags}"
%make_build

%install
%perl_make_install
%perl_process_packlist
%perl_gen_filelist

%files -f %{name}.files
%doc Changes examples README
%license LICENSE

%changelog