Package: release.debian.org
Severity: normal
User: release.debian....@packages.debian.org
Usertags: unblock

Please unblock package bible-kjv

TL;DR: This fixes #991133 ("important"), a regression from
buster. There are two parts to the fix, both small.

unblock bible-kjv/4.34

Bug #991133 is that searching does not work ; this upload fixes that
by making the build non-parallel again, and addressing a longstanding
error that the concordance would be empty if built on a system without
"bible" already installed. This bug is a regression from buster.

The parallelism in the build system was introduced in 4.32 as a
side-effect of moving to dh_auto_build (to make cross-building work);
fixing that is straightforwardly a matter of specifying --no-parallel
to the dh_auto_build invocation.

The other fix is to use bible.rawtext as the source for the
concordance building, rather than trying to invoke "bible" to output
the entire text. This is a small adjustment to the makeconc.pl file
(diff below).

Neither of these bugs cause the package to fail to build, they rather
result in a package built with an empty concordance, which means that
all search attempts fail. Both fixes are necessary (e.g. if I build on
my bullseye system with bible installed, I still need the
--no-parallel fix).

>From a user POV, the buggy version cannot search anything:
bible(KJV) [Gen1:1]> ??hath
  Searching for 'hath'... not found.

whereas a fixed version does:
bible(KJV) [Gen1:1]> ??hath
  Searching for 'hath'... [1840 refs]

This is quite a significant impact on usability, and the fix a very
small diff, so I hope you can unblock this for bullseye, please :)

[
aside: you can tell the fix is working from the buildd logs; if you
look at a 4.32 buildd log and search for "Concordance data file", you see
Concordance data file:
  Version:  02
  Name:     KJV Concordance
  Contents: 0 words
  Word list at file offset 100
  Index at file offset 101
  Data at file offset 103
NB the "0 words" -
https://buildd.debian.org/status/fetch.php?pkg=bible-kjv&arch=amd64&ver=4.32&stamp=1613928140&raw=0

whereas in a fixed version, you see:
Concordance data file:
  Version:  02
  Name:     KJV Concordance
  Contents: 12544 words
  Word list at file offset 100
  Index at file offset 101823
  Data at file offset 126913
NB the >0 words :)
https://buildd.debian.org/status/fetch.php?pkg=bible-kjv&arch=amd64&ver=4.34&stamp=1626696782&raw=0
]

source debdiff:

diff -Nru bible-kjv-4.32/debian/changelog bible-kjv-4.34/debian/changelog
--- bible-kjv-4.32/debian/changelog     2021-02-21 16:05:00.000000000 +0000
+++ bible-kjv-4.34/debian/changelog     2021-07-19 12:36:43.000000000 +0100
@@ -1,3 +1,16 @@
+bible-kjv (4.34) unstable; urgency=medium
+
+  * Check for error return value
+
+ -- Matthew Vernon <matt...@debian.org>  Mon, 19 Jul 2021 12:36:43 +0100
+
+bible-kjv (4.33) unstable; urgency=medium
+
+  * Make the build not run in parallel 
+  * Use bible.rawtext to build concordance (Closes: #991133)
+
+ -- Matthew Vernon <matt...@debian.org>  Mon, 19 Jul 2021 12:10:28 +0100
+
 bible-kjv (4.32) unstable; urgency=medium
 
   * Patch from Helmut Grohne to fix FTCBFS: (Closes: #947616)
diff -Nru bible-kjv-4.32/debian/rules bible-kjv-4.34/debian/rules
--- bible-kjv-4.32/debian/rules 2021-02-21 16:05:00.000000000 +0000
+++ bible-kjv-4.34/debian/rules 2021-07-19 12:36:43.000000000 +0100
@@ -20,9 +20,9 @@
 
 build:
        $(checkdir)
-       dpkg-architecture -a$(DEB_BUILD_ARCH) -f -c dh_auto_build -- 
bible-index.c bible.data bible.data.conc 'LD=$$(CC)'
+       dpkg-architecture -a$(DEB_BUILD_ARCH) -f -c dh_auto_build --no-parallel 
-- bible-index.c bible.data bible.data.conc 'LD=$$(CC)'
        rm -f *.o
-       dh_auto_build -- bible 'LD=$$(CC)'
+       dh_auto_build --no-parallel -- bible 'LD=$$(CC)'
        cd debian && $(CC) -g -O2 -o randverse randverse.c
        touch build
 
diff -Nru bible-kjv-4.32/makeconc.pl bible-kjv-4.34/makeconc.pl
--- bible-kjv-4.32/makeconc.pl  2021-02-21 16:05:00.000000000 +0000
+++ bible-kjv-4.34/makeconc.pl  2021-07-19 12:36:43.000000000 +0100
@@ -18,6 +18,7 @@
 #  Received from Chris Eich, replaces "makeconcordance" script.
 #  Made use of stopwords conditional.
 ###############################################################################
+use IO::Handle
 
 # Putting . on PATH ensures that the bible program will be found.
 $ENV{'PATH'} =~ s/^:*/.:/;
@@ -40,7 +41,8 @@
 # Generate plain text file, one "record" (e.g. bible verse) per line.
 # Fill %lines and $count tables, which are keyed by words.
 
-open(BIBLE, "$PROG -f gen1:1-rev99:99 |");
+open(BIBLE, "bible.rawtext");
+<BIBLE>; #discard the header line
 while (<BIBLE>) {
     s/^\S+\s+//;       # Cut off the record reference that starts each line.
     tr/A-Z/a-z/;       # Downcase.
@@ -53,7 +55,7 @@
        $lines{$word} .= " " . $.;
     }
 }
-close(BIBLE);
+die $! if BIBLE->error();
 
 # Create raw concordance, listing the lines where each word occurs.
 





-- System Information:
Debian Release: 9.13
  APT prefers oldstable
  APT policy: (500, 'oldstable')
Architecture: amd64 (x86_64)

Kernel: Linux 4.9.0-14-amd64 (SMP w/8 CPU cores)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8), 
LANGUAGE=en_GB:en (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: sysvinit (via /sbin/init)

Reply via email to