From bf6bd43f48304349d42369ca1099dd2bffb52e88 Mon Sep 17 00:00:00 2001 From: Gautham Varma K <43441192+GauthamVarmaK@users.noreply.github.com> Date: Sat, 19 Jun 2021 11:40:04 +0530 Subject: [PATCH] Improve build scripts (#16) * Better handle installation requirements * Install TVHeadend from edge repos * Refactor Build Script * Try installing a different git version * Pin to Specific Versions of musl and gcc To fix build CI * Bump base images properly * Prettified Code! * Remove git and mono pinned to a specific version Co-authored-by: GauthamVarmaK --- tvheadend/Dockerfile | 4 -- tvheadend/build.json | 10 ++-- tvheadend/run.sh | 111 +++++++++++++++++++++++++------------------ 3 files changed, 70 insertions(+), 55 deletions(-) diff --git a/tvheadend/Dockerfile b/tvheadend/Dockerfile index 8b0775c..d7b556b 100644 --- a/tvheadend/Dockerfile +++ b/tvheadend/Dockerfile @@ -2,10 +2,6 @@ ARG BUILD_FROM=ghcr.io/hassio-addons/base/amd64:9.2.2 # hadolint ignore=DL3006 FROM ${BUILD_FROM} -RUN echo 'http://dl-cdn.alpinelinux.org/alpine/edge/testing' >> /etc/apk/repositories -RUN echo 'http://dl-cdn.alpinelinux.org/alpine/edge/community' >> /etc/apk/repositories -RUN echo 'http://dl-cdn.alpinelinux.org/alpine/edge/main' >> /etc/apk/repositories - COPY run.sh /run.sh RUN chmod +x /run.sh RUN /run.sh diff --git a/tvheadend/build.json b/tvheadend/build.json index 2193cd2..00b1427 100644 --- a/tvheadend/build.json +++ b/tvheadend/build.json @@ -1,9 +1,9 @@ { "build_from": { - "aarch64": "ghcr.io/hassio-addons/base/aarch64:9.2.0", - "amd64": "ghcr.io/hassio-addons/base/amd64:9.2.0", - "armhf": "ghcr.io/hassio-addons/base/armhf:9.2.0", - "armv7": "ghcr.io/hassio-addons/base/armv7:9.2.0", - "i386": "ghcr.io/hassio-addons/base/i386:9.2.0" + "aarch64": "ghcr.io/hassio-addons/base/aarch64:9.2.2", + "amd64": "ghcr.io/hassio-addons/base/amd64:9.2.2", + "armhf": "ghcr.io/hassio-addons/base/armhf:9.2.2", + "armv7": "ghcr.io/hassio-addons/base/armv7:9.2.2", + "i386": "ghcr.io/hassio-addons/base/i386:9.2.2" } } diff --git a/tvheadend/run.sh b/tvheadend/run.sh index 92ac8b3..40d2d06 100644 --- a/tvheadend/run.sh +++ b/tvheadend/run.sh @@ -1,77 +1,96 @@ #!/usr/bin/env bashio bashio::log.info "[TVHeadend] Installing TVHeadend" -apk update && apk add --no-cache tvheadend=4.2.8-r3 git=2.32.0-r0 mono=6.12.0.122-r1 +apk update && apk add --no-cache tvheadend=4.2.8-r3 mkdir -p /config/tvheadend/recordings bashio::log.info '[TVHeadend] Setup completed without errors!!' -mkdir -p ~/.wg++ -ln -sf /config/tvheadend/wg++/guide.xml ~/.wg++/guide.xml +check_webgrabplus(){ + if [ -z "$(ls -A /config/tvheadend/wg++)" ]; then return 1; else return 0; fi +} -if [ "$(ls -A /config/tvheadend/wg++)" ]; then +webgrabplus_install(){ + if apk update; then + bashio::log.info '[Webgrab+] APK: Installing required packages.' + if apk add --no-cache --virtual .build-deps git mono --repository http://dl-cdn.alpinelinux.org/alpine/edge/testing; then + bashio::log.info '[Webgrab+] Installing Webgrab+.' + mkdir -p ~/.wg++ + ln -sf /config/tvheadend/wg++/guide.xml ~/.wg++/guide.xml + cd /tmp && \ + wget http://webgrabplus.com/sites/default/files/download/SW/V3.1.0/WebGrabPlus_V3.1_install.tar.gz && \ + tar -xvf WebGrabPlus_V3.1_install.tar.gz && rm WebGrabPlus_V3.1_install.tar.gz && \ + mv .wg++/ /config/tvheadend/wg++ && cd /config/tvheadend/wg++ && ./install.sh + rm -rf siteini.pack/ && \ + git clone https://github.com/DeBaschdi/webgrabplus-siteinipack.git && \ + cp -R webgrabplus-siteinipack/siteini.pack/ siteini.pack && \ + cp siteini.pack/International/horizon.tv.* siteini.user/ + + wget -O /usr/bin/tv_grab_wg++ http://www.webgrabplus.com/sites/default/files/tv_grab_wg.txt && \ + chmod a+x /usr/bin/tv_grab_wg++ + + echo "0 0 * * * /config/tvheadend/wg++/run.sh" >> /var/spool/cron/root + crond + else + bashio::log.info '[Webgrab+] APK: Critical error. Unable install required packages.' + exit 1 + fi + bashio::log.info '[Webgrab+] APK: Removing packages no longer required.' + apk del .build-deps git mono + else + bashio::log.error '[Webgrab+] APK: Critical error. Unable to update pkg list. Check connectivity.' + exit 1 + fi + bashio::log.info '[Webgrab+] Finsihed all APK and PIP3 updates and installs.' +} + +if check_webgrabplus; then bashio::log.info "[Webgrab+] Webgrab+ already installed" else bashio::log.info "[Webgrab+] No webgrab+ installation found - Installing webgrab+" - cd /tmp && \ - wget http://webgrabplus.com/sites/default/files/download/SW/V3.1.0/WebGrabPlus_V3.1_install.tar.gz && \ - tar -xvf WebGrabPlus_V3.1_install.tar.gz && rm WebGrabPlus_V3.1_install.tar.gz && \ - mv .wg++/ /config/tvheadend/wg++ && \ - cd /config/tvheadend/wg++ && \ - ./install.sh - - rm -rf siteini.pack/ && \ - git clone https://github.com/DeBaschdi/webgrabplus-siteinipack.git && \ - cp -R webgrabplus-siteinipack/siteini.pack/ siteini.pack && \ - cp siteini.pack/International/horizon.tv.* siteini.user/ + webgrabplus_install fi -wget -O /usr/bin/tv_grab_wg++ http://www.webgrabplus.com/sites/default/files/tv_grab_wg.txt && \ -chmod a+x /usr/bin/tv_grab_wg++ - bashio::log.info '[Webgrab+] Setup completed without errors!!' -echo "0 0 * * * /config/tvheadend/wg++/run.sh" >> /var/spool/cron/root -crond - check_streamlink () { - if [ -z "$(command -v streamlink)" ]; then return 1; else return 0; fi + if [ -z "$(command -v streamlink)" ]; then return 1; else return 0; fi } streamlink_update () { - if pip3 install --no-cache --upgrade streamlink; then - bashio::log.info "[StreamLink] Streamlink version: $(streamlink --version)." - else - bashio::log.error '[StreamLink] Streamlink update failed!' - fi + if pip3 install --no-cache --upgrade streamlink; then + bashio::log.info "[StreamLink] Streamlink version: $(streamlink --version)." + else + bashio::log.error '[StreamLink] Streamlink update failed!' + fi } streamlink_install () { - bashio::log.info '[StreamLink] APK: Updating pkg list.' - if apk update; then - bashio::log.info '[StreamLink] APK: Installing required packages.' - if apk add --no-cache py3-pip && apk add --no-cache --virtual .build-deps gcc musl-dev; then - bashio::log.info '[StreamLink] PIP3: Updating and installing required packages.' - if ! pip3 install --no-cache --upgrade setuptools; then bashio::log.error '[StreamLink] PIP3: Error while upgrading setuptools.'; fi - if ! pip3 install --no-cache streamlink; then bashio::log.error '[StreamLink] PIP3: Error while installing Streamlink.'; fi + bashio::log.info '[StreamLink] APK: Updating pkg list.' + if apk update; then + bashio::log.info '[StreamLink] APK: Installing required packages.' + if apk add --no-cache py3-pip && apk add --no-cache --virtual .build-deps musl-dev gcc; then + bashio::log.info '[StreamLink] PIP3: Updating and installing required packages.' + if ! pip3 install --no-cache --upgrade setuptools; then bashio::log.error '[StreamLink] PIP3: Error while upgrading setuptools.'; fi + if ! pip3 install --no-cache streamlink; then bashio::log.error '[StreamLink] PIP3: Error while installing Streamlink.'; fi + else + bashio::log.info '[StreamLink] APK: Critical error. Unable install required packages.' + exit 1 + fi + bashio::log.info '[StreamLink] APK: Removing packages no longer required.' + apk del .build-deps gcc musl-dev else - bashio::log.info '[StreamLink] APK: Critical error. Unable install required packages.' - exit 1 + bashio::log.error '[StreamLink] APK: Critical error. Unable to update pkg list. Check connectivity.' + exit 1 fi - bashio::log.info '[StreamLink] APK: Removing packages no longer required.' - apk del .build-deps gcc musl-dev - else - bashio::log.error '[StreamLink] APK: Critical error. Unable to update pkg list. Check connectivity.' - exit 1 - fi - bashio::log.info '[StreamLink] Finsihed all APK and PIP3 updates and installs.' + bashio::log.info '[StreamLink] Finsihed all APK and PIP3 updates and installs.' } if check_streamlink; then - bashio::log.info '[StreamLink] Updating Streamlink...' ; streamlink_update + bashio::log.info '[StreamLink] Updating Streamlink...' ; streamlink_update else - bashio::log.info '[StreamLink] Installing Streamlink...'; streamlink_install + bashio::log.info '[StreamLink] Installing Streamlink...'; streamlink_install fi -bashio::log.info '[StreamLink] Setup completed without errors!!' +bashio::log.info '[StreamLink] Setup completed without errors!!'