diff --git a/roles/calibre/defaults/main.yml b/roles/calibre/defaults/main.yml index a89171f8b..effe32dc4 100644 --- a/roles/calibre/defaults/main.yml +++ b/roles/calibre/defaults/main.yml @@ -19,6 +19,12 @@ calibre_sample_book: "Metamorphosis-jackson.epub" calibre_src_url: "https://raw.githubusercontent.com/kovidgoyal/calibre/master/setup/linux-installer.py" +calibre_deb_url: http://download.iiab.io/packages +# Must contain both packages for the pinned version, formatted as follows: +# calibre_3.30.0+dfsg-1_all (25M, 2018-08-24) +# calibre-bin_3.30.0+dfsg-1_armhf (742K, 2018-08-30) +calibre_deb_pin_version: 3.30.0 + # USE TO TEST debs.yml (RASPBIAN APPROACH!) ON DEBIAN 9.X: (now handled by calibre_via_debs in /opt/iiab/iiab/vars/*) #calibre_debs_on_debian: True # Enable unstable .deb's, not just testing .deb's: (moved to /etc/iiab/local_vars.yml & /opt/iiab/iiab/vars/default_vars.yml) diff --git a/roles/calibre/tasks/debs.yml b/roles/calibre/tasks/debs.yml index 23504f511..612404a2a 100644 --- a/roles/calibre/tasks/debs.yml +++ b/roles/calibre/tasks/debs.yml @@ -27,16 +27,33 @@ # command: scripts/calibre-install-latest.sh # NECESSARY since Calibre 3.24 (BEWARE installing libc6 will prevent boot in RPi Zero W, i.e. if calibre-install-packages.sh isn't run above!) # when: is_rpi and internet_available -- name: Upgrade to latest Calibre using .deb's from testing (rpi) - #command: scripts/calibre-install-latest-rpi-plus.sh # WORKS for Calibre 3.27.1 on 2018-07-22 (#948 -> PR #950) THO NOT BOOTABLE IN Zero W (#952). Similar to Calibre 3.24.x & 3.25 in June 2018, which had used calibre-install-packages.sh then Debian's own calibre-install-latest.sh - #command: scripts/calibre-install-latest-rpi.sh # WORKS for Calibre 3.28 on 2018-07-26 (PR #971). Likewise for Calibre 3.26.x - command: scripts/calibre-install-latest.sh # REQUIRED for Calibre 3.29 on 2018-08-21 (PR #1015), as all above strategies failed (only script that was not attempted: Sid-like calibre-install-unstable.sh). CLARIF: RESULTING microSD's ARE NOT BOOTABLE IN Zero W (#952) +#- name: Upgrade to latest Calibre using .deb's from testing (rpi) +# #command: scripts/calibre-install-latest-rpi-plus.sh # WORKS for Calibre 3.27.1 on 2018-07-22 (#948 -> PR #950) THO NOT BOOTABLE IN Zero W (#952). Similar to Calibre 3.24.x & 3.25 in June 2018, which had used calibre-install-packages.sh then Debian's own calibre-install-latest.sh +# #command: scripts/calibre-install-latest-rpi.sh # WORKS for Calibre 3.28 on 2018-07-26 (PR #971). Likewise for Calibre 3.26.x +# command: scripts/calibre-install-latest.sh # REQUIRED for Calibre 3.29 on 2018-08-21 (PR #1015), as all above strategies failed (only script that was not attempted: Sid-like calibre-install-unstable.sh). CLARIF: RESULTING microSD's ARE NOT BOOTABLE IN Zero W (#952) +# when: is_rpi and internet_available + +- name: Download PINNED version {{ calibre_deb_pin_version }} of calibre & calibre-bin (rpi) + get_url: + url: "{{ calibre_deb_url }}/{{ item }}" + dest: "{{ downloads_dir }}/{{ item }}" + mode: 0644 + #force: no + #backup: no + timeout: "{{ download_timeout }}" + with_items: + - calibre_{{ calibre_deb_pin_version }}+dfsg-1_all.deb + - calibre-bin_{{ calibre_deb_pin_version }}+dfsg-1_armhf.deb when: is_rpi and internet_available -- name: Upgrade to Calibre testing .deb's - target Ubuntu 16.04 (not rpi and not ubuntu_18) +- name: Install/Upgrade both, to PINNED version {{ calibre_deb_pin_version }} while using additional .deb's from testing (rpi) + command: scripts/calibre-install-pinned-rpi.sh # RECOMMENDED for Calibre 3.30 on 2018-08-30, so IIAB microSD will be bootable in RPi Zero W + when: is_rpi and internet_available + +- name: Install/Upgrade to Calibre testing .deb's - target Ubuntu 16.04 (not rpi and not ubuntu_18) command: scripts/calibre-install-latest.sh when: not is_rpi and not is_ubuntu_18 and internet_available -- name: Upgrade to Calibre unstable .deb's IF calibre_unstable_debs +- name: Install/Upgrade to Calibre unstable .deb's IF calibre_unstable_debs command: scripts/calibre-install-unstable.sh when: calibre_unstable_debs and internet_available diff --git a/roles/calibre/tasks/main.yml b/roles/calibre/tasks/main.yml index ec8b8e62a..f2adfef0d 100644 --- a/roles/calibre/tasks/main.yml +++ b/roles/calibre/tasks/main.yml @@ -12,9 +12,9 @@ with_items: - calibre - calibre-bin - when: internet_available and (not calib_executable.stat.exists) + when: internet_available and not is_rpi and (not calib_executable.stat.exists) -- name: Install Calibre experimental .debs IF calibre_via_debs (AND /usr/bin/calibre WAS MISSING) +- name: Install Calibre .debs IF calibre_via_debs (AND /usr/bin/calibre WAS MISSING) include_tasks: debs.yml when: calibre_via_debs and (not calib_executable.stat.exists) diff --git a/scripts/calibre-install-pinned-rpi.sh b/scripts/calibre-install-pinned-rpi.sh new file mode 100755 index 000000000..c0dc408a5 --- /dev/null +++ b/scripts/calibre-install-pinned-rpi.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +# Thanks to Jerry Vonau (https://github.com/jvonau) who made this critical +# breakthrough possible! +# +# Might break future updates; you have been warned. +# SEE NOTES AT TOP OF scripts/calibre-install-packages.sh + +export DEBIAN_FRONTEND=noninteractive +# Prepares to update to latest from raspbian testing +echo "deb http://raspbian.raspberrypi.org/raspbian/ testing main" > /etc/apt/sources.list.d/rpi-testing.list +apt update +# @jvonau explains that stale .deb's should be avoided as: "apt will pick the highest version to install after churning a bit..." +apt -y install /opt/iiab/downloads/calibre*.deb +#sed -i '$ d' /etc/apt/sources.list.d/rpi-testing.list # Removes last line +rm /etc/apt/sources.list.d/rpi-testing.list +# Clears the cache of rpi/testing +apt update