Compare commits

...

65 Commits

Author SHA1 Message Date
tobbenb
08b2a7c863 Fix path to binary 2020-09-24 20:23:58 +02:00
LinuxServer-CI
319ad73296 Bot Updating Package Versions 2020-09-24 14:32:00 +01:00
tobbenb
b93ccb80dc Remove multiarch 2020-09-24 15:06:37 +02:00
tobbenb
365dd117d3 Initial j0nny test branch commit 2020-09-24 00:27:03 +02:00
LinuxServer-CI
0315bbca19 Bot Updating Package Versions 2020-09-17 23:07:42 -04:00
LinuxServer-CI
2d9247905a Bot Updating Package Versions 2020-09-15 21:49:14 +01:00
LinuxServer-CI
4cb33cc26b Bot Updating Package Versions 2020-09-10 22:36:59 -04:00
LinuxServer-CI
233fd91f47 Bot Updating Package Versions 2020-09-04 02:34:50 +00:00
LinuxServer-CI
449b4e952b Bot Updating Templated Files 2020-08-20 22:03:42 -04:00
LinuxServer-CI
b2c9114b8c Bot Updating Package Versions 2020-08-07 02:46:09 +00:00
LinuxServer-CI
27ffc2a5b0 Bot Updating Templated Files 2020-08-07 02:04:24 +00:00
LinuxServer-CI
458e79fb5d Bot Updating Templated Files 2020-08-07 02:03:09 +00:00
LinuxServer-CI
9072267321 Bot Updating Package Versions 2020-07-30 23:55:52 -04:00
LinuxServer-CI
1402cfd627 Bot Updating Package Versions 2020-07-12 16:47:36 -04:00
LinuxServer-CI
e783cbddd4 Bot Updating Package Versions 2020-06-26 02:33:58 +00:00
LinuxServer-CI
8851174fde Bot Updating Package Versions 2020-06-19 04:43:53 +02:00
LinuxServer-CI
5d7727eb67 Bot Updating Package Versions 2020-06-11 22:42:32 -04:00
LinuxServer-CI
8d3a0879a5 Bot Updating Package Versions 2020-06-04 22:31:30 -04:00
LinuxServer-CI
a86b31a466 Bot Updating Package Versions 2020-06-03 11:30:25 -04:00
LinuxServer-CI
5c2472e875 Bot Updating Templated Files 2020-06-03 14:28:15 +00:00
chbmb
e2ca758bcd Merge pull request #166 from linuxserver/master-3.12
rebasing to alpine 3.12
2020-06-03 15:27:02 +01:00
thelamer
be4d765182 rebasing to alpine 3.12 2020-06-02 13:52:12 -07:00
LinuxServer-CI
3307f71d6a Bot Updating Package Versions 2020-05-29 03:36:28 +00:00
LinuxServer-CI
78b70217f9 Bot Updating Templated Files 2020-05-29 04:55:42 +02:00
LinuxServer-CI
e9f324cf83 Bot Updating Package Versions 2020-05-08 02:53:46 +00:00
LinuxServer-CI
c83501cda1 Bot Updating Package Versions 2020-05-01 02:56:42 +00:00
LinuxServer-CI
590c526d4f Bot Updating Templated Files 2020-05-01 02:02:57 +00:00
LinuxServer-CI
b1e3a2b76c Bot Updating Package Versions 2020-04-24 04:28:26 +00:00
LinuxServer-CI
e46a100668 Bot Updating Package Versions 2020-04-16 22:40:03 -04:00
LinuxServer-CI
a264297038 Bot Updating Templated Files 2020-04-10 02:03:23 +00:00
LinuxServer-CI
1d382f1e2d Bot Updating Package Versions 2020-04-02 22:38:19 -04:00
LinuxServer-CI
92de6b3807 Bot Updating Package Versions 2020-03-27 05:48:39 +00:00
LinuxServer-CI
de6a3f09aa Bot Updating Package Versions 2020-03-06 05:41:35 +00:00
LinuxServer-CI
27de84621d Bot Updating Package Versions 2020-03-01 20:58:08 +00:00
LinuxServer-CI
af32e275fc Bot Updating Templated Files 2020-03-01 20:02:16 +00:00
j0nnymoe
b53c4e8a95 Merge pull request #160 from hotio/patch-1
Fix picons website url
2020-03-01 20:01:21 +00:00
hotio
da780f88bc Fix picons website url
Use the current new domain of my project picons.eu instead of the outdated picons.xyz
2020-03-01 18:48:52 +01:00
LinuxServer-CI
c293456f31 Bot Updating Package Versions 2020-02-28 04:16:08 +00:00
LinuxServer-CI
0d8c5aa390 Bot Updating Package Versions 2020-02-14 03:52:59 +00:00
LinuxServer-CI
aa73a745f3 Bot Updating Package Versions 2020-02-10 17:06:58 -05:00
tobbenb
9d7a35ba91 Remove docker-tvheadend.md file 2020-02-10 13:32:00 -08:00
tobbenb
7253c86d23 Forgot requests package for arm 2020-02-10 13:32:00 -08:00
tobbenb
317114ce56 Add requests and perl-json-xs package 2020-02-10 13:32:00 -08:00
LinuxServer-CI
922de73700 Bot Updating Package Versions 2020-02-07 03:49:33 +00:00
LinuxServer-CI
0dff29da35 Bot Updating Package Versions 2020-01-17 03:30:14 +00:00
LinuxServer-CI
6d325b1f7e Bot Updating Package Versions 2020-01-09 22:36:43 -05:00
LinuxServer-CI
f2423c1628 Bot Updating Package Versions 2019-12-28 02:34:07 +01:00
LinuxServer-CI
6a902e358e Bot Updating Templated Files 2019-12-28 01:06:03 +00:00
tobbenb
05e3e94c17 Forgot alot of shit 2019-12-27 17:05:03 -08:00
tobbenb
f69f0308e8 Update to Alpine 3.11 2019-12-27 17:05:03 -08:00
LinuxServer-CI
0aa53af054 Bot Updating Package Versions 2019-12-27 03:37:00 +00:00
LinuxServer-CI
8290519f1e Bot Updating Package Versions 2019-12-19 22:49:09 -05:00
LinuxServer-CI
99f9917b5f Bot Updating Templated Files 2019-11-28 21:17:02 +00:00
LinuxServer-CI
0922cf5d87 Bot Updating Package Versions 2019-11-15 04:50:09 +01:00
LinuxServer-CI
7bcfb3bdf2 Bot Updating Package Versions 2019-10-31 22:45:55 +01:00
LinuxServer-CI
f8a739bf42 Bot Updating Templated Files 2019-10-31 17:16:57 -04:00
thelamer
42d5564cea no need for dupe regex set 2019-10-19 15:32:55 -07:00
Bernhard Berger
f95217ed6d fix invalid random pattern for creation of groups (only lowercase + number allowed) 2019-10-19 15:32:55 -07:00
LinuxServer-CI
308e7be673 Bot Updating Package Versions 2019-10-18 17:00:20 -04:00
LinuxServer-CI
797285de84 Bot Updating Package Versions 2019-10-14 17:01:51 -04:00
LinuxServer-CI
8507c5fb2e Bot Updating Templated Files 2019-10-10 22:04:33 -04:00
LinuxServer-CI
c60559b46f Bot Updating Templated Files 2019-10-10 22:03:04 -04:00
aptalca
70b794cabc Improve permission fixing on render & dvb devices 2019-10-02 17:10:12 -04:00
LinuxServer-CI
9a7b46c55c Bot Updating Package Versions 2019-09-26 22:46:14 -04:00
LinuxServer-CI
48be429287 Bot Updating Package Versions 2019-09-20 03:36:48 +01:00
17 changed files with 1320 additions and 1398 deletions

1
.github/FUNDING.yml vendored
View File

@@ -1 +1,2 @@
github: linuxserver
open_collective: linuxserver open_collective: linuxserver

View File

