From c1d27489dfd129e475e7783c3b38f768b2c4492c Mon Sep 17 00:00:00 2001 From: TheSpad Date: Thu, 23 Feb 2023 16:24:53 +0000 Subject: [PATCH] Rebase to 3.17, migrate to s6v3 --- Dockerfile | 542 +++++++++--------- Dockerfile.aarch64 | 536 +++++++++-------- Dockerfile.armhf | 537 +++++++++-------- README.md | 1 + readme-vars.yml | 1 + .../dependencies.d/init-video-config | 0 .../dependencies.d/init-config | 0 .../s6-rc.d/init-tvheadend-config/run} | 15 +- .../s6-rc.d/init-tvheadend-config/type | 1 + .../s6-rc.d/init-tvheadend-config/up | 1 + .../dependencies.d/init-tvheadend-config | 0 .../s6-rc.d/init-video-config/run} | 1 + .../s6-overlay/s6-rc.d/init-video-config/type | 1 + .../s6-overlay/s6-rc.d/init-video-config/up | 1 + .../dependencies.d/init-services | 0 .../s6-rc.d/svc-tvheadend/notification-fd | 1 + .../s6-rc.d/svc-tvheadend}/run | 2 + .../etc/s6-overlay/s6-rc.d/svc-tvheadend/type | 1 + .../user/contents.d/init-tvheadend-config | 0 .../s6-rc.d/user/contents.d/svc-tvheadend | 0 20 files changed, 810 insertions(+), 831 deletions(-) create mode 100644 root/etc/s6-overlay/s6-rc.d/init-config-end/dependencies.d/init-video-config create mode 100644 root/etc/s6-overlay/s6-rc.d/init-tvheadend-config/dependencies.d/init-config rename root/etc/{cont-init.d/30-config => s6-overlay/s6-rc.d/init-tvheadend-config/run} (80%) mode change 100644 => 100755 create mode 100644 root/etc/s6-overlay/s6-rc.d/init-tvheadend-config/type create mode 100644 root/etc/s6-overlay/s6-rc.d/init-tvheadend-config/up create mode 100644 root/etc/s6-overlay/s6-rc.d/init-video-config/dependencies.d/init-tvheadend-config rename root/etc/{cont-init.d/50-gid-video => s6-overlay/s6-rc.d/init-video-config/run} (96%) mode change 100644 => 100755 create mode 100644 root/etc/s6-overlay/s6-rc.d/init-video-config/type create mode 100644 root/etc/s6-overlay/s6-rc.d/init-video-config/up create mode 100644 root/etc/s6-overlay/s6-rc.d/svc-tvheadend/dependencies.d/init-services create mode 100644 root/etc/s6-overlay/s6-rc.d/svc-tvheadend/notification-fd rename root/etc/{services.d/tvheadend => s6-overlay/s6-rc.d/svc-tvheadend}/run (53%) create mode 100644 root/etc/s6-overlay/s6-rc.d/svc-tvheadend/type create mode 100644 root/etc/s6-overlay/s6-rc.d/user/contents.d/init-tvheadend-config create mode 100644 root/etc/s6-overlay/s6-rc.d/user/contents.d/svc-tvheadend diff --git a/Dockerfile b/Dockerfile index 576d499..ab6c602 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,6 @@ -FROM ghcr.io/linuxserver/baseimage-alpine:3.15 as buildstage +# syntax=docker/dockerfile:1 + +FROM ghcr.io/linuxserver/baseimage-alpine:3.17 as buildstage ############## build stage ############## # package versions @@ -6,7 +8,7 @@ ARG ARGTABLE_VER="2.13" ARG XMLTV_VER="v1.0.0" # environment settings -ARG TZ="Europe/Oslo" +ARG TZ="Etc/UTC" ARG TVHEADEND_COMMIT ENV HOME="/config" @@ -14,209 +16,200 @@ ENV HOME="/config" COPY patches/ /tmp/patches/ RUN \ - echo "**** install build packages ****" && \ - apk add --no-cache \ - autoconf \ - automake \ - bsd-compat-headers \ - bzip2 \ - cmake \ - curl \ - ffmpeg-dev \ - file \ - findutils \ - g++ \ - gcc \ - gettext-dev \ - git \ - gnu-libiconv-dev \ - gzip \ - jq \ - libcurl \ - libdvbcsa-dev \ - libgcrypt-dev \ - libhdhomerun-dev \ - libtool \ - libva-dev \ - libvpx-dev \ - libxml2-dev \ - libxslt-dev \ - linux-headers \ - make \ - openssl-dev \ - opus-dev \ - patch \ - pcre2-dev \ - perl-archive-zip \ - perl-boolean \ - perl-capture-tiny \ - perl-cgi \ - perl-compress-raw-zlib \ - perl-date-manip \ - perl-datetime \ - perl-datetime-format-strptime \ - perl-datetime-timezone \ - perl-dbd-sqlite \ - perl-dbi \ - perl-dev \ - perl-digest-sha1 \ - perl-doc \ - perl-file-slurp \ - perl-file-temp \ - perl-file-which \ - perl-getopt-long \ - perl-html-parser \ - perl-html-tree \ - perl-http-cookies \ - perl-io \ - perl-io-html \ - perl-io-socket-ssl \ - perl-io-stringy \ - perl-json \ - perl-json-xs \ - perl-libwww \ - perl-lingua-en-numbers-ordinate \ - perl-lingua-preferred \ - perl-list-moreutils \ - perl-lwp-useragent-determined \ - perl-module-build \ - perl-module-pluggable \ - perl-net-ssleay \ - perl-parse-recdescent \ - perl-path-class \ - perl-scalar-list-utils \ - perl-term-progressbar \ - perl-term-readkey \ - perl-test-exception \ - perl-test-requires \ - perl-timedate \ - perl-try-tiny \ - perl-unicode-string \ - perl-xml-libxml \ - perl-xml-libxslt \ - perl-xml-parser \ - perl-xml-sax \ - perl-xml-treepp \ - perl-xml-twig \ - perl-xml-writer \ - pkgconf \ - pngquant \ - python3 \ - sdl-dev \ - tar \ - uriparser-dev \ - wget \ - x264-dev \ - x265-dev \ - zlib-dev + echo "**** install build packages ****" && \ + apk add --no-cache \ + autoconf \ + automake \ + bsd-compat-headers \ + build-base \ + cmake \ + ffmpeg4-dev \ + file \ + findutils \ + gettext-dev \ + git \ + gnu-libiconv-dev \ + libdvbcsa-dev \ + libgcrypt-dev \ + libhdhomerun-dev \ + libtool \ + libva-dev \ + libvpx-dev \ + libxml2-dev \ + libxslt-dev \ + linux-headers \ + openssl-dev \ + opus-dev \ + patch \ + pcre2-dev \ + perl-archive-zip \ + perl-boolean \ + perl-capture-tiny \ + perl-cgi \ + perl-compress-raw-zlib \ + perl-date-manip \ + perl-datetime \ + perl-datetime-format-strptime \ + perl-datetime-timezone \ + perl-dbd-sqlite \ + perl-dbi \ + perl-dev \ + perl-digest-sha1 \ + perl-doc \ + perl-file-slurp \ + perl-file-temp \ + perl-file-which \ + perl-getopt-long \ + perl-html-parser \ + perl-html-tree \ + perl-http-cookies \ + perl-io \ + perl-io-html \ + perl-io-socket-ssl \ + perl-io-stringy \ + perl-json \ + perl-json-xs \ + perl-libwww \ + perl-lingua-en-numbers-ordinate \ + perl-lingua-preferred \ + perl-list-moreutils \ + perl-lwp-useragent-determined \ + perl-module-build \ + perl-module-pluggable \ + perl-net-ssleay \ + perl-parse-recdescent \ + perl-path-class \ + perl-scalar-list-utils \ + perl-term-progressbar \ + perl-term-readkey \ + perl-test-exception \ + perl-test-requires \ + perl-timedate \ + perl-try-tiny \ + perl-unicode-string \ + perl-xml-libxml \ + perl-xml-libxslt \ + perl-xml-parser \ + perl-xml-sax \ + perl-xml-treepp \ + perl-xml-twig \ + perl-xml-writer \ + pkgconf \ + pngquant \ + python3 \ + sdl2-dev \ + uriparser-dev \ + x264-dev \ + x265-dev \ + zlib-dev RUN \ - echo "**** remove musl iconv.h and replace with gnu-iconv.h ****" && \ - rm -rf /usr/include/iconv.h && \ - cp /usr/include/gnu-libiconv/iconv.h /usr/include/iconv.h + echo "**** remove musl iconv.h and replace with gnu-iconv.h ****" && \ + rm -rf /usr/include/iconv.h && \ + cp /usr/include/gnu-libiconv/iconv.h /usr/include/iconv.h RUN \ - echo "**** install perl modules for xmltv ****" && \ - curl -s -L https://cpanmin.us | perl - App::cpanminus && \ - cpanm --installdeps /tmp/patches + echo "**** install perl modules for xmltv ****" && \ + curl -s -L https://cpanmin.us | perl - App::cpanminus && \ + cpanm --installdeps /tmp/patches RUN \ - echo "**** compile XMLTV ****" && \ - git clone https://github.com/XMLTV/xmltv.git /tmp/xmltv && \ - cd /tmp/xmltv && \ - git checkout ${XMLTV_VER} && \ - echo "**** Perl 5.26 fixes for XMTLV ****" && \ - sed "s/use POSIX 'tmpnam';//" -i filter/tv_to_latex && \ - sed "s/use POSIX 'tmpnam';//" -i filter/tv_to_text && \ - sed "s/\(lib\/set_share_dir.pl';\)/.\/\1/" -i grab/it/tv_grab_it.PL && \ - sed "s/\(filter\/Grep.pm';\)/.\/\1/" -i filter/tv_grep.PL && \ - sed "s/\(lib\/XMLTV.pm.in';\)/.\/\1/" -i lib/XMLTV.pm.PL && \ - sed "s/\(lib\/Ask\/Term.pm';\)/.\/\1/" -i Makefile.PL && \ - PERL5LIB=`pwd` && \ - echo -e "yes" | perl Makefile.PL PREFIX=/usr/ INSTALLDIRS=vendor && \ - make -j 2 && \ - make test && \ - make DESTDIR=/tmp/xmltv-build install + echo "**** compile XMLTV ****" && \ + git clone https://github.com/XMLTV/xmltv.git /tmp/xmltv && \ + cd /tmp/xmltv && \ + git checkout ${XMLTV_VER} && \ + echo "**** Perl 5.26 fixes for XMTLV ****" && \ + sed "s/use POSIX 'tmpnam';//" -i filter/tv_to_latex && \ + sed "s/use POSIX 'tmpnam';//" -i filter/tv_to_text && \ + sed "s/\(lib\/set_share_dir.pl';\)/.\/\1/" -i grab/it/tv_grab_it.PL && \ + sed "s/\(filter\/Grep.pm';\)/.\/\1/" -i filter/tv_grep.PL && \ + sed "s/\(lib\/XMLTV.pm.in';\)/.\/\1/" -i lib/XMLTV.pm.PL && \ + sed "s/\(lib\/Ask\/Term.pm';\)/.\/\1/" -i Makefile.PL && \ + PERL5LIB=`pwd` && \ + echo -e "yes" | perl Makefile.PL PREFIX=/usr/ INSTALLDIRS=vendor && \ + make -j 2 && \ + make test && \ + make DESTDIR=/tmp/xmltv-build install RUN \ - echo "**** compile tvheadend ****" && \ - if [ -z ${TVHEADEND_COMMIT+x} ]; then \ - TVHEADEND_COMMIT=$(curl -sX GET https://api.github.com/repos/tvheadend/tvheadend/commits/master \ - | jq -r '. | .sha'); \ - fi && \ - mkdir -p \ - /tmp/tvheadend && \ - git clone https://github.com/tvheadend/tvheadend.git /tmp/tvheadend && \ - cd /tmp/tvheadend && \ - git checkout ${TVHEADEND_COMMIT} && \ - ./configure \ - `#Encoding` \ - --disable-ffmpeg_static \ - --disable-libfdkaac_static \ - --disable-libtheora_static \ - --disable-libopus_static \ - --disable-libvorbis_static \ - --disable-libvpx_static \ - --disable-libx264_static \ - --disable-libx265_static \ - --disable-libfdkaac \ - --enable-libopus \ - --enable-libvorbis \ - --enable-libvpx \ - --enable-libx264 \ - --enable-libx265 \ - \ - `#Options` \ - --disable-avahi \ - --disable-dbus_1 \ - --disable-bintray_cache \ - --disable-execinfo \ - --disable-hdhomerun_static \ - --enable-hdhomerun_client \ - --enable-libav \ - --enable-pngquant \ - --enable-trace \ - --enable-vaapi \ - --infodir=/usr/share/info \ - --localstatedir=/var \ - --mandir=/usr/share/man \ - --prefix=/usr \ - --python=python3 \ - --sysconfdir=/config && \ - make -j 2 && \ - make DESTDIR=/tmp/tvheadend-build install + echo "**** compile tvheadend ****" && \ + if [ -z ${TVHEADEND_COMMIT+x} ]; then \ + TVHEADEND_COMMIT=$(curl -sX GET https://api.github.com/repos/tvheadend/tvheadend/commits/master \ + | jq -r '. | .sha'); \ + fi && \ + mkdir -p \ + /tmp/tvheadend && \ + git clone https://github.com/tvheadend/tvheadend.git /tmp/tvheadend && \ + cd /tmp/tvheadend && \ + git checkout ${TVHEADEND_COMMIT} && \ + ./configure \ + `#Encoding` \ + --disable-ffmpeg_static \ + --disable-libfdkaac_static \ + --disable-libtheora_static \ + --disable-libopus_static \ + --disable-libvorbis_static \ + --disable-libvpx_static \ + --disable-libx264_static \ + --disable-libx265_static \ + --disable-libfdkaac \ + --enable-libopus \ + --enable-libvorbis \ + --enable-libvpx \ + --enable-libx264 \ + --enable-libx265 \ + \ + `#Options` \ + --disable-avahi \ + --disable-dbus_1 \ + --disable-bintray_cache \ + --disable-execinfo \ + --disable-hdhomerun_static \ + --enable-hdhomerun_client \ + --enable-libav \ + --enable-pngquant \ + --enable-trace \ + --enable-vaapi \ + --infodir=/usr/share/info \ + --localstatedir=/var \ + --mandir=/usr/share/man \ + --prefix=/usr \ + --python=python3 \ + --sysconfdir=/config && \ + make -j 2 && \ + make DESTDIR=/tmp/tvheadend-build install RUN \ - echo "**** compile argtable2 ****" && \ - ARGTABLE_VER1="${ARGTABLE_VER//./-}" && \ - mkdir -p \ - /tmp/argtable && \ - curl -s -o \ - /tmp/argtable-src.tar.gz -L \ - "https://sourceforge.net/projects/argtable/files/argtable/argtable-${ARGTABLE_VER}/argtable${ARGTABLE_VER1}.tar.gz" && \ - tar xf \ - /tmp/argtable-src.tar.gz -C \ - /tmp/argtable --strip-components=1 && \ - cp /tmp/patches/config.* /tmp/argtable && \ - cd /tmp/argtable && \ - ./configure \ - --prefix=/usr && \ - make -j 2 && \ - make check && \ - make DESTDIR=/tmp/argtable-build install && \ - echo "**** copy to /usr for comskip dependency ****" && \ - cp -pr /tmp/argtable-build/usr/* /usr/ + echo "**** compile argtable2 ****" && \ + ARGTABLE_VER1="${ARGTABLE_VER//./-}" && \ + mkdir -p \ + /tmp/argtable && \ + curl -s -o \ + /tmp/argtable-src.tar.gz -L \ + "https://sourceforge.net/projects/argtable/files/argtable/argtable-${ARGTABLE_VER}/argtable${ARGTABLE_VER1}.tar.gz" && \ + tar xf \ + /tmp/argtable-src.tar.gz -C \ + /tmp/argtable --strip-components=1 && \ + cp /tmp/patches/config.* /tmp/argtable && \ + cd /tmp/argtable && \ + ./configure \ + --prefix=/usr && \ + make -j 2 && \ + make check && \ + make DESTDIR=/tmp/argtable-build install && \ + echo "**** copy to /usr for comskip dependency ****" && \ + cp -pr /tmp/argtable-build/usr/* /usr/ RUN \ - echo "***** compile comskip ****" && \ - git clone https://github.com/erikkaashoek/Comskip /tmp/comskip && \ - cd /tmp/comskip && \ - ./autogen.sh && \ - ./configure \ - --bindir=/usr/bin \ - --sysconfdir=/config/comskip && \ - make -j 2 && \ - make DESTDIR=/tmp/comskip-build install + echo "***** compile comskip ****" && \ + git clone https://github.com/erikkaashoek/Comskip /tmp/comskip && \ + cd /tmp/comskip && \ + ./autogen.sh && \ + ./configure \ + --bindir=/usr/bin \ + --sysconfdir=/config/comskip && \ + make -j 2 && \ + make DESTDIR=/tmp/comskip-build install ############## picons stage ############## # built by https://github.com/linuxserver/picons-builder @@ -224,7 +217,7 @@ FROM ghcr.io/linuxserver/picons-builder as piconsstage ############## runtime stage ############## -FROM ghcr.io/linuxserver/baseimage-alpine:3.15 +FROM ghcr.io/linuxserver/baseimage-alpine:3.17 # set version label ARG BUILD_DATE @@ -236,91 +229,82 @@ LABEL maintainer="saarg" ENV HOME="/config" RUN \ - echo "**** install runtime packages ****" && \ - apk add --no-cache \ - bsd-compat-headers \ - bzip2 \ - curl \ - ffmpeg \ - ffmpeg-libs \ - gnu-libiconv \ - gzip \ - libcrypto1.1 \ - libcurl \ - libdvbcsa \ - libhdhomerun-libs \ - libssl1.1 \ - libva \ - libva-intel-driver \ - intel-media-driver \ - mesa-dri-ati \ - libvpx \ - libxml2 \ - libxslt \ - linux-headers \ - openssl \ - opus \ - pcre2 \ - perl \ - perl-archive-zip \ - perl-boolean \ - perl-capture-tiny \ - perl-cgi \ - perl-compress-raw-zlib \ - perl-date-manip \ - perl-datetime \ - perl-datetime-format-strptime \ - perl-datetime-timezone \ - perl-dbd-sqlite \ - perl-dbi \ - perl-digest-sha1 \ - perl-doc \ - perl-file-slurp \ - perl-file-temp \ - perl-file-which \ - perl-getopt-long \ - perl-html-parser \ - perl-html-tree \ - perl-http-cookies \ - perl-io \ - perl-io-html \ - perl-io-socket-ssl \ - perl-io-stringy \ - perl-json \ - perl-json-xs \ - perl-libwww \ - perl-lingua-en-numbers-ordinate \ - perl-lingua-preferred \ - perl-list-moreutils \ - perl-lwp-useragent-determined \ - perl-module-build \ - perl-module-pluggable \ - perl-net-ssleay \ - perl-parse-recdescent \ - perl-path-class \ - perl-scalar-list-utils \ - perl-term-progressbar \ - perl-term-readkey \ - perl-test-exception \ - perl-test-requires \ - perl-timedate \ - perl-try-tiny \ - perl-unicode-string \ - perl-xml-libxml \ - perl-xml-libxslt \ - perl-xml-parser \ - perl-xml-sax \ - perl-xml-treepp \ - perl-xml-twig \ - perl-xml-writer \ - py3-requests \ - python3 \ - tar \ - uriparser \ - wget \ - x264 \ - x265 \ - zlib + echo "**** install runtime packages ****" && \ + apk add --no-cache \ + bsd-compat-headers \ + ffmpeg4 \ + ffmpeg4-libs \ + gnu-libiconv \ + libdvbcsa \ + libhdhomerun-libs \ + libva \ + libva-intel-driver \ + intel-media-driver \ + mesa \ + libvpx \ + libxml2 \ + libxslt \ + linux-headers \ + opus \ + pcre2 \ + perl \ + perl-archive-zip \ + perl-boolean \ + perl-capture-tiny \ + perl-cgi \ + perl-compress-raw-zlib \ + perl-date-manip \ + perl-datetime \ + perl-datetime-format-strptime \ + perl-datetime-timezone \ + perl-dbd-sqlite \ + perl-dbi \ + perl-digest-sha1 \ + perl-doc \ + perl-file-slurp \ + perl-file-temp \ + perl-file-which \ + perl-getopt-long \ + perl-html-parser \ + perl-html-tree \ + perl-http-cookies \ + perl-io \ + perl-io-html \ + perl-io-socket-ssl \ + perl-io-stringy \ + perl-json \ + perl-json-xs \ + perl-libwww \ + perl-lingua-en-numbers-ordinate \ + perl-lingua-preferred \ + perl-list-moreutils \ + perl-lwp-useragent-determined \ + perl-module-build \ + perl-module-pluggable \ + perl-net-ssleay \ + perl-parse-recdescent \ + perl-path-class \ + perl-scalar-list-utils \ + perl-term-progressbar \ + perl-term-readkey \ + perl-test-exception \ + perl-test-requires \ + perl-timedate \ + perl-try-tiny \ + perl-unicode-string \ + perl-xml-libxml \ + perl-xml-libxslt \ + perl-xml-parser \ + perl-xml-sax \ + perl-xml-treepp \ + perl-xml-twig \ + perl-xml-writer \ + py3-requests \ + python3 \ + uriparser \ + x264 \ + x265 \ + zlib # copy local files and buildstage artifacts COPY --from=buildstage /tmp/argtable-build/usr/ /usr/ diff --git a/Dockerfile.aarch64 b/Dockerfile.aarch64 index 35c26e5..c211c72 100644 --- a/Dockerfile.aarch64 +++ b/Dockerfile.aarch64 @@ -1,4 +1,6 @@ -FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.15 as buildstage +# syntax=docker/dockerfile:1 + +FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.17 as buildstage ############## build stage ############## # package versions @@ -6,7 +8,7 @@ ARG ARGTABLE_VER="2.13" ARG XMLTV_VER="v1.0.0" # environment settings -ARG TZ="Europe/Oslo" +ARG TZ="Etc/UTC" ARG TVHEADEND_COMMIT ENV HOME="/config" @@ -14,207 +16,200 @@ ENV HOME="/config" COPY patches/ /tmp/patches/ RUN \ - echo "**** install build packages ****" && \ - apk add --no-cache \ - autoconf \ - automake \ - bsd-compat-headers \ - bzip2 \ - cmake \ - curl \ - ffmpeg-dev \ - file \ - findutils \ - g++ \ - gcc \ - gettext-dev \ - git \ - gnu-libiconv-dev \ - gzip \ - jq \ - libcurl \ - libdvbcsa-dev \ - libgcrypt-dev \ - libhdhomerun-dev \ - libtool \ - libvpx-dev \ - libxml2-dev \ - libxslt-dev \ - linux-headers \ - make \ - openssl-dev \ - opus-dev \ - patch \ - pcre2-dev \ - perl-archive-zip \ - perl-boolean \ - perl-capture-tiny \ - perl-cgi \ - perl-compress-raw-zlib \ - perl-date-manip \ - perl-datetime \ - perl-datetime-format-strptime \ - perl-datetime-timezone \ - perl-dbd-sqlite \ - perl-dbi \ - perl-dev \ - perl-digest-sha1 \ - perl-doc \ - perl-file-slurp \ - perl-file-temp \ - perl-file-which \ - perl-getopt-long \ - perl-html-parser \ - perl-html-tree \ - perl-http-cookies \ - perl-io \ - perl-io-html \ - perl-io-socket-ssl \ - perl-io-stringy \ - perl-json \ - perl-json-xs \ - perl-libwww \ - perl-lingua-en-numbers-ordinate \ - perl-lingua-preferred \ - perl-list-moreutils \ - perl-lwp-useragent-determined \ - perl-module-build \ - perl-module-pluggable \ - perl-net-ssleay \ - perl-parse-recdescent \ - perl-path-class \ - perl-scalar-list-utils \ - perl-term-progressbar \ - perl-term-readkey \ - perl-test-exception \ - perl-test-requires \ - perl-timedate \ - perl-try-tiny \ - perl-unicode-string \ - perl-xml-libxml \ - perl-xml-libxslt \ - perl-xml-parser \ - perl-xml-sax \ - perl-xml-treepp \ - perl-xml-twig \ - perl-xml-writer \ - pkgconf \ - pngquant \ - python3 \ - sdl-dev \ - tar \ - uriparser-dev \ - wget \ - x264-dev \ - x265-dev \ - zlib-dev + echo "**** install build packages ****" && \ + apk add --no-cache \ + autoconf \ + automake \ + bsd-compat-headers \ + build-base \ + cmake \ + ffmpeg4-dev \ + file \ + findutils \ + gettext-dev \ + git \ + gnu-libiconv-dev \ + libdvbcsa-dev \ + libgcrypt-dev \ + libhdhomerun-dev \ + libtool \ + libva-dev \ + libvpx-dev \ + libxml2-dev \ + libxslt-dev \ + linux-headers \ + openssl-dev \ + opus-dev \ + patch \ + pcre2-dev \ + perl-archive-zip \ + perl-boolean \ + perl-capture-tiny \ + perl-cgi \ + perl-compress-raw-zlib \ + perl-date-manip \ + perl-datetime \ + perl-datetime-format-strptime \ + perl-datetime-timezone \ + perl-dbd-sqlite \ + perl-dbi \ + perl-dev \ + perl-digest-sha1 \ + perl-doc \ + perl-file-slurp \ + perl-file-temp \ + perl-file-which \ + perl-getopt-long \ + perl-html-parser \ + perl-html-tree \ + perl-http-cookies \ + perl-io \ + perl-io-html \ + perl-io-socket-ssl \ + perl-io-stringy \ + perl-json \ + perl-json-xs \ + perl-libwww \ + perl-lingua-en-numbers-ordinate \ + perl-lingua-preferred \ + perl-list-moreutils \ + perl-lwp-useragent-determined \ + perl-module-build \ + perl-module-pluggable \ + perl-net-ssleay \ + perl-parse-recdescent \ + perl-path-class \ + perl-scalar-list-utils \ + perl-term-progressbar \ + perl-term-readkey \ + perl-test-exception \ + perl-test-requires \ + perl-timedate \ + perl-try-tiny \ + perl-unicode-string \ + perl-xml-libxml \ + perl-xml-libxslt \ + perl-xml-parser \ + perl-xml-sax \ + perl-xml-treepp \ + perl-xml-twig \ + perl-xml-writer \ + pkgconf \ + pngquant \ + python3 \ + sdl2-dev \ + uriparser-dev \ + x264-dev \ + x265-dev \ + zlib-dev RUN \ - echo "**** remove musl iconv.h and replace with gnu-iconv.h ****" && \ - rm -rf /usr/include/iconv.h && \ - cp /usr/include/gnu-libiconv/iconv.h /usr/include/iconv.h + echo "**** remove musl iconv.h and replace with gnu-iconv.h ****" && \ + rm -rf /usr/include/iconv.h && \ + cp /usr/include/gnu-libiconv/iconv.h /usr/include/iconv.h RUN \ - echo "**** install perl modules for xmltv ****" && \ - curl -L https://cpanmin.us | perl - App::cpanminus && \ - cpanm --installdeps /tmp/patches + echo "**** install perl modules for xmltv ****" && \ + curl -s -L https://cpanmin.us | perl - App::cpanminus && \ + cpanm --installdeps /tmp/patches RUN \ - echo "**** compile XMLTV ****" && \ - git clone https://github.com/XMLTV/xmltv.git /tmp/xmltv && \ - cd /tmp/xmltv && \ - git checkout ${XMLTV_VER} && \ - echo "**** Perl 5.26 fixes for XMTLV ****" && \ - sed "s/use POSIX 'tmpnam';//" -i filter/tv_to_latex && \ - sed "s/use POSIX 'tmpnam';//" -i filter/tv_to_text && \ - sed "s/\(lib\/set_share_dir.pl';\)/.\/\1/" -i grab/it/tv_grab_it.PL && \ - sed "s/\(filter\/Grep.pm';\)/.\/\1/" -i filter/tv_grep.PL && \ - sed "s/\(lib\/XMLTV.pm.in';\)/.\/\1/" -i lib/XMLTV.pm.PL && \ - sed "s/\(lib\/Ask\/Term.pm';\)/.\/\1/" -i Makefile.PL && \ - PERL5LIB=`pwd` && \ - echo -e "yes" | perl Makefile.PL PREFIX=/usr/ INSTALLDIRS=vendor && \ - make -j 2 && \ - make test && \ - make DESTDIR=/tmp/xmltv-build install + echo "**** compile XMLTV ****" && \ + git clone https://github.com/XMLTV/xmltv.git /tmp/xmltv && \ + cd /tmp/xmltv && \ + git checkout ${XMLTV_VER} && \ + echo "**** Perl 5.26 fixes for XMTLV ****" && \ + sed "s/use POSIX 'tmpnam';//" -i filter/tv_to_latex && \ + sed "s/use POSIX 'tmpnam';//" -i filter/tv_to_text && \ + sed "s/\(lib\/set_share_dir.pl';\)/.\/\1/" -i grab/it/tv_grab_it.PL && \ + sed "s/\(filter\/Grep.pm';\)/.\/\1/" -i filter/tv_grep.PL && \ + sed "s/\(lib\/XMLTV.pm.in';\)/.\/\1/" -i lib/XMLTV.pm.PL && \ + sed "s/\(lib\/Ask\/Term.pm';\)/.\/\1/" -i Makefile.PL && \ + PERL5LIB=`pwd` && \ + echo -e "yes" | perl Makefile.PL PREFIX=/usr/ INSTALLDIRS=vendor && \ + make -j 2 && \ + make test && \ + make DESTDIR=/tmp/xmltv-build install RUN \ - echo "**** compile tvheadend ****" && \ - if [ -z ${TVHEADEND_COMMIT+x} ]; then \ - TVHEADEND_COMMIT=$(curl -sX GET https://api.github.com/repos/tvheadend/tvheadend/commits/master \ - | jq -r '. | .sha'); \ - fi && \ - mkdir -p \ - /tmp/tvheadend && \ - git clone https://github.com/tvheadend/tvheadend.git /tmp/tvheadend && \ - cd /tmp/tvheadend && \ - git checkout ${TVHEADEND_COMMIT} && \ - ./configure \ - `#Encoding` \ - --disable-ffmpeg_static \ - --disable-libfdkaac_static \ - --disable-libtheora_static \ - --disable-libopus_static \ - --disable-libvorbis_static \ - --disable-libvpx_static \ - --disable-libx264_static \ - --disable-libx265_static \ - --disable-libfdkaac \ - --enable-libopus \ - --enable-libvorbis \ - --enable-libvpx \ - --enable-libx264 \ - --enable-libx265 \ - \ - `#Options` \ - --disable-avahi \ - --disable-dbus_1 \ - --disable-bintray_cache \ - --disable-execinfo \ - --disable-hdhomerun_static \ - --enable-hdhomerun_client \ - --enable-libav \ - --enable-pngquant \ - --enable-trace \ - --infodir=/usr/share/info \ - --localstatedir=/var \ - --mandir=/usr/share/man \ - --prefix=/usr \ - --python=python3 \ - --sysconfdir=/config && \ - make -j 2 && \ - make DESTDIR=/tmp/tvheadend-build install + echo "**** compile tvheadend ****" && \ + if [ -z ${TVHEADEND_COMMIT+x} ]; then \ + TVHEADEND_COMMIT=$(curl -sX GET https://api.github.com/repos/tvheadend/tvheadend/commits/master \ + | jq -r '. | .sha'); \ + fi && \ + mkdir -p \ + /tmp/tvheadend && \ + git clone https://github.com/tvheadend/tvheadend.git /tmp/tvheadend && \ + cd /tmp/tvheadend && \ + git checkout ${TVHEADEND_COMMIT} && \ + ./configure \ + `#Encoding` \ + --disable-ffmpeg_static \ + --disable-libfdkaac_static \ + --disable-libtheora_static \ + --disable-libopus_static \ + --disable-libvorbis_static \ + --disable-libvpx_static \ + --disable-libx264_static \ + --disable-libx265_static \ + --disable-libfdkaac \ + --enable-libopus \ + --enable-libvorbis \ + --enable-libvpx \ + --enable-libx264 \ + --enable-libx265 \ + \ + `#Options` \ + --disable-avahi \ + --disable-dbus_1 \ + --disable-bintray_cache \ + --disable-execinfo \ + --disable-hdhomerun_static \ + --enable-hdhomerun_client \ + --enable-libav \ + --enable-pngquant \ + --enable-trace \ + --enable-vaapi \ + --infodir=/usr/share/info \ + --localstatedir=/var \ + --mandir=/usr/share/man \ + --prefix=/usr \ + --python=python3 \ + --sysconfdir=/config && \ + make -j 2 && \ + make DESTDIR=/tmp/tvheadend-build install RUN \ - echo "**** compile argtable2 ****" && \ - ARGTABLE_VER1="${ARGTABLE_VER//./-}" && \ - mkdir -p \ - /tmp/argtable && \ - curl -o \ - /tmp/argtable-src.tar.gz -L \ - "https://sourceforge.net/projects/argtable/files/argtable/argtable-${ARGTABLE_VER}/argtable${ARGTABLE_VER1}.tar.gz" && \ - tar xf \ - /tmp/argtable-src.tar.gz -C \ - /tmp/argtable --strip-components=1 && \ - cp /tmp/patches/config.* /tmp/argtable && \ - cd /tmp/argtable && \ - ./configure \ - --prefix=/usr && \ - make -j 2 && \ - make check && \ - make DESTDIR=/tmp/argtable-build install && \ - echo "**** copy to /usr for comskip dependency ****" && \ - cp -pr /tmp/argtable-build/usr/* /usr/ + echo "**** compile argtable2 ****" && \ + ARGTABLE_VER1="${ARGTABLE_VER//./-}" && \ + mkdir -p \ + /tmp/argtable && \ + curl -s -o \ + /tmp/argtable-src.tar.gz -L \ + "https://sourceforge.net/projects/argtable/files/argtable/argtable-${ARGTABLE_VER}/argtable${ARGTABLE_VER1}.tar.gz" && \ + tar xf \ + /tmp/argtable-src.tar.gz -C \ + /tmp/argtable --strip-components=1 && \ + cp /tmp/patches/config.* /tmp/argtable && \ + cd /tmp/argtable && \ + ./configure \ + --prefix=/usr && \ + make -j 2 && \ + make check && \ + make DESTDIR=/tmp/argtable-build install && \ + echo "**** copy to /usr for comskip dependency ****" && \ + cp -pr /tmp/argtable-build/usr/* /usr/ RUN \ - echo "***** compile comskip ****" && \ - git clone https://github.com/erikkaashoek/Comskip /tmp/comskip && \ - cd /tmp/comskip && \ - ./autogen.sh && \ - ./configure \ - --bindir=/usr/bin \ - --sysconfdir=/config/comskip && \ - make -j 2 && \ - make DESTDIR=/tmp/comskip-build install + echo "***** compile comskip ****" && \ + git clone https://github.com/erikkaashoek/Comskip /tmp/comskip && \ + cd /tmp/comskip && \ + ./autogen.sh && \ + ./configure \ + --bindir=/usr/bin \ + --sysconfdir=/config/comskip && \ + make -j 2 && \ + make DESTDIR=/tmp/comskip-build install ############## picons stage ############## # built by https://github.com/linuxserver/picons-builder @@ -222,7 +217,7 @@ FROM ghcr.io/linuxserver/picons-builder as piconsstage ############## runtime stage ############## -FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.15 +FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.17 # set version label ARG BUILD_DATE @@ -234,87 +229,82 @@ LABEL maintainer="saarg" ENV HOME="/config" RUN \ - echo "**** install runtime packages ****" && \ - apk add --no-cache \ - bsd-compat-headers \ - bzip2 \ - curl \ - ffmpeg \ - ffmpeg-libs \ - gnu-libiconv \ - gzip \ - libcrypto1.1 \ - libcurl \ - libdvbcsa \ - libhdhomerun-libs \ - libssl1.1 \ - libvpx \ - libxml2 \ - libxslt \ - linux-headers \ - openssl \ - opus \ - pcre2 \ - perl \ - perl-archive-zip \ - perl-boolean \ - perl-capture-tiny \ - perl-cgi \ - perl-compress-raw-zlib \ - perl-date-manip \ - perl-datetime \ - perl-datetime-format-strptime \ - perl-datetime-timezone \ - perl-dbd-sqlite \ - perl-dbi \ - perl-digest-sha1 \ - perl-doc \ - perl-file-slurp \ - perl-file-temp \ - perl-file-which \ - perl-getopt-long \ - perl-html-parser \ - perl-html-tree \ - perl-http-cookies \ - perl-io \ - perl-io-html \ - perl-io-socket-ssl \ - perl-io-stringy \ - perl-json \ - perl-json-xs \ - perl-libwww \ - perl-lingua-en-numbers-ordinate \ - perl-lingua-preferred \ - perl-list-moreutils \ - perl-lwp-useragent-determined \ - perl-module-build \ - perl-module-pluggable \ - perl-net-ssleay \ - perl-parse-recdescent \ - perl-path-class \ - perl-scalar-list-utils \ - perl-term-progressbar \ - perl-term-readkey \ - perl-test-exception \ - perl-test-requires \ - perl-timedate \ - perl-try-tiny \ - perl-unicode-string \ - perl-xml-libxml \ - perl-xml-libxslt \ - perl-xml-parser \ - perl-xml-sax \ - perl-xml-treepp \ - perl-xml-twig \ - perl-xml-writer \ - py3-requests \ - python3 \ - tar \ - uriparser \ - wget \ - x264 \ - x265 \ - zlib + echo "**** install runtime packages ****" && \ + apk add --no-cache \ + bsd-compat-headers \ + ffmpeg4 \ + ffmpeg4-libs \ + gnu-libiconv \ + libdvbcsa \ + libhdhomerun-libs \ + libva \ + libva-intel-driver \ + intel-media-driver \ + mesa \ + libvpx \ + libxml2 \ + libxslt \ + linux-headers \ + opus \ + pcre2 \ + perl \ + perl-archive-zip \ + perl-boolean \ + perl-capture-tiny \ + perl-cgi \ + perl-compress-raw-zlib \ + perl-date-manip \ + perl-datetime \ + perl-datetime-format-strptime \ + perl-datetime-timezone \ + perl-dbd-sqlite \ + perl-dbi \ + perl-digest-sha1 \ + perl-doc \ + perl-file-slurp \ + perl-file-temp \ + perl-file-which \ + perl-getopt-long \ + perl-html-parser \ + perl-html-tree \ + perl-http-cookies \ + perl-io \ + perl-io-html \ + perl-io-socket-ssl \ + perl-io-stringy \ + perl-json \ + perl-json-xs \ + perl-libwww \ + perl-lingua-en-numbers-ordinate \ + perl-lingua-preferred \ + perl-list-moreutils \ + perl-lwp-useragent-determined \ + perl-module-build \ + perl-module-pluggable \ + perl-net-ssleay \ + perl-parse-recdescent \ + perl-path-class \ + perl-scalar-list-utils \ + perl-term-progressbar \ + perl-term-readkey \ + perl-test-exception \ + perl-test-requires \ + perl-timedate \ + perl-try-tiny \ + perl-unicode-string \ + perl-xml-libxml \ + perl-xml-libxslt \ + perl-xml-parser \ + perl-xml-sax \ + perl-xml-treepp \ + perl-xml-twig \ + perl-xml-writer \ + py3-requests \ + python3 \ + uriparser \ + x264 \ + x265 \ + zlib # copy local files and buildstage artifacts COPY --from=buildstage /tmp/argtable-build/usr/ /usr/ diff --git a/Dockerfile.armhf b/Dockerfile.armhf index 192f178..dd0bc8e 100644 --- a/Dockerfile.armhf +++ b/Dockerfile.armhf @@ -1,4 +1,6 @@ -FROM ghcr.io/linuxserver/baseimage-alpine:arm32v7-3.15 as buildstage +# syntax=docker/dockerfile:1 + +FROM ghcr.io/linuxserver/baseimage-alpine:arm32v7-3.17 as buildstage ############## build stage ############## # package versions @@ -6,7 +8,7 @@ ARG ARGTABLE_VER="2.13" ARG XMLTV_VER="v1.0.0" # environment settings -ARG TZ="Europe/Oslo" +ARG TZ="Etc/UTC" ARG TVHEADEND_COMMIT ENV HOME="/config" @@ -14,208 +16,200 @@ ENV HOME="/config" COPY patches/ /tmp/patches/ RUN \ - echo "**** install build packages ****" && \ - apk add --no-cache \ - autoconf \ - automake \ - bsd-compat-headers \ - bzip2 \ - cmake \ - curl \ - ffmpeg-dev \ - file \ - findutils \ - g++ \ - gcc \ - gettext-dev \ - git \ - gnu-libiconv-dev \ - gzip \ - jq \ - libcurl \ - libdvbcsa-dev \ - libgcrypt-dev \ - libhdhomerun-dev \ - libtool \ - libvpx-dev \ - libxml2-dev \ - libxslt-dev \ - linux-headers \ - make \ - openssl-dev \ - opus-dev \ - patch \ - pcre2-dev \ - perl-archive-zip \ - perl-boolean \ - perl-capture-tiny \ - perl-cgi \ - perl-compress-raw-zlib \ - perl-date-manip \ - perl-datetime \ - perl-datetime-format-strptime \ - perl-datetime-timezone \ - perl-dbd-sqlite \ - perl-dbi \ - perl-dev \ - perl-digest-sha1 \ - perl-doc \ - perl-file-slurp \ - perl-file-temp \ - perl-file-which \ - perl-getopt-long \ - perl-html-parser \ - perl-html-tree \ - perl-http-cookies \ - perl-io \ - perl-io-html \ - perl-io-socket-ssl \ - perl-io-stringy \ - perl-json \ - perl-json-xs \ - perl-libwww \ - perl-lingua-en-numbers-ordinate \ - perl-lingua-preferred \ - perl-list-moreutils \ - perl-lwp-useragent-determined \ - perl-module-build \ - perl-module-pluggable \ - perl-net-ssleay \ - perl-parse-recdescent \ - perl-path-class \ - perl-scalar-list-utils \ - perl-term-progressbar \ - perl-term-readkey \ - perl-test-exception \ - perl-test-requires \ - perl-timedate \ - perl-try-tiny \ - perl-unicode-string \ - perl-xml-libxml \ - perl-xml-libxslt \ - perl-xml-parser \ - perl-xml-sax \ - perl-xml-treepp \ - perl-xml-twig \ - perl-xml-writer \ - pkgconf \ - pngquant \ - python3 \ - sdl-dev \ - tar \ - uriparser-dev \ - wget \ - x264-dev \ - x265-dev \ - zlib-dev + echo "**** install build packages ****" && \ + apk add --no-cache \ + autoconf \ + automake \ + bsd-compat-headers \ + build-base \ + cmake \ + ffmpeg4-dev \ + file \ + findutils \ + gettext-dev \ + git \ + gnu-libiconv-dev \ + libdvbcsa-dev \ + libgcrypt-dev \ + libhdhomerun-dev \ + libtool \ + libva-dev \ + libvpx-dev \ + libxml2-dev \ + libxslt-dev \ + linux-headers \ + openssl-dev \ + opus-dev \ + patch \ + pcre2-dev \ + perl-archive-zip \ + perl-boolean \ + perl-capture-tiny \ + perl-cgi \ + perl-compress-raw-zlib \ + perl-date-manip \ + perl-datetime \ + perl-datetime-format-strptime \ + perl-datetime-timezone \ + perl-dbd-sqlite \ + perl-dbi \ + perl-dev \ + perl-digest-sha1 \ + perl-doc \ + perl-file-slurp \ + perl-file-temp \ + perl-file-which \ + perl-getopt-long \ + perl-html-parser \ + perl-html-tree \ + perl-http-cookies \ + perl-io \ + perl-io-html \ + perl-io-socket-ssl \ + perl-io-stringy \ + perl-json \ + perl-json-xs \ + perl-libwww \ + perl-lingua-en-numbers-ordinate \ + perl-lingua-preferred \ + perl-list-moreutils \ + perl-lwp-useragent-determined \ + perl-module-build \ + perl-module-pluggable \ + perl-net-ssleay \ + perl-parse-recdescent \ + perl-path-class \ + perl-scalar-list-utils \ + perl-term-progressbar \ + perl-term-readkey \ + perl-test-exception \ + perl-test-requires \ + perl-timedate \ + perl-try-tiny \ + perl-unicode-string \ + perl-xml-libxml \ + perl-xml-libxslt \ + perl-xml-parser \ + perl-xml-sax \ + perl-xml-treepp \ + perl-xml-twig \ + perl-xml-writer \ + pkgconf \ + pngquant \ + python3 \ + sdl2-dev \ + uriparser-dev \ + x264-dev \ + x265-dev \ + zlib-dev RUN \ - echo "**** remove musl iconv.h and replace with gnu-iconv.h ****" && \ - rm -rf /usr/include/iconv.h && \ - cp /usr/include/gnu-libiconv/iconv.h /usr/include/iconv.h + echo "**** remove musl iconv.h and replace with gnu-iconv.h ****" && \ + rm -rf /usr/include/iconv.h && \ + cp /usr/include/gnu-libiconv/iconv.h /usr/include/iconv.h RUN \ - echo "**** install perl modules for xmltv ****" && \ - curl -L https://cpanmin.us | perl - App::cpanminus && \ - cpanm --installdeps /tmp/patches + echo "**** install perl modules for xmltv ****" && \ + curl -s -L https://cpanmin.us | perl - App::cpanminus && \ + cpanm --installdeps /tmp/patches RUN \ - echo "**** compile XMLTV ****" && \ - git clone https://github.com/XMLTV/xmltv.git /tmp/xmltv && \ - cd /tmp/xmltv && \ - git checkout ${XMLTV_VER} && \ - echo "**** Perl 5.26 fixes for XMTLV ****" && \ - sed "s/use POSIX 'tmpnam';//" -i filter/tv_to_latex && \ - sed "s/use POSIX 'tmpnam';//" -i filter/tv_to_text && \ - sed "s/\(lib\/set_share_dir.pl';\)/.\/\1/" -i grab/it/tv_grab_it.PL && \ - sed "s/\(filter\/Grep.pm';\)/.\/\1/" -i filter/tv_grep.PL && \ - sed "s/\(lib\/XMLTV.pm.in';\)/.\/\1/" -i lib/XMLTV.pm.PL && \ - sed "s/\(lib\/Ask\/Term.pm';\)/.\/\1/" -i Makefile.PL && \ - PERL5LIB=`pwd` && \ - echo -e "yes" | perl Makefile.PL PREFIX=/usr/ INSTALLDIRS=vendor && \ - make -j 2 && \ - make test && \ - make DESTDIR=/tmp/xmltv-build install + echo "**** compile XMLTV ****" && \ + git clone https://github.com/XMLTV/xmltv.git /tmp/xmltv && \ + cd /tmp/xmltv && \ + git checkout ${XMLTV_VER} && \ + echo "**** Perl 5.26 fixes for XMTLV ****" && \ + sed "s/use POSIX 'tmpnam';//" -i filter/tv_to_latex && \ + sed "s/use POSIX 'tmpnam';//" -i filter/tv_to_text && \ + sed "s/\(lib\/set_share_dir.pl';\)/.\/\1/" -i grab/it/tv_grab_it.PL && \ + sed "s/\(filter\/Grep.pm';\)/.\/\1/" -i filter/tv_grep.PL && \ + sed "s/\(lib\/XMLTV.pm.in';\)/.\/\1/" -i lib/XMLTV.pm.PL && \ + sed "s/\(lib\/Ask\/Term.pm';\)/.\/\1/" -i Makefile.PL && \ + PERL5LIB=`pwd` && \ + echo -e "yes" | perl Makefile.PL PREFIX=/usr/ INSTALLDIRS=vendor && \ + make -j 2 && \ + make test && \ + make DESTDIR=/tmp/xmltv-build install RUN \ - echo "**** compile tvheadend ****" && \ - if [ -z ${TVHEADEND_COMMIT+x} ]; then \ - TVHEADEND_COMMIT=$(curl -sX GET https://api.github.com/repos/tvheadend/tvheadend/commits/master \ - | jq -r '. | .sha'); \ - fi && \ - mkdir -p \ - /tmp/tvheadend && \ - git clone https://github.com/tvheadend/tvheadend.git /tmp/tvheadend && \ - cd /tmp/tvheadend && \ - git checkout ${TVHEADEND_COMMIT} && \ - ./configure \ - `#Encoding` \ - --disable-ffmpeg_static \ - --disable-libfdkaac_static \ - --disable-libtheora_static \ - --disable-libopus_static \ - --disable-libvorbis_static \ - --disable-libvpx_static \ - --disable-libx264_static \ - --disable-libx265_static \ - --disable-libfdkaac \ - --enable-libopus \ - --enable-libvorbis \ - --enable-libvpx \ - --enable-libx264 \ - --enable-libx265 \ - \ - `#Options` \ - --disable-avahi \ - --disable-dbus_1 \ - --disable-bintray_cache \ - --disable-execinfo \ - --disable-hdhomerun_static \ - --enable-hdhomerun_client \ - --enable-libav \ - --enable-pngquant \ - --enable-trace \ - --infodir=/usr/share/info \ - --localstatedir=/var \ - --mandir=/usr/share/man \ - --nowerror \ - --prefix=/usr \ - --python=python3 \ - --sysconfdir=/config && \ - make -j 2 && \ - make DESTDIR=/tmp/tvheadend-build install + echo "**** compile tvheadend ****" && \ + if [ -z ${TVHEADEND_COMMIT+x} ]; then \ + TVHEADEND_COMMIT=$(curl -sX GET https://api.github.com/repos/tvheadend/tvheadend/commits/master \ + | jq -r '. | .sha'); \ + fi && \ + mkdir -p \ + /tmp/tvheadend && \ + git clone https://github.com/tvheadend/tvheadend.git /tmp/tvheadend && \ + cd /tmp/tvheadend && \ + git checkout ${TVHEADEND_COMMIT} && \ + ./configure \ + `#Encoding` \ + --disable-ffmpeg_static \ + --disable-libfdkaac_static \ + --disable-libtheora_static \ + --disable-libopus_static \ + --disable-libvorbis_static \ + --disable-libvpx_static \ + --disable-libx264_static \ + --disable-libx265_static \ + --disable-libfdkaac \ + --enable-libopus \ + --enable-libvorbis \ + --enable-libvpx \ + --enable-libx264 \ + --enable-libx265 \ + \ + `#Options` \ + --disable-avahi \ + --disable-dbus_1 \ + --disable-bintray_cache \ + --disable-execinfo \ + --disable-hdhomerun_static \ + --enable-hdhomerun_client \ + --enable-libav \ + --enable-pngquant \ + --enable-trace \ + --enable-vaapi \ + --infodir=/usr/share/info \ + --localstatedir=/var \ + --mandir=/usr/share/man \ + --prefix=/usr \ + --python=python3 \ + --sysconfdir=/config && \ + make -j 2 && \ + make DESTDIR=/tmp/tvheadend-build install RUN \ - echo "**** compile argtable2 ****" && \ - ARGTABLE_VER1="${ARGTABLE_VER//./-}" && \ - mkdir -p \ - /tmp/argtable && \ - curl -o \ - /tmp/argtable-src.tar.gz -L \ - "https://sourceforge.net/projects/argtable/files/argtable/argtable-${ARGTABLE_VER}/argtable${ARGTABLE_VER1}.tar.gz" && \ - tar xf \ - /tmp/argtable-src.tar.gz -C \ - /tmp/argtable --strip-components=1 && \ - cp /tmp/patches/config.* /tmp/argtable && \ - cd /tmp/argtable && \ - ./configure \ - --prefix=/usr && \ - make -j 2 && \ - make check && \ - make DESTDIR=/tmp/argtable-build install && \ - echo "**** copy to /usr for comskip dependency ****" && \ - cp -pr /tmp/argtable-build/usr/* /usr/ + echo "**** compile argtable2 ****" && \ + ARGTABLE_VER1="${ARGTABLE_VER//./-}" && \ + mkdir -p \ + /tmp/argtable && \ + curl -s -o \ + /tmp/argtable-src.tar.gz -L \ + "https://sourceforge.net/projects/argtable/files/argtable/argtable-${ARGTABLE_VER}/argtable${ARGTABLE_VER1}.tar.gz" && \ + tar xf \ + /tmp/argtable-src.tar.gz -C \ + /tmp/argtable --strip-components=1 && \ + cp /tmp/patches/config.* /tmp/argtable && \ + cd /tmp/argtable && \ + ./configure \ + --prefix=/usr && \ + make -j 2 && \ + make check && \ + make DESTDIR=/tmp/argtable-build install && \ + echo "**** copy to /usr for comskip dependency ****" && \ + cp -pr /tmp/argtable-build/usr/* /usr/ RUN \ - echo "***** compile comskip ****" && \ - git clone https://github.com/erikkaashoek/Comskip /tmp/comskip && \ - cd /tmp/comskip && \ - ./autogen.sh && \ - ./configure \ - --bindir=/usr/bin \ - --sysconfdir=/config/comskip && \ - make -j 2 && \ - make DESTDIR=/tmp/comskip-build install + echo "***** compile comskip ****" && \ + git clone https://github.com/erikkaashoek/Comskip /tmp/comskip && \ + cd /tmp/comskip && \ + ./autogen.sh && \ + ./configure \ + --bindir=/usr/bin \ + --sysconfdir=/config/comskip && \ + make -j 2 && \ + make DESTDIR=/tmp/comskip-build install ############## picons stage ############## # built by https://github.com/linuxserver/picons-builder @@ -223,7 +217,7 @@ FROM ghcr.io/linuxserver/picons-builder as piconsstage ############## runtime stage ############## -FROM ghcr.io/linuxserver/baseimage-alpine:arm32v7-3.15 +FROM ghcr.io/linuxserver/baseimage-alpine:arm32v7-3.17 # set version label ARG BUILD_DATE @@ -235,87 +229,82 @@ LABEL maintainer="saarg" ENV HOME="/config" RUN \ - echo "**** install runtime packages ****" && \ - apk add --no-cache \ - bsd-compat-headers \ - bzip2 \ - curl \ - ffmpeg \ - ffmpeg-libs \ - gnu-libiconv \ - gzip \ - libcrypto1.1 \ - libcurl \ - libdvbcsa \ - libhdhomerun-libs \ - libssl1.1 \ - libvpx \ - libxml2 \ - libxslt \ - linux-headers \ - openssl \ - opus \ - pcre2 \ - perl \ - perl-archive-zip \ - perl-boolean \ - perl-capture-tiny \ - perl-cgi \ - perl-compress-raw-zlib \ - perl-date-manip \ - perl-datetime \ - perl-datetime-format-strptime \ - perl-datetime-timezone \ - perl-dbd-sqlite \ - perl-dbi \ - perl-digest-sha1 \ - perl-doc \ - perl-file-slurp \ - perl-file-temp \ - perl-file-which \ - perl-getopt-long \ - perl-html-parser \ - perl-html-tree \ - perl-http-cookies \ - perl-io \ - perl-io-html \ - perl-io-socket-ssl \ - perl-io-stringy \ - perl-json \ - perl-json-xs \ - perl-libwww \ - perl-lingua-en-numbers-ordinate \ - perl-lingua-preferred \ - perl-list-moreutils \ - perl-lwp-useragent-determined \ - perl-module-build \ - perl-module-pluggable \ - perl-net-ssleay \ - perl-parse-recdescent \ - perl-path-class \ - perl-scalar-list-utils \ - perl-term-progressbar \ - perl-term-readkey \ - perl-test-exception \ - perl-test-requires \ - perl-timedate \ - perl-try-tiny \ - perl-unicode-string \ - perl-xml-libxml \ - perl-xml-libxslt \ - perl-xml-parser \ - perl-xml-sax \ - perl-xml-treepp \ - perl-xml-twig \ - perl-xml-writer \ - py3-requests \ - python3 \ - tar \ - uriparser \ - wget \ - x264 \ - x265 \ - zlib + echo "**** install runtime packages ****" && \ + apk add --no-cache \ + bsd-compat-headers \ + ffmpeg4 \ + ffmpeg4-libs \ + gnu-libiconv \ + libdvbcsa \ + libhdhomerun-libs \ + libva \ + libva-intel-driver \ + intel-media-driver \ + mesa \ + libvpx \ + libxml2 \ + libxslt \ + linux-headers \ + opus \ + pcre2 \ + perl \ + perl-archive-zip \ + perl-boolean \ + perl-capture-tiny \ + perl-cgi \ + perl-compress-raw-zlib \ + perl-date-manip \ + perl-datetime \ + perl-datetime-format-strptime \ + perl-datetime-timezone \ + perl-dbd-sqlite \ + perl-dbi \ + perl-digest-sha1 \ + perl-doc \ + perl-file-slurp \ + perl-file-temp \ + perl-file-which \ + perl-getopt-long \ + perl-html-parser \ + perl-html-tree \ + perl-http-cookies \ + perl-io \ + perl-io-html \ + perl-io-socket-ssl \ + perl-io-stringy \ + perl-json \ + perl-json-xs \ + perl-libwww \ + perl-lingua-en-numbers-ordinate \ + perl-lingua-preferred \ + perl-list-moreutils \ + perl-lwp-useragent-determined \ + perl-module-build \ + perl-module-pluggable \ + perl-net-ssleay \ + perl-parse-recdescent \ + perl-path-class \ + perl-scalar-list-utils \ + perl-term-progressbar \ + perl-term-readkey \ + perl-test-exception \ + perl-test-requires \ + perl-timedate \ + perl-try-tiny \ + perl-unicode-string \ + perl-xml-libxml \ + perl-xml-libxslt \ + perl-xml-parser \ + perl-xml-sax \ + perl-xml-treepp \ + perl-xml-twig \ + perl-xml-writer \ + py3-requests \ + python3 \ + uriparser \ + x264 \ + x265 \ + zlib # copy local files and buildstage artifacts COPY --from=buildstage /tmp/argtable-build/usr/ /usr/ diff --git a/README.md b/README.md index 3978724..d08e2df 100644 --- a/README.md +++ b/README.md @@ -301,6 +301,7 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64 ## Versions +* **23.02.23:** - Rebase to Alpine 3.17, migrate to s6v3. * **31.08.22:** - Update sample env vars and how RUN_OPTS are handled. * **19.08.22:** - Switch to new picons builder. * **16.04.22:** - Added URL XMLTV grabber. diff --git a/readme-vars.yml b/readme-vars.yml index 377003d..e85a591 100644 --- a/readme-vars.yml +++ b/readme-vars.yml @@ -124,6 +124,7 @@ app_setup_block: | # changelog changelogs: + - { date: "23.02.23:", desc: "Rebase to Alpine 3.17, migrate to s6v3." } - { date: "31.08.22:", desc: "Update sample env vars and how RUN_OPTS are handled." } - { date: "19.08.22:", desc: "Switch to new picons builder." } - { date: "16.04.22:", desc: "Added URL XMLTV grabber." } diff --git a/root/etc/s6-overlay/s6-rc.d/init-config-end/dependencies.d/init-video-config b/root/etc/s6-overlay/s6-rc.d/init-config-end/dependencies.d/init-video-config new file mode 100644 index 0000000..e69de29 diff --git a/root/etc/s6-overlay/s6-rc.d/init-tvheadend-config/dependencies.d/init-config b/root/etc/s6-overlay/s6-rc.d/init-tvheadend-config/dependencies.d/init-config new file mode 100644 index 0000000..e69de29 diff --git a/root/etc/cont-init.d/30-config b/root/etc/s6-overlay/s6-rc.d/init-tvheadend-config/run old mode 100644 new mode 100755 similarity index 80% rename from root/etc/cont-init.d/30-config rename to root/etc/s6-overlay/s6-rc.d/init-tvheadend-config/run index f569900..4742975 --- a/root/etc/cont-init.d/30-config +++ b/root/etc/s6-overlay/s6-rc.d/init-tvheadend-config/run @@ -1,24 +1,29 @@ #!/usr/bin/with-contenv bash +# shellcheck shell=bash # make folders mkdir -p \ /config/comskip # copy config -[[ ! -e /config/dvr/config ]] && \ +if [[ ! -e /config/dvr/config ]]; then (mkdir -p /config/dvr/config && cp /defaults/7a5edfbe189851e5b1d1df19c93962f0 /config/dvr/config/7a5edfbe189851e5b1d1df19c93962f0) -[[ ! -e /config/comskip/comskip.ini ]] && \ +fi +if [[ ! -e /config/comskip/comskip.ini ]]; then cp /defaults/comskip.ini.org /config/comskip/comskip.ini -[[ ! -e /config/config ]] && \ - (cp /defaults/config /config/config) +fi +if [[ ! -e /config/config ]]; then + (cp /defaults/config /config/config) +fi # extract picons on first run -[[ -f /picons.tar.bz2 ]] && \ +if [[ -f /picons.tar.bz2 ]]; then mkdir -p /picons tar xf \ /picons.tar.bz2 -C \ /picons && rm -f /picons.tar.bz2 +fi # function to randomly sample 5 files for their owner and only chown if not abc chowner () { diff --git a/root/etc/s6-overlay/s6-rc.d/init-tvheadend-config/type b/root/etc/s6-overlay/s6-rc.d/init-tvheadend-config/type new file mode 100644 index 0000000..bdd22a1 --- /dev/null +++ b/root/etc/s6-overlay/s6-rc.d/init-tvheadend-config/type @@ -0,0 +1 @@ +oneshot diff --git a/root/etc/s6-overlay/s6-rc.d/init-tvheadend-config/up b/root/etc/s6-overlay/s6-rc.d/init-tvheadend-config/up new file mode 100644 index 0000000..28be1ed --- /dev/null +++ b/root/etc/s6-overlay/s6-rc.d/init-tvheadend-config/up @@ -0,0 +1 @@ +/etc/s6-overlay/s6-rc.d/init-tvheadend-config/run diff --git a/root/etc/s6-overlay/s6-rc.d/init-video-config/dependencies.d/init-tvheadend-config b/root/etc/s6-overlay/s6-rc.d/init-video-config/dependencies.d/init-tvheadend-config new file mode 100644 index 0000000..e69de29 diff --git a/root/etc/cont-init.d/50-gid-video b/root/etc/s6-overlay/s6-rc.d/init-video-config/run old mode 100644 new mode 100755 similarity index 96% rename from root/etc/cont-init.d/50-gid-video rename to root/etc/s6-overlay/s6-rc.d/init-video-config/run index ea2bc1a..bb451b2 --- a/root/etc/cont-init.d/50-gid-video +++ b/root/etc/s6-overlay/s6-rc.d/init-video-config/run @@ -1,4 +1,5 @@ #!/usr/bin/with-contenv bash +# shellcheck shell=bash FILES=$(find /dev/dri /dev/dvb -type c -print 2>/dev/null) diff --git a/root/etc/s6-overlay/s6-rc.d/init-video-config/type b/root/etc/s6-overlay/s6-rc.d/init-video-config/type new file mode 100644 index 0000000..bdd22a1 --- /dev/null +++ b/root/etc/s6-overlay/s6-rc.d/init-video-config/type @@ -0,0 +1 @@ +oneshot diff --git a/root/etc/s6-overlay/s6-rc.d/init-video-config/up b/root/etc/s6-overlay/s6-rc.d/init-video-config/up new file mode 100644 index 0000000..be0df9d --- /dev/null +++ b/root/etc/s6-overlay/s6-rc.d/init-video-config/up @@ -0,0 +1 @@ +/etc/s6-overlay/s6-rc.d/init-video-config/run diff --git a/root/etc/s6-overlay/s6-rc.d/svc-tvheadend/dependencies.d/init-services b/root/etc/s6-overlay/s6-rc.d/svc-tvheadend/dependencies.d/init-services new file mode 100644 index 0000000..e69de29 diff --git a/root/etc/s6-overlay/s6-rc.d/svc-tvheadend/notification-fd b/root/etc/s6-overlay/s6-rc.d/svc-tvheadend/notification-fd new file mode 100644 index 0000000..00750ed --- /dev/null +++ b/root/etc/s6-overlay/s6-rc.d/svc-tvheadend/notification-fd @@ -0,0 +1 @@ +3 diff --git a/root/etc/services.d/tvheadend/run b/root/etc/s6-overlay/s6-rc.d/svc-tvheadend/run similarity index 53% rename from root/etc/services.d/tvheadend/run rename to root/etc/s6-overlay/s6-rc.d/svc-tvheadend/run index 708714c..1151871 100755 --- a/root/etc/services.d/tvheadend/run +++ b/root/etc/s6-overlay/s6-rc.d/svc-tvheadend/run @@ -1,4 +1,6 @@ #!/usr/bin/with-contenv bash +# shellcheck shell=bash exec \ + s6-notifyoncheck -d -n 300 -w 1000 -c "nc -z localhost 9981" \ s6-setuidgid abc /usr/bin/tvheadend -C -c /config $RUN_OPTS diff --git a/root/etc/s6-overlay/s6-rc.d/svc-tvheadend/type b/root/etc/s6-overlay/s6-rc.d/svc-tvheadend/type new file mode 100644 index 0000000..5883cff --- /dev/null +++ b/root/etc/s6-overlay/s6-rc.d/svc-tvheadend/type @@ -0,0 +1 @@ +longrun diff --git a/root/etc/s6-overlay/s6-rc.d/user/contents.d/init-tvheadend-config b/root/etc/s6-overlay/s6-rc.d/user/contents.d/init-tvheadend-config new file mode 100644 index 0000000..e69de29 diff --git a/root/etc/s6-overlay/s6-rc.d/user/contents.d/svc-tvheadend b/root/etc/s6-overlay/s6-rc.d/user/contents.d/svc-tvheadend new file mode 100644 index 0000000..e69de29