summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--pkgs/development/perl-modules/dbix-class-fix-52leaks.patch23
-rw-r--r--pkgs/development/perl-modules/dbix-class-fix-tests.patch52
-rw-r--r--pkgs/top-level/perl-packages.nix18
3 files changed, 34 insertions, 59 deletions
diff --git a/pkgs/development/perl-modules/dbix-class-fix-52leaks.patch b/pkgs/development/perl-modules/dbix-class-fix-52leaks.patch
new file mode 100644
index 000000000000..84af4a5acf1c
--- /dev/null
+++ b/pkgs/development/perl-modules/dbix-class-fix-52leaks.patch
@@ -0,0 +1,23 @@
+From e9d552de92cde6552f35cd45a3572df1e25609cc Mon Sep 17 00:00:00 2001
+From: Peter Rabbitson <ribasushi@cpan.org>
+Date: Tue, 19 May 2015 05:49:48 +0200
+Subject: [PATCH] Make sure tests pass without a compiler present (another step
+ to RT#74706)
+
+--- a/t/52leaks.t
++++ b/t/52leaks.t
+@@ -446,6 +446,14 @@ for my $addr (keys %$weak_registry) {
+     delete $weak_registry->{$addr}
+       unless $cleared->{hash_merge_singleton}{$weak_registry->{$addr}{weakref}{behavior}}++;
+   }
++  elsif ($names =~ /^B::Hooks::EndOfScope::PP::_TieHintHashFieldHash/m) {
++    # there is one tied lexical which stays alive until GC time
++    # https://metacpan.org/source/ETHER/B-Hooks-EndOfScope-0.15/lib/B/Hooks/EndOfScope/PP/FieldHash.pm#L24
++    # simply ignore it here, instead of teaching the leaktracer to examine ties
++    # the latter is possible yet terrible: https://github.com/dbsrgits/dbix-class/blob/v0.082820/t/lib/DBICTest/Util/LeakTracer.pm#L113-L117
++    delete $weak_registry->{$addr}
++      unless $cleared->{bheos_pptiehinthashfieldhash}++;
++  }
+   elsif ($names =~ /^DateTime::TimeZone::UTC/m) {
+     # DT is going through a refactor it seems - let it leak zones for now
+     delete $weak_registry->{$addr};
diff --git a/pkgs/development/perl-modules/dbix-class-fix-tests.patch b/pkgs/development/perl-modules/dbix-class-fix-tests.patch
deleted file mode 100644
index 476a159f621f..000000000000
--- a/pkgs/development/perl-modules/dbix-class-fix-tests.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-diff --git a/t/multi_create/standard.t b/t/multi_create/standard.t
-index 5a02947..6c1efd8 100644
---- a/t/multi_create/standard.t
-+++ b/t/multi_create/standard.t
-@@ -444,7 +444,11 @@ throws_ok ( sub {
-     #$t->cd($t->new_related('cd', { artist => undef } ) );
-     #$t->{_rel_in_storage} = 0;
-     $t->insert;
--}, qr/cd.artist may not be NULL/, "Exception propogated properly");
-+}, qr/DBI Exception.+(?x:
-+    \QNOT NULL constraint failed: cd.artist\E
-+      |
-+    \Qcd.artist may not be NULL\E
-+)/s, "Exception propogated properly");
- 
- lives_ok ( sub {
-   $schema->resultset('CD')->create ({
-diff --git a/t/relationship/update_or_create_multi.t b/t/relationship/update_or_create_multi.t
-index 8710048..c7cce7a 100644
---- a/t/relationship/update_or_create_multi.t
-+++ b/t/relationship/update_or_create_multi.t
-@@ -69,7 +69,12 @@ throws_ok {
-     year => 2020,
-     title => 'the best thing since sliced bread',
-   })
--} qr/\Qcd.artist may not be NULL/, 'ambiguous find + create failed';
-+} qr/DBI Exception.+(?x:
-+    \QNOT NULL constraint failed: cd.artist\E
-+      |
-+    \Qcd.artist may not be NULL\E
-+)/s, 'ambiguous find + create failed'
-+;
- 
- # expect a create, after a failed search using *only* the
- # *current* relationship and the unique column constraints
-diff --git a/t/storage/error.t b/t/storage/error.t
-index d5980eb..61d6782 100644
---- a/t/storage/error.t
-+++ b/t/storage/error.t
-@@ -15,7 +15,11 @@ warnings_are ( sub {
-     sub {
-       $schema->resultset('CD')->create({ title => 'vacation in antarctica' })
-     },
--    qr/DBI Exception.+cd\.artist.+NULL/s
-+    qr/DBI Exception.+(?x:
-+      \QNOT NULL constraint failed: cd.artist\E
-+        |
-+      \Qcd.artist may not be NULL\E
-+    )/s
-   );  # as opposed to some other error
- }, [], 'No warnings besides exception' );
- 
diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix
index e6cd63e654ca..1dc6c7f7609c 100644
--- a/pkgs/top-level/perl-packages.nix
+++ b/pkgs/top-level/perl-packages.nix
@@ -3108,19 +3108,23 @@ let self = _self // overrides; _self = with self; {
     };
   };
 
-  DBIxClass = buildPerlPackage {
-    name = "DBIx-Class-0.082801";
+  DBIxClass = buildPerlPackage rec {
+    name = "DBIx-Class-0.082820";
     src = fetchurl {
-      url = mirror://cpan/authors/id/R/RI/RIBASUSHI/DBIx-Class-0.082801.tar.gz;
-      sha256 = "889d6f9139d8e73f5524dfa211019126042e84cb7a0ec30cd2ed7d315d73484b";
+      url = "mirror://cpan/authors/id/R/RI/RIBASUSHI/${name}.tar.gz";
+      sha256 = "7b6083a1273d474d785aa93581dc1da334bbe5d83c741574ee2e3942559daeb9";
     };
-    buildInputs = [ DBDSQLite PackageStash TestDeep TestException TestWarn ];
-    propagatedBuildInputs = [ ClassAccessorGrouped ClassC3Componentised ClassInspector ConfigAny ContextPreserve DBI DataDumperConcise DataPage DevelGlobalDestruction HashMerge MROCompat ModuleFind Moo PathClass SQLAbstract ScopeGuard SubName TryTiny namespaceclean ];
-    doCheck = false;
+    buildInputs = [ DBDSQLite PackageStash SQLTranslator TestDeep TestException TestWarn ];
+    propagatedBuildInputs = [ ClassAccessorGrouped ClassC3Componentised ClassInspector ConfigAny ContextPreserve DBI DataDumperConcise DataPage DevelGlobalDestruction HashMerge MROCompat ModuleFind Moo PathClass SQLAbstract ScopeGuard SubName namespaceclean ];
+    patches = [
+      # Fix test error inside t/52leaks.t
+      ../development/perl-modules/dbix-class-fix-52leaks.patch
+    ];
     meta = {
       homepage = http://www.dbix-class.org/;
       description = "Extensible and flexible object <-> relational mapper";
       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.rycee ];
     };
   };