diff --git a/.gitignore b/.gitignore
index 590632a..52ef19e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1 @@
-alexandria-0.6.6.tar.gz
-/alexandria-0.6.6-svn1154_trunk.tar.gz
-/alexandria-0.6.7.tar.gz
-/alexandria-0.6.8.tar.gz
-/alexandria-0.6.9.tar.gz
-/alexandria-0.7.4.tar.gz
+/alexandria-*.tar.gz
diff --git a/alexandria-0.7.4-negative-value.patch b/alexandria-0.7.4-negative-value.patch
deleted file mode 100644
index 88ce42c..0000000
--- a/alexandria-0.7.4-negative-value.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- alexandria-book-collection-manager-0.7.4/lib/alexandria/preferences.rb.negative 2019-10-25 01:20:07.000000000 +0900
-+++ alexandria-book-collection-manager-0.7.4/lib/alexandria/preferences.rb 2020-01-04 14:09:13.773911633 +0900
-@@ -239,7 +239,7 @@ module Alexandria
- true
- elsif value == "false" # bool
- false
-- elsif /^[0-9]+$/.match?(value) # int
-+ elsif /^-?[0-9]+$/.match?(value) # int
- value.to_i
- elsif value =~ /^\[(.*)\]$/ # list (assume of type String)
- Regexp.last_match[1].split(",")
diff --git a/alexandria-0.7.4-newbook-nothread.patch b/alexandria-0.7.4-newbook-nothread.patch
deleted file mode 100644
index b0eb648..0000000
--- a/alexandria-0.7.4-newbook-nothread.patch
+++ /dev/null
@@ -1,22 +0,0 @@
---- alexandria-book-collection-manager-0.7.4/lib/alexandria/ui/new_book_dialog.rb.nothread 2020-01-03 17:37:42.394366241 +0900
-+++ alexandria-book-collection-manager-0.7.4/lib/alexandria/ui/new_book_dialog.rb 2020-01-04 13:24:08.240415691 +0900
-@@ -279,15 +279,17 @@ module Alexandria
- get_images_async
- false # continue == false if you get to here. Stop timeout.
- end
-- else
-+ elsif @find_thread
- # Stop if the book find thread has stopped.
- @find_thread.alive?
-+ else
-+ true
- end
- # continue == false if @find_error OR if results are returned
- # timeout ends if continue is false!
-
- unless continue
-- unless @find_thread.alive? # This happens after find_thread is done
-+ unless (@find_thread && @find_thread.alive?) # This happens after find_thread is done
- unless @destroyed
- # GLib::Source.remove(progress_pulsing)
- # @progressbar.hide
diff --git a/alexandria-0.7.4-title-force-encoding.patch b/alexandria-0.7.4-title-force-encoding.patch
index 1dd41a1..23be90e 100644
--- a/alexandria-0.7.4-title-force-encoding.patch
+++ b/alexandria-0.7.4-title-force-encoding.patch
@@ -6,11 +6,11 @@ diff -urp alexandria-book-collection-manager-0.7.4.old/lib/alexandria/ui/book_pr
@button_box.set_child_secondary(help_button, true)
- @entry_title.text = @book_properties_dialog.title = book.title
-+ book_title = book.title.force_encoding('UTF-8')
++ book_title = book.title.dup.force_encoding('UTF-8')
+ @entry_title.text = @book_properties_dialog.title = book_title
@entry_isbn.text = (book.isbn || "")
- @entry_publisher.text = book.publisher
-+ @entry_publisher.text = book.publisher.force_encoding('UTF-8')
++ @entry_publisher.text = book.publisher.dup.force_encoding('UTF-8')
@entry_publish_date.text = book.publishing_year.to_s
@entry_publish_date.signal_connect("focus-out-event") do
text = @entry_publish_date.text
@@ -19,7 +19,7 @@ diff -urp alexandria-book-collection-manager-0.7.4.old/lib/alexandria/ui/book_pr
end
end
- @entry_edition.text = book.edition
-+ @entry_edition.text = book.edition.force_encoding('UTF-8')
++ @entry_edition.text = book.edition ? book.edition.dup.force_encoding('UTF-8') : ""
if book.tags
@entry_tags.text = book.tags.join(",") # tags are comma-separated
end
diff --git a/alexandria-0.7.4-export-to-CSV-bintex-with-ruby19.patch b/alexandria-0.7.5-export-to-CSV-bintex-with-ruby19.patch
similarity index 67%
rename from alexandria-0.7.4-export-to-CSV-bintex-with-ruby19.patch
rename to alexandria-0.7.5-export-to-CSV-bintex-with-ruby19.patch
index 21318a4..95c0ac7 100644
--- a/alexandria-0.7.4-export-to-CSV-bintex-with-ruby19.patch
+++ b/alexandria-0.7.5-export-to-CSV-bintex-with-ruby19.patch
@@ -1,6 +1,6 @@
---- alexandria-book-collection-manager-0.7.4/lib/alexandria/export_library.rb.csv 2020-01-03 16:24:11.989122168 +0900
-+++ alexandria-book-collection-manager-0.7.4/lib/alexandria/export_library.rb 2020-01-03 16:37:23.739363736 +0900
-@@ -110,12 +110,12 @@
+--- alexandria-book-collection-manager-0.7.5/lib/alexandria/export_library.rb.export_csv 2020-10-17 15:49:16.241200513 +0900
++++ alexandria-book-collection-manager-0.7.5/lib/alexandria/export_library.rb 2020-10-17 16:01:18.184960155 +0900
+@@ -108,12 +108,12 @@ module Alexandria
io.puts "
#{book.title} "
# put a link to the book's cover. only works on iPod 5G and above(?).
if File.exist?(cover(book))
@@ -15,9 +15,9 @@
+ io.puts book.authors.join(", ").force_encoding('UTF-8')
+ io.puts book.edition.force_encoding('UTF-8')
io.puts((book.isbn || ""))
- # we need to close the files so the iPod can be ejected/unmounted without us closing Alexandria
- io.close
-@@ -379,8 +379,8 @@
+ # we need to close the files so the iPod can be ejected/unmounted
+ # without us closing Alexandria
+@@ -380,8 +380,8 @@ module Alexandria
end
end
bibtex << "\",\n"
@@ -25,6 +25,6 @@
- bibtex << "publisher = \"#{latex_escape(book.publisher)}\",\n"
+ bibtex << "title = \"#{latex_escape(book.title.force_encoding('UTF-8'))}\",\n"
+ bibtex << "publisher = \"#{latex_escape(book.publisher.force_encoding('UTF-8'))}\",\n"
- bibtex << "OPTnote = \"#{latex_escape(book.notes)}\",\n" if book.notes && !book.notes.empty?
- # year is a required field in bibtex @BOOK
- bibtex << "year = " + (book.publishing_year || '"n/a"').to_s + "\n"
+ if book.notes && !book.notes.empty?
+ bibtex << "OPTnote = \"#{latex_escape(book.notes)}\",\n"
+ end
diff --git a/alexandria-0.7.6-newbook-nothread.patch b/alexandria-0.7.6-newbook-nothread.patch
new file mode 100644
index 0000000..9811969
--- /dev/null
+++ b/alexandria-0.7.6-newbook-nothread.patch
@@ -0,0 +1,22 @@
+--- alexandria-book-collection-manager-0.7.6/lib/alexandria/ui/new_book_dialog.rb.nothread 2020-11-03 00:29:34.194485720 +0900
++++ alexandria-book-collection-manager-0.7.6/lib/alexandria/ui/new_book_dialog.rb 2020-11-03 00:34:01.426386821 +0900
+@@ -281,15 +281,17 @@ module Alexandria
+ get_images_async
+ false # continue == false if you get to here. Stop timeout.
+ end
+- else
++ elsif @find_thread
+ # Stop if the book find thread has stopped.
+ @find_thread.alive?
++ else
++ true
+ end
+ # continue == false if @find_error OR if results are returned
+ # timeout ends if continue is false!
+
+ # @find_thread.alive? happens after find_thread is done
+- unless continue || @find_thread.alive? || @destroyed
++ unless continue || (@find_thread && @find_thread.alive?) || @destroyed
+ notify_end_add_by_isbn
+ @button_add.sensitive = false
+ end
diff --git a/alexandria-0.7.8-explicitly-specify_gem_image_size.patch b/alexandria-0.7.8-explicitly-specify_gem_image_size.patch
new file mode 100644
index 0000000..9230b9a
--- /dev/null
+++ b/alexandria-0.7.8-explicitly-specify_gem_image_size.patch
@@ -0,0 +1,10 @@
+--- alexandria-book-collection-manager-0.7.8/lib/alexandria/export_library.rb.image_size 2020-11-29 20:50:34.000000000 +0900
++++ alexandria-book-collection-manager-0.7.8/lib/alexandria/export_library.rb 2021-08-27 11:09:49.794917238 +0900
+@@ -5,6 +5,7 @@
+ # See the file README.md for authorship and licensing information.
+
+ require "csv"
++gem "image_size"
+ require "image_size"
+ require "tmpdir"
+
diff --git a/alexandria-0.7.8-reset-search-when-adding-new-book.patch b/alexandria-0.7.8-reset-search-when-adding-new-book.patch
new file mode 100644
index 0000000..2c93ebc
--- /dev/null
+++ b/alexandria-0.7.8-reset-search-when-adding-new-book.patch
@@ -0,0 +1,15 @@
+diff -urp '--exclude=*~' alexandria-book-collection-manager-0.7.8/lib/alexandria/ui/ui_manager.rb alexandria-book-collection-manager-0.7.8.new/lib/alexandria/ui/ui_manager.rb
+--- alexandria-book-collection-manager-0.7.8/lib/alexandria/ui/ui_manager.rb 2021-03-05 00:06:46.604012398 +0900
++++ alexandria-book-collection-manager-0.7.8.new/lib/alexandria/ui/ui_manager.rb 2021-03-04 23:53:11.560895622 +0900
+@@ -569,7 +569,10 @@ module Alexandria
+ end
+ @iconview.unfreeze
+ @listview.unfreeze # NEW
+- select_a_book(book) if [Library::BOOK_ADDED, Library::BOOK_UPDATED].include? kind
++ if [Library::BOOK_ADDED, Library::BOOK_UPDATED].include? kind
++ on_clear_search_results
++ select_a_book(book)
++ end
+ elsif selected_library.is_a?(SmartLibrary)
+ refresh_books
+ end
diff --git a/alexandria-0.7.4-ascii-fix.patch b/alexandria-0.7.9-ascii-fix.patch
similarity index 88%
rename from alexandria-0.7.4-ascii-fix.patch
rename to alexandria-0.7.9-ascii-fix.patch
index abda240..4c9082a 100644
--- a/alexandria-0.7.4-ascii-fix.patch
+++ b/alexandria-0.7.9-ascii-fix.patch
@@ -4,8 +4,8 @@
rule ".omf" => [".omf.in"] do |t|
path = File.join(@gnome_helpfiles_dir, @projectname,
locale_for(t.name), "#{@projectname}.xml")
-- data = IO.read(t.source)
-+ data = IO.read(t.source, :encoding => "BINARY")
+- data = File.read(t.source)
++ data = File.read(t.source, :encoding => "BINARY")
data.sub!(/PATH_TO_DOC_FILE/, path)
puts "Generating #{t.name}..."
- File.open(t.name, "w") { |io| io.puts data }
diff --git a/alexandria-0.7.4-utf8-convert.patch b/alexandria-0.7.9-utf8-convert.patch
similarity index 88%
rename from alexandria-0.7.4-utf8-convert.patch
rename to alexandria-0.7.9-utf8-convert.patch
index 694f555..b6b4249 100644
--- a/alexandria-0.7.4-utf8-convert.patch
+++ b/alexandria-0.7.9-utf8-convert.patch
@@ -8,8 +8,8 @@
+ # prevent crash...
super(parent,
format(_("The book '%s' already exists in '%s'. Would you like " \
-- "to replace it?"), book.title, library.name),
-+ "to replace it?"), book.title, library.name).dup.map!{|str| str.force_encoding("UTF-8")},
+- "to replace it?"), book.title, library.name),
++ "to replace it?"), book.title, library.name).dup.force_encoding("UTF-8"),
Gtk::Stock::DIALOG_QUESTION,
[[_("_Skip"), Gtk::ResponseType::CANCEL],
[_("_Replace"), Gtk::ResponseType::OK]],
@@ -22,7 +22,7 @@
- iter[Columns::AUTHORS] = book.authors.join(", ")
+ # Don't know why, however force_encoding seems needed here to
+ # prevent crash...
-+ iter[Columns::AUTHORS] = book.authors.dup.map!{|str| str.force_encoding("UTF-8")}.join(", ")
++ iter[Columns::AUTHORS] = book.authors.dup.map!{|str| str.dup.force_encoding("UTF-8")}.join(", ")
iter[Columns::ISBN] = book.isbn.to_s
iter[Columns::PUBLISHER] = book.publisher
iter[Columns::PUBLISH_DATE] = book.publishing_year.to_s
diff --git a/alexandria-0.7.4-yaml-unescape.patch b/alexandria-0.7.9-yaml-unescape.patch
similarity index 63%
rename from alexandria-0.7.4-yaml-unescape.patch
rename to alexandria-0.7.9-yaml-unescape.patch
index 22c5759..0b2c42a 100644
--- a/alexandria-0.7.4-yaml-unescape.patch
+++ b/alexandria-0.7.9-yaml-unescape.patch
@@ -1,7 +1,7 @@
---- alexandria-book-collection-manager-0.7.4/lib/alexandria/library_store.rb.broken_yaml 2019-10-25 01:20:07.000000000 +0900
-+++ alexandria-book-collection-manager-0.7.4/lib/alexandria/library_store.rb 2020-01-07 14:39:45.495305334 +0900
+--- alexandria-book-collection-manager-0.7.6/lib/alexandria/library_store.rb.broken_yaml 2020-11-01 21:35:07.000000000 +0900
++++ alexandria-book-collection-manager-0.7.6/lib/alexandria/library_store.rb 2020-11-03 00:26:24.240552377 +0900
@@ -48,8 +48,23 @@ module Alexandria
- Dir["*" + Library::EXT[:book]].each do |filename|
+ Dir["*" + Library::EXT[:book]].sort.each do |filename|
test[1] = filename if (test[0]).zero?
+ book_valid_p = true
@@ -33,21 +33,22 @@
old_isbn = book.isbn
old_pub_year = book.publishing_year
begin
-@@ -170,6 +185,8 @@ module Alexandria
+@@ -181,6 +196,9 @@ module Alexandria
private
def regularize_book_from_yaml(name)
++ require 'syck/constants'
+ require 'syck/encoding'
+
- text = IO.read(name)
+ text = File.read(name)
# Code to remove the mystery string in books imported from Amazon
-@@ -192,7 +209,7 @@ module Alexandria
+@@ -203,7 +221,7 @@ module Alexandria
end
- # TODO: Ensure book loading passes through Book#initialize
-- book = YAML.safe_load(text, permitted_classes: [Book, Time])
-+ book = YAML.safe_load(Syck::unescape(text), permitted_classes: [Book, Time])
+- book = Book.from_yaml(text)
++ book = Book.from_yaml(Syck::unescape(text))
- unless book.isbn.class == String
+ unless book.isbn.instance_of? String
# HACK
+ md = /isbn: (.+)/.match(text)
diff --git a/alexandria-0.7.4-z3950-zoom-count.patch b/alexandria-0.7.9-z3950-zoom-count.patch
similarity index 84%
rename from alexandria-0.7.4-z3950-zoom-count.patch
rename to alexandria-0.7.9-z3950-zoom-count.patch
index ec82c15..8bba797 100644
--- a/alexandria-0.7.4-z3950-zoom-count.patch
+++ b/alexandria-0.7.9-z3950-zoom-count.patch
@@ -1,5 +1,5 @@
---- alexandria-book-collection-manager-0.7.4/lib/alexandria/book_providers/z3950.rb.zoom_count 2019-10-25 01:20:07.000000000 +0900
-+++ alexandria-book-collection-manager-0.7.4/lib/alexandria/book_providers/z3950.rb 2020-01-04 13:59:39.224201295 +0900
+--- alexandria-book-collection-manager-0.7.4/lib/alexandria/book_providers/z3950_provider.rb.zoom_count 2019-10-25 01:20:07.000000000 +0900
++++ alexandria-book-collection-manager-0.7.4/lib/alexandria/book_providers/z3950_provider.rb 2020-01-04 13:59:39.224201295 +0900
@@ -149,7 +149,11 @@ module Alexandria
conn.preferred_record_syntax = prefs["record_syntax"]
diff --git a/alexandria.spec b/alexandria.spec
index ded1e21..38aa9f4 100644
--- a/alexandria.spec
+++ b/alexandria.spec
@@ -1,9 +1,14 @@
-%define majorver 0.7.4
+%define BothRequires() \
+Requires: %{*} \
+BuildRequires: %{*} \
+%{nil}
+
+%define majorver 0.7.9
%undefine minorver
%undefine ifpre
-%define fedorarel 1
-%define rel %{?ifpre:0.}%{fedorarel}%{?minorver:.%minorver}
+%define baserelease 12
+%define rel %{?ifpre:0.}%{baserelease}%{?minorver:.%minorver}
@@ -12,7 +17,10 @@ Version: %{majorver}
Release: %{rel}%{?dist}
Summary: Book collection manager
-License: GPLv2+
+# Overall GPL-2.0-or-later
+# share/gnome/help/alexandria/C/alexandria.xml GFDL-1.2-or-later
+# SPDX confirmed
+License: GPL-2.0-or-later AND GPL-2.0-or-later
URL: https://github.com/mvz/alexandria-book-collection-manager/
Source0: %{url}/archive/v%{version}/%{name}-%{version}%{?minorver:-%{minorver}}.tar.gz
# Patches discussing with the upstream
@@ -31,7 +39,7 @@ Patch3: alexandria-0.7.4-dont_use_thread_when_adding_file_by_isdn.patch
# Upstream patches
# Patches not submitted to the upstream
# Force encoding type to make rake happy
-Patch14: alexandria-0.7.4-ascii-fix.patch
+Patch14: alexandria-0.7.9-ascii-fix.patch
# Fix kcode issues with 1.9
# Well, with the original fix, some strange failure on startup
# happens on ja_JP.utf8...
@@ -40,31 +48,33 @@ Patch14: alexandria-0.7.4-ascii-fix.patch
# a. loading yaml file generated by ruby 18x will show garbage characters
# b. moving book entry to another library which also contains the
# same book will cause crash..
-Patch18: alexandria-0.7.4-utf8-convert.patch
+Patch18: alexandria-0.7.9-utf8-convert.patch
# More UTF-8 fix on ruby 1.9, when exporting library to HTML
# (bug 819188)
Patch19: alexandria-0.7.4-export-to-HTML-with-ruby19.patch
# More UTF-8 fix on ruby 1.9, when exporting library to csv
# or bibtex
-Patch20: alexandria-0.7.4-export-to-CSV-bintex-with-ruby19.patch
+Patch20: alexandria-0.7.5-export-to-CSV-bintex-with-ruby19.patch
# Remove garbage character with icon view on multibyte locate
Patch21: alexandria-0.7.4-iconview-multibyte.patch
# Split Patch18 into two patches, one for lib/alexandria/models/library.rb
# (this file) and other. Also handle broken yaml file correctly and let
# user redownload it
# (bug 861740)
-Patch22: alexandria-0.7.4-yaml-unescape.patch
+Patch22: alexandria-0.7.9-yaml-unescape.patch
# Add a feature to remove broken yaml files at startup when requested
# (bug 869556)
Patch23: alexandria-0.7.4-delete-broken-yaml.patch
# Handle the case thread was not created with adding new book
-Patch25: alexandria-0.7.4-newbook-nothread.patch
+Patch25: alexandria-0.7.6-newbook-nothread.patch
# Make z3950 provider work
# ZOOM::Connection.count must be string
-Patch26: alexandria-0.7.4-z3950-zoom-count.patch
+Patch26: alexandria-0.7.9-z3950-zoom-count.patch
# Read negative value as integer in case position has such value
# (bug 1014295)
-Patch27: alexandria-0.7.4-negative-value.patch
+# https://github.com/mvz/alexandria-book-collection-manager/issues/135
+# Applied in 0.7.9
+#Patch27: alexandria-0.7.6-negative-value.patch
# Specify goocanvas version (bug 1024931)
# This is obsolete with 0.7.4. 0.7.4 uses goocanvas2 with introspection
# Make glade2 translatable text actually translated (i10ned)
@@ -73,6 +83,11 @@ Patch29: alexandria-0.7.4-glade-gettext.patch
Patch30: alexandria-0.7.4-title-force-encoding.patch
# Remove undefined / unneeded method
Patch31: alexandria-0.7.4-remove-undefined-method.patch
+# Once reset search text when adding new book (bug 1909500)
+# https://github.com/mvz/alexandria-book-collection-manager/issues/106
+Patch32: alexandria-0.7.8-reset-search-when-adding-new-book.patch
+# Explicitly specify image_size gem
+Patch33: alexandria-0.7.8-explicitly-specify_gem_image_size.patch
BuildArch: noarch
@@ -89,31 +104,42 @@ BuildRequires: gettext
BuildRequires: intltool
# From 0.7.4
BuildRequires: rubygem(rspec)
+# Needed since Ruby 3.0.
+# https://github.com/mvz/alexandria-book-collection-manager/issues/124
+%BothRequires rubygem(rexml)
+# rspec test
+BuildRequires: %{_bindir}/xvfb-run
+BuildRequires: %{_bindir}/ping
+BuildRequires: rubygem(webmock)
+BuildRequires: rubygem(json)
+BuildRequires: rubygem(pry)
+BuildRequires: gstreamer1-plugins-base
+# autoaudiosink
+BuildRequires: gstreamer1-plugins-good
-# Amazon AWS v3 -> v4 switch
-# AWS v4 is supported by alexandria itself
-# But hpricot is still needed
+# 0.7.9 uses nokogiri instead of hpricot
#Requires: ruby(amazon)
-Requires: rubygem(gettext)
-Requires: rubygem(hpricot)
-Requires: rubygem(htmlentities)
-Requires: ruby(imagesize)
+%BothRequires rubygem(gettext)
+%BothRequires rubygem(htmlentities)
+%BothRequires rubygem(image_size)
+%BothRequires rubygem(nokogiri)
# Dependency removed on 0.6.4b1
#Requires: ruby(mechanize)
# Kill ruby(revolution) dependency
#Requires: ruby(revolution)
+%BothRequires rubygem(psych)
# ruby(zoom) -> rubygem(zoom) switch
#Requires: ruby(zoom)
-Requires: rubygem(zoom) >= 0.3.0
-Requires: rubygem(marc)
+%BothRequires rubygem(zoom) >= 0.3.0
+%BothRequires rubygem(marc)
# Killed on 0.6.8
#Requires: ruby(gconf2)
# Explicitly
Requires: GConf2
-Requires: rubygem(gdk_pixbuf2)
-Requires: rubygem(glib2)
+%BothRequires rubygem(gdk_pixbuf2)
+%BothRequires rubygem(glib2)
# Killed on 0.6.8
#Requires: ruby(gnome2)
#Requires: ruby(libglade2)
@@ -121,12 +147,11 @@ Requires: rubygem(glib2)
# Requires: rubygem(goocanvas)
# The above needs more explicit
# With 0.7.4 this dependency changed, goocanvas2 + introspection
-Requires: rubygem(goocanvas)
+%BothRequires rubygem(goocanvas) >= 2
+%BothRequires rubygem(gstreamer)
+%BothRequires rubygem(gtk3)
# Uses syck (bug 922217)
-# Once kill this with 0.7.4
-%if 0%{?fedora} < 32
-Requires: rubygem(syck)
-%endif
+%BothRequires rubygem(syck)
Requires(pre): GConf2
Requires(post): GConf2
@@ -139,23 +164,29 @@ Alexandria is a GNOME application to help you manage your book collection.
%setup -q -n %{name}-book-collection-manager-%{majorver}%{?minorver:-%{?minorver}}
# Check if patch2 issue is fixed in rev 1154
-#%%patch2 -p0 -b .up25348
-%patch3 -p1 -b .up28263.isdn
-#%%patch4 -p0 -b .up29479.search
-%patch14 -p1 -b .ascii
-#%%patch15 -p1 -b .kcodefix
-%patch18 -p1 -b .ruby19_utf8
-%patch19 -p1 -b .export_html
-%patch20 -p1 -b .export_csv
-%patch21 -p1 -b .icon_kanji
-%patch22 -p1 -b .broken_yaml
-%patch23 -p1 -b .delete_yaml
-%patch25 -p1 -b .nothread
-%patch26 -p1 -b .z3950_count
-%patch27 -p1 -b .negative
-%patch29 -p1 -b .gettext
-%patch30 -p1 -b .utf8_2
-%patch31 -p1 -b .undefined_method
+#%%patch -P2 -p0 -b .up25348
+%patch -P3 -p1 -b .up28263.isdn
+#%%patch -P4 -p0 -b .up29479.search
+%patch -P14 -p1 -b .ascii -Z
+#%%patch -P15 -p1 -b .kcodefix
+%patch -P18 -p1 -b .ruby19_utf8 -Z
+%patch -P19 -p1 -b .export_html -Z
+%patch -P20 -p1 -b .export_csv -Z
+%patch -P21 -p1 -b .icon_kanji -Z
+%patch -P22 -p1 -b .broken_yaml -Z
+%patch -P23 -p1 -b .delete_yaml -Z
+%patch -P25 -p1 -b .nothread -Z
+%patch -P26 -p1 -b .z3950_count -Z
+#%%patch -P27 -p1 -b .negative -Z
+%patch -P29 -p1 -b .gettext -Z
+%patch -P30 -p1 -b .utf8_2 -Z
+%patch -P31 -p1 -b .undefined_method -Z
+%patch -P32 -p1 -b .reset_search -Z
+%patch -P33 -p1 -b .image_size -Z
+
+# Part of https://github.com/mvz/alexandria-book-collection-manager/commit/d9116e99242c209129bf09c3c1ad9a4ff6fdcf44
+# Needed for ruby3.2 - removes File.exists?
+sed -i util/rake/gettextgenerate.rb -e 's|unless FileTest.exists.*$||'
# Embed Fedora EVR
%{__sed} -i.evr \
@@ -183,9 +214,6 @@ rake install_package_staging \
RUBYLIBDIR=%{ruby_vendorlibdir}
desktop-file-install \
-%if 0%{?fedora} < 19
- --vendor fedora \
-%endif
--dir $RPM_BUILD_ROOT%{_datadir}/applications/ \
--delete-original \
$RPM_BUILD_ROOT%{_datadir}/applications/%{name}.desktop
@@ -248,6 +276,53 @@ EOF
%find_lang %{name}
+%check
+export LANG=C.utf8
+# Tweak config path for %%check
+sed -i.testsuite lib/alexandria/config.rb \
+ -e 's|/usr/share|%{buildroot}%{_datadir}|'
+# Kill tests which needs network
+disable_test() {
+ sed -i.testsuite $1 -e "\@$2@s|it|xit|"
+}
+
+
+rm -rf .config/gconf
+mkdir -p .config/gconf
+export XDG_CONFIG_HOME=$(pwd)/.config
+
+# fake bundler
+mkdir -p FAKE/bundler
+touch FAKE/bundler/setup.rb
+touch FAKE/simplecov.rb
+export RUBYLIB=$(pwd)/FAKE
+
+# Disable z3950 provider test
+disable_test spec/alexandria/book_providers/bl_provider_spec.rb "works"
+
+ping -w3 www.google.co.jp && \
+ {
+ # Need taking a look at this
+ disable_test spec/alexandria/book_providers/loc_provider_spec.rb "works for a book";
+ true;
+ } \
+ || \
+ {
+ disable_test spec/alexandria/book_providers/thalia_provider_spec.rb "works when searching by ISBN";
+ disable_test spec/alexandria/book_providers/loc_provider_spec.rb "works for a book";
+ disable_test spec/alexandria/book_providers/sbn_provider_spec.rb "works";
+ sed -i spec/alexandria/book_providers_spec.rb -e "\@Alexandria::BookProviders::SBNProvider@{n;s|it|xit|}";
+ }
+
+xvfb-run \
+ -s "-screen 0 640x480x24" \
+ rake spec:unit
+
+find . -name \*.testsuite | while read f
+do
+ mv ${f} ${f%.testsuite}
+done
+
%pre
%gconf_schema_prepare %{name}
@@ -258,7 +333,7 @@ EOF
%gconf_schema_remove %{name}
%files -f %{name}.lang
-%doc COPYING
+%license COPYING
%doc ChangeLog*
%doc INSTALL.md
%doc README*
@@ -284,6 +359,100 @@ EOF
%{_datadir}/icons/hicolor/*/apps/%{name}.*
%changelog
+* Fri Jan 16 2026 Fedora Release Engineering - 0.7.9-12
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild
+
+* Wed Jul 23 2025 Fedora Release Engineering - 0.7.9-11
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
+
+* Thu Jan 16 2025 Fedora Release Engineering - 0.7.9-10
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
+
+* Sat Nov 16 2024 Mamoru TASAKA - 0.7.9-9
+- Add missing syck file import (bug 2326632)
+
+* Wed Jul 17 2024 Fedora Release Engineering - 0.7.9-8
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
+
+* Mon Jan 22 2024 Fedora Release Engineering - 0.7.9-7
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
+
+* Fri Jan 19 2024 Fedora Release Engineering - 0.7.9-6
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
+
+* Tue Jan 2 2024 Mamoru TASAKA - 0.7.9-5
+- SPDX migration
+
+* Fri Dec 22 2023 Mamoru TASAKA - 0.7.9-4
+- Disable z3950x provider test
+
+* Wed Jul 19 2023 Fedora Release Engineering - 0.7.9-3.1
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
+
+* Wed Jan 18 2023 Fedora Release Engineering - 0.7.9-2.1
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
+
+* Mon Oct 17 2022 Mamoru TASAKA - 0.7.9-2
+- Backport some changes on upstream git for ruby3.2 File.exists? removal
+
+* Wed Jul 20 2022 Fedora Release Engineering - 0.7.9-1.1
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
+
+* Sun Feb 27 2022 Mamoru TASAKA - 0.7.9-1
+- 0.7.9
+
+* Wed Jan 19 2022 Fedora Release Engineering - 0.7.8-6.2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
+
+* Mon Jan 17 2022 Kevin Fenzi - 0.7.8-6.1
+- Rebuild for hiredis 1.0.2
+
+* Fri Aug 27 2021 Mamoru TASAKA - 0.7.8-6
+- Switch to image_size gem, specify explicitly
+- Disable 1 failing test
+
+* Wed Jul 21 2021 Fedora Release Engineering - 0.7.8-5.1
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
+
+* Sun Mar 7 2021 Mamoru TASAKA - 0.7.8-5
+- set XDG_CONFIG_HOME for test suite
+
+* Fri Mar 5 2021 Mamoru TASAKA - 0.7.8-4
+- Simply use rake spec, and fake bundler / simplecov
+
+* Fri Mar 5 2021 Mamoru TASAKA - 0.7.8-3
+- Once reset search text when adding new book (bug 1909500)
+- Enable test, fix Fedora specific patch (errors detected with the test)
+
+* Mon Jan 25 2021 Fedora Release Engineering - 0.7.8-2.1
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
+
+* Thu Jan 7 2021 Vít Ondruch - 0.7.8-2
+- Add ReXML dependency needed for Ruby 3.0.
+
+* Thu Dec 3 2020 Mamoru TASAKA - 0.7.8-1
+- 0.7.8
+
+* Mon Nov 2 2020 Mamoru TASAKA - 0.7.6-1
+- 0.7.6
+
+* Fri Oct 30 2020 Mamoru TASAKA - 0.7.5-1
+- 0.7.5
+- Once revert upstream change about setting initial visibility to false
+ (upstream bug 86)
+
+* Sun Aug 9 2020 Mamoru TASAKA - 0.7.4-3
+- syck is needed, adding to Requires again
+
+* Mon Jul 27 2020 Fedora Release Engineering - 0.7.4-2.1
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
+
+* Mon May 11 2020 Mamoru TASAKA - 0.7.4-2
+- Fix Requires, expecially, add R: rubygem(gtk3) (bug 1833761)
+
+* Tue Jan 28 2020 Fedora Release Engineering - 0.7.4-1.1
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
+
* Wed Jan 15 2020 Mamoru TASAKA - 0.7.4-1
- 0.7.4, move to github mvz fork
diff --git a/sources b/sources
index 5f4bfe0..b0c7759 100644
--- a/sources
+++ b/sources
@@ -1,2 +1 @@
-SHA512 (alexandria-0.6.9.tar.gz) = d4a972d3a276bfd2ba36b7da6425230e16139f5a8f5174f059a6046f16fcc43299872f5082d87dc2b69d1c0b568ba652d4ab4d545a4b7c35a615ebd4e707dbd7
-SHA512 (alexandria-0.7.4.tar.gz) = 7bbb6e8b201dbd7d4547dbc546b6ec7affed765baa57dcfd3448cb3fb2f2557150bd7649a238fd85b568dba3c48a9805977d42cb7347df6df31aba03ec2da953
+SHA512 (alexandria-0.7.9.tar.gz) = c1619b68778c1b94b6dff32c7be698afe29488c96c1719fcf65b6a03b3078c58053a5e76e9771a00a06dc654f95329af381c6659521f137df8eccca351811a18