Init package
This commit is contained in:
parent
0a1a626bf0
commit
ae46b03a3f
189
perl-LDAP.spec
Normal file
189
perl-LDAP.spec
Normal file
@ -0,0 +1,189 @@
|
||||
%bcond_with perl_LDAP_enables_optional_test
|
||||
# Support XML serialization of LDAP schemata (DSML languge)
|
||||
%bcond_with perl_LDAP_enables_xml
|
||||
|
||||
Name: perl-LDAP
|
||||
Version: 0.68
|
||||
Release: 1
|
||||
Summary: LDAP Perl module
|
||||
License: GPL+ or Artistic
|
||||
URL: https://metacpan.org/release/perl-ldap
|
||||
Source0: https://cpan.metacpan.org/authors/id/M/MA/MARSCHAP/perl-ldap-%{version}.tar.gz
|
||||
# Optional tests need to know a location of an LDAP server executable
|
||||
Patch0: perl-ldap-0.65-Configure-usr-sbin-slapd-for-tests.patch
|
||||
# Remove an unreliable cancelling test
|
||||
Patch1: perl-ldap-0.66-test-Remove-a-test-for-cancelling-asynchronous-calls.patch
|
||||
# Fix resolving localhost on loopback-only machines
|
||||
Patch2: perl-ldap-0.68-Do-not-default-IO-Socket-IP-to-AI_ADDRCONFIG-flag.patch
|
||||
BuildArch: noarch
|
||||
BuildRequires: coreutils
|
||||
BuildRequires: make
|
||||
BuildRequires: perl-generators
|
||||
BuildRequires: perl-interpreter
|
||||
BuildRequires: perl(Config)
|
||||
BuildRequires: perl(inc::Module::Install)
|
||||
BuildRequires: perl(Module::Install::AutoInstall)
|
||||
BuildRequires: perl(Module::Install::Metadata)
|
||||
BuildRequires: perl(Module::Install::WriteAll)
|
||||
# Run-time:
|
||||
BuildRequires: perl(base)
|
||||
BuildRequires: perl(Carp)
|
||||
BuildRequires: perl(constant)
|
||||
BuildRequires: perl(Convert::ASN1) >= 0.2
|
||||
BuildRequires: perl(Encode)
|
||||
BuildRequires: perl(Exporter)
|
||||
BuildRequires: perl(IO::Select)
|
||||
BuildRequires: perl(IO::Socket)
|
||||
%if %{with perl_LDAP_enables_optional_test}
|
||||
BuildRequires: perl(IO::Socket::SSL) >= 1.26
|
||||
%endif
|
||||
BuildRequires: perl(Socket)
|
||||
BuildRequires: perl(strict)
|
||||
BuildRequires: perl(Text::Soundex)
|
||||
BuildRequires: perl(Time::Local)
|
||||
%if %{with perl_LDAP_enables_xml}
|
||||
BuildRequires: perl(XML::SAX::Base)
|
||||
BuildRequires: perl(XML::SAX::Writer)
|
||||
%endif
|
||||
# Tests:
|
||||
BuildRequires: perl(File::Basename)
|
||||
BuildRequires: perl(File::Compare)
|
||||
BuildRequires: perl(File::Path)
|
||||
BuildRequires: perl(File::Spec)
|
||||
BuildRequires: perl(IO::File)
|
||||
BuildRequires: perl(Test::More)
|
||||
%if %{with perl_LDAP_enables_optional_test}
|
||||
# Optional tests:
|
||||
BuildRequires: openldap-servers
|
||||
BuildRequires: perl(LWP::UserAgent)
|
||||
%endif
|
||||
Requires: perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version))
|
||||
Requires: perl(Authen::SASL) >= 2.00
|
||||
Requires: perl(Convert::ASN1) >= 0.2
|
||||
Requires: perl(IO::Socket::SSL) >= 1.26
|
||||
Requires: perl(JSON)
|
||||
%if %{with perl_LDAP_enables_xml}
|
||||
Suggests: perl(Net::LDAP::DSML)
|
||||
%endif
|
||||
Requires: perl(MIME::Base64)
|
||||
# Prefer core Text::Soundex
|
||||
Requires: perl(Text::Soundex)
|
||||
Requires: perl(Time::Local)
|
||||
|
||||
# Remove under-specified dependencies
|
||||
%global __provides_exclude %{?__provides_exclude:%__provides_exclude|}^perl\\(Net::LDAP::Filter\\)$
|
||||
%global __requires_exclude %{?__requires_exclude:%__requires_exclude|}^perl\\(Convert::ASN1\\)$
|
||||
|
||||
%description
|
||||
Net::LDAP is a collection of modules that implements an LDAP services API
|
||||
for Perl programs. The module may be used to search directories or perform
|
||||
maintenance functions such as adding, deleting or modifying entries.
|
||||
|
||||
%if %{with perl_LDAP_enables_xml}
|
||||
%package -n perl-Net-LDAP-DSML
|
||||
Summary: DSML Writer for Net::LDAP
|
||||
Requires: perl-LDAP = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Requires: perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version))
|
||||
Requires: perl(MIME::Base64)
|
||||
Requires: perl(Net::LDAP::Schema)
|
||||
Requires: perl(XML::SAX::Writer)
|
||||
|
||||
%description -n perl-Net-LDAP-DSML
|
||||
Directory Service Markup Language (DSML) is the XML standard for representing
|
||||
directory service information in XML. At the moment this Perl module only
|
||||
writes DSML entry and schema entities. Reading DSML entities is a future
|
||||
project.
|
||||
%endif
|
||||
|
||||
%package tests
|
||||
Summary: Tests for %{name}
|
||||
Requires: coreutils
|
||||
Requires: perl-LDAP = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Requires: perl-Test-Harness
|
||||
Requires: perl(Convert::ASN1) >= 0.2
|
||||
Requires: perl(File::Spec)
|
||||
Requires: perl(Net::LDAPI)
|
||||
Requires: perl(Text::Soundex)
|
||||
%if %{with perl_LDAP_enables_xml}
|
||||
Requires: perl(XML::SAX::Base)
|
||||
Requires: perl(XML::SAX::Writer)
|
||||
%endif
|
||||
%if %{with perl_LDAP_enables_optional_test}
|
||||
# Optional tests:
|
||||
Requires: openldap-servers
|
||||
Requires: perl(IO::Socket::SSL) >= 1.26
|
||||
Requires: perl(Net::LDAPS)
|
||||
Requires: perl(LWP::UserAgent)
|
||||
%endif
|
||||
|
||||
%description tests
|
||||
Tests from %{name}-%{version}. Execute them with "%{_libexecdir}/%{name}/test".
|
||||
|
||||
|
||||
%prep
|
||||
%setup -q -n perl-ldap-%{version}
|
||||
%patch0 -p1
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
chmod -c 644 bin/* contrib/* lib/Net/LDAP/DSML.pm
|
||||
perl -pi -e 's|^#!/usr/local/bin/perl\b|#!%{__perl}|' contrib/*
|
||||
|
||||
rm -rf inc
|
||||
perl -i -ne 'print $_ unless m{^inc/}' MANIFEST
|
||||
|
||||
%if !%{with perl_LDAP_enables_xml}
|
||||
rm t/05dsml.t
|
||||
perl -i -ne 'print $_ unless m{^t/05dsml\.t}' MANIFEST
|
||||
%endif
|
||||
find -type f \! -name 'regenerate_cert.sh' -exec chmod -x {} +
|
||||
for F in t/*; do
|
||||
perl -i -MConfig -pe 's/\A#!perl\b/$Config{startperl}/' "$F"
|
||||
chmod +x "$F"
|
||||
done
|
||||
|
||||
%build
|
||||
perl Makefile.PL INSTALLDIRS=vendor NO_PACKLIST=1 NO_PERLLOCAL=1 < /dev/null
|
||||
%{make_build}
|
||||
|
||||
%install
|
||||
%{make_install}
|
||||
mkdir -p %{buildroot}/%{_libexecdir}/%{name}
|
||||
cp -a data t test.cfg %{buildroot}/%{_libexecdir}/%{name}
|
||||
cat > %{buildroot}/%{_libexecdir}/%{name}/test <<'EOF'
|
||||
#!/bin/bash
|
||||
set -e
|
||||
DIR=$(mktemp -d)
|
||||
pushd "$DIR"
|
||||
cp -a %{_libexecdir}/%{name}/* ./
|
||||
prove -I .
|
||||
popd
|
||||
rm -rf "$DIR"
|
||||
EOF
|
||||
chmod +x %{buildroot}/%{_libexecdir}/%{name}/test
|
||||
%{_fixperms} %{buildroot}/*
|
||||
|
||||
%check
|
||||
make test
|
||||
|
||||
%files
|
||||
%doc Changes CREDITS
|
||||
%doc contrib/ bin/
|
||||
%{perl_vendorlib}/Bundle/
|
||||
%{perl_vendorlib}/LWP/
|
||||
%{perl_vendorlib}/Net/
|
||||
%exclude %{perl_vendorlib}/Net/LDAP/DSML.pm
|
||||
%{_mandir}/man3/*.3pm*
|
||||
%exclude %{_mandir}/man3/Net::LDAP::DSML.3pm*
|
||||
|
||||
%if %{with perl_LDAP_enables_xml}
|
||||
%files -n perl-Net-LDAP-DSML
|
||||
%{perl_vendorlib}/Net/LDAP/DSML.pm
|
||||
%{_mandir}/man3/Net::LDAP::DSML.3pm*
|
||||
%endif
|
||||
|
||||
%files tests
|
||||
%{_libexecdir}/%{name}
|
||||
|
||||
%changelog
|
||||
* Thu Jun 30 2022 misaka00251 <misaka00251@misakanet.cn> - 0.68-1
|
||||
- Init package (Thanks to fedora team)
|
||||
58
perl-ldap-0.65-Configure-usr-sbin-slapd-for-tests.patch
Normal file
58
perl-ldap-0.65-Configure-usr-sbin-slapd-for-tests.patch
Normal file
@ -0,0 +1,58 @@
|
||||
From d35a08a77306210ed95a797d5a6ed1160df84b95 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
|
||||
Date: Thu, 4 Apr 2019 17:03:01 +0200
|
||||
Subject: [PATCH] Configure /usr/sbin/slapd for tests
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
The tests need to know slapd executable file name.
|
||||
|
||||
The tests uses sssvlv overlay without loading its module. That's maybe
|
||||
for statically built openldap. However, we have a dynamically built
|
||||
server and we want to rely on a default module path because it varies
|
||||
among architectures. Thus we just uncomment loading the module.
|
||||
|
||||
Also enable SSL and IPC tests.
|
||||
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
---
|
||||
data/slapd.conf.in | 2 +-
|
||||
test.cfg | 4 ++--
|
||||
2 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/data/slapd.conf.in b/data/slapd.conf.in
|
||||
index c6c06a3..3c7b6fb 100644
|
||||
--- a/data/slapd.conf.in
|
||||
+++ b/data/slapd.conf.in
|
||||
@@ -11,7 +11,7 @@ include $SLAPD_SCHEMA_DIR/openldap.schema
|
||||
# get required dynmaic modules
|
||||
#modulepath $SLAPD_MODULE_DIR
|
||||
#moduleload back_$SLAPD_DB
|
||||
-#moduleload sssvlv
|
||||
+moduleload sssvlv
|
||||
|
||||
# PID & args file
|
||||
pidfile $TESTDB/slapd.pid
|
||||
diff --git a/test.cfg b/test.cfg
|
||||
index 0f951f6..ea5a50c 100644
|
||||
--- a/test.cfg
|
||||
+++ b/test.cfg
|
||||
@@ -4,12 +4,12 @@
|
||||
|
||||
# Set this to the full path of your LDAP server executable
|
||||
# (e.g '/usr/sbin/slapd')
|
||||
-$SERVER_EXE = '<path to ldap server executable>';
|
||||
+$SERVER_EXE = '/usr/sbin/slapd';
|
||||
|
||||
# This should be one of
|
||||
# * openldap[+ssl][+ipc][+sasl]
|
||||
# options are appended with '+' signs
|
||||
-$SERVER_TYPE = 'openldap';
|
||||
+$SERVER_TYPE = 'openldap+ssl+ipc';
|
||||
|
||||
# Change this if your host cannot be contacted as localhost
|
||||
# Some tests may fail if the name does not resolve to an IPv4 and an IPv6 address
|
||||
--
|
||||
2.20.1
|
||||
|
||||
@ -0,0 +1,65 @@
|
||||
From 5a2388c895cfd7db5f6ca1cc4acb062dfde336bf Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
|
||||
Date: Thu, 25 Apr 2019 14:23:55 +0200
|
||||
Subject: [PATCH] test: Remove a test for cancelling asynchronous calls
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
t/60cancel.t performed a racy test when it started an asynchronous query, then
|
||||
it canceled it and tested that the cancelling succeeded. However, if a server
|
||||
finished the search before the cancelling order was issued, the cancel itself
|
||||
failed because it referred an not running and thus then nonexisting query:
|
||||
|
||||
t/60cancel.t .. 1/7
|
||||
# Failed test 'cancel a running operation: 119: message ID not found'
|
||||
# at t/60cancel.t line 63.
|
||||
# This test may have failed because the server was too fast
|
||||
|
||||
The race was actually admitted in the diag message.
|
||||
|
||||
This patch removes the unreliable test to prevent from false negatives.
|
||||
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
---
|
||||
t/60cancel.t | 17 +----------------
|
||||
1 file changed, 1 insertion(+), 16 deletions(-)
|
||||
|
||||
diff --git a/t/60cancel.t b/t/60cancel.t
|
||||
index c72bfa5..8a3074c 100644
|
||||
--- a/t/60cancel.t
|
||||
+++ b/t/60cancel.t
|
||||
@@ -11,7 +11,7 @@ BEGIN { require "t/common.pl" }
|
||||
|
||||
|
||||
start_server()
|
||||
-? plan tests => 7
|
||||
+? plan tests => 6
|
||||
: plan skip_all => 'no server';
|
||||
|
||||
|
||||
@@ -47,21 +47,6 @@ SKIP: {
|
||||
# cancel the finished search => should fail
|
||||
$cancel = $ldap->cancel($search);
|
||||
ok($cancel->code, "cancel a finished operation: " . $cancel->code . ": " . $cancel->error);
|
||||
-
|
||||
- # switch to async mode
|
||||
- $ldap->async(1);
|
||||
-
|
||||
- # perform a search (asynchronously)
|
||||
- $search = $ldap->search(
|
||||
- base => $BASEDN,
|
||||
- filter => '(objectclass=*)',
|
||||
- callback => \&process_entry, # Call this sub for each entry
|
||||
- );
|
||||
-
|
||||
- # cancel the running search => should work [may fail, as it depends on the server's speed]
|
||||
- $cancel = $ldap->cancel($search);
|
||||
- ok(!$cancel->code, "cancel a running operation: " . $cancel->code . ": " . $cancel->error)
|
||||
- or diag("This test may have failed because the server was too fast");
|
||||
}
|
||||
|
||||
|
||||
--
|
||||
2.20.1
|
||||
|
||||
@ -0,0 +1,51 @@
|
||||
From 957a39309fa2f8a85a6b8a0a2c5b1751a151cb8b Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
|
||||
Date: Tue, 16 Feb 2021 15:29:58 +0100
|
||||
Subject: [PATCH] Do not default IO::Socket::IP to AI_ADDRCONFIG flag
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
t/40connect.t fails if the only available network interface is
|
||||
loopback and IO::Socket::IP is installed:
|
||||
|
||||
# perl -Ilib -I. t/40connect.t
|
||||
1..3
|
||||
ok 1 - client with IPv4/IPv6 auto-selection, bound to ::1
|
||||
ldap://localhost:9009/ Name or service not known at t/common.pl line 157.
|
||||
# Looks like your test exited with 22 just after 1.
|
||||
|
||||
The reason is that IO::Socket::IP by default resolves host names with
|
||||
AI_ADDRCONFIG flag and in the particular case (no interfaces other
|
||||
than loopback) a system resolver (glibc in my case) hides both IPv4
|
||||
and IPv6 addreses of the hostname (e.g. localhost).
|
||||
|
||||
See <https://rt.cpan.org/Ticket/Display.html?id=104793> for more
|
||||
details.
|
||||
|
||||
I applied a workaround similar to one found in IO-Socket-SSL.
|
||||
I believe that other Socket implementations perl-ldap can use do not
|
||||
suffer from this problem.
|
||||
|
||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||
---
|
||||
lib/Net/LDAP.pm | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/lib/Net/LDAP.pm b/lib/Net/LDAP.pm
|
||||
index 5dfe3e3..be11d12 100644
|
||||
--- a/lib/Net/LDAP.pm
|
||||
+++ b/lib/Net/LDAP.pm
|
||||
@@ -167,6 +167,9 @@ sub connect_ldap {
|
||||
LocalAddr => $arg->{localaddr} || undef,
|
||||
Proto => 'tcp',
|
||||
($class eq 'IO::Socket::IP' ? 'Family' : 'Domain') => $domain,
|
||||
+ # Work around IO::Socket::IP defaulting to AI_ADDRCONFIG which breaks
|
||||
+ # resolution if only a loopback interface is available. CPAN RT#104793.
|
||||
+ ($class eq 'IO::Socket::IP' and $domain ne AF_UNSPEC ? ('GetAddrInfoFlags' => 0) : ()),
|
||||
MultiHomed => $arg->{multihomed},
|
||||
Timeout => defined $arg->{timeout}
|
||||
? $arg->{timeout}
|
||||
--
|
||||
2.26.2
|
||||
|
||||
BIN
perl-ldap-0.68.tar.gz
Normal file
BIN
perl-ldap-0.68.tar.gz
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user