@@ -1,21 +1,34 @@
<!--- Provide a general summary of the issue in the Title above -->
[linuxserverurl]: https://linuxserver.io [linuxserverurl]: https://linuxserver.io
[![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)][linuxserverurl] [![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)][linuxserverurl]
<!--- If you have an issue with the project, please provide us with the following information --> If you are new to Docker or this application our issue tracker is **ONLY** used for reporting bugs or requesting features. Please use [our discord server](https://discord.gg/YWrKVTn) for general support.
<!--- Host OS --> <!--- Provide a general summary of the issue in the Title above -->
<!--- Command line users, your run/create command, GUI/Unraid users, a screenshot of your template settings. -->
<!--- Docker log output, docker log <container-name> -->
<!--- Mention if you're using symlinks on any of the volume mounts. -->
------------------------------
<!--- If you have a suggestion or fix for the project, please provide us with the following information --> ## Expected Behavior
<!--- Tell us what should happen -->
<!--- What you think your suggestion brings to the project, or fixes with the project --> ## Current Behavior
<!--- If it's a fix, would it be better suited as a Pull request to the repo ? --> <!--- Tell us what happens instead of the expected behavior -->
## Thanks, team linuxserver.io ## Steps to Reproduce
<!--- Provide a link to a live example, or an unambiguous set of steps to -->
<!--- reproduce this bug. Include code to reproduce, if relevant -->
1.
2.
3.
4.
## Environment
**OS:**
**CPU architecture:** x86_64/arm32/arm64
**How docker service was installed:**
<!--- Providing context helps us come up with a solution that is most useful in the real world -->
## Command used to create docker container (run/create/compose/screenshot)
<!--- Provide your docker create/run command or compose yaml snippet, or a screenshot of settings if using a gui to create the container -->
## Docker logs
<!--- Provide a full docker log, output of "docker logs tvheadend" -->

View File

@@ -6,10 +6,34 @@
<!--- Before submitting a pull request please check the following --> <!--- Before submitting a pull request please check the following -->
<!--- That you have made a branch in your fork, we'd rather not merge from your master --> <!--- If this is a fix for a typo in code or documentation in the README please file an issue and let us sort it out we do not need a PR -->
<!--- Ask yourself if this modification is something the whole userbase will benefit from, if this is a specific change for corner case functionality or plugins please look at making a Docker Mod or local script https://blog.linuxserver.io/2019/09/14/customizing-our-containers/ -->
<!--- That if the PR is addressing an existing issue include, closes #<issue number> , in the body of the PR commit message --> <!--- That if the PR is addressing an existing issue include, closes #<issue number> , in the body of the PR commit message -->
<!--- You have included links to any files / patches etc your PR may be using in the body of the PR commit message --> <!--- You have included links to any files / patches etc your PR may be using in the body of the PR commit message -->
<!--- --> <!--- We maintain a changelog of major revisions to the container at the end of readme-vars.yml in the root of this repository, please add your changes there if appropriate -->
## Thanks, team linuxserver.io
<!--- Coding guidelines: -->
<!--- 1. Installed packages in the Dockerfiles should be in alphabetical order -->
<!--- 2. Changes to Dockerfile should be replicated in Dockerfile.armhf and Dockerfile.aarch64 if applicable -->
<!--- 3. Indentation style (tabs vs 4 spaces vs 1 space) should match the rest of the document -->
<!--- 4. Readme is auto generated from readme-vars.yml, make your changes there -->
------------------------------
We welcome all PRs though this doesnt guarantee it will be accepted.
## Description:
<!--- Describe your changes in detail -->
## Benefits of this PR and context:
<!--- Please explain why we should accept this PR. If this fixes an outstanding bug, please reference the issue # -->
## How Has This Been Tested?
<!--- Please describe in detail how you tested your changes. -->
<!--- Include details of your testing environment, and the tests you ran to -->
<!--- see how your change affects other areas of the code, etc. -->
## Source / References:
<!--- Please include any forum posts/github links relevant to the PR -->

13
.github/workflows/greetings.yml vendored Executable file
View File

@@ -0,0 +1,13 @@
name: Greetings
on: [pull_request_target, issues]
jobs:
greeting:
runs-on: ubuntu-latest
steps:
- uses: actions/first-interaction@v1
with:
issue-message: 'Thanks for opening your first issue here! Be sure to follow the [issue template](https://github.com/linuxserver/docker-tvheadend/.github/ISSUE_TEMPLATE.md)!'
pr-message: 'Thanks for opening this pull request! Be sure to follow the [pull request template](https://github.com/linuxserver/docker-tvheadend/.github/PULL_REQUEST_TEMPLATE.md)!'
repo-token: ${{ secrets.GITHUB_TOKEN }}

23
.github/workflows/stale.yml vendored Executable file
View File

@@ -0,0 +1,23 @@
name: Mark stale issues and pull requests
on:
schedule:
- cron: "30 1 * * *"
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v1
with:
stale-issue-message: "This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions."
stale-pr-message: "This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions."
stale-issue-label: 'no-issue-activity'
stale-pr-label: 'no-pr-activity'
days-before-stale: 30
days-before-close: 365
exempt-issue-labels: 'awaiting-approval,work-in-progress'
exempt-pr-labels: 'awaiting-approval,work-in-progress'
repo-token: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -1,226 +1,4 @@
FROM lsiobase/alpine:3.10 as buildstage FROM lsiobase/ubuntu:bionic
############## build stage ##############
# package versions
ARG ARGTABLE_VER="2.13"
ARG XMLTV_VER="v0.6.1"
# environment settings
ARG TZ="Europe/Oslo"
ARG TVHEADEND_COMMIT
ENV HOME="/config"
# copy patches
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 \
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-data-dumper \
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-compress \
perl-io-html \
perl-io-socket-ssl \
perl-io-stringy \
perl-json \
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 \
python \
sdl-dev \
tar \
uriparser-dev \
wget \
x264-dev \
x265-dev \
zlib-dev && \
apk add --no-cache \
--repository http://dl-cdn.alpinelinux.org/alpine/edge/community \
gnu-libiconv-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
RUN \
echo "**** install perl modules for xmltv ****" && \
curl -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
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-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 \
--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/
RUN \
echo "***** compile comskip ****" && \
git clone git://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
############## runtime stage ##############
FROM lsiobase/alpine:3.10
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@@ -228,111 +6,174 @@ ARG VERSION
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
LABEL maintainer="saarg" LABEL maintainer="saarg"
# environment settings # package version
ENV HOME="/config" ARG TVH_VER="master"
ARG TVHEADEND_COMMIT
# Environment settings
ENV HOME="/config"
ARG DEBIAN_FRONTEND="noninteractive"
# add dependencies
RUN \ RUN \
echo "**** install runtime packages ****" && \ apt-get update && \
apk add --no-cache \ apt-get upgrade -qy && \
bsd-compat-headers \ apt-get install -qy --no-install-recommends \
autoconf \
automake \
binutils \
build-essential \
bzip2 \ bzip2 \
curl \ cmake \
ffmpeg \ dvb-apps \
ffmpeg-libs \ gettext \
git \
gzip \ gzip \
libcrypto1.1 \ jq \
libcurl \ libavahi-client-dev \
libdvbcsa \ libdvbcsa-dev \
libhdhomerun-libs \ libhdhomerun-dev \
libssl1.1 \ libiconv-hook-dev \
libva \ libssl-dev \
libva-intel-driver \ libtool \
mesa-dri-ati \ libva-dev \
libvpx \ pkg-config \
libxml2 \
libxslt \
linux-headers \
openssl \
opus \
pcre2 \
perl \
perl-archive-zip \
perl-boolean \
perl-capture-tiny \
perl-cgi \
perl-compress-raw-zlib \
perl-data-dumper \
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-compress \
perl-io-html \
perl-io-socket-ssl \
perl-io-stringy \
perl-json \
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 \
python \ python \
tar \ python3 \
uriparser \ python3-requests \
wget \ wget \
x264 \ zlib1g-dev && \
x265 \ echo "**** build tvheadend ****" && \
zlib && \ mkdir -p \
apk add --no-cache \ /tmp/patches && \
--repository http://dl-cdn.alpinelinux.org/alpine/edge/community \ if [ -z ${TVHEADEND_COMMIT+x} ]; then \
gnu-libiconv && \ TVHEADEND_COMMIT=$(curl -sX GET https://api.github.com/repos/tvheadend/tvheadend/commits/${TVH_VER} \
| jq -r '. | .sha'); \
fi && \
git clone https://github.com/tvheadend/tvheadend.git /tmp/tvheadend && \
cd /tmp/tvheadend && \
git checkout ${TVHEADEND_COMMIT} && \
curl -o \
/tmp/patches/1348.patch -L \
"https://patch-diff.githubusercontent.com/raw/tvheadend/tvheadend/pull/1348.patch" && \
curl -o \
/tmp/patches/1273.patch -L \
"https://patch-diff.githubusercontent.com/raw/tvheadend/tvheadend/pull/1273.patch" && \
patch -p1 -i /tmp/patches/1348.patch && \
patch -p1 -i /tmp/patches/1273.patch && \
./configure \
`#Encoding` \
--enable-ffmpeg_static \
--disable-libav \
\
`#Options` \
--disable-bintray_cache \
--enable-hdhomerun_static \
--enable-hdhomerun_client \
--enable-pngquant \
--enable-trace \
--enable-vaapi && \
make && \
make install && \
echo "**** install dependencies for comskip ****" && \
apt-get install -qy --no-install-recommends \
libargtable2-dev \
libavformat-dev \
libbz2-dev \
libdca-dev \
libfaac-dev \
libfdk-aac-dev \
libmp3lame-dev \
libopencore-amrnb-dev \
libopencore-amrwb-dev \
libopus-dev \
libsdl1.2-dev \
libsoxr-dev \
libspeex-dev \
libva-dev \
libxvidcore-dev \
libvo-aacenc-dev \
libvorbisenc2 \
libvorbis-dev \
libvpx-dev \
libx264-dev \
libx265-dev && \
echo "**** build comskip ****" && \
git clone git://github.com/erikkaashoek/Comskip /tmp/comskip && \
cd /tmp/comskip && \
./autogen.sh && \
./configure \
--bindir=/usr/bin \
--sysconfdir=/config/comskip && \
make && \
make install && \
echo "**** remove build dependencies ****" && \
apt autoremove && \
apt-get purge -qy --allow-remove-essential \
autoconf \
automake \
binutils \
build-essential \
cmake \
gettext \
git \
libargtable2-dev \
libavformat-dev \
libbz2-dev \
libdca-dev \
libfaac-dev \
libfdk-aac-dev \
libmp3lame-dev \
libopencore-amrnb-dev \
libopencore-amrwb-dev \
libopus-dev \
libsdl1.2-dev \
libsoxr-dev \
libspeex-dev \
libva-dev \
libxvidcore-dev \
libvo-aacenc-dev \
libvorbisenc2 \
libvorbis-dev \
libvpx-dev \
libx264-dev \
libx265-dev \
libavahi-client-dev \
libhdhomerun-dev \
libiconv-hook-dev \
libssl-dev \
libtool \
pkg-config \
python \
python3 \
python3-requests \
wget \
zlib1g-dev && \
echo "**** install runtime dependencies ****" && \
apt-get install -qy --no-install-recommends \
libargtable2-0 \
libavahi-client3 \
libavahi-common3 \
libc6 \
libdbus-1-3 \
libssl1.0.0 \
xmltv \
zlib1g && \
echo "**** cleanup ****" && \
apt-get clean && \
rm -rf \
/tmp/* \
/var/lib/apt/lists/* \
/var/tmp/* && \
echo "**** Add Picons ****" && \ echo "**** Add Picons ****" && \
mkdir -p /picons && \ mkdir -p /picons && \
curl -o \ curl -o \
/picons.tar.bz2 -L \ /picons.tar.bz2 -L \
https://lsio-ci.ams3.digitaloceanspaces.com/picons/picons.tar.bz2 https://lsio-ci.ams3.digitaloceanspaces.com/picons/picons.tar.bz2
# copy local files and buildstage artifacts # copy local files
COPY --from=buildstage /tmp/argtable-build/usr/ /usr/
COPY --from=buildstage /tmp/comskip-build/usr/ /usr/
COPY --from=buildstage /tmp/tvheadend-build/usr/ /usr/
COPY --from=buildstage /tmp/xmltv-build/usr/ /usr/
COPY --from=buildstage /usr/local/share/man/ /usr/local/share/man/
COPY --from=buildstage /usr/local/share/perl5/ /usr/local/share/perl5/
COPY root/ / COPY root/ /
# ports and volumes # ports and volumes
EXPOSE 9981 9982 EXPOSE 9981 9982
VOLUME /config /recordings VOLUME /config

View File

@@ -1,224 +1,4 @@
FROM lsiobase/alpine:arm64v8-3.10 as buildstage FROM lsiobase/ubuntu:arm64v8-bionic
############## build stage ##############
# package versions
ARG ARGTABLE_VER="2.13"
ARG XMLTV_VER="v0.6.1"
# environment settings
ARG TZ="Europe/Oslo"
ARG TVHEADEND_COMMIT
ENV HOME="/config"
# copy patches
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 \
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-data-dumper \
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-compress \
perl-io-html \
perl-io-socket-ssl \
perl-io-stringy \
perl-json \
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 \
python \
sdl-dev \
tar \
uriparser-dev \
wget \
x264-dev \
x265-dev \
zlib-dev && \
apk add --no-cache \
--repository http://dl-cdn.alpinelinux.org/alpine/edge/community \
gnu-libiconv-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
RUN \
echo "**** install perl modules for xmltv ****" && \
curl -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
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-hdhomerun_static \
--enable-hdhomerun_client \
--enable-libav \
--enable-pngquant \
--enable-trace \
--infodir=/usr/share/info \
--localstatedir=/var \
--mandir=/usr/share/man \
--prefix=/usr \
--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/
RUN \
echo "***** compile comskip ****" && \
git clone git://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
############## runtime stage ##############
FROM lsiobase/alpine:arm64v8-3.10
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@@ -226,108 +6,174 @@ ARG VERSION
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
LABEL maintainer="saarg" LABEL maintainer="saarg"
# environment settings # package version
ENV HOME="/config" ARG TVH_VER="master"
ARG TVHEADEND_COMMIT
# Environment settings
ENV HOME="/config"
ARG DEBIAN_FRONTEND="noninteractive"
# add dependencies
RUN \ RUN \
echo "**** install runtime packages ****" && \ apt-get update && \
apk add --no-cache \ apt-get upgrade -qy && \
bsd-compat-headers \ apt-get install -qy --no-install-recommends \
autoconf \
automake \
binutils \
build-essential \
bzip2 \ bzip2 \
curl \ cmake \
ffmpeg \ dvb-apps \
ffmpeg-libs \ gettext \
git \
gzip \ gzip \
libcrypto1.1 \ jq \
libcurl \ libavahi-client-dev \
libdvbcsa \ libdvbcsa-dev \
libhdhomerun-libs \ libhdhomerun-dev \
libssl1.1 \ libiconv-hook-dev \
libvpx \ libssl-dev \
libxml2 \ libtool \
libxslt \ libva-dev \
linux-headers \ pkg-config \
openssl \
opus \
pcre2 \
perl \
perl-archive-zip \
perl-boolean \
perl-capture-tiny \
perl-cgi \
perl-compress-raw-zlib \
perl-data-dumper \
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-compress \
perl-io-html \
perl-io-socket-ssl \
perl-io-stringy \
perl-json \
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 \
python \ python \
tar \ python3 \
uriparser \ python3-requests \
wget \ wget \
x264 \ zlib1g-dev && \
x265 \ echo "**** build tvheadend ****" && \
zlib && \ mkdir -p \
apk add --no-cache \ /tmp/patches && \
--repository http://dl-cdn.alpinelinux.org/alpine/edge/community \ if [ -z ${TVHEADEND_COMMIT+x} ]; then \
gnu-libiconv && \ TVHEADEND_COMMIT=$(curl -sX GET https://api.github.com/repos/tvheadend/tvheadend/commits/${TVH_VER} \
| jq -r '. | .sha'); \
fi && \
git clone https://github.com/tvheadend/tvheadend.git /tmp/tvheadend && \
cd /tmp/tvheadend && \
git checkout ${TVHEADEND_COMMIT} && \
curl -o \
/tmp/patches/1348.patch -L \
"https://patch-diff.githubusercontent.com/raw/tvheadend/tvheadend/pull/1348.patch" && \
curl -o \
/tmp/patches/1273.patch -L \
"https://patch-diff.githubusercontent.com/raw/tvheadend/tvheadend/pull/1273.patch" && \
patch -p1 -i /tmp/patches/1348.patch && \
patch -p1 -i /tmp/patches/1273.patch && \
./configure \
`#Encoding` \
--enable-ffmpeg_static \
--disable-libav \
\
`#Options` \
--disable-bintray_cache \
--enable-hdhomerun_static \
--enable-hdhomerun_client \
--enable-pngquant \
--enable-trace \
--enable-vaapi && \
make && \
make install && \
echo "**** install dependencies for comskip ****" && \
apt-get install -qy --no-install-recommends \
libargtable2-dev \
libavformat-dev \
libbz2-dev \
libdca-dev \
libfaac-dev \
libfdk-aac-dev \
libmp3lame-dev \
libopencore-amrnb-dev \
libopencore-amrwb-dev \
libopus-dev \
libsdl1.2-dev \
libsoxr-dev \
libspeex-dev \
libva-dev \
libxvidcore-dev \
libvo-aacenc-dev \
libvorbisenc2 \
libvorbis-dev \
libvpx-dev \
libx264-dev \
libx265-dev && \
echo "**** build comskip ****" && \
git clone git://github.com/erikkaashoek/Comskip /tmp/comskip && \
cd /tmp/comskip && \
./autogen.sh && \
./configure \
--bindir=/usr/bin \
--sysconfdir=/config/comskip && \
make && \
make install && \
echo "**** remove build dependencies ****" && \
apt autoremove && \
apt-get purge -qy --allow-remove-essential \
autoconf \
automake \
binutils \
build-essential \
cmake \
gettext \
git \
libargtable2-dev \
libavformat-dev \
libbz2-dev \
libdca-dev \
libfaac-dev \
libfdk-aac-dev \
libmp3lame-dev \
libopencore-amrnb-dev \
libopencore-amrwb-dev \
libopus-dev \
libsdl1.2-dev \
libsoxr-dev \
libspeex-dev \
libva-dev \
libxvidcore-dev \
libvo-aacenc-dev \
libvorbisenc2 \
libvorbis-dev \
libvpx-dev \
libx264-dev \
libx265-dev \
libavahi-client-dev \
libhdhomerun-dev \
libiconv-hook-dev \
libssl-dev \
libtool \
pkg-config \
python \
python3 \
python3-requests \
wget \
zlib1g-dev && \
echo "**** install runtime dependencies ****" && \
apt-get install -qy --no-install-recommends \
libargtable2-0 \
libavahi-client3 \
libavahi-common3 \
libc6 \
libdbus-1-3 \
libssl1.0.0 \
xmltv \
zlib1g && \
echo "**** cleanup ****" && \
apt-get clean && \
rm -rf \
/tmp/* \
/var/lib/apt/lists/* \
/var/tmp/* && \
echo "**** Add Picons ****" && \ echo "**** Add Picons ****" && \
mkdir -p /picons && \ mkdir -p /picons && \
curl -o \ curl -o \
/picons.tar.bz2 -L \ /picons.tar.bz2 -L \
https://lsio-ci.ams3.digitaloceanspaces.com/picons/picons.tar.bz2 https://lsio-ci.ams3.digitaloceanspaces.com/picons/picons.tar.bz2
# copy local files and buildstage artifacts # copy local files
COPY --from=buildstage /tmp/argtable-build/usr/ /usr/
COPY --from=buildstage /tmp/comskip-build/usr/ /usr/
COPY --from=buildstage /tmp/tvheadend-build/usr/ /usr/
COPY --from=buildstage /tmp/xmltv-build/usr/ /usr/
COPY --from=buildstage /usr/local/share/man/ /usr/local/share/man/
COPY --from=buildstage /usr/local/share/perl5/ /usr/local/share/perl5/
COPY root/ / COPY root/ /
# ports and volumes # ports and volumes
EXPOSE 9981 9982 EXPOSE 9981 9982
VOLUME /config /recordings VOLUME /config

View File

@@ -1,224 +1,4 @@
FROM lsiobase/alpine:arm32v7-3.10 as buildstage FROM lsiobase/ubuntu:arm32v7-bionic
############## build stage ##############
# package versions
ARG ARGTABLE_VER="2.13"
ARG XMLTV_VER="v0.6.1"
# environment settings
ARG TZ="Europe/Oslo"
ARG TVHEADEND_COMMIT
ENV HOME="/config"
# copy patches
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 \
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-data-dumper \
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-compress \
perl-io-html \
perl-io-socket-ssl \
perl-io-stringy \
perl-json \
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 \
python \
sdl-dev \
tar \
uriparser-dev \
wget \
x264-dev \
x265-dev \
zlib-dev && \
apk add --no-cache \
--repository http://dl-cdn.alpinelinux.org/alpine/edge/community \
gnu-libiconv-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
RUN \
echo "**** install perl modules for xmltv ****" && \
curl -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
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-hdhomerun_static \
--enable-hdhomerun_client \
--enable-libav \
--enable-pngquant \
--enable-trace \
--infodir=/usr/share/info \
--localstatedir=/var \
--mandir=/usr/share/man \
--prefix=/usr \
--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/
RUN \
echo "***** compile comskip ****" && \
git clone git://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
############## runtime stage ##############
FROM lsiobase/alpine:arm32v7-3.10
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
@@ -226,108 +6,174 @@ ARG VERSION
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
LABEL maintainer="saarg" LABEL maintainer="saarg"
# environment settings # package version
ENV HOME="/config" ARG TVH_VER="master"
ARG TVHEADEND_COMMIT
# Environment settings
ENV HOME="/config"
ARG DEBIAN_FRONTEND="noninteractive"
# add dependencies
RUN \ RUN \
echo "**** install runtime packages ****" && \ apt-get update && \
apk add --no-cache \ apt-get upgrade -qy && \
bsd-compat-headers \ apt-get install -qy --no-install-recommends \
autoconf \
automake \
binutils \
build-essential \
bzip2 \ bzip2 \
curl \ cmake \
ffmpeg \ dvb-apps \
ffmpeg-libs \ gettext \
git \
gzip \ gzip \
libcrypto1.1 \ jq \
libcurl \ libavahi-client-dev \
libdvbcsa \ libdvbcsa-dev \
libhdhomerun-libs \ libhdhomerun-dev \
libssl1.1 \ libiconv-hook-dev \
libvpx \ libssl-dev \
libxml2 \ libtool \
libxslt \ libva-dev \
linux-headers \ pkg-config \
openssl \
opus \
pcre2 \
perl \
perl-archive-zip \
perl-boolean \
perl-capture-tiny \
perl-cgi \
perl-compress-raw-zlib \
perl-data-dumper \
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-compress \
perl-io-html \
perl-io-socket-ssl \
perl-io-stringy \
perl-json \
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 \
python \ python \
tar \ python3 \
uriparser \ python3-requests \
wget \ wget \
x264 \ zlib1g-dev && \
x265 \ echo "**** build tvheadend ****" && \
zlib && \ mkdir -p \
apk add --no-cache \ /tmp/patches && \
--repository http://dl-cdn.alpinelinux.org/alpine/edge/community \ if [ -z ${TVHEADEND_COMMIT+x} ]; then \
gnu-libiconv && \ TVHEADEND_COMMIT=$(curl -sX GET https://api.github.com/repos/tvheadend/tvheadend/commits/${TVH_VER} \
| jq -r '. | .sha'); \
fi && \
git clone https://github.com/tvheadend/tvheadend.git /tmp/tvheadend && \
cd /tmp/tvheadend && \
git checkout ${TVHEADEND_COMMIT} && \
curl -o \
/tmp/patches/1348.patch -L \
"https://patch-diff.githubusercontent.com/raw/tvheadend/tvheadend/pull/1348.patch" && \
curl -o \
/tmp/patches/1273.patch -L \
"https://patch-diff.githubusercontent.com/raw/tvheadend/tvheadend/pull/1273.patch" && \
patch -p1 -i /tmp/patches/1348.patch && \
patch -p1 -i /tmp/patches/1273.patch && \
./configure \
`#Encoding` \
--enable-ffmpeg_static \
--disable-libav \
\
`#Options` \
--disable-bintray_cache \
--enable-hdhomerun_static \
--enable-hdhomerun_client \
--enable-pngquant \
--enable-trace \
--enable-vaapi && \
make && \
make install && \
echo "**** install dependencies for comskip ****" && \
apt-get install -qy --no-install-recommends \
libargtable2-dev \
libavformat-dev \
libbz2-dev \
libdca-dev \
libfaac-dev \
libfdk-aac-dev \
libmp3lame-dev \
libopencore-amrnb-dev \
libopencore-amrwb-dev \
libopus-dev \
libsdl1.2-dev \
libsoxr-dev \
libspeex-dev \
libva-dev \
libxvidcore-dev \
libvo-aacenc-dev \
libvorbisenc2 \
libvorbis-dev \
libvpx-dev \
libx264-dev \
libx265-dev && \
echo "**** build comskip ****" && \
git clone git://github.com/erikkaashoek/Comskip /tmp/comskip && \
cd /tmp/comskip && \
./autogen.sh && \
./configure \
--bindir=/usr/bin \
--sysconfdir=/config/comskip && \
make && \
make install && \
echo "**** remove build dependencies ****" && \
apt autoremove && \
apt-get purge -qy --allow-remove-essential \
autoconf \
automake \
binutils \
build-essential \
cmake \
gettext \
git \
libargtable2-dev \
libavformat-dev \
libbz2-dev \
libdca-dev \
libfaac-dev \
libfdk-aac-dev \
libmp3lame-dev \
libopencore-amrnb-dev \
libopencore-amrwb-dev \
libopus-dev \
libsdl1.2-dev \
libsoxr-dev \
libspeex-dev \
libva-dev \
libxvidcore-dev \
libvo-aacenc-dev \
libvorbisenc2 \
libvorbis-dev \
libvpx-dev \
libx264-dev \
libx265-dev \
libavahi-client-dev \
libhdhomerun-dev \
libiconv-hook-dev \
libssl-dev \
libtool \
pkg-config \
python \
python3 \
python3-requests \
wget \
zlib1g-dev && \
echo "**** install runtime dependencies ****" && \
apt-get install -qy --no-install-recommends \
libargtable2-0 \
libavahi-client3 \
libavahi-common3 \
libc6 \
libdbus-1-3 \
libssl1.0.0 \
xmltv \
zlib1g && \
echo "**** cleanup ****" && \
apt-get clean && \
rm -rf \
/tmp/* \
/var/lib/apt/lists/* \
/var/tmp/* && \
echo "**** Add Picons ****" && \ echo "**** Add Picons ****" && \
mkdir -p /picons && \ mkdir -p /picons && \
curl -o \ curl -o \
/picons.tar.bz2 -L \ /picons.tar.bz2 -L \
https://lsio-ci.ams3.digitaloceanspaces.com/picons/picons.tar.bz2 https://lsio-ci.ams3.digitaloceanspaces.com/picons/picons.tar.bz2
# copy local files and buildstage artifacts # copy local files
COPY --from=buildstage /tmp/argtable-build/usr/ /usr/
COPY --from=buildstage /tmp/comskip-build/usr/ /usr/
COPY --from=buildstage /tmp/tvheadend-build/usr/ /usr/
COPY --from=buildstage /tmp/xmltv-build/usr/ /usr/
COPY --from=buildstage /usr/local/share/man/ /usr/local/share/man/
COPY --from=buildstage /usr/local/share/perl5/ /usr/local/share/perl5/
COPY root/ / COPY root/ /
# ports and volumes # ports and volumes
EXPOSE 9981 9982 EXPOSE 9981 9982
VOLUME /config /recordings VOLUME /config

265
Jenkinsfile vendored
View File

@@ -2,6 +2,10 @@ pipeline {
agent { agent {
label 'X86-64-MULTI' label 'X86-64-MULTI'
} }
options {
buildDiscarder(logRotator(numToKeepStr: '10', daysToKeepStr: '60'))
parallelsAlwaysFailFast()
}
// Input to determine if this is a package check // Input to determine if this is a package check
parameters { parameters {
string(defaultValue: 'false', description: 'package check run', name: 'PACKAGE_CHECK') string(defaultValue: 'false', description: 'package check run', name: 'PACKAGE_CHECK')
@@ -10,6 +14,8 @@ pipeline {
environment { environment {
BUILDS_DISCORD=credentials('build_webhook_url') BUILDS_DISCORD=credentials('build_webhook_url')
GITHUB_TOKEN=credentials('498b4638-2d02-4ce5-832d-8a57d01d97ab') GITHUB_TOKEN=credentials('498b4638-2d02-4ce5-832d-8a57d01d97ab')
GITLAB_TOKEN=credentials('b6f0f1dd-6952-4cf6-95d1-9c06380283f0')
GITLAB_NAMESPACE=credentials('gitlab-namespace-id')
EXT_GIT_BRANCH = 'master' EXT_GIT_BRANCH = 'master'
EXT_USER = 'tvheadend' EXT_USER = 'tvheadend'
EXT_REPO = 'tvheadend' EXT_REPO = 'tvheadend'
@@ -20,8 +26,8 @@ pipeline {
DOCKERHUB_IMAGE = 'linuxserver/tvheadend' DOCKERHUB_IMAGE = 'linuxserver/tvheadend'
DEV_DOCKERHUB_IMAGE = 'lsiodev/tvheadend' DEV_DOCKERHUB_IMAGE = 'lsiodev/tvheadend'
PR_DOCKERHUB_IMAGE = 'lspipepr/tvheadend' PR_DOCKERHUB_IMAGE = 'lspipepr/tvheadend'
DIST_IMAGE = 'alpine' DIST_IMAGE = 'ubuntu'
MULTIARCH='true' MULTIARCH='false'
CI='true' CI='true'
CI_WEB='true' CI_WEB='true'
CI_PORT='9981' CI_PORT='9981'
@@ -38,7 +44,7 @@ pipeline {
script{ script{
env.EXIT_STATUS = '' env.EXIT_STATUS = ''
env.LS_RELEASE = sh( env.LS_RELEASE = sh(
script: '''docker run --rm alexeiled/skopeo sh -c 'skopeo inspect docker://docker.io/'${DOCKERHUB_IMAGE}':latest 2>/dev/null' | jq -r '.Labels.build_version' | awk '{print $3}' | grep '\\-ls' || : ''', script: '''docker run --rm alexeiled/skopeo sh -c 'skopeo inspect docker://docker.io/'${DOCKERHUB_IMAGE}':j0nny 2>/dev/null' | jq -r '.Labels.build_version' | awk '{print $3}' | grep '\\-ls' || : ''',
returnStdout: true).trim() returnStdout: true).trim()
env.LS_RELEASE_NOTES = sh( env.LS_RELEASE_NOTES = sh(
script: '''cat readme-vars.yml | awk -F \\" '/date: "[0-9][0-9].[0-9][0-9].[0-9][0-9]:/ {print $4;exit;}' | sed -E ':a;N;$!ba;s/\\r{0,1}\\n/\\\\n/g' ''', script: '''cat readme-vars.yml | awk -F \\" '/date: "[0-9][0-9].[0-9][0-9].[0-9][0-9]:/ {print $4;exit;}' | sed -E ':a;N;$!ba;s/\\r{0,1}\\n/\\\\n/g' ''',
@@ -52,22 +58,7 @@ pipeline {
env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/commit/' + env.GIT_COMMIT env.CODE_URL = 'https://github.com/' + env.LS_USER + '/' + env.LS_REPO + '/commit/' + env.GIT_COMMIT
env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DOCKERHUB_IMAGE + '/tags/' env.DOCKERHUB_LINK = 'https://hub.docker.com/r/' + env.DOCKERHUB_IMAGE + '/tags/'
env.PULL_REQUEST = env.CHANGE_ID env.PULL_REQUEST = env.CHANGE_ID
env.LICENSE_TAG = sh( env.TEMPLATED_FILES = 'Jenkinsfile README.md LICENSE ./.github/FUNDING.yml ./.github/ISSUE_TEMPLATE.md ./.github/PULL_REQUEST_TEMPLATE.md ./.github/workflows/greetings.yml ./.github/workflows/stale.yml'
script: '''#!/bin/bash
if [ -e LICENSE ] ; then
cat LICENSE | md5sum | cut -c1-8
else
echo none
fi''',
returnStdout: true).trim()
env.FUNDING_TAG = sh(
script: '''#!/bin/bash
if [ -e ./.github/FUNDING.yml ] ; then
cat ./.github/FUNDING.yml | md5sum | cut -c1-8
else
echo none
fi''',
returnStdout: true).trim()
} }
script{ script{
env.LS_RELEASE_NUMBER = sh( env.LS_RELEASE_NUMBER = sh(
@@ -138,15 +129,17 @@ pipeline {
} }
} }
} }
// If this is a master build use live docker endpoints // If this is a j0nny build use live docker endpoints
stage("Set ENV live build"){ stage("Set ENV live build"){
when { when {
branch "master" branch "j0nny"
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
} }
steps { steps {
script{ script{
env.IMAGE = env.DOCKERHUB_IMAGE env.IMAGE = env.DOCKERHUB_IMAGE
env.GITHUBIMAGE = 'docker.pkg.github.com/' + env.LS_USER + '/' + env.LS_REPO + '/' + env.CONTAINER_NAME
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/' + env.CONTAINER_NAME
if (env.MULTIARCH == 'true') { if (env.MULTIARCH == 'true') {
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
} else { } else {
@@ -159,12 +152,14 @@ pipeline {
// If this is a dev build use dev docker endpoints // If this is a dev build use dev docker endpoints
stage("Set ENV dev build"){ stage("Set ENV dev build"){
when { when {
not {branch "master"} not {branch "j0nny"}
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
} }
steps { steps {
script{ script{
env.IMAGE = env.DEV_DOCKERHUB_IMAGE env.IMAGE = env.DEV_DOCKERHUB_IMAGE
env.GITHUBIMAGE = 'docker.pkg.github.com/' + env.LS_USER + '/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME
if (env.MULTIARCH == 'true') { if (env.MULTIARCH == 'true') {
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
} else { } else {
@@ -183,6 +178,8 @@ pipeline {
steps { steps {
script{ script{
env.IMAGE = env.PR_DOCKERHUB_IMAGE env.IMAGE = env.PR_DOCKERHUB_IMAGE
env.GITHUBIMAGE = 'docker.pkg.github.com/' + env.LS_USER + '/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME
if (env.MULTIARCH == 'true') { if (env.MULTIARCH == 'true') {
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST
} else { } else {
@@ -226,7 +223,7 @@ pipeline {
// Use helper containers to render templated files // Use helper containers to render templated files
stage('Update-Templates') { stage('Update-Templates') {
when { when {
branch "master" branch "j0nny"
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
expression { expression {
env.CONTAINER_NAME != null env.CONTAINER_NAME != null
@@ -237,36 +234,33 @@ pipeline {
set -e set -e
TEMPDIR=$(mktemp -d) TEMPDIR=$(mktemp -d)
docker pull linuxserver/jenkins-builder:latest docker pull linuxserver/jenkins-builder:latest
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=master -v ${TEMPDIR}:/ansible/jenkins linuxserver/jenkins-builder:latest docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=j0nny -v ${TEMPDIR}:/ansible/jenkins linuxserver/jenkins-builder:latest
docker pull linuxserver/doc-builder:latest CURRENTHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=master -v ${TEMPDIR}:/ansible/readme linuxserver/doc-builder:latest cd ${TEMPDIR}/docker-${CONTAINER_NAME}
if [ "$(md5sum ${TEMPDIR}/${LS_REPO}/Jenkinsfile | awk '{ print $1 }')" != "$(md5sum Jenkinsfile | awk '{ print $1 }')" ] || \ NEWHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
[ "$(md5sum ${TEMPDIR}/${CONTAINER_NAME}/README.md | awk '{ print $1 }')" != "$(md5sum README.md | awk '{ print $1 }')" ] || \ if [[ "${CURRENTHASH}" != "${NEWHASH}" ]]; then
[ "$(cat ${TEMPDIR}/${LS_REPO}/LICENSE | md5sum | cut -c1-8)" != "${LICENSE_TAG}" ] || \
[ "$(cat ${TEMPDIR}/${LS_REPO}/.github/FUNDING.yml | md5sum | cut -c1-8)" != "${FUNDING_TAG}" ]; then
mkdir -p ${TEMPDIR}/repo mkdir -p ${TEMPDIR}/repo
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO} git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
git --git-dir ${TEMPDIR}/repo/${LS_REPO}/.git checkout -f master cd ${TEMPDIR}/repo/${LS_REPO}
cp ${TEMPDIR}/${CONTAINER_NAME}/README.md ${TEMPDIR}/repo/${LS_REPO}/ git checkout -f j0nny
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/ cd ${TEMPDIR}/docker-${CONTAINER_NAME}
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/LICENSE ${TEMPDIR}/repo/${LS_REPO}/ mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github cp --parents ${TEMPLATED_FILES} ${TEMPDIR}/repo/${LS_REPO}/
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.github/FUNDING.yml ${TEMPDIR}/repo/${LS_REPO}/.github/FUNDING.yml
cd ${TEMPDIR}/repo/${LS_REPO}/ cd ${TEMPDIR}/repo/${LS_REPO}/
git --git-dir ${TEMPDIR}/repo/${LS_REPO}/.git add Jenkinsfile README.md LICENSE ./.github/FUNDING.yml git add ${TEMPLATED_FILES}
git --git-dir ${TEMPDIR}/repo/${LS_REPO}/.git commit -m 'Bot Updating Templated Files' git commit -m 'Bot Updating Templated Files'
git --git-dir ${TEMPDIR}/repo/${LS_REPO}/.git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git --all
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
else else
echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
fi fi
mkdir -p ${TEMPDIR}/gitbook mkdir -p ${TEMPDIR}/gitbook
git clone https://github.com/linuxserver/docker-documentation.git ${TEMPDIR}/gitbook/docker-documentation git clone https://github.com/linuxserver/docker-documentation.git ${TEMPDIR}/gitbook/docker-documentation
if [[ "${BRANCH_NAME}" == "master" ]] && [[ (! -f ${TEMPDIR}/gitbook/docker-documentation/images/docker-${CONTAINER_NAME}.md) || ("$(md5sum ${TEMPDIR}/gitbook/docker-documentation/images/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/${CONTAINER_NAME}/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')") ]]; then if [[ "${BRANCH_NAME}" == "master" ]] && [[ (! -f ${TEMPDIR}/gitbook/docker-documentation/images/docker-${CONTAINER_NAME}.md) || ("$(md5sum ${TEMPDIR}/gitbook/docker-documentation/images/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')") ]]; then
cp ${TEMPDIR}/${CONTAINER_NAME}/docker-${CONTAINER_NAME}.md ${TEMPDIR}/gitbook/docker-documentation/images/ cp ${TEMPDIR}/docker-${CONTAINER_NAME}/docker-${CONTAINER_NAME}.md ${TEMPDIR}/gitbook/docker-documentation/images/
cd ${TEMPDIR}/gitbook/docker-documentation/ cd ${TEMPDIR}/gitbook/docker-documentation/
git add images/docker-${CONTAINER_NAME}.md git add images/docker-${CONTAINER_NAME}.md
git commit -m 'Bot Updating Templated Files' git commit -m 'Bot Updating Documentation'
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git --all git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git --all
fi fi
rm -Rf ${TEMPDIR}''' rm -Rf ${TEMPDIR}'''
@@ -280,7 +274,7 @@ pipeline {
// Exit the build if the Templated files were just updated // Exit the build if the Templated files were just updated
stage('Template-exit') { stage('Template-exit') {
when { when {
branch "master" branch "j0nny"
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
environment name: 'FILES_UPDATED', value: 'true' environment name: 'FILES_UPDATED', value: 'true'
expression { expression {
@@ -293,6 +287,26 @@ pipeline {
} }
} }
} }
/* #######################
GitLab Mirroring
####################### */
// Ping into Gitlab to mirror this repo and have a registry endpoint
stage("GitLab Mirror"){
when {
environment name: 'EXIT_STATUS', value: ''
}
steps{
sh '''curl -H "Content-Type: application/json" -H "Private-Token: ${GITLAB_TOKEN}" -X POST https://gitlab.com/api/v4/projects \
-d '{"namespace_id":'${GITLAB_NAMESPACE}',\
"name":"'${LS_REPO}'",
"mirror":true,\
"import_url":"https://github.com/linuxserver/'${LS_REPO}'.git",\
"issues_access_level":"disabled",\
"merge_requests_access_level":"disabled",\
"repository_access_level":"enabled",\
"visibility":"public"}' '''
}
}
/* ############### /* ###############
Build Container Build Container
############### */ ############### */
@@ -340,7 +354,9 @@ pipeline {
sh "docker build --no-cache --pull -f Dockerfile.armhf -t ${IMAGE}:arm32v7-${META_TAG} \ sh "docker build --no-cache --pull -f Dockerfile.armhf -t ${IMAGE}:arm32v7-${META_TAG} \
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${META_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." --build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${META_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
sh "docker tag ${IMAGE}:arm32v7-${META_TAG} lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}" sh "docker tag ${IMAGE}:arm32v7-${META_TAG} lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}"
sh "docker push lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}" retry(5) {
sh "docker push lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}"
}
sh '''docker rmi \ sh '''docker rmi \
${IMAGE}:arm32v7-${META_TAG} \ ${IMAGE}:arm32v7-${META_TAG} \
lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} || :''' lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} || :'''
@@ -367,7 +383,9 @@ pipeline {
sh "docker build --no-cache --pull -f Dockerfile.aarch64 -t ${IMAGE}:arm64v8-${META_TAG} \ sh "docker build --no-cache --pull -f Dockerfile.aarch64 -t ${IMAGE}:arm64v8-${META_TAG} \
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${META_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." --build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${META_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
sh "docker tag ${IMAGE}:arm64v8-${META_TAG} lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}" sh "docker tag ${IMAGE}:arm64v8-${META_TAG} lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}"
sh "docker push lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}" retry(5) {
sh "docker push lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}"
}
sh '''docker rmi \ sh '''docker rmi \
${IMAGE}:arm64v8-${META_TAG} \ ${IMAGE}:arm64v8-${META_TAG} \
lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || :''' lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || :'''
@@ -379,7 +397,7 @@ pipeline {
// Take the image we just built and dump package versions for comparison // Take the image we just built and dump package versions for comparison
stage('Update-packages') { stage('Update-packages') {
when { when {
branch "master" branch "j0nny"
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
} }
@@ -407,7 +425,7 @@ pipeline {
echo "Package tag sha from current packages in buit container is ${NEW_PACKAGE_TAG} comparing to old ${PACKAGE_TAG} from github" echo "Package tag sha from current packages in buit container is ${NEW_PACKAGE_TAG} comparing to old ${PACKAGE_TAG} from github"
if [ "${NEW_PACKAGE_TAG}" != "${PACKAGE_TAG}" ]; then if [ "${NEW_PACKAGE_TAG}" != "${PACKAGE_TAG}" ]; then
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/${LS_REPO} git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/${LS_REPO}
git --git-dir ${TEMPDIR}/${LS_REPO}/.git checkout -f master git --git-dir ${TEMPDIR}/${LS_REPO}/.git checkout -f j0nny
cp ${TEMPDIR}/package_versions.txt ${TEMPDIR}/${LS_REPO}/ cp ${TEMPDIR}/package_versions.txt ${TEMPDIR}/${LS_REPO}/
cd ${TEMPDIR}/${LS_REPO}/ cd ${TEMPDIR}/${LS_REPO}/
wait wait
@@ -431,7 +449,7 @@ pipeline {
// Exit the build if the package file was just updated // Exit the build if the package file was just updated
stage('PACKAGE-exit') { stage('PACKAGE-exit') {
when { when {
branch "master" branch "j0nny"
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
environment name: 'PACKAGE_UPDATED', value: 'true' environment name: 'PACKAGE_UPDATED', value: 'true'
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
@@ -445,7 +463,7 @@ pipeline {
// Exit the build if this is just a package check and there are no changes to push // Exit the build if this is just a package check and there are no changes to push
stage('PACKAGECHECK-exit') { stage('PACKAGECHECK-exit') {
when { when {
branch "master" branch "j0nny"
environment name: 'CHANGE_ID', value: '' environment name: 'CHANGE_ID', value: ''
environment name: 'PACKAGE_UPDATED', value: 'false' environment name: 'PACKAGE_UPDATED', value: 'false'
environment name: 'EXIT_STATUS', value: '' environment name: 'EXIT_STATUS', value: ''
@@ -526,17 +544,27 @@ pipeline {
passwordVariable: 'DOCKERPASS' passwordVariable: 'DOCKERPASS'
] ]
]) { ]) {
echo 'Logging into DockerHub' retry(5) {
sh '''#! /bin/bash
set -e
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
echo $GITHUB_TOKEN | docker login docker.pkg.github.com -u LinuxServer-CI --password-stdin
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
for PUSHIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
docker tag ${IMAGE}:${META_TAG} ${PUSHIMAGE}:${META_TAG}
docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:j0nny
docker push ${PUSHIMAGE}:j0nny
docker push ${PUSHIMAGE}:${META_TAG}
done
'''
}
sh '''#! /bin/bash sh '''#! /bin/bash
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin for DELETEIMAGE in "${GITHUBIMAGE}" "{GITLABIMAGE}" "${IMAGE}"; do
docker rmi \
${DELETEIMAGE}:${META_TAG} \
${DELETEIMAGE}:j0nny || :
done
''' '''
sh "docker tag ${IMAGE}:${META_TAG} ${IMAGE}:latest"
sh "docker push ${IMAGE}:latest"
sh "docker push ${IMAGE}:${META_TAG}"
sh '''docker rmi \
${IMAGE}:${META_TAG} \
${IMAGE}:latest || :'''
} }
} }
} }
@@ -555,51 +583,79 @@ pipeline {
passwordVariable: 'DOCKERPASS' passwordVariable: 'DOCKERPASS'
] ]
]) { ]) {
retry(5) {
sh '''#! /bin/bash
set -e
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin
echo $GITHUB_TOKEN | docker login docker.pkg.github.com -u LinuxServer-CI --password-stdin
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
if [ "${CI}" == "false" ]; then
docker pull lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
docker pull lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
docker tag lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
docker tag lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
fi
for MANIFESTIMAGE in "${IMAGE}" "${GITLABIMAGE}"; do
docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG}
docker tag ${IMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG}
docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-j0nny
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-j0nny
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-j0nny
docker push ${MANIFESTIMAGE}:amd64-${META_TAG}
docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG}
docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
docker push ${MANIFESTIMAGE}:amd64-j0nny
docker push ${MANIFESTIMAGE}:arm32v7-j0nny
docker push ${MANIFESTIMAGE}:arm64v8-j0nny
docker manifest push --purge ${MANIFESTIMAGE}:j0nny || :
docker manifest create ${MANIFESTIMAGE}:j0nny ${MANIFESTIMAGE}:amd64-j0nny ${MANIFESTIMAGE}:arm32v7-j0nny ${MANIFESTIMAGE}:arm64v8-j0nny
docker manifest annotate ${MANIFESTIMAGE}:j0nny ${MANIFESTIMAGE}:arm32v7-j0nny --os linux --arch arm
docker manifest annotate ${MANIFESTIMAGE}:j0nny ${MANIFESTIMAGE}:arm64v8-j0nny --os linux --arch arm64 --variant v8
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} || :
docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} --os linux --arch arm
docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8
docker manifest push --purge ${MANIFESTIMAGE}:j0nny
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}
done
docker tag ${IMAGE}:amd64-${META_TAG} ${GITHUBIMAGE}:amd64-${META_TAG}
docker tag ${IMAGE}:arm32v7-${META_TAG} ${GITHUBIMAGE}:arm32v7-${META_TAG}
docker tag ${IMAGE}:arm64v8-${META_TAG} ${GITHUBIMAGE}:arm64v8-${META_TAG}
docker tag ${GITHUBIMAGE}:amd64-${META_TAG} ${GITHUBIMAGE}:j0nny
docker tag ${GITHUBIMAGE}:amd64-${META_TAG} ${GITHUBIMAGE}:${META_TAG}
docker tag ${GITHUBIMAGE}:arm32v7-${META_TAG} ${GITHUBIMAGE}:arm32v7-j0nny
docker tag ${GITHUBIMAGE}:arm64v8-${META_TAG} ${GITHUBIMAGE}:arm64v8-j0nny
docker push ${GITHUBIMAGE}:amd64-${META_TAG}
docker push ${GITHUBIMAGE}:arm32v7-${META_TAG}
docker push ${GITHUBIMAGE}:arm64v8-${META_TAG}
docker push ${GITHUBIMAGE}:j0nny
docker push ${GITHUBIMAGE}:${META_TAG}
docker push ${GITHUBIMAGE}:arm32v7-j0nny
docker push ${GITHUBIMAGE}:arm64v8-j0nny
'''
}
sh '''#! /bin/bash sh '''#! /bin/bash
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin for DELETEIMAGE in "${GITHUBIMAGE}" "${GITLABIMAGE}" "${IMAGE}"; do
''' docker rmi \
sh '''#! /bin/bash ${DELETEIMAGE}:amd64-${META_TAG} \
if [ "${CI}" == "false" ]; then ${DELETEIMAGE}:amd64-j0nny \
docker pull lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${DELETEIMAGE}:arm32v7-${META_TAG} \
docker pull lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${DELETEIMAGE}:arm32v7-j0nny \
docker tag lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG} ${DELETEIMAGE}:arm64v8-${META_TAG} \
docker tag lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG} ${DELETEIMAGE}:arm64v8-j0nny || :
fi''' done
sh "docker tag ${IMAGE}:amd64-${META_TAG} ${IMAGE}:amd64-latest" docker rmi \
sh "docker tag ${IMAGE}:arm32v7-${META_TAG} ${IMAGE}:arm32v7-latest"
sh "docker tag ${IMAGE}:arm64v8-${META_TAG} ${IMAGE}:arm64v8-latest"
sh "docker push ${IMAGE}:amd64-${META_TAG}"
sh "docker push ${IMAGE}:arm32v7-${META_TAG}"
sh "docker push ${IMAGE}:arm64v8-${META_TAG}"
sh "docker push ${IMAGE}:amd64-latest"
sh "docker push ${IMAGE}:arm32v7-latest"
sh "docker push ${IMAGE}:arm64v8-latest"
sh "docker manifest push --purge ${IMAGE}:latest || :"
sh "docker manifest create ${IMAGE}:latest ${IMAGE}:amd64-latest ${IMAGE}:arm32v7-latest ${IMAGE}:arm64v8-latest"
sh "docker manifest annotate ${IMAGE}:latest ${IMAGE}:arm32v7-latest --os linux --arch arm"
sh "docker manifest annotate ${IMAGE}:latest ${IMAGE}:arm64v8-latest --os linux --arch arm64 --variant v8"
sh "docker manifest push --purge ${IMAGE}:${META_TAG} || :"
sh "docker manifest create ${IMAGE}:${META_TAG} ${IMAGE}:amd64-${META_TAG} ${IMAGE}:arm32v7-${META_TAG} ${IMAGE}:arm64v8-${META_TAG}"
sh "docker manifest annotate ${IMAGE}:${META_TAG} ${IMAGE}:arm32v7-${META_TAG} --os linux --arch arm"
sh "docker manifest annotate ${IMAGE}:${META_TAG} ${IMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8"
sh "docker manifest push --purge ${IMAGE}:latest"
sh "docker manifest push --purge ${IMAGE}:${META_TAG}"
sh '''docker rmi \
${IMAGE}:amd64-${META_TAG} \
${IMAGE}:amd64-latest \
${IMAGE}:arm32v7-${META_TAG} \
${IMAGE}:arm32v7-latest \
${IMAGE}:arm64v8-${META_TAG} \
${IMAGE}:arm64v8-latest \
lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \ lsiodev/buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \
lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || :''' lsiodev/buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || :
'''
} }
} }
} }
// If this is a public release tag it in the LS Github // If this is a public release tag it in the LS Github
stage('Github-Tag-Push-Release') { stage('Github-Tag-Push-Release') {
when { when {
branch "master" branch "j0nny"
expression { expression {
env.LS_RELEASE != env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER env.LS_RELEASE != env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
} }
@@ -611,14 +667,14 @@ pipeline {
sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \ sh '''curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/git/tags \
-d '{"tag":"'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}'",\ -d '{"tag":"'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}'",\
"object": "'${COMMIT_SHA}'",\ "object": "'${COMMIT_SHA}'",\
"message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to master",\ "message": "Tagging Release '${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}' to j0nny",\
"type": "commit",\ "type": "commit",\
"tagger": {"name": "LinuxServer Jenkins","email": "jenkins@linuxserver.io","date": "'${GITHUB_DATE}'"}}' ''' "tagger": {"name": "LinuxServer Jenkins","email": "jenkins@linuxserver.io","date": "'${GITHUB_DATE}'"}}' '''
echo "Pushing New release for Tag" echo "Pushing New release for Tag"
sh '''#! /bin/bash sh '''#! /bin/bash
curl -s https://api.github.com/repos/${EXT_USER}/${EXT_REPO}/commits/${EXT_GIT_BRANCH} | jq '. | .commit.message' | sed 's:^.\\(.*\\).$:\\1:' > releasebody.json curl -s https://api.github.com/repos/${EXT_USER}/${EXT_REPO}/commits/${EXT_GIT_BRANCH} | jq '. | .commit.message' | sed 's:^.\\(.*\\).$:\\1:' > releasebody.json
echo '{"tag_name":"'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}'",\ echo '{"tag_name":"'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}'",\
"target_commitish": "master",\ "target_commitish": "j0nny",\
"name": "'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}'",\ "name": "'${EXT_RELEASE_CLEAN}'-ls'${LS_TAG_NUMBER}'",\
"body": "**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n**'${EXT_REPO}' Changes:**\\n\\n' > start "body": "**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n**'${EXT_REPO}' Changes:**\\n\\n' > start
printf '","draft": false,"prerelease": false}' >> releasebody.json printf '","draft": false,"prerelease": false}' >> releasebody.json
@@ -642,6 +698,10 @@ pipeline {
] ]
]) { ]) {
sh '''#! /bin/bash sh '''#! /bin/bash
set -e
TEMPDIR=$(mktemp -d)
docker pull linuxserver/jenkins-builder:latest
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=j0nny -v ${TEMPDIR}:/ansible/jenkins linuxserver/jenkins-builder:latest
docker pull lsiodev/readme-sync docker pull lsiodev/readme-sync
docker run --rm=true \ docker run --rm=true \
-e DOCKERHUB_USERNAME=$DOCKERUSER \ -e DOCKERHUB_USERNAME=$DOCKERUSER \
@@ -649,7 +709,9 @@ pipeline {
-e GIT_REPOSITORY=${LS_USER}/${LS_REPO} \ -e GIT_REPOSITORY=${LS_USER}/${LS_REPO} \
-e DOCKER_REPOSITORY=${IMAGE} \ -e DOCKER_REPOSITORY=${IMAGE} \
-e GIT_BRANCH=master \ -e GIT_BRANCH=master \
lsiodev/readme-sync bash -c 'node sync' ''' -v ${TEMPDIR}/docker-${CONTAINER_NAME}:/mnt \
lsiodev/readme-sync bash -c 'node sync'
rm -Rf ${TEMPDIR} '''
} }
} }
} }
@@ -676,16 +738,19 @@ pipeline {
sh 'echo "build aborted"' sh 'echo "build aborted"'
} }
else if (currentBuild.currentResult == "SUCCESS"){ else if (currentBuild.currentResult == "SUCCESS"){
sh ''' curl -X POST --data '{"avatar_url": "https://wiki.jenkins-ci.org/download/attachments/2916393/headshot.png","embeds": [{"color": 1681177,\ sh ''' curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://wiki.jenkins-ci.org/download/attachments/2916393/headshot.png","embeds": [{"color": 1681177,\
"description": "**Build:** '${BUILD_NUMBER}'\\n**CI Results:** '${CI_URL}'\\n**ShellCheck Results:** '${SHELLCHECK_URL}'\\n**Status:** Success\\n**Job:** '${RUN_DISPLAY_URL}'\\n**Change:** '${CODE_URL}'\\n**External Release:**: '${RELEASE_LINK}'\\n**DockerHub:** '${DOCKERHUB_LINK}'\\n"}],\ "description": "**Build:** '${BUILD_NUMBER}'\\n**CI Results:** '${CI_URL}'\\n**ShellCheck Results:** '${SHELLCHECK_URL}'\\n**Status:** Success\\n**Job:** '${RUN_DISPLAY_URL}'\\n**Change:** '${CODE_URL}'\\n**External Release:**: '${RELEASE_LINK}'\\n**DockerHub:** '${DOCKERHUB_LINK}'\\n"}],\
"username": "Jenkins"}' ${BUILDS_DISCORD} ''' "username": "Jenkins"}' ${BUILDS_DISCORD} '''
} }
else { else {
sh ''' curl -X POST --data '{"avatar_url": "https://wiki.jenkins-ci.org/download/attachments/2916393/headshot.png","embeds": [{"color": 16711680,\ sh ''' curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://wiki.jenkins-ci.org/download/attachments/2916393/headshot.png","embeds": [{"color": 16711680,\
"description": "**Build:** '${BUILD_NUMBER}'\\n**CI Results:** '${CI_URL}'\\n**ShellCheck Results:** '${SHELLCHECK_URL}'\\n**Status:** failure\\n**Job:** '${RUN_DISPLAY_URL}'\\n**Change:** '${CODE_URL}'\\n**External Release:**: '${RELEASE_LINK}'\\n**DockerHub:** '${DOCKERHUB_LINK}'\\n"}],\ "description": "**Build:** '${BUILD_NUMBER}'\\n**CI Results:** '${CI_URL}'\\n**ShellCheck Results:** '${SHELLCHECK_URL}'\\n**Status:** failure\\n**Job:** '${RUN_DISPLAY_URL}'\\n**Change:** '${CODE_URL}'\\n**External Release:**: '${RELEASE_LINK}'\\n**DockerHub:** '${DOCKERHUB_LINK}'\\n"}],\
"username": "Jenkins"}' ${BUILDS_DISCORD} ''' "username": "Jenkins"}' ${BUILDS_DISCORD} '''
} }
} }
} }
cleanup {
cleanWs()
}
} }
} }

