Files
perl-Test-Weaken/perl-Test-Weaken.spec
2025-08-12 18:17:58 +02:00

81 lines
2.8 KiB
RPMSpec

#
# spec file for package perl-Test-Weaken
#
# Copyright (c) 2024 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 Test-Weaken
Name: perl-Test-Weaken
Version: 3.22.0
Release: 0
%define cpan_version 3.022000
License: Artistic-1.0 OR GPL-1.0-or-later
Summary: Test that freed memory objects were, indeed, freed
URL: https://metacpan.org/release/%{cpan_name}
Source0: https://cpan.metacpan.org/authors/id/K/KR/KRYDE/%{cpan_name}-%{cpan_version}.tar.gz
Source100: README.md
BuildArch: noarch
BuildRequires: perl
BuildRequires: perl-macros
Provides: perl(Test::Weaken) = %{version}
Provides: perl(Test::Weaken::Internal)
%undefine __perllib_provides
%{perl_requires}
%description
'Test::Weaken' helps detect unfreed Perl data in arrays, hashes, scalars,
objects, etc, by descending recursively through structures and watching
that everything is freed. Unfreed data is a useless overhead and may cause
an application to abend due to lack of memory.
Normally if the last reference to something is discarded then it and
anything in it is freed automatically. But this might not occur due to
circular references, unexpected global variables or closures, or reference
counting mistakes in XSUBs.
'Test::Weaken' is named for the strategy used to detect leaks. References
are taken to the test objects and all their contents, then those references
are weakened and expected to be then freed.
There's options to ignore intentional globals, or include extra associated
data held elsewhere, or invoke an explicit destructor. Unfreed parts are
reported and can be passed to other modules such as Devel::FindRef to try
to discover why they weren't freed.
'Test::Weaken' examines structures to an unlimited depth and is safe on
circular structures.
%prep
%autosetup -n %{cpan_name}-%{cpan_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
%make_build
%check
make test
%install
%perl_make_install
%perl_process_packlist
%perl_gen_filelist
%files -f %{name}.files
%doc Changes README
%changelog