103 lines
4.4 KiB
RPMSpec
103 lines
4.4 KiB
RPMSpec
#
|
|
# spec file for package perl-Lexical-Var
|
|
#
|
|
# 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 Lexical-Var
|
|
Name: perl-Lexical-Var
|
|
Version: 0.10.0
|
|
Release: 0
|
|
# 0.010 -> normalize -> 0.10.0
|
|
%define cpan_version 0.010
|
|
License: Artistic-1.0 OR GPL-1.0-or-later
|
|
Summary: Static variables without namespace pollution
|
|
URL: https://metacpan.org/release/%{cpan_name}
|
|
Source0: https://cpan.metacpan.org/authors/id/Z/ZE/ZEFRAM/%{cpan_name}-%{cpan_version}.tar.gz
|
|
Source100: README.md
|
|
BuildRequires: perl
|
|
BuildRequires: perl-macros
|
|
BuildRequires: perl(ExtUtils::CBuilder) >= 0.15
|
|
BuildRequires: perl(Lexical::SealRequireHints) >= 0.012
|
|
BuildRequires: perl(Module::Build)
|
|
Requires: perl(Lexical::SealRequireHints) >= 0.012
|
|
Provides: perl(Lexical::Sub) = %{version}
|
|
Provides: perl(Lexical::Var) = %{version}
|
|
%undefine __perllib_provides
|
|
%{perl_requires}
|
|
|
|
%description
|
|
This module implements lexical scoping of static variables and subroutines.
|
|
Although it can be used directly, it is mainly intended to be
|
|
infrastructure for modules that manage namespaces.
|
|
|
|
This module influences the meaning of single-part variable names that
|
|
appear directly in code, such as "'$foo'". Normally, in the absence of any
|
|
particular declaration, or under the effect of an 'our' declaration, this
|
|
would refer to the scalar variable of that name located in the current
|
|
package. A 'Lexical::Var' declaration can change this to refer to any
|
|
particular scalar, bypassing the package system entirely. A variable name
|
|
that includes an explicit package part, such as "'$main::foo'", always
|
|
refers to the variable in the specified package, and is unaffected by this
|
|
module. A symbolic reference through a string value, such as "'${'foo'}'",
|
|
also looks in the package system, and so is unaffected by this module.
|
|
|
|
The types of name that can be influenced are scalar ("'$foo'"), array
|
|
("'@foo'"), hash ("'%foo'"), subroutine ("'&foo'"), and glob ("'*foo'"). A
|
|
definition for any of these names also affects code that logically refers
|
|
to the same entity, even when the name is spelled without its usual sigil.
|
|
For example, any definition of "'@foo'" affects element references such as
|
|
"'$foo[0]'". Barewords in filehandle context actually refer to the glob
|
|
variable. Bareword references to subroutines, such as "'foo(123)'", only
|
|
work on Perl 5.11.2 and later; on earlier Perls you must use the '&' sigil,
|
|
as in "'&foo(123)'".
|
|
|
|
Where a scalar name is defined to refer to a constant (read-only) scalar,
|
|
references to the constant through the lexical namespace can participate in
|
|
compile-time constant folding. This can avoid the need to check
|
|
configuration values (such as whether debugging is enabled) at runtime.
|
|
|
|
A name definition supplied by this module takes effect from the end of the
|
|
definition statement up to the end of the immediately enclosing block,
|
|
except where it is shadowed within a nested block. This is the same lexical
|
|
scoping that the 'my', 'our', and 'state' keywords supply. Definitions from
|
|
Lexical::Var and from 'my'/'our'/'state' can shadow each other (except that
|
|
Lexical::Var can't shadow a 'my'/'our'/'state' subroutine prior to Perl
|
|
5.19.1). These lexical definitions propagate into string 'eval's, on Perl
|
|
versions that support it (5.9.3 and later).
|
|
|
|
This module only manages variables of static duration (the kind of duration
|
|
that 'our' and 'state' variables have). To get a fresh variable for each
|
|
invocation of a function, use 'my'.
|
|
|
|
%prep
|
|
%autosetup -n %{cpan_name}-%{cpan_version}
|
|
|
|
%build
|
|
perl Build.PL --installdirs=vendor optimize="%{optflags}"
|
|
./Build build --flags=%{?_smp_mflags}
|
|
|
|
%check
|
|
./Build test
|
|
|
|
%install
|
|
./Build install --destdir=%{buildroot} --create_packlist=0
|
|
%perl_gen_filelist
|
|
|
|
%files -f %{name}.files
|
|
%doc Changes README
|
|
|
|
%changelog
|