View File

@@ -1,13 +1,13 @@
[![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)](https://linuxserver.io) [![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)](https://linuxserver.io)
[![Blog](https://img.shields.io/static/v1.svg?style=flat-square&color=E68523&label=linuxserver.io&message=Blog)](https://blog.linuxserver.io "all the things you can do with our containers including How-To guides, opinions and much more!") [![Blog](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Blog)](https://blog.linuxserver.io "all the things you can do with our containers including How-To guides, opinions and much more!")
[![Discord](https://img.shields.io/discord/354974912613449730.svg?style=flat-square&color=E68523&label=Discord&logo=discord&logoColor=FFFFFF)](https://discord.gg/YWrKVTn "realtime support / chat with the community and the team.") [![Discord](https://img.shields.io/discord/354974912613449730.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Discord&logo=discord)](https://discord.gg/YWrKVTn "realtime support / chat with the community and the team.")
[![Discourse](https://img.shields.io/discourse/https/discourse.linuxserver.io/topics.svg?style=flat-square&color=E68523&logo=discourse&logoColor=FFFFFF)](https://discourse.linuxserver.io "post on our community forum.") [![Discourse](https://img.shields.io/discourse/https/discourse.linuxserver.io/topics.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=discourse)](https://discourse.linuxserver.io "post on our community forum.")
[![Fleet](https://img.shields.io/static/v1.svg?style=flat-square&color=E68523&label=linuxserver.io&message=Fleet)](https://fleet.linuxserver.io "an online web interface which displays all of our maintained images.") [![Fleet](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Fleet)](https://fleet.linuxserver.io "an online web interface which displays all of our maintained images.")
[![Podcast](https://img.shields.io/static/v1.svg?style=flat-square&color=E68523&label=linuxserver.io&message=Podcast)](https://anchor.fm/linuxserverio "on hiatus. Coming back soon (late 2018).") [![GitHub](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitHub&logo=github)](https://github.com/linuxserver "view the source for all of our repositories.")
[![Open Collective](https://img.shields.io/opencollective/all/linuxserver.svg?style=flat-square&color=E68523&label=Open%20Collective%20Supporters)](https://opencollective.com/linuxserver "please consider helping us by either donating or contributing to our budget") [![Open Collective](https://img.shields.io/opencollective/all/linuxserver.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Supporters&logo=open%20collective)](https://opencollective.com/linuxserver "please consider helping us by either donating or contributing to our budget")
The [LinuxServer.io](https://linuxserver.io) team brings you another container release featuring :- The [LinuxServer.io](https://linuxserver.io) team brings you another container release featuring:
* regular and timely application updates * regular and timely application updates
* easy user mappings (PGID, PUID) * easy user mappings (PGID, PUID)
@@ -20,17 +20,20 @@ Find us at:
* [Discord](https://discord.gg/YWrKVTn) - realtime support / chat with the community and the team. * [Discord](https://discord.gg/YWrKVTn) - realtime support / chat with the community and the team.
* [Discourse](https://discourse.linuxserver.io) - post on our community forum. * [Discourse](https://discourse.linuxserver.io) - post on our community forum.
* [Fleet](https://fleet.linuxserver.io) - an online web interface which displays all of our maintained images. * [Fleet](https://fleet.linuxserver.io) - an online web interface which displays all of our maintained images.
* [Podcast](https://anchor.fm/linuxserverio) - on hiatus. Coming back soon (late 2018). * [GitHub](https://github.com/linuxserver) - view the source for all of our repositories.
* [Open Collective](https://opencollective.com/linuxserver) - please consider helping us by either donating or contributing to our budget * [Open Collective](https://opencollective.com/linuxserver) - please consider helping us by either donating or contributing to our budget
# [linuxserver/tvheadend](https://github.com/linuxserver/docker-tvheadend) # [linuxserver/tvheadend](https://github.com/linuxserver/docker-tvheadend)
[![GitHub Release](https://img.shields.io/github/release/linuxserver/docker-tvheadend.svg?style=flat-square&color=E68523)](https://github.com/linuxserver/docker-tvheadend/releases)
[![MicroBadger Layers](https://img.shields.io/microbadger/layers/linuxserver/tvheadend.svg?style=flat-square&color=E68523)](https://microbadger.com/images/linuxserver/tvheadend "Get your own version badge on microbadger.com") [![GitHub Stars](https://img.shields.io/github/stars/linuxserver/docker-tvheadend.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-tvheadend)
[![MicroBadger Size](https://img.shields.io/microbadger/image-size/linuxserver/tvheadend.svg?style=flat-square&color=E68523)](https://microbadger.com/images/linuxserver/tvheadend "Get your own version badge on microbadger.com") [![GitHub Release](https://img.shields.io/github/release/linuxserver/docker-tvheadend.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-tvheadend/releases)
[![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/tvheadend.svg?style=flat-square&color=E68523)](https://hub.docker.com/r/linuxserver/tvheadend) [![GitHub Package Repository](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitHub%20Package&logo=github)](https://github.com/linuxserver/docker-tvheadend/packages)
[![Docker Stars](https://img.shields.io/docker/stars/linuxserver/tvheadend.svg?style=flat-square&color=E68523)](https://hub.docker.com/r/linuxserver/tvheadend) [![GitLab Container Registry](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitLab%20Registry&logo=gitlab)](https://gitlab.com/Linuxserver.io/docker-tvheadend/container_registry)
[![Build Status](https://ci.linuxserver.io/view/all/job/Docker-Pipeline-Builders/job/docker-tvheadend/job/master/badge/icon?style=flat-square)](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-tvheadend/job/master/) [![MicroBadger Layers](https://img.shields.io/microbadger/layers/linuxserver/tvheadend.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge)](https://microbadger.com/images/linuxserver/tvheadend "Get your own version badge on microbadger.com")
[![](https://lsio-ci.ams3.digitaloceanspaces.com/linuxserver/tvheadend/latest/badge.svg)](https://lsio-ci.ams3.digitaloceanspaces.com/linuxserver/tvheadend/latest/index.html) [![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/tvheadend.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=pulls&logo=docker)](https://hub.docker.com/r/linuxserver/tvheadend)
[![Docker Stars](https://img.shields.io/docker/stars/linuxserver/tvheadend.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=stars&logo=docker)](https://hub.docker.com/r/linuxserver/tvheadend)
[![Jenkins Build](https://img.shields.io/jenkins/build?labelColor=555555&logoColor=ffffff&style=for-the-badge&jobUrl=https%3A%2F%2Fci.linuxserver.io%2Fjob%2FDocker-Pipeline-Builders%2Fjob%2Fdocker-tvheadend%2Fjob%2Fj0nny%2F&logo=jenkins)](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-tvheadend/job/j0nny/)
[![LSIO CI](https://img.shields.io/badge/dynamic/yaml?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=CI&query=CI&url=https%3A%2F%2Flsio-ci.ams3.digitaloceanspaces.com%2Flinuxserver%2Ftvheadend%2Flatest%2Fci-status.yml)](https://lsio-ci.ams3.digitaloceanspaces.com/linuxserver/tvheadend/latest/index.html)
[Tvheadend](https://www.tvheadend.org/) works as a proxy server: is a TV streaming server and recorder for Linux, FreeBSD and Android supporting DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, ISDB-T, IPTV, SAT>IP and HDHomeRun as input sources. [Tvheadend](https://www.tvheadend.org/) works as a proxy server: is a TV streaming server and recorder for Linux, FreeBSD and Android supporting DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, ISDB-T, IPTV, SAT>IP and HDHomeRun as input sources.
Tvheadend offers the HTTP (VLC, MPlayer), HTSP (Kodi, Movian) and SAT>IP streaming. Tvheadend offers the HTTP (VLC, MPlayer), HTSP (Kodi, Movian) and SAT>IP streaming.
@@ -99,7 +102,7 @@ Compatible with docker-compose v2 schemas.
``` ```
--- ---
version: "2" version: "2.1"
services: services:
tvheadend: tvheadend:
image: linuxserver/tvheadend image: linuxserver/tvheadend
@@ -138,6 +141,23 @@ Container images are configured using parameters passed at runtime (such as thos
| `--device /dev/dri` | Only needed if you want to use your AMD/Intel GPU for hardware accelerated video encoding (vaapi). | | `--device /dev/dri` | Only needed if you want to use your AMD/Intel GPU for hardware accelerated video encoding (vaapi). |
| `--device /dev/dvb` | Only needed if you want to pass through a DVB card to the container. If you use IPTV or HDHomeRun you can leave it out. | | `--device /dev/dvb` | Only needed if you want to pass through a DVB card to the container. If you use IPTV or HDHomeRun you can leave it out. |
## Environment variables from files (Docker secrets)
You can set any environment variable from a file by using a special prepend `FILE__`.
As an example:
```
-e FILE__PASSWORD=/run/secrets/mysecretpassword
```
Will set the environment variable `PASSWORD` based on the contents of the `/run/secrets/mysecretpassword` file.
## Umask for running applications
For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional `-e UMASK=022` setting.
Keep in mind umask is not chmod it subtracts from permissions based on it's value it does not add. Please read up [here](https://en.wikipedia.org/wiki/Umask) before asking for support.
## User / Group Identifiers ## User / Group Identifiers
When using volumes (`-v` flags) permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user `PUID` and group `PGID`. When using volumes (`-v` flags) permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user `PUID` and group `PGID`.
@@ -206,7 +226,7 @@ For advanced setup of tvheadend, go to [Tvheadend][appurl]
**Picons** **Picons**
We have added all the picons from [picons.xyz](https://picons.xyz/) in the folder /picons. To enable the use of these picons, add the path to the Channel icon path in Configuration --> General --> Base. We have added all the picons from [picons.eu](https://picons.eu/) in the folder /picons. To enable the use of these picons, add the path to the Channel icon path in Configuration --> General --> Base.
You need to enable minimum advanced view level to see the picons options. You need to enable minimum advanced view level to see the picons options.
## Additional runtime parameters ## Additional runtime parameters
@@ -214,6 +234,11 @@ You need to enable minimum advanced view level to see the picons options.
In some cases it might be necessary to start tvheadend with additional parameters, for example to enable debugging or specify webroot for reverse proxy. Be sure to have the right parameters set, as adding the wrong once might lead to the container not starting correctly. In some cases it might be necessary to start tvheadend with additional parameters, for example to enable debugging or specify webroot for reverse proxy. Be sure to have the right parameters set, as adding the wrong once might lead to the container not starting correctly.
## Docker Mods
[![Docker Mods](https://img.shields.io/badge/dynamic/yaml?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=mods&query=%24.mods%5B%27tvheadend%27%5D.mod_count&url=https%3A%2F%2Fraw.githubusercontent.com%2Flinuxserver%2Fdocker-mods%2Fmaster%2Fmod-list.yml)](https://mods.linuxserver.io/?mod=tvheadend "view available mods for this container.")
We publish various [Docker Mods](https://github.com/linuxserver/docker-mods) to enable additional functionality within the containers. The list of Mods available for this image (if any) can be accessed via the dynamic badge above.
## Support Info ## Support Info
@@ -279,38 +304,4 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
## Versions ## Versions
* **18.08.19:** - Add AMD drivers. * **24.09.20:** - Initial j0nny Release.
* **02.08.19:** - Attempt to automatically fix permissions on /dev/dri and /dev/dvb.
* **28.06.19:** - Rebasing to alpine 3.10.
* **27.03.19:** - Rebase to Alpine 3.9, fix init logic to only chown once.
* **23.03.19:** - Switching to new Base images, shift to arm32v7 tag.
* **01.03.19:** - Bump xmltv to 0.6.1.
* **28.02.19:** - add perl-lwp-useragent-determined.
* **17.02.19:** - Bump xmltv to 5.70, ensure version tagging works by cloning tvheadend.
* **14.02.19:** - Add picons path to config.
* **15.01.19:** - Add pipeline logic and multi arch.
* **12.09.18:** - Rebase to alpine 3.8 and use buildstage type build.
* **21.04.18:** - Add JSON::XS Perl package for grab_tv_huro.
* **24.03.18:** - Add dvbcsa package.
* **04.03.18:** - Use sourceforge master rather than mirror for xmltv.
* **22.02.18:** - Add lost libva-intel-driver.
* **21.02.18:** - Fix wrong version of iconv used.
* **18.02.18:** - Add vaapi support, some cleanup and dropping of deprecated options.
* **04.01.18:** - Deprecate cpu_core routine lack of scaling.
* **11.12.17:** - Rebase to alpine 3.7, linting fixes.
* **02.09.17:** - Add codec dependencies.
* **13.07.17:** - Increase uniformity across all archs.
* **08.07.17:** - Update README with full path for comskip.
* **02.07.17:** - Move to one branch for all 4.2 releases.
* **27.05.17:** - Rebase to alpine 3.6.
* **01.05.17:** - Update to tvheadend 4.2.1 stable.
* **18.04.17:** - Use repo version of gnu-libiconv rather than compiling.
* **09.04.17:** - Chain cpanm installs in one block and use --installdeps.
* **09.02.17:** - Perl changes, add picons file to gitignore and update XMLTV to 0.5.69.
* **07.02.17:** - Add variable to add additional runtime paramters.
* **05.02.17:** - Update to alpine 3.5 and change dvb-apps to only compile needed libs.
* **14.11.16:** - Add picons from picons.xyz to /picons folder and add info to README.
* **22.09.16:** - Fix broken tv_grab_wg, libs for xmltv and update README.
* **18.09.16:** - Update XMLTV to 0.5.68 and update README.
* **10.09.16:** - Add layer badges to README.
* **05.09.16:** - Initial Release.

View File

@@ -4,8 +4,8 @@
project_name: docker-tvheadend project_name: docker-tvheadend
external_type: github_commit external_type: github_commit
release_type: stable release_type: stable
release_tag: latest release_tag: j0nny
ls_branch: master ls_branch: j0nny
repo_vars: repo_vars:
- EXT_GIT_BRANCH = 'master' - EXT_GIT_BRANCH = 'master'
- EXT_USER = 'tvheadend' - EXT_USER = 'tvheadend'
@@ -17,8 +17,8 @@ repo_vars:
- DOCKERHUB_IMAGE = 'linuxserver/tvheadend' - DOCKERHUB_IMAGE = 'linuxserver/tvheadend'
- DEV_DOCKERHUB_IMAGE = 'lsiodev/tvheadend' - DEV_DOCKERHUB_IMAGE = 'lsiodev/tvheadend'
- PR_DOCKERHUB_IMAGE = 'lspipepr/tvheadend' - PR_DOCKERHUB_IMAGE = 'lspipepr/tvheadend'
- DIST_IMAGE = 'alpine' - DIST_IMAGE = 'ubuntu'
- MULTIARCH='true' - MULTIARCH='false'
- CI='true' - CI='true'
- CI_WEB='true' - CI_WEB='true'
- CI_PORT='9981' - CI_PORT='9981'

View File

@@ -1,226 +1,508 @@
alpine-baselayout-3.1.2-r0 adduser3.116ubuntu1
alpine-keys-2.1-r2 apt1.6.12ubuntu0.1
alsa-lib-1.1.9-r0 apt-utils1.6.12ubuntu0.1
apk-tools-2.10.4-r2 autotools-dev20180224.1
bash-5.0.0-r0 base-files10.1ubuntu2.10
bsd-compat-headers-0.7.1-r0 base-passwd3.5.44
busybox-1.30.1-r2 bash4.4.18-2ubuntu1.2
bzip2-1.0.6-r7 binutils-common2.30-21ubuntu1~18.04.4
ca-certificates-20190108-r0 binutils-x86-64-linux-gnu2.30-21ubuntu1~18.04.4
ca-certificates-cacert-20190108-r0 bsdutils1:2.31.1-0.4ubuntu3.7
coreutils-8.31-r0 bzip21.0.6-8.1ubuntu0.2
curl-7.65.1-r0 ca-certificates20190110~18.04.1
elfutils-libelf-0.168-r2 cmake-data3.10.2-1ubuntu2.18.04.1
expat-2.2.7-r0 coreutils8.28-1ubuntu1
ffmpeg-4.1.4-r0 cpp4:7.4.0-1ubuntu2.3
ffmpeg-libs-4.1.4-r0 cpp-77.5.0-3ubuntu1~18.04
fontconfig-2.13.1-r0 curl7.58.0-2ubuntu3.10
freetype-2.10.0-r0 dash0.5.8-2.10
fribidi-1.0.5-r1 debconf1.5.66ubuntu1
gdbm-1.13-r1 debianutils4.8.4
gmp-6.1.2-r1 diffutils1:3.6-1
gnu-libiconv-1.15-r2 dpkg1.19.0.5ubuntu2.3
gnutls-3.6.8-r0 dtv-scan-tables0+git20171226.07b18ec-1
gzip-1.10-r0 dvb-apps1.1.1+rev1500-1.2
lame-3.100-r0 e2fsprogs1.44.1-1ubuntu1.3
libacl-2.2.52-r6 fdisk2.31.1-0.4ubuntu3.7
libass-0.14.0-r0 file1:5.32-2ubuntu0.4
libattr-2.4.48-r0 findutils4.6.0+git+20170828-2
libbsd-0.9.1-r0 fontconfig2.12.6-0ubuntu2
libbz2-1.0.6-r7 fontconfig-config2.12.6-0ubuntu2
libc-utils-0.7.1-r0 fonts-dejavu-core2.37-1
libcrypto1.1-1.1.1c-r0 gcc-7-base7.5.0-3ubuntu1~18.04
libcurl-7.65.1-r0 gcc-8-base8.4.0-1ubuntu1~18.04
libdrm-2.4.98-r0 gettext-base0.19.8.1-6ubuntu0.3
libdvbcsa-1.1.0-r1 git-man1:2.17.1-1ubuntu0.7
libffi-3.2.1-r6 gpgv2.2.4-1ubuntu1.3
libgcc-8.3.0-r0 grep3.1-2build1
libgcrypt-1.8.4-r2 gzip1.6-5ubuntu1
libgpg-error-1.36-r2 hostname3.20
libhdhomerun-libs-20161117-r1 init-system-helpers1.51
libidn-1.35-r0 jq1.5+dfsg-2
libjpeg-turbo-2.0.2-r0 krb5-locales1.16-2ubuntu0.1
libogg-1.3.3-r2 libacl12.2.52-3build1
libpciaccess-0.14-r0 libalgorithm-c3-perl0.10-1
libpng-1.6.37-r1 libapt-inst2.01.6.12ubuntu0.1
libssl1.1-1.1.1c-r0 libapt-pkg5.01.6.12ubuntu0.1
libstdc++-8.3.0-r0 libarchive133.2.2-3.1ubuntu0.6
libtasn1-4.14-r0 libarchive-zip-perl1.60-1ubuntu0.1
libtheora-1.1.1-r14 libargtable2-013-1
libtls-standalone-2.9.1-r0 libargtable2-docs13-1
libunistring-0.9.10-r0 libasan47.5.0-3ubuntu1~18.04
liburiparser-0.9.3-r0 libasn1-8-heimdal7.5.0+dfsg-1
libuuid-2.33.2-r0 libasound21.1.3-5ubuntu0.5
libva-2.4.1-r0 libasound2-data1.1.3-5ubuntu0.5
libva-intel-driver-2.3.0-r0 libasound2-dev1.1.3-5ubuntu0.5
libvdpau-1.2-r0 libasyncns00.8-6
libvorbis-1.3.6-r2 libatomic18.4.0-1ubuntu1~18.04
libvpx-1.8.0-r0 libattr11:2.4.47-2build1
libx11-1.6.8-r1 libaudit11:2.8.2-1ubuntu1
libxau-1.0.9-r0 libaudit-common1:2.8.2-1ubuntu1
libxcb-1.13.1-r0 libavahi-client30.7-3.1ubuntu1.2
libxdmcp-1.1.3-r0 libavahi-common30.7-3.1ubuntu1.2
libxext-1.3.4-r0 libavahi-common-data0.7-3.1ubuntu1.2
libxfixes-5.0.3-r2 libavahi-common-dev0.7-3.1ubuntu1.2
libxml2-2.9.9-r2 libavutil557:3.4.8-0ubuntu0.2
libxshmfence-1.3-r0 libavutil-dev7:3.4.8-0ubuntu0.2
libxslt-1.1.33-r1 libb-hooks-endofscope-perl0.21-1
linux-headers-4.19.36-r0 libb-hooks-op-check-perl0.22-1
linux-pam-1.3.0-r1 libbinutils2.30-21ubuntu1~18.04.4
llvm8-libs-8.0.0-r1 libblkid12.31.1-0.4ubuntu3.7
mesa-19.0.6-r0 libbluray21:1.0.2-3
mesa-dri-ati-19.0.6-r0 libbsd00.8.7-1ubuntu0.1
mesa-glapi-19.0.6-r0 libbz2-1.01.0.6-8.1ubuntu0.2
musl-1.1.22-r3 libc62.27-3ubuntu1.2
musl-utils-1.1.22-r3 libc6-dev2.27-3ubuntu1.2
ncurses-libs-6.1_p20190518-r0 libcaca00.99.beta19-2ubuntu0.18.04.1
ncurses-terminfo-6.1_p20190518-r0 libcairo21.15.10-2ubuntu0.1
ncurses-terminfo-base-6.1_p20190518-r0 libcap-ng00.7.7-3.1
nettle-3.4.1-r1 libc-bin2.27-3ubuntu1.2
nghttp2-libs-1.39.2-r0 libcc1-08.4.0-1ubuntu1~18.04
openssl-1.1.1c-r0 libc-dev-bin2.27-3ubuntu1.2
opus-1.3.1-r0 libcgi-pm-perl4.38-1
p11-kit-0.23.16.1-r0 libcilkrts57.5.0-3ubuntu1~18.04
pcre2-10.33-r0 libclass-c3-perl0.33-1
perl-5.28.2-r1 libclass-data-inheritable-perl0.08-2
perl-archive-zip-1.64-r0 libclass-factory-util-perl1.7-3
perl-b-hooks-endofscope-0.24-r0 libclass-inspector-perl1.32-1
perl-boolean-0.46-r0 libclass-method-modifiers-perl2.12-1
perl-capture-tiny-0.48-r0 libclass-singleton-perl1.5-1
perl-cgi-4.44-r0 libcom-err21.44.1-1ubuntu1.3
perl-class-data-inheritable-0.08-r0 libconvert-binhex-perl1.125-1
perl-class-inspector-1.34-r0 libcroco30.6.12-2
perl-class-methodmaker-2.24-r3 libcrystalhd31:0.0~git20110715.fdd2f19-12
perl-class-singleton-1.5-r0 libcurl3-gnutls7.58.0-2ubuntu3.10
perl-compress-raw-bzip2-2.086-r1 libcurl47.58.0-2ubuntu3.10
perl-compress-raw-zlib-2.086-r1 libdata-dump-perl1.23-1
perl-cpan-meta-check-0.014-r0 libdata-optlist-perl0.110-1
perl-data-dumper-2.173-r1 libdate-manip-perl6.60-1
perl-date-manip-6.77-r0 libdatetime-format-builder-perl0.8100-1
perl-datetime-1.51-r0 libdatetime-format-iso8601-perl0.08-2
perl-datetime-format-strptime-1.76-r0 libdatetime-format-sqlite-perl0.11-2
perl-datetime-locale-1.23-r0 libdatetime-format-strptime-perl1.7500-1
perl-datetime-timezone-2.19-r0 libdatetime-locale-perl1:1.17-1
perl-dbd-sqlite-1.62-r1 libdatetime-perl2:1.46-1
perl-dbi-1.642-r1 libdatetime-timezone-perl1:2.18-1+2018d
perl-devel-stacktrace-2.04-r0 libdatrie10.2.10-7
perl-devel-symdump-2.18-r0 libdb5.35.3.28-13.1ubuntu1.1
perl-digest-sha1-2.13-r10 libdbd-sqlite3-perl1.56-1
perl-dist-checkconflicts-0.11-r0 libdbi-perl1.640-1ubuntu0.2
perl-doc-5.28.2-r1 libdbus-1-31.12.2-1ubuntu1.2
perl-encode-locale-1.05-r1 libdca00.0.5-10
perl-eval-closure-0.14-r0 libdebconfclient00.213ubuntu1
perl-exception-class-1.44-r0 libdevel-callchecker-perl0.007-2build1
perl-exporter-tiny-1.002001-r0 libdevel-stacktrace-perl2.0300-1
perl-file-listing-6.04-r1 libdpkg-perl1.19.0.5ubuntu2.3
perl-file-sharedir-1.116-r0 libdrm22.4.101-2~18.04.1
perl-file-sharedir-install-0.13-r0 libdrm-amdgpu12.4.101-2~18.04.1
perl-file-slurp-9999.27-r0 libdrm-common2.4.101-2~18.04.1
perl-file-temp-0.2309-r0 libdrm-dev2.4.101-2~18.04.1
perl-file-which-1.23-r0 libdrm-intel12.4.101-2~18.04.1
perl-getopt-long-2.50-r0 libdrm-nouveau22.4.101-2~18.04.1
perl-html-parser-3.72-r3 libdrm-radeon12.4.101-2~18.04.1
perl-html-tagset-3.20-r1 libdvbcsa11.1.0-2
perl-html-tree-5.07-r0 libdvbcsa-dev1.1.0-2
perl-http-cookies-6.04-r0 libdynaloader-functions-perl0.003-1
perl-http-daemon-6.01-r1 libedit23.1-20170329-1
perl-http-date-6.02-r1 libegl11.0.0-2ubuntu2.3
perl-http-message-6.18-r0 libegl-mesa020.0.8-0ubuntu1~18.04.1
perl-http-negotiate-6.01-r1 libelf10.170-0.4ubuntu0.1
perl-importer-0.025-r0 libencode-locale-perl1.05-1
perl-io-1.25-r5 liberror-perl0.17025-1
perl-io-compress-2.086-r0 libeval-closure-perl0.14-1
perl-io-html-1.001-r1 libexception-class-perl1.44-1
perl-io-socket-ssl-2.060-r0 libexpat12.2.5-3ubuntu0.2
perl-io-stringy-2.111-r1 libexporter-tiny-perl1.000000-2
perl-ipc-run3-0.048-r0 libext2fs21.44.1-1ubuntu1.3
perl-json-2.97000-r0 libfaac01.29.7.7-1
perl-libwww-6.39-r1 libfcgi-perl0.78-2build1
perl-lingua-en-numbers-ordinate-1.04-r1 libfdisk12.31.1-0.4ubuntu3.7
perl-lingua-preferred-0.2.4-r1 libfdk-aac10.1.5-1
perl-list-moreutils-0.428-r0 libffi63.2.1-8
perl-list-moreutils-xs-0.428-r1 libfile-chdir-perl0.1008-1
perl-lwp-mediatypes-6.04-r0 libfile-homedir-perl1.002-1
perl-lwp-useragent-determined-1.07-r0 libfile-listing-perl6.04-1
perl-module-build-0.4229-r0 libfile-sharedir-perl1.104-1
perl-module-implementation-0.09-r1 libfile-slurp-perl9999.19-6
perl-module-metadata-1.000036-r0 libfile-which-perl1.21-1
perl-module-pluggable-5.2-r0 libflac81.3.2-1
perl-module-runtime-0.016-r2 libfontconfig12.12.6-0ubuntu2
perl-mro-compat-0.13-r0 libfreetype62.8.1-2ubuntu2
perl-namespace-autoclean-0.28-r0 libfribidi00.19.7-2
perl-namespace-clean-0.27-r0 libgbm120.0.8-0ubuntu1~18.04.1
perl-net-http-6.19-r0 libgcc11:8.4.0-1ubuntu1~18.04
perl-net-libidn-0.12-r6 libgcc-7-dev7.5.0-3ubuntu1~18.04
perl-net-ssleay-1.85-r5 libgcrypt201.8.1-4ubuntu1.2
perl-package-deprecationmanager-0.17-r0 libgdbm51.14.1-6
perl-package-stash-0.38-r1 libgdbm-compat41.14.1-6
perl-package-stash-xs-0.29-r1 libgdk-pixbuf2.0-02.36.11-2
perl-params-util-1.07-r6 libgdk-pixbuf2.0-common2.36.11-2
perl-params-validate-1.29-r1 libgl11.0.0-2ubuntu2.3
perl-params-validationcompiler-0.27-r0 libgl1-mesa-dev20.0.8-0ubuntu1~18.04.1
perl-parse-recdescent-1.967015-r1 libgl1-mesa-dri20.0.8-0ubuntu1~18.04.1
perl-path-class-0.37-r0 libglapi-mesa20.0.8-0ubuntu1~18.04.1
perl-pod-coverage-0.23-r0 libgles11.0.0-2ubuntu2.3
perl-role-tiny-2.000006-r0 libgles21.0.0-2ubuntu2.3
perl-scalar-list-utils-1.50-r1 libglib2.0-02.56.4-0ubuntu0.18.04.6
perl-scope-guard-0.21-r0 libglib2.0-bin2.56.4-0ubuntu0.18.04.6
perl-specio-0.42-r0 libglib2.0-data2.56.4-0ubuntu0.18.04.6
perl-sub-exporter-progressive-0.001013-r0 libglu1-mesa9.0.0-2.1build1
perl-sub-identify-0.14-r2 libglu1-mesa-dev9.0.0-2.1build1
perl-sub-info-0.002-r0 libglvnd01.0.0-2ubuntu2.3
perl-sub-install-0.928-r0 libglvnd-core-dev1.0.0-2ubuntu2.3
perl-sub-name-0.21-r2 libglvnd-dev1.0.0-2ubuntu2.3
perl-sub-quote-2.004000-r0 libglx01.0.0-2ubuntu2.3
perl-sub-uplevel-0.2800-r0 libglx-mesa020.0.8-0ubuntu1~18.04.1
perl-term-progressbar-2.22-r0 libgme00.6.2-1
perl-term-readkey-2.38-r1 libgmp102:6.1.2+dfsg-2
perl-term-table-0.012-r0 libgnutls303.5.18-1ubuntu1.4
perl-test-exception-0.43-r0 libgomp18.4.0-1ubuntu1~18.04
perl-test-fatal-0.014-r1 libgpg-error01.27-6
perl-test-needs-0.002005-r1 libgraphite2-31.3.11-2
perl-test-pod-1.52-r0 libgsm11.0.13-4build1
perl-test-requires-0.10-r0 libgssapi3-heimdal7.5.0+dfsg-1
perl-test-simple-1.302164-r0 libgssapi-krb5-21.16-2ubuntu0.1
perl-test-taint-1.08-r0 libharfbuzz0b1.7.2-1ubuntu1
perl-test-warnings-0.026-r0 libhcrypto4-heimdal7.5.0+dfsg-1
perl-test-without-module-0.20-r0 libhdhomerun420180327-1
perl-test2-plugin-nowarnings-0.07-r0 libheimbase1-heimdal7.5.0+dfsg-1
perl-test2-suite-0.000122-r0 libheimntlm0-heimdal7.5.0+dfsg-1
perl-timedate-2.30-r1 libhogweed43.4-1
perl-try-tiny-0.30-r1 libhtml-form-perl6.03-1
perl-unicode-string-2.09-r7 libhtml-parser-perl3.72-3build1
perl-uri-1.76-r0 libhtml-tableextract-perl2.15-1
perl-variable-magic-0.62-r1 libhtml-tagset-perl3.20-3
perl-www-robotrules-6.02-r1 libhtml-tree-perl5.07-1
perl-xml-libxml-2.0134-r2 libhttp-cache-transparent-perl1.1-1
perl-xml-libxslt-1.96-r1 libhttp-cookies-perl6.04-1
perl-xml-namespacesupport-1.12-r0 libhttp-daemon-perl6.01-1
perl-xml-parser-2.44-r5 libhttp-date-perl6.02-1
perl-xml-sax-0.99-r2 libhttp-message-perl6.14-1
perl-xml-sax-base-1.09-r0 libhttp-negotiate-perl6.00-2
perl-xml-treepp-0.43-r1 libhttp-server-simple-perl0.52-1
perl-xml-twig-3.52-r1 libhx509-5-heimdal7.5.0+dfsg-1
perl-xml-writer-0.625-r2 libiconv-hook10.0.20021209-11
perl-yaml-syck-1.31-r1 libicu6060.2-3ubuntu3.1
python2-2.7.16-r1 libidn2-02.0.4-1.1ubuntu0.2
readline-8.0.0-r0 libio-html-perl1.001-1
scanelf-1.2.3-r0 libio-sessiondata-perl1.03-1
sdl2-2.0.10-r0 libio-socket-ssl-perl2.060-3~ubuntu18.04.1
shadow-4.6-r2 libio-stringy-perl2.111-2
sqlite-libs-3.28.0-r0 libisl190.19-1
ssl_client-1.30.1-r2 libitm18.4.0-1ubuntu1~18.04
tar-1.32-r0 libjbig02.1-3.1build1
tzdata-2019b-r0 libjpeg88c-2ubuntu8
uriparser-0.9.3-r0 libjpeg-turbo81.5.2-0ubuntu5.18.04.4
v4l-utils-libs-1.16.6-r0 libjq11.5+dfsg-2
wayland-libs-client-1.17.0-r0 libjsoncpp11.7.4-3
wget-1.20.3-r0 libjson-perl2.97001-1
x264-20180304-r1 libk5crypto31.16-2ubuntu0.1
x264-libs-20180304-r1 libkeyutils11.5.9-9.2ubuntu2
x265-3.0-r0 libkrb5-26-heimdal7.5.0+dfsg-1
x265-libs-3.0-r0 libkrb5-31.16-2ubuntu0.1
xvidcore-1.3.4-r1 libkrb5support01.16-2ubuntu0.1
xz-5.2.4-r0 libldap-2.4-22.4.45+dfsg-1ubuntu1.6
xz-libs-5.2.4-r0 libldap-common2.4.45+dfsg-1ubuntu1.6
zlib-1.2.11-r1 liblist-moreutils-perl0.416-1build3
libllvm101:10.0.0-4ubuntu1~18.04.2
liblsan08.4.0-1ubuntu1~18.04
liblwp-mediatypes-perl6.02-1
liblwp-protocol-https-perl6.07-2
liblwp-useragent-determined-perl1.07-1
liblz4-10.0~r131-2ubuntu3
liblzma55.2.2-1.3
liblzo2-22.08-1.2
libmagic11:5.32-2ubuntu0.4
libmagic-mgc1:5.32-2ubuntu0.4
libmailtools-perl2.18-1
libmime-tools-perl5.509-1
libmodule-implementation-perl0.09-1
libmodule-runtime-perl0.016-1
libmount12.31.1-0.4ubuntu3.7
libmp3lame03.100-2
libmpc31.1.0-1
libmpdec22.4.2-1ubuntu1
libmpfr64.0.1-1
libmpg123-01.25.10-1
libmpx28.4.0-1ubuntu1~18.04
libmro-compat-perl0.13-1
libnamespace-autoclean-perl0.28-1
libnamespace-clean-perl0.27-1
libncurses56.1-1ubuntu1.18.04
libncursesw56.1-1ubuntu1.18.04
libnet-http-perl6.17-1
libnet-smtp-ssl-perl1.04-1
libnet-ssleay-perl1.84-1ubuntu0.2
libnettle63.4-1
libnghttp2-141.30.0-1ubuntu1
libnuma12.0.11-2.1ubuntu0.1
libogg01.3.2-1
libogg-dev1.3.2-1
libonig46.7.0-1
libopencore-amrnb00.1.3-2.1
libopencore-amrwb00.1.3-2.1
libopengl01.0.0-2ubuntu2.3
libopenjp2-72.3.0-2build0.18.04.1
libopenmpt00.3.6-1
libopus01.1.2-1ubuntu1
libossp-uuid161.6.2-1.5build4
libossp-uuid-perl1.6.2-1.5build4
libp11-kit00.23.9-2
libpackage-deprecationmanager-perl0.17-1
libpackage-stash-perl0.37-1
libpam0g1.1.8-3.6ubuntu2.18.04.2
libpam-modules1.1.8-3.6ubuntu2.18.04.2
libpam-modules-bin1.1.8-3.6ubuntu2.18.04.2
libpam-runtime1.1.8-3.6ubuntu2.18.04.2
libpango-1.0-01.40.14-1ubuntu0.1
libpangocairo-1.0-01.40.14-1ubuntu0.1
libpangoft2-1.0-01.40.14-1ubuntu0.1
libparams-classify-perl0.015-1
libparams-util-perl1.07-3build3
libparams-validate-perl1.29-1
libparams-validationcompiler-perl0.26-1
libparse-recdescent-perl1.967015+dfsg-2
libpciaccess00.14-1
libpcre16-32:8.39-9
libpcre32-32:8.39-9
libpcre32:8.39-9
libpcre3-dev2:8.39-9
libpcrecpp0v52:8.39-9
libperl5.265.26.1-6ubuntu0.3
libpixman-1-00.34.0-2
libpng16-161.6.34-1ubuntu0.18.04.2
libprocps62:3.3.12-3ubuntu1.2
libpsl50.19.1-5build1
libpthread-stubs0-dev0.3-4
libpython2.7-minimal2.7.17-1~18.04ubuntu1.1
libpython2.7-stdlib2.7.17-1~18.04ubuntu1.1
libpython3.6-minimal3.6.9-1~18.04ubuntu1.1
libpython3.6-stdlib3.6.9-1~18.04ubuntu1.1
libpython3-stdlib3.6.7-1~18.04
libpython-stdlib2.7.15~rc1-1
libquadmath08.4.0-1ubuntu1~18.04
libreadline77.0-3
librhash01.3.6-2
libroken18-heimdal7.5.0+dfsg-1
librole-tiny-perl2.000006-1
librsvg2-22.40.20-2ubuntu0.2
librtmp12.4+20151223.gitfa8646d.1-1
libsasl2-22.1.27~101-g0780600+dfsg-3ubuntu2.1
libsasl2-modules2.1.27~101-g0780600+dfsg-3ubuntu2.1
libsasl2-modules-db2.1.27~101-g0780600+dfsg-3ubuntu2.1
libseccomp22.4.3-1ubuntu3.18.04.3
libselinux12.7-2build2
libsemanage12.7-2build2
libsemanage-common2.7-2build2
libsensors41:3.4.0-4
libsepol12.7-1
libset-scalar-perl1.29-2
libshine33.1.1-1
libsigsegv22.12-1
libslang22.3.1a-3ubuntu1
libsmartcols12.31.1-0.4ubuntu3.7
libsnappy1v51.1.7-1
libsoap-lite-perl1.26-1
libsoxr00.1.2-3
libsoxr-lsr00.1.2-3
libspecio-perl0.42-1
libspeex11.2~rc1.2-1ubuntu2
libsqlite3-03.22.0-1ubuntu0.4
libss21.44.1-1ubuntu1.3
libssh-gcrypt-40.8.0~20170825.94fa1e38-1ubuntu0.7
libssl1.0.01.0.2n-1ubuntu5.4
libssl1.11.1.1-1ubuntu2.1~18.04.6
libstdc++68.4.0-1ubuntu1~18.04
libstdc++-7-dev7.5.0-3ubuntu1~18.04
libsub-exporter-perl0.987-1
libsub-exporter-progressive-perl0.001013-1
libsub-identify-perl0.14-1
libsub-install-perl0.928-1
libsub-name-perl0.21-1build1
libsub-quote-perl2.005000-1
libswresample27:3.4.8-0ubuntu0.2
libswresample-dev7:3.4.8-0ubuntu0.2
libsystemd0237-3ubuntu10.42
libtask-weaken-perl1.05-1
libtasn1-64.13-2
libterm-readkey-perl2.37-1build1
libtext-bidi-perl2.12-1build1
libtext-iconv-perl1.7-5build6
libthai00.1.27-2
libthai-data0.1.27-2
libtheora01.1.1+dfsg.1-14
libtiff54.0.9-5ubuntu0.3
libtimedate-perl2.3000-2
libtinfo56.1-1ubuntu1.18.04
libtk-tablematrix-perl1.23-6.1build4
libtry-tiny-perl0.30-1
libtsan08.4.0-1ubuntu1~18.04
libtwolame00.3.13-3
libubsan07.5.0-3ubuntu1~18.04
libudev1237-3ubuntu10.42
libunistring20.9.9-0ubuntu2
liburi-perl1.73-1
libuuid12.31.1-0.4ubuntu3.7
libuv11.18.0-3
libva22.1.0-3
libva-drm22.1.0-3
libva-glx22.1.0-3
libvariable-magic-perl0.62-1
libva-wayland22.1.0-3
libva-x11-22.1.0-3
libvdpau11.1.1-3ubuntu1
libvo-aacenc00.1.3-1
libvorbis0a1.3.5-4.2
libvorbisfile31.3.5-4.2
libvpx51.7.0-3ubuntu0.18.04.1
libwavpack15.1.0-2ubuntu1.4
libwayland-bin1.16.0-1ubuntu1.1~18.04.3
libwayland-client01.16.0-1ubuntu1.1~18.04.3
libwayland-cursor01.16.0-1ubuntu1.1~18.04.3
libwayland-dev1.16.0-1ubuntu1.1~18.04.3
libwayland-egl11.16.0-1ubuntu1.1~18.04.3
libwayland-server01.16.0-1ubuntu1.1~18.04.3
libwebp60.6.1-2
libwebpmux30.6.1-2
libwind0-heimdal7.5.0+dfsg-1
libwrap07.6.q-27
libwww-mechanize-perl1.86-1
libwww-perl6.31-1ubuntu0.1
libwww-robotrules-perl6.01-1
libx11-62:1.6.4-3ubuntu0.3
libx11-data2:1.6.4-3ubuntu0.3
libx11-dev2:1.6.4-3ubuntu0.3
libx11-xcb12:1.6.4-3ubuntu0.3
libx11-xcb-dev2:1.6.4-3ubuntu0.3
libx264-1522:0.152.2854+gite9a5903-2
libx265-1462.6-3
libxau61:1.0.8-1ubuntu1
libxau-dev1:1.0.8-1ubuntu1
libxcb11.13-2~ubuntu18.04
libxcb1-dev1.13-2~ubuntu18.04
libxcb-dri2-01.13-2~ubuntu18.04
libxcb-dri2-0-dev1.13-2~ubuntu18.04
libxcb-dri3-01.13-2~ubuntu18.04
libxcb-dri3-dev1.13-2~ubuntu18.04
libxcb-glx01.13-2~ubuntu18.04
libxcb-glx0-dev1.13-2~ubuntu18.04
libxcb-present01.13-2~ubuntu18.04
libxcb-present-dev1.13-2~ubuntu18.04
libxcb-randr01.13-2~ubuntu18.04
libxcb-randr0-dev1.13-2~ubuntu18.04
libxcb-render01.13-2~ubuntu18.04
libxcb-render0-dev1.13-2~ubuntu18.04
libxcb-shape01.13-2~ubuntu18.04
libxcb-shape0-dev1.13-2~ubuntu18.04
libxcb-shm01.13-2~ubuntu18.04
libxcb-sync11.13-2~ubuntu18.04
libxcb-sync-dev1.13-2~ubuntu18.04
libxcb-xfixes01.13-2~ubuntu18.04
libxcb-xfixes0-dev1.13-2~ubuntu18.04
libxdamage11:1.1.4-3
libxdamage-dev1:1.1.4-3
libxdmcp61:1.1.2-3
libxdmcp-dev1:1.1.2-3
libxext62:1.3.3-1
libxext-dev2:1.3.3-1
libxfixes31:5.0.3-1
libxfixes-dev1:5.0.3-1
libxft22.3.2-1
libxml22.9.4+dfsg1-6.1ubuntu1.3
libxml-dom-perl1.44-2
libxml-libxml-perl2.0128+dfsg-5
libxml-libxslt-perl1.95-1build2
libxml-namespacesupport-perl1.12-1
libxml-parser-perl2.44-2build3
libxml-perl0.08-2
libxml-regexp-perl0.04-1
libxml-sax-base-perl1.09-1
libxml-sax-perl0.99+dfsg-2ubuntu1
libxml-treepp-perl0.43-1
libxmltv-perl0.5.70-1
libxml-twig-perl1:3.50-1
libxml-writer-perl0.625-1
libxrender11:0.9.10-1
libxshmfence11.3-1
libxshmfence-dev1.3-1
libxslt1.11.1.29-5ubuntu0.2
libxvidcore42:1.3.5-1
libxxf86vm11:1.1.4-1
libxxf86vm-dev1:1.1.4-1
libzstd11.3.3+dfsg-2ubuntu1.1
libzvbi00.2.35-13
libzvbi-common0.2.35-13
linux-libc-dev4.15.0-118.119
locales2.27-3ubuntu1.2
login1:4.5-1ubuntu2
lsb-base9.20170808ubuntu1
m41.4.18-1
make4.1-9.1ubuntu1
makedev2.3.1-93ubuntu2
mawk1.3.3-17ubuntu3
mesa-common-dev20.0.8-0ubuntu1~18.04.1
mime-support3.60ubuntu1
mount2.31.1-0.4ubuntu3.7
multiarch-support2.27-3ubuntu1.2
ncurses-base6.1-1ubuntu1.18.04
ncurses-bin6.1-1ubuntu1.18.04
netbase5.4
openssl1.1.1-1ubuntu2.1~18.04.6
passwd1:4.5-1ubuntu2
patch2.7.6-2ubuntu1.1
perl5.26.1-6ubuntu0.3
perl-base5.26.1-6ubuntu0.3
perl-modules-5.265.26.1-6ubuntu0.3
perl-openssl-defaults3build1
perl-tk1:804.033-2build1
procps2:3.3.12-3ubuntu1.2
publicsuffix20180223.1310-1
python2.72.7.17-1~18.04ubuntu1.1
python2.7-minimal2.7.17-1~18.04ubuntu1.1
python3.63.6.9-1~18.04ubuntu1.1
python3.6-minimal3.6.9-1~18.04ubuntu1.1
python3-minimal3.6.7-1~18.04
python-minimal2.7.15~rc1-1
readline-common7.0-3
sed4.4-2
sensible-utils0.0.12
shared-mime-info1.9-2
sysvinit-utils2.88dsf-59.10ubuntu1
tar1.29b-2ubuntu0.1
tzdata2020a-0ubuntu0.18.04
ubuntu-keyring2018.09.18.1~18.04.0
ucf3.0038
util-linux2.31.1-0.4ubuntu3.7
x11proto-core-dev2018.4-4
x11proto-damage-dev1:2018.4-4
x11proto-dev2018.4-4
x11proto-fixes-dev1:2018.4-4
x11proto-xext-dev2018.4-4
x11proto-xf86vidmode-dev2018.4-4
xmltv0.5.70-1
xmltv-gui0.5.70-1
xmltv-util0.5.70-1
xorg-sgml-doctools1:1.11-1
xtrans-dev1.3.5-1
xz-utils5.2.2-1.3
zlib1g1:1.2.11.dfsg-0ubuntu2

View File

@@ -11,7 +11,6 @@ requires 'HTML::TableExtract' ;
requires 'HTTP::Cache::Transparent' => ">= 1.3, != 1.4" ; requires 'HTTP::Cache::Transparent' => ">= 1.3, != 1.4" ;
requires 'inc' ; requires 'inc' ;
requires 'JSON::PP' ; requires 'JSON::PP' ;
requires 'JSON::XS' ;
requires 'LWP::Simple' ; requires 'LWP::Simple' ;
requires 'LWP::UserAgent' ; requires 'LWP::UserAgent' ;
requires 'PerlIO::gzip' ; requires 'PerlIO::gzip' ;

View File

@@ -0,0 +1,20 @@
---
t/test_tv_imdb.t | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/t/test_tv_imdb.t b/t/test_tv_imdb.t
index ad504464..4dc281a1 100755
--- a/t/test_tv_imdb.t
+++ b/t/test_tv_imdb.t
@@ -84,9 +84,9 @@ INPUT: foreach my $input (@inputs) {
my $output="$tmpDir/".File::Basename::basename($input)."-output.xml";
# Make temporary directory and split into it.
- my $cmd="$cmds_dir/tv_imdb --quiet --imdbdir '$tmpDir' --with-keywords --with-plot < $input > '$output' 2>&1";
+ my $cmd="$cmds_dir/tv_imdb --quiet --imdbdir '$tmpDir' --with-keywords --with-plot --output '$output' '$input' 2>&1";
if ( $input=~m/movies-only/ ) {
- $cmd="$cmds_dir/tv_imdb --movies-only --quiet --imdbdir '$tmpDir' --with-keywords --with-plot < $input > '$output' 2>&1";
+ $cmd="$cmds_dir/tv_imdb --movies-only --quiet --imdbdir '$tmpDir' --with-keywords --with-plot --output '$output' '$input' 2>&1";
}
#print STDERR "\nRUN:$cmd\n";
my $r = system($cmd);

View File

@@ -117,7 +117,7 @@ app_setup_block: |
**Picons** **Picons**
We have added all the picons from [picons.xyz](https://picons.xyz/) in the folder /picons. To enable the use of these picons, add the path to the Channel icon path in Configuration --> General --> Base. We have added all the picons from [picons.eu](https://picons.eu/) in the folder /picons. To enable the use of these picons, add the path to the Channel icon path in Configuration --> General --> Base.
You need to enable minimum advanced view level to see the picons options. You need to enable minimum advanced view level to see the picons options.
## Additional runtime parameters ## Additional runtime parameters
@@ -126,38 +126,4 @@ app_setup_block: |
# changelog # changelog
changelogs: changelogs:
- { date: "18.08.19:", desc: "Add AMD drivers." } - { date: "24.09.20:", desc: "Initial j0nny Release." }
- { date: "02.08.19:", desc: "Attempt to automatically fix permissions on /dev/dri and /dev/dvb." }
- { date: "28.06.19:", desc: "Rebasing to alpine 3.10." }
- { date: "27.03.19:", desc: "Rebase to Alpine 3.9, fix init logic to only chown once." }
- { date: "23.03.19:", desc: "Switching to new Base images, shift to arm32v7 tag." }
- { date: "01.03.19:", desc: "Bump xmltv to 0.6.1." }
- { date: "28.02.19:", desc: "add perl-lwp-useragent-determined." }
- { date: "17.02.19:", desc: "Bump xmltv to 5.70, ensure version tagging works by cloning tvheadend." }
- { date: "14.02.19:", desc: "Add picons path to config." }
- { date: "15.01.19:", desc: "Add pipeline logic and multi arch." }
- { date: "12.09.18:", desc: "Rebase to alpine 3.8 and use buildstage type build." }
- { date: "21.04.18:", desc: "Add JSON::XS Perl package for grab_tv_huro." }
- { date: "24.03.18:", desc: "Add dvbcsa package." }
- { date: "04.03.18:", desc: "Use sourceforge master rather than mirror for xmltv." }
- { date: "22.02.18:", desc: "Add lost libva-intel-driver." }
- { date: "21.02.18:", desc: "Fix wrong version of iconv used." }
- { date: "18.02.18:", desc: "Add vaapi support, some cleanup and dropping of deprecated options." }
- { date: "04.01.18:", desc: "Deprecate cpu_core routine lack of scaling." }
- { date: "11.12.17:", desc: "Rebase to alpine 3.7, linting fixes." }
- { date: "02.09.17:", desc: "Add codec dependencies." }
- { date: "13.07.17:", desc: "Increase uniformity across all archs." }
- { date: "08.07.17:", desc: "Update README with full path for comskip." }
- { date: "02.07.17:", desc: "Move to one branch for all 4.2 releases." }
- { date: "27.05.17:", desc: "Rebase to alpine 3.6." }
- { date: "01.05.17:", desc: "Update to tvheadend 4.2.1 stable." }
- { date: "18.04.17:", desc: "Use repo version of gnu-libiconv rather than compiling." }
- { date: "09.04.17:", desc: "Chain cpanm installs in one block and use --installdeps." }
- { date: "09.02.17:", desc: "Perl changes, add picons file to gitignore and update XMLTV to 0.5.69." }
- { date: "07.02.17:", desc: "Add variable to add additional runtime paramters." }
- { date: "05.02.17:", desc: "Update to alpine 3.5 and change dvb-apps to only compile needed libs." }
- { date: "14.11.16:", desc: "Add picons from picons.xyz to /picons folder and add info to README." }
- { date: "22.09.16:", desc: "Fix broken tv_grab_wg, libs for xmltv and update README." }
- { date: "18.09.16:", desc: "Update XMLTV to 0.5.68 and update README." }
- { date: "10.09.16:", desc: "Add layer badges to README." }
- { date: "05.09.16:", desc: "Initial Release." }

View File

@@ -1,34 +1,26 @@
#!/usr/bin/with-contenv bash #!/usr/bin/with-contenv bash
# check for the existence of a video and/or tuner device FILES=$(find /dev/dri /dev/dvb -type c -print 2>/dev/null)
if [ -e /dev/dri ] || [ -e /dev/dvb ]; then
if [ -e /dev/dri ]; then for i in $FILES
VIDEO_GID=$(stat -c '%g' /dev/dri/* | grep -v '^0$' | head -n 1) do
VIDEO_GID=$(stat -c '%g' "$i")
if id -G abc | grep -qw "$VIDEO_GID"; then
touch /groupadd
else else
VIDEO_GID=$(stat -c '%g' /dev/dvb/* | grep -v '^0$' | head -n 1) if [ ! "${VIDEO_GID}" == '0' ]; then
VIDEO_NAME=$(getent group "${VIDEO_GID}" | awk -F: '{print $1}')
if [ -z "${VIDEO_NAME}" ]; then
VIDEO_NAME="video$(head /dev/urandom | tr -dc 'a-z0-9' | head -c8)"
groupadd "$VIDEO_NAME"
groupmod -g "$VIDEO_GID" "$VIDEO_NAME"
fi
usermod -a -G "$VIDEO_NAME" abc
touch /groupadd
fi
fi fi
# just add abc to root if stuff in dri/dvb is root owned done
if [ -z "${VIDEO_GID}" ]; then
usermod -a -G root abc
exit 0
fi
else
exit 0
fi
# Check if this GID matches the current abc user if [ -n "${FILES}" ] && [ ! -f "/groupadd" ]; then
ABCGID=$(getent group abc | awk -F: '{print $3}') usermod -a -G root abc
if [ "${ABCGID}" == "${VIDEO_GID}" ]; then
exit 0
fi fi
# Check if the GID is taken and swap to 65533
CURRENT=$(getent group ${VIDEO_GID} | awk -F: '{print $1}')
if [ -z "${CURRENT}" ] || [ "${CURRENT}" == 'video' ]; then
groupmod -g ${VIDEO_GID} video
usermod -a -G video abc
else
groupmod -g 65533 ${CURRENT}
groupmod -g ${VIDEO_GID} video
usermod -a -G video abc
fi

View File

@@ -3,4 +3,4 @@
IFS=" " read -r -a RUN_ARRAY <<< "$RUN_OPTS" IFS=" " read -r -a RUN_ARRAY <<< "$RUN_OPTS"
exec \ exec \
s6-setuidgid abc /usr/bin/tvheadend -C -c /config "${RUN_ARRAY[@]}" s6-setuidgid abc /usr/local/bin/tvheadend -C -c /config "${RUN_ARRAY[@]}"