[perl-Padre] Fix compatibility with ORLite-1.98
Petr Pisar
ppisar at fedoraproject.org
Tue Oct 15 14:22:16 UTC 2013
commit 7a191d76edf3fe2678737b738371b74ac6f8a759
Author: Petr Písař <ppisar at redhat.com>
Date: Tue Oct 15 16:20:21 2013 +0200
Fix compatibility with ORLite-1.98
...o-the-delete_where-method-for-bulk-deleti.patch | 333 ++++++++++++++++++++
perl-Padre.spec | 15 +-
2 files changed, 346 insertions(+), 2 deletions(-)
---
diff --git a/Padre-0.90-Migrating-to-the-delete_where-method-for-bulk-deleti.patch b/Padre-0.90-Migrating-to-the-delete_where-method-for-bulk-deleti.patch
new file mode 100644
index 0000000..531b474
--- /dev/null
+++ b/Padre-0.90-Migrating-to-the-delete_where-method-for-bulk-deleti.patch
@@ -0,0 +1,333 @@
+From dd579f8ce7ba1a26fb1c67bb9d82765251eacd54 Mon Sep 17 00:00:00 2001
+From: Petr Pisar <petr at dhcp-0-146.brq.redhat.com>
+Date: Tue, 15 Oct 2013 15:48:26 +0200
+Subject: [PATCH] Migrating to the delete_where method for bulk deletion to
+ align with ORLite 2.0
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This is r18434 ported to 0.90 because ORLite-1.98 removed support for
+static delete() method.
+
+<https://bugzilla.redhat.com/show_bug.cgi?id=914310>
+
+Signed-off-by: Petr Písař <ppisar at redhat.com>
+---
+ lib/Padre/DB/LastPositionInFile.pm | 2 +-
+ lib/Padre/DB/Session.pm | 30 ++++++++++++++----------------
+ lib/Padre/DB/SyntaxHighlight.pm | 4 ++--
+ lib/Padre/Wx/ActionLibrary.pm | 2 +-
+ lib/Padre/Wx/Dialog/Bookmarks.pm | 4 +---
+ lib/Padre/Wx/Dialog/SessionManager.pm | 2 +-
+ lib/Padre/Wx/Dialog/SessionSave.pm | 20 ++++++++++----------
+ lib/Padre/Wx/Main.pm | 34 ++++++++++++++++++++--------------
+ lib/Padre/Wx/Menu/File.pm | 4 ++--
+ t/60-db.t | 2 +-
+ 10 files changed, 53 insertions(+), 51 deletions(-)
+
+diff --git a/lib/Padre/DB/LastPositionInFile.pm b/lib/Padre/DB/LastPositionInFile.pm
+index 3fb72e4..fc358b4 100644
+--- a/lib/Padre/DB/LastPositionInFile.pm
++++ b/lib/Padre/DB/LastPositionInFile.pm
+@@ -83,7 +83,7 @@ sub set_last_pos {
+ my $position = shift;
+
+ my $transaction = Padre::Current->main->lock('DB');
+- $class->delete( 'where name = ?', $file );
++ $class->delete_where( 'name = ?', $file );
+ $class->create(
+ name => $file,
+ position => $position,
+diff --git a/lib/Padre/DB/Session.pm b/lib/Padre/DB/Session.pm
+index 2fc08ba..1f9f3f9 100644
+--- a/lib/Padre/DB/Session.pm
++++ b/lib/Padre/DB/Session.pm
+@@ -10,12 +10,16 @@ package Padre::DB::Session;
+ use 5.008;
+ use strict;
+ use warnings;
++use Padre::Current ();
+
+ our $VERSION = '0.90';
+
+ my $PADRE_SESSION = 'padre-last';
+
+ sub last_padre_session {
++ my $class = shift;
++ my $transaction = Padre::Current->main->lock('DB');
++
+
+ # find last padre session
+ my ($padre) = Padre::DB::Session->select(
+@@ -24,19 +28,21 @@ sub last_padre_session {
+ );
+
+ # no such session, create one
+- if ( not defined $padre ) {
+- $padre = Padre::DB::Session->new(
++ unless ( defined $padre ) {
++ $padre = $class->create(
+ name => $PADRE_SESSION,
+ description => 'Last session within Padre',
+ last_update => time,
+ );
+- $padre->insert;
+ }
++
+ return $padre;
+ }
+
+ sub clear_last_session {
+- my $class = shift;
++ my $class = shift;
++ my $transaction = Padre::Current->main->lock('DB');
++
+
+ # Find last padre session (shortcut if none)
+ my ($padre) = Padre::DB::Session->select(
+@@ -45,27 +51,19 @@ sub clear_last_session {
+ ) or return;
+
+ # Remove any files in the session
+- Padre::DB::SessionFile->delete(
+- 'where session = ?',
+- $padre->id,
+- );
++ Padre::DB::SessionFile->delete_where( 'session = ?', $padre->id );
+
+ # Remove the session itself
+- Padre::DB::Session->delete(
+- 'where name = ?',
+- $PADRE_SESSION,
+- );
++ $padre->delete;
+
+ return;
+ }
+
+ sub files {
+- my ($self) = @_;
+- my @files = Padre::DB::SessionFile->select(
++ Padre::DB::SessionFile->select(
+ 'where session = ?',
+- $self->id
++ shift->id,
+ );
+- return @files;
+ }
+
+ 1;
+diff --git a/lib/Padre/DB/SyntaxHighlight.pm b/lib/Padre/DB/SyntaxHighlight.pm
+index 5420157..38453ca 100644
+--- a/lib/Padre/DB/SyntaxHighlight.pm
++++ b/lib/Padre/DB/SyntaxHighlight.pm
+@@ -20,8 +20,8 @@ sub set_mime_type {
+ my $module = shift;
+
+ my $transaction = Padre::Current->main->lock('DB');
+- $class->delete(
+- 'where mime_type = ?', $mime_type,
++ $class->delete_where(
++ 'mime_type = ?', $mime_type,
+ );
+ $class->create(
+ mime_type => $mime_type,
+diff --git a/lib/Padre/Wx/ActionLibrary.pm b/lib/Padre/Wx/ActionLibrary.pm
+index fdc59dd..2346286 100644
+--- a/lib/Padre/Wx/ActionLibrary.pm
++++ b/lib/Padre/Wx/ActionLibrary.pm
+@@ -542,7 +542,7 @@ sub init {
+ comment => _T('Remove the entries from the recent files list'),
+ menu_event => sub {
+ my $lock = Padre::Current->main->lock( 'UPDATE', 'DB', 'refresh_recent' );
+- Padre::DB::History->delete( 'where type = ?', 'files' );
++ Padre::DB::History->delete_where( 'type = ?', 'files' );
+ },
+ );
+
+diff --git a/lib/Padre/Wx/Dialog/Bookmarks.pm b/lib/Padre/Wx/Dialog/Bookmarks.pm
+index 3131959..b026bb7 100644
+--- a/lib/Padre/Wx/Dialog/Bookmarks.pm
++++ b/lib/Padre/Wx/Dialog/Bookmarks.pm
+@@ -66,9 +66,7 @@ sub run_set {
+ # Save it to the database
+ SCOPE: {
+ my $transaction = $self->main->lock('DB');
+- Padre::DB::Bookmark->delete(
+- 'where name = ?', $name,
+- );
++ Padre::DB::Bookmark->delete_where( 'name = ?', $name );
+ Padre::DB::Bookmark->create(
+ name => $name,
+ file => $path,
+diff --git a/lib/Padre/Wx/Dialog/SessionManager.pm b/lib/Padre/Wx/Dialog/SessionManager.pm
+index 076bf4c..af96200 100644
+--- a/lib/Padre/Wx/Dialog/SessionManager.pm
++++ b/lib/Padre/Wx/Dialog/SessionManager.pm
+@@ -82,7 +82,7 @@ sub _on_butdelete_clicked {
+
+ # remove session: files, then session itself
+ my $transaction = $self->GetParent->lock('DB');
+- Padre::DB::SessionFile->delete( 'where session = ?', $current->id );
++ Padre::DB::SessionFile->delete_where( 'session = ?', $current->id );
+ $current->delete;
+
+ # update gui
+diff --git a/lib/Padre/Wx/Dialog/SessionSave.pm b/lib/Padre/Wx/Dialog/SessionSave.pm
+index 0cf96b6..8fa8c19 100644
+--- a/lib/Padre/Wx/Dialog/SessionSave.pm
++++ b/lib/Padre/Wx/Dialog/SessionSave.pm
+@@ -67,38 +67,38 @@ sub _on_butclose_clicked {
+ # handler called when the save button has been clicked.
+ #
+ sub _on_butsave_clicked {
+- my $self = shift;
+-
++ my $self = shift;
+ my $main = $self->GetParent;
++ my $lock = $main->lock('DB');
+ my $session = $self->_current_session;
+
+ # TO DO: This must be switched to use the main methods:
+-
+ if ( defined $session ) {
+
+ # session exist, remove all files associated to it
+- Padre::DB::SessionFile->delete(
+- 'where session = ?',
++ Padre::DB::SessionFile->delete_where(
++ 'session = ?',
+ $session->id
+ );
+
+ # Save Session description:
+ Padre::DB->do(
+- 'UPDATE session SET description=? WHERE id=?',
+- {}, $self->_text->GetValue, $session->id
++ 'UPDATE session SET description = ? WHERE id = ?',
++ {},
++ $self->_text->GetValue,
++ $session->id,
+ );
+ } else {
+
+ # session did not exist, create a new one
+- $session = Padre::DB::Session->new(
++ $session = Padre::DB::Session->create(
+ name => $self->_combo->GetValue,
+ description => $self->_text->GetValue,
+ last_update => time,
+ );
+- $session->insert;
+ }
+
+- # capture session and save it
++ # Capture session and save it
+ my @session = $main->capture_session;
+ $main->save_session( $session, @session );
+
+diff --git a/lib/Padre/Wx/Main.pm b/lib/Padre/Wx/Main.pm
+index bc2bc15..da96b89 100644
+--- a/lib/Padre/Wx/Main.pm
++++ b/lib/Padre/Wx/Main.pm
+@@ -3110,26 +3110,29 @@ associated to C<$session>. Note that C<$session> should already exist.
+ =cut
+
+ sub save_session {
+- my ( $self, $session, @session ) = @_;
++ my $self = shift;
++ my $session = shift;
++ my $lock = $self->lock('DB');
+
+- my $transaction = $self->lock('DB');
+- foreach my $file (@session) {
++ foreach my $file (@_) {
+ $file->set( session => $session->id );
+ $file->insert;
+ }
+
+- Padre::DB->do( 'UPDATE session SET last_update=? WHERE id=?', {}, time, $session->id );
+-
++ Padre::DB->do(
++ 'UPDATE session SET last_update = ? WHERE id = ?', {},
++ time, $session->id,
++ );
+ }
+
+ sub save_current_session {
+ my $self = shift;
++ $self->ide->{session_autosave} or return;
+
+- return if not $self->ide->{session_autosave};
+-
++ my $lock = $self->lock('DB');
+ my ($session) = Padre::DB::Session->select(
+ 'where id = ?',
+- $self->{ide}->{session}
++ $self->{ide}->{session},
+ );
+
+ $session ||= Padre::DB::Session->last_padre_session;
+@@ -3140,13 +3143,13 @@ sub save_current_session {
+ return;
+ }
+
+- # session exist, remove all files associated to it
+- Padre::DB::SessionFile->delete(
+- 'where session = ?',
+- $session->id
++ # Session exist, remove all files associated to it
++ Padre::DB::SessionFile->delete_where(
++ 'session = ?',
++ $session->id,
+ );
+
+- # capture session and save it
++ # Capture session and save it
+ my @session = $self->capture_session;
+ $self->save_session( $session, @session );
+
+@@ -3758,7 +3761,10 @@ sub update_last_session {
+ # Write the current session to the database
+ my $transaction = $self->lock('DB');
+ my $session = Padre::DB::Session->last_padre_session;
+- Padre::DB::SessionFile->delete( 'where session = ?', $session->id );
++ Padre::DB::SessionFile->delete_where(
++ 'session = ?',
++ $session->id,
++ );
+ $self->save_session( $session, $self->capture_session );
+ }
+
+diff --git a/lib/Padre/Wx/Menu/File.pm b/lib/Padre/Wx/Menu/File.pm
+index 24e4d62..0bb1d7b 100644
+--- a/lib/Padre/Wx/Menu/File.pm
++++ b/lib/Padre/Wx/Menu/File.pm
+@@ -390,8 +390,8 @@ sub on_recent {
+ # Because we filter for files that exist to generate the recent files
+ # list, anything that doesn't exist must have been deleted a short
+ # time ago. So we can remove it from history, it won't be coming back.
+- Padre::DB::History->delete(
+- 'where name = ? and type = ?',
++ Padre::DB::History->delete_where(
++ 'name = ? and type = ?',
+ $file, 'files',
+ );
+ Wx::MessageBox(
+diff --git a/t/60-db.t b/t/60-db.t
+index c5daa18..1cc8d11 100644
+--- a/t/60-db.t
++++ b/t/60-db.t
+@@ -34,7 +34,7 @@ SCOPE: {
+ # test delete_recent
+ @files = Padre::DB::History->recent('files');
+ is_deeply \@files, [ 'Test2.pm', 'Test.pm' ], 'files still remain after delete_recent pod';
+- ok( Padre::DB::History->delete( 'where type = ?', 'files' ) );
++ ok( Padre::DB::History->delete_where( 'type = ?', 'files' ) );
+ @files = Padre::DB::History->recent('files');
+ is_deeply \@files, [], 'no files after delete_recent files';
+ }
+--
+1.8.3.1
+
diff --git a/perl-Padre.spec b/perl-Padre.spec
index 2d39b56..9853123 100644
--- a/perl-Padre.spec
+++ b/perl-Padre.spec
@@ -2,13 +2,15 @@
Name: perl-Padre
Version: 0.90
-Release: 9%{?dist}
+Release: 10%{?dist}
Summary: Perl Application Development and Refactoring Environment
License: GPL+ or Artistic
Group: Development/Libraries
URL: http://search.cpan.org/dist/Padre/
Source0: http://search.cpan.org/CPAN/authors/id/P/PL/PLAVEN/Padre-%{version}.tar.gz
Source1: padre.desktop
+# Fix compatibility with ORLite-1.98, in Padre-1.96, bug #914310
+Patch0: Padre-0.90-Migrating-to-the-delete_where-method-for-bulk-deleti.patch
BuildArch: noarch
BuildRequires: gettext
BuildRequires: desktop-file-utils
@@ -84,7 +86,9 @@ BuildRequires: perl(LWP::UserAgent) >= 5.815
BuildRequires: perl(Module::Build) >= 0.37
BuildRequires: perl(Module::CoreList) >= 2.22
BuildRequires: perl(Module::Manifest) >= 0.07
-BuildRequires: perl(ORLite) >= 1.48
+# Padre-0.90 states ORLite-1.48, but we have 1.98 and a patch for Padre,
+# bug #914310
+BuildRequires: perl(ORLite) >= 1.98
BuildRequires: perl(Params::Util) >= 0.33
BuildRequires: perl(Parse::ErrorString::Perl) >= 0.14
BuildRequires: perl(Parse::ExuberantCTags) >= 1.00
@@ -208,6 +212,9 @@ Requires: perl(LWP::UserAgent) >= 5.815
Requires: perl(Module::Build) >= 0.37
Requires: perl(Module::CoreList) >= 2.22
Requires: perl(Module::Manifest) >= 0.07
+# Padre-0.90 states ORLite-1.48, but we have 1.98 and a patch for Padre,
+# bug #914310
+Requires: perl(ORLite) >= 1.98
Requires: perl(POSIX)
Requires: perl(PPI) >= 1.213
Requires: perl(PPIx::EditorTools) >= 0.13
@@ -293,6 +300,7 @@ in a directory called .padre.
%prep
%setup -q -n Padre-%{version}
+%patch0 -p1
find share/{examples,templates} -type f \( -name '*.pl' -o -name '*.t' \) \
-exec chmod 755 {} +
@@ -374,6 +382,9 @@ mkdir "$HOME"
%changelog
+* Tue Oct 15 2013 Petr Pisar <ppisar at redhat.com> - 0.90-10
+- Fix compatibility with ORLite-1.98 (bug #914310)
+
* Sun Aug 04 2013 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 0.90-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
More information about the scm-commits
mailing list