Skip to content

Commit

Permalink
Improve build scripts (#16)
Browse files Browse the repository at this point in the history
* 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 <[email protected]>
  • Loading branch information
GauthamVarmaK and GauthamVarmaK authored Jun 19, 2021
1 parent ade2f59 commit bf6bd43
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 55 deletions.
4 changes: 0 additions & 4 deletions tvheadend/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
10 changes: 5 additions & 5 deletions tvheadend/build.json
Original file line number Diff line number Diff line change
@@ -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"
}
}
111 changes: 65 additions & 46 deletions tvheadend/run.sh
Original file line number Diff line number Diff line change
@@ -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
}

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 [ "$(ls -A /config/tvheadend/wg++)" ]; then
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!!'

0 comments on commit bf6bd43

Please sign in to comment.