[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#928766: unblock: calibre/3.39.1+dfsg-3



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

Please unblock package calibre

Upgrade tests showed that the switch from hand-written *.pyc (compiled
python files) cleanup to pyclean trigger an error when upgrading from
an old version, in particular from current stable to current testing.

This happens only if calibre is once started as root, so I never tested
this one. When starting as root, python files under
	/usr/lib/calibre/
will be compiled to .pyc files, which were NOT shipped in old versions
(current stable).

Then, after upgrade from stable to testing, these .pyc files are not 
properly removed, in particular the .pyc files in
	/usr/lib/calibre/regex
which is a directory that disappears.

To deal with this special case, I added postinst code that checks
whether we are updating from one of the affected versions, and in the
respective case manually purges .pyc (and .pyo) files and remove the
regex directory.

If this is not done, calibre fails to start as shown in #865879
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=865879

The debdiff is

diff -Nru calibre-3.39.1+dfsg/debian/calibre.postinst calibre-3.39.1+dfsg/debian/calibre.postinst
--- calibre-3.39.1+dfsg/debian/calibre.postinst	2019-02-08 17:41:17.000000000 +0900
+++ calibre-3.39.1+dfsg/debian/calibre.postinst	2019-05-10 11:47:37.000000000 +0900
@@ -2,6 +2,29 @@
 
 set -eu
 
+#
+# deal with .py[co] files that are left overs from pre-pycompile switch
+# since we drop regexp etc files
+
+case "$1" in
+  configure|reconfigure)
+
+  old_version=$2
+
+  if [ -n "$old_version" ] && dpkg --compare-versions "$old_version" lt "3.4.0+dfsg-2"; then
+    find /usr/lib/calibre -name \*.pyc -o -name \*.pyo | while read file ; do
+      rm "${file}"
+    done
+    # regex directory was there but disappeared, try to remove it
+    # now that all the pyc files should be gone.
+    if [ -d /usr/lib/calibre/regex ] ; then
+      rmdir /usr/lib/calibre/regex
+    fi
+  fi
+  ;;
+esac
+
+
 if which pycompile >/dev/null 2>&1; then
   pycompile -p calibre /usr/lib/calibre -V 2.7-2.9
 fi
diff -Nru calibre-3.39.1+dfsg/debian/changelog calibre-3.39.1+dfsg/debian/changelog
--- calibre-3.39.1+dfsg/debian/changelog	2019-02-08 17:41:17.000000000 +0900
+++ calibre-3.39.1+dfsg/debian/changelog	2019-05-10 11:47:37.000000000 +0900
@@ -1,3 +1,9 @@
+calibre (3.39.1+dfsg-3) unstable; urgency=medium
+
+  * remove .pyc files on upgrade from pre-pyclean versions (Closes: #865879)
+
+ -- Norbert Preining <norbert@preining.info>  Fri, 10 May 2019 11:47:37 +0900
+
 calibre (3.39.1+dfsg-2) unstable; urgency=medium
 
   * update my email and VCS fields (Closes: #921473)


Thanks for considering 

Norbert


unblock calibre/3.39.1+dfsg-3

-- System Information:
Debian Release: 10.0
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'testing'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 5.1.0 (SMP w/8 CPU cores)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_OOT_MODULE
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE=en_US:en (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)


Reply to: