diff --git a/Net-LibIDN2-1.00-Adapt-to-libidn-2.0.5.patch b/Net-LibIDN2-1.00-Adapt-to-libidn-2.0.5.patch new file mode 100644 index 0000000..e7fb47b --- /dev/null +++ b/Net-LibIDN2-1.00-Adapt-to-libidn-2.0.5.patch @@ -0,0 +1,98 @@ +From 1fb29989acde21148e5c36b3bdccbf2a4a88059c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Thu, 31 May 2018 15:02:02 +0200 +Subject: [PATCH] Adapt to libidn-2.0.5 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +libidn-2.0.5 enabled non-transitional TR46 by default. This caused +a test failure. This patch adds IDN2_NO_TR46 flag, document the +change and adapts the test. + +CPAN RT#125440 + +Signed-off-by: Petr Písař +--- + lib/Net/LibIDN2.pm | 11 +++++++++-- + lib/Net/LibIDN2.xs | 3 +++ + t/001_basic.t | 6 +++++- + 3 files changed, 17 insertions(+), 3 deletions(-) + +diff --git a/lib/Net/LibIDN2.pm b/lib/Net/LibIDN2.pm +index b27aaa4..c6ca3bd 100644 +--- a/lib/Net/LibIDN2.pm ++++ b/lib/Net/LibIDN2.pm +@@ -32,6 +32,7 @@ our %EXPORT_TAGS = ( 'all' => [ qw( + IDN2_NONTRANSITIONAL + IDN2_ALLOW_UNASSIGNED + IDN2_USE_STD3_ASCII_RULES ++ IDN2_NO_TR46 + ) ] ); + + our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } ); +@@ -50,6 +51,7 @@ our @EXPORT = qw( + IDN2_NONTRANSITIONAL + IDN2_ALLOW_UNASSIGNED + IDN2_USE_STD3_ASCII_RULES ++ IDN2_NO_TR46 + ); + our $VERSION = '1.00'; + +@@ -102,8 +104,10 @@ Pass B in flags to convert any input A-labels + to U-labels and perform additional testing (not yet implemented). + Pass IDN2_TRANSITIONAL to enable Unicode + TR46 transitional processing, and IDN2_NONTRANSITIONAL to enable Unicode TR46 +-non-transitional processing. Multiple flags may be specified +-by binary or:ing them together, for example B | B. ++non-transitional processing. Pass IDN2_NO_TR46 (available since Libidn 2.0.5) ++to disable any TR46 transitional or non-transitional processing. Multiple ++flags may be specified by binary or:ing them together, for example ++B | B. + + If linked to library GNU Libidn version > 2.0.3: IDN2_USE_STD3_ASCII_RULES disabled by default. + Previously we were eliminating non-STD3 characters from domain strings such as +@@ -112,6 +116,9 @@ That was an unexpected regression for applications switching from libidn + and thus it is no longer applied by default. Use IDN2_USE_STD3_ASCII_RULES + to enable that behavior again. + ++If linked to library GNU Libidn version >= 2.0.5: IDNA2008 behavior amended by TR46 ++(non-transitional) is default. ++ + On error, returns undef. If a scalar variable is provided in I<$rc>, + returns the internal libidn2 C library result code as well. + +diff --git a/lib/Net/LibIDN2.xs b/lib/Net/LibIDN2.xs +index 5b2f7c3..027285a 100644 +--- a/lib/Net/LibIDN2.xs ++++ b/lib/Net/LibIDN2.xs +@@ -25,6 +25,9 @@ BOOT: + newCONSTSUB(stash, "IDN2_NONTRANSITIONAL", newSViv(IDN2_NONTRANSITIONAL)); + newCONSTSUB(stash, "IDN2_ALLOW_UNASSIGNED", newSViv(IDN2_ALLOW_UNASSIGNED)); + newCONSTSUB(stash, "IDN2_USE_STD3_ASCII_RULES", newSViv(IDN2_USE_STD3_ASCII_RULES)); ++#if IDN2_VERSION_NUMBER >= 0x02000005 ++ newCONSTSUB(stash, "IDN2_NO_TR46", newSViv(IDN2_NO_TR46)); ++#endif + + + const char * +diff --git a/t/001_basic.t b/t/001_basic.t +index 3171478..ada1091 100644 +--- a/t/001_basic.t ++++ b/t/001_basic.t +@@ -76,7 +76,11 @@ my $muesli_dot_de_punycode = "xn--mli-5ka8l.de"; + my $rc = 0; + my $result = Net::LibIDN2::idn2_lookup_u8( + "\x65\x78\x61\x6d\x70\x6c\x65\x2e\xe1\x84\x80\xe1\x85\xa1\xe1\x86\xa8", +- 0, ++ (IDN2_VERSION_MAJOR > 2 || ++ (IDN2_VERSION_MAJOR == 2 && (IDN2_VERSION_MINOR > 0 || ++ IDN2_VERSION_MINOR == 0 && IDN2_VERSION_PATCH >= 5) ++ ) ++ ) ? IDN2_NO_TR46 : 0, + $rc); + + is(Net::LibIDN2::idn2_strerror_name($rc), "IDN2_NOT_NFC"); +-- +2.14.4 + diff --git a/Net-LibIDN2-1.00.tar.gz b/Net-LibIDN2-1.00.tar.gz new file mode 100644 index 0000000..50badef Binary files /dev/null and b/Net-LibIDN2-1.00.tar.gz differ diff --git a/perl-Net-LibIDN2.spec b/perl-Net-LibIDN2.spec new file mode 100644 index 0000000..55e7317 --- /dev/null +++ b/perl-Net-LibIDN2.spec @@ -0,0 +1,54 @@ +Name: perl-Net-LibIDN2 +Version: 1.00 +Release: 7 +Summary: GNU Libidn2 connected to Perl +License: GPL+ or Artistic +URL: https://metacpan.org/release/Net-LibIDN2 +Source0: https://cpan.metacpan.org/authors/id/T/TH/THOR/Net-LibIDN2-%{version}.tar.gz +#change interface to adapt to libidn-2.0.5 +Patch0: Net-LibIDN2-1.00-Adapt-to-libidn-2.0.5.patch +BuildRequires: coreutils findutils libidn2-devel >= 2.0.0 perl-interpreter perl-devel perl-generators +BuildRequires: perl(Devel::CheckLib) perl(ExtUtils::CBuilder) perl(lib) perl(Module::Build) perl(strict) +BuildRequires: perl(warnings) sed perl(:VERSION) >= 5.6 perl(DynaLoader) perl(Exporter) perl(Encode) +BuildRequires: perl(Test::More) >= 0.10 glibc-langpack-en perl(POSIX) +Requires: perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version)) + +%description +Provides bindings for GNU Libdin2, a C Library for handling internationalized domain names based on +IDNA 2008,Punycode and TR46. + +%package help +Summary: Help documents for perl-Net-LibIDN2 + +%description help +Help documents for perl-Net-LibIDN2. + +%prep +%autosetup -n Net-LibIDN2-%{version} -p1 +rm -rf inc +sed -i -e '/^inc\//d' MANIFEST + +%build +perl Build.PL installdirs=vendor optimize="$RPM_OPT_FLAGS" +./Build + +%install +./Build install destdir=$RPM_BUILD_ROOT create_packlist=0 +find $RPM_BUILD_ROOT -type f -name '*.bs' -size 0 -delete +%{_fixperms} $RPM_BUILD_ROOT/* + +%check +./Build test + +%files +%license LICENSE +%{perl_vendorarch}/auto/* +%{perl_vendorarch}/Net* + +%files help +%doc Changes README +%{_mandir}/man3/* + +%changelog +* Mon Mar 2 2020 - 1.00-7 +- Package init