Attempt Ubuntu build

This commit is contained in:
thespad 2025-07-27 23:14:06 +01:00
parent c89dd9bee4
commit d16aa831fc
No known key found for this signature in database
8 changed files with 56 additions and 3665 deletions

View File

@ -1,149 +1,8 @@
# syntax=docker/dockerfile:1
############## picons stage ##############
# built by https://github.com/linuxserver/picons-builder
FROM ghcr.io/linuxserver/picons-builder as piconsstage
FROM ghcr.io/linuxserver/baseimage-alpine:edge AS extractstage
FROM ghcr.io/linuxserver/baseimage-alpine:3.22 as buildstage
############## build stage ##############
# package versions
ARG ARGTABLE_VER="2.13"
# environment settings
ARG TZ="Etc/UTC"
ARG TVHEADEND_COMMIT
ENV HOME="/config"
# copy patches and picons
COPY patches/ /tmp/patches/
COPY --from=piconsstage /picons.tar.bz2 /picons.tar.bz2
RUN \
echo "**** install build packages ****" && \
apk add --no-cache \
autoconf \
automake \
bsd-compat-headers \
build-base \
cmake \
ffmpeg4-dev \
file \
findutils \
gettext-dev \
git \
gnu-libiconv-dev \
libdvbcsa-dev \
libgcrypt-dev \
libhdhomerun-dev \
libtool \
libva-dev \
libvpx-dev \
libxml2-dev \
libxslt-dev \
linux-headers \
openssl-dev \
opus-dev \
patch \
pcre2-dev \
pkgconf \
pngquant \
python3 \
sdl2-dev \
uriparser-dev \
x264-dev \
x265-dev \
zlib-dev
RUN \
echo "**** remove musl iconv.h and replace with gnu-iconv.h ****" && \
rm -rf /usr/include/iconv.h && \
cp /usr/include/gnu-libiconv/iconv.h /usr/include/iconv.h
RUN \
echo "**** compile tvheadend ****" && \
if [ -z ${TVHEADEND_COMMIT+x} ]; then \
TVHEADEND_COMMIT=$(curl -sX GET https://api.github.com/repos/tvheadend/tvheadend/commits/master \
| jq -r '. | .sha'); \
fi && \
mkdir -p \
/tmp/tvheadend && \
git clone https://github.com/tvheadend/tvheadend.git /tmp/tvheadend && \
cd /tmp/tvheadend && \
git checkout ${TVHEADEND_COMMIT} && \
./configure \
`#Encoding` \
--disable-ffmpeg_static \
--disable-libfdkaac_static \
--disable-libtheora_static \
--disable-libopus_static \
--disable-libvorbis_static \
--disable-libvpx_static \
--disable-libx264_static \
--disable-libx265_static \
--disable-libfdkaac \
--enable-libopus \
--enable-libvorbis \
--enable-libvpx \
--enable-libx264 \
--enable-libx265 \
\
`#Options` \
--disable-avahi \
--disable-dbus_1 \
--disable-bintray_cache \
--disable-execinfo \
--disable-hdhomerun_static \
--enable-hdhomerun_client \
--enable-libav \
--enable-pngquant \
--enable-trace \
--enable-vaapi \
--infodir=/usr/share/info \
--localstatedir=/var \
--mandir=/usr/share/man \
--prefix=/usr \
--python=python3 \
--sysconfdir=/config && \
make -j 2 && \
make DESTDIR=/tmp/tvheadend-build install
RUN \
echo "**** compile argtable2 ****" && \
ARGTABLE_VER1="${ARGTABLE_VER//./-}" && \
mkdir -p \
/tmp/argtable && \
curl -s -o \
/tmp/argtable-src.tar.gz -L \
"https://sourceforge.net/projects/argtable/files/argtable/argtable-${ARGTABLE_VER}/argtable${ARGTABLE_VER1}.tar.gz" && \
tar xf \
/tmp/argtable-src.tar.gz -C \
/tmp/argtable --strip-components=1 && \
cp /tmp/patches/config.* /tmp/argtable && \
cd /tmp/argtable && \
# Fix -Wimplicit-function-declaration compile errors
sed -i '/#include <limits.h>/a #include <ctype.h>' src/arg_int.c && \
sed -i '/#include <assert.h>/a #include <string.h>' tests/fntests.c && \
sed -i '/#include <stdlib.h>/a #include <string.h>' tests/test_file.c && \
./configure \
--prefix=/usr && \
make -j 2 && \
make check && \
make DESTDIR=/tmp/argtable-build install && \
echo "**** copy to /usr for comskip dependency ****" && \
cp -pr /tmp/argtable-build/usr/* /usr/
RUN \
echo "***** compile comskip ****" && \
git clone https://github.com/erikkaashoek/Comskip /tmp/comskip && \
cd /tmp/comskip && \
./autogen.sh && \
./configure \
--bindir=/usr/bin \
--sysconfdir=/config/comskip && \
make -j 2 && \
make DESTDIR=/tmp/comskip-build install
COPY --from=ghcr.io/linuxserver/picons-builder /picons.tar.bz2 /picons.tar.bz2
RUN \
echo "***** extract picons ****" && \
@ -152,8 +11,7 @@ RUN \
/picons.tar.bz2 -C \
/picons
############## runtime stage ##############
FROM ghcr.io/linuxserver/baseimage-alpine:3.22
FROM ghcr.io/linuxserver/baseimage-ubuntu:noble
# set version label
ARG BUILD_DATE
@ -167,48 +25,36 @@ ENV HOME="/config" \
RUN \
echo "**** install runtime packages ****" && \
apk add --no-cache \
bsd-compat-headers \
curl -1sLf 'https://dl.cloudsmith.io/public/tvheadend/tvheadend/gpg.C6CC06BD69B430C6.key' | gpg --dearmor >> /usr/share/keyrings/tvheadend-tvheadend-archive-keyring.gpg && \
curl -1sLf 'https://dl.cloudsmith.io/public/tvheadend/tvheadend/config.deb.txt?distro=ubuntu&codename=noble&component=main' > /etc/apt/sources.list.d/tvheadend-tvheadend.list && \
chmod 644 /usr/share/keyrings/tvheadend-tvheadend-archive-keyring.gpg && \
chmod 644 /etc/apt/sources.list.d/tvheadend-tvheadend.list && \
apt-get update && \
apt-get install -y \
comskip \
ffmpeg \
ffmpeg4-libavcodec \
ffmpeg4-libavdevice \
ffmpeg4-libavfilter \
ffmpeg4-libavformat \
ffmpeg4-libavutil \
ffmpeg4-libpostproc \
ffmpeg4-libswresample \
ffmpeg4-libswscale \
gnu-libiconv \
libdvbcsa \
libhdhomerun-libs \
libva \
libva-intel-driver \
intel-media-driver \
libvpx \
libdvbcsa1 \
libhdhomerun5 \
libva2 \
intel-media-va-driver \
libvpx9 \
libxml2 \
libxslt \
linux-headers \
mesa-va-gallium \
opus \
pcre2 \
libxslt1.1 \
mesa-va-drivers \
libopus0 \
libpcre2-32-0 \
perl \
perl-datetime-format-strptime \
perl-json \
perl-json-xs \
py3-requests \
python3-requests \
python3 \
uriparser \
x264 \
x265 \
xmltv \
zlib && \
tvheadend \
liburiparser1 \
libx264-164 \
libx265-199 \
xmltv && \
printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version
# copy local files and buildstage artifacts
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 /picons /picons
COPY --from=extractstage /picons /picons
COPY root/ /
# ports and volumes

View File

@ -1,149 +1,8 @@
# syntax=docker/dockerfile:1
############## picons stage ##############
# built by https://github.com/linuxserver/picons-builder
FROM ghcr.io/linuxserver/picons-builder as piconsstage
FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-edge AS extractstage
FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.22 as buildstage
############## build stage ##############
# package versions
ARG ARGTABLE_VER="2.13"
# environment settings
ARG TZ="Etc/UTC"
ARG TVHEADEND_COMMIT
ENV HOME="/config"
# copy patches and picons
COPY patches/ /tmp/patches/
COPY --from=piconsstage /picons.tar.bz2 /picons.tar.bz2
RUN \
echo "**** install build packages ****" && \
apk add --no-cache \
autoconf \
automake \
bsd-compat-headers \
build-base \
cmake \
ffmpeg4-dev \
file \
findutils \
gettext-dev \
git \
gnu-libiconv-dev \
libdvbcsa-dev \
libgcrypt-dev \
libhdhomerun-dev \
libtool \
libva-dev \
libvpx-dev \
libxml2-dev \
libxslt-dev \
linux-headers \
openssl-dev \
opus-dev \
patch \
pcre2-dev \
pkgconf \
pngquant \
python3 \
sdl2-dev \
uriparser-dev \
x264-dev \
x265-dev \
zlib-dev
RUN \
echo "**** remove musl iconv.h and replace with gnu-iconv.h ****" && \
rm -rf /usr/include/iconv.h && \
cp /usr/include/gnu-libiconv/iconv.h /usr/include/iconv.h
RUN \
echo "**** compile tvheadend ****" && \
if [ -z ${TVHEADEND_COMMIT+x} ]; then \
TVHEADEND_COMMIT=$(curl -sX GET https://api.github.com/repos/tvheadend/tvheadend/commits/master \
| jq -r '. | .sha'); \
fi && \
mkdir -p \
/tmp/tvheadend && \
git clone https://github.com/tvheadend/tvheadend.git /tmp/tvheadend && \
cd /tmp/tvheadend && \
git checkout ${TVHEADEND_COMMIT} && \
./configure \
`#Encoding` \
--disable-ffmpeg_static \
--disable-libfdkaac_static \
--disable-libtheora_static \
--disable-libopus_static \
--disable-libvorbis_static \
--disable-libvpx_static \
--disable-libx264_static \
--disable-libx265_static \
--disable-libfdkaac \
--enable-libopus \
--enable-libvorbis \
--enable-libvpx \
--enable-libx264 \
--enable-libx265 \
\
`#Options` \
--disable-avahi \
--disable-dbus_1 \
--disable-bintray_cache \
--disable-execinfo \
--disable-hdhomerun_static \
--enable-hdhomerun_client \
--enable-libav \
--enable-pngquant \
--enable-trace \
--enable-vaapi \
--infodir=/usr/share/info \
--localstatedir=/var \
--mandir=/usr/share/man \
--prefix=/usr \
--python=python3 \
--sysconfdir=/config && \
make -j 2 && \
make DESTDIR=/tmp/tvheadend-build install
RUN \
echo "**** compile argtable2 ****" && \
ARGTABLE_VER1="${ARGTABLE_VER//./-}" && \
mkdir -p \
/tmp/argtable && \
curl -s -o \
/tmp/argtable-src.tar.gz -L \
"https://sourceforge.net/projects/argtable/files/argtable/argtable-${ARGTABLE_VER}/argtable${ARGTABLE_VER1}.tar.gz" && \
tar xf \
/tmp/argtable-src.tar.gz -C \
/tmp/argtable --strip-components=1 && \
cp /tmp/patches/config.* /tmp/argtable && \
cd /tmp/argtable && \
# Fix -Wimplicit-function-declaration compile errors
sed -i '/#include <limits.h>/a #include <ctype.h>' src/arg_int.c && \
sed -i '/#include <assert.h>/a #include <string.h>' tests/fntests.c && \
sed -i '/#include <stdlib.h>/a #include <string.h>' tests/test_file.c && \
./configure \
--prefix=/usr && \
make -j 2 && \
make check && \
make DESTDIR=/tmp/argtable-build install && \
echo "**** copy to /usr for comskip dependency ****" && \
cp -pr /tmp/argtable-build/usr/* /usr/
RUN \
echo "***** compile comskip ****" && \
git clone https://github.com/erikkaashoek/Comskip /tmp/comskip && \
cd /tmp/comskip && \
./autogen.sh && \
./configure \
--bindir=/usr/bin \
--sysconfdir=/config/comskip && \
make -j 2 && \
make DESTDIR=/tmp/comskip-build install
COPY --from=ghcr.io/linuxserver/picons-builder /picons.tar.bz2 /picons.tar.bz2
RUN \
echo "***** extract picons ****" && \
@ -152,9 +11,7 @@ RUN \
/picons.tar.bz2 -C \
/picons
############## runtime stage ##############
FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.22
FROM ghcr.io/linuxserver/baseimage-ubuntu:arm64v8-noble
# set version label
ARG BUILD_DATE
@ -168,46 +25,36 @@ ENV HOME="/config" \
RUN \
echo "**** install runtime packages ****" && \
apk add --no-cache \
bsd-compat-headers \
curl -1sLf 'https://dl.cloudsmith.io/public/tvheadend/tvheadend/gpg.C6CC06BD69B430C6.key' | gpg --dearmor >> /usr/share/keyrings/tvheadend-tvheadend-archive-keyring.gpg && \
curl -1sLf 'https://dl.cloudsmith.io/public/tvheadend/tvheadend/config.deb.txt?distro=ubuntu&codename=noble&component=main' > /etc/apt/sources.list.d/tvheadend-tvheadend.list && \
chmod 644 /usr/share/keyrings/tvheadend-tvheadend-archive-keyring.gpg && \
chmod 644 /etc/apt/sources.list.d/tvheadend-tvheadend.list && \
apt-get update && \
apt-get install -y \
comskip \
ffmpeg \
ffmpeg4-libavcodec \
ffmpeg4-libavdevice \
ffmpeg4-libavfilter \
ffmpeg4-libavformat \
ffmpeg4-libavutil \
ffmpeg4-libpostproc \
ffmpeg4-libswresample \
ffmpeg4-libswscale \
gnu-libiconv \
libdvbcsa \
libhdhomerun-libs \
libva \
libvpx \
libdvbcsa1 \
libhdhomerun5 \
libva2 \
intel-media-va-driver \
libvpx9 \
libxml2 \
libxslt \
linux-headers \
mesa-va-gallium \
opus \
pcre2 \
libxslt1.1 \
mesa-va-drivers \
libopus0 \
libpcre2-32-0 \
perl \
perl-datetime-format-strptime \
perl-json \
perl-json-xs \
py3-requests \
python3-requests \
python3 \
uriparser \
x264 \
x265 \
xmltv \
zlib && \
tvheadend \
liburiparser1 \
libx264-164 \
libx265-199 \
xmltv && \
printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version
# copy local files and buildstage artifacts
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 /picons /picons
COPY --from=extractstage /picons /picons
COPY root/ /
# ports and volumes

2
Jenkinsfile vendored
View File

@ -29,7 +29,7 @@ pipeline {
DOCKERHUB_IMAGE = 'linuxserver/tvheadend'
DEV_DOCKERHUB_IMAGE = 'lsiodev/tvheadend'
PR_DOCKERHUB_IMAGE = 'lspipepr/tvheadend'
DIST_IMAGE = 'alpine'
DIST_IMAGE = 'ubuntu'
MULTIARCH='true'
CI='true'
CI_WEB='true'

View File

@ -352,7 +352,7 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
## Versions
* **27.07.25:** - Rebase to Alpine 3.22.
* **27.07.25:** - Rebase to Ubuntu Noble.
* **25.06.24:** - Rebase to Alpine 3.20.
* **20.03.24:** - Rebase to Alpine 3.19.
* **16.10.23:** - Add mesa-va-gallium package for AMD transcoding.

View File

@ -17,7 +17,7 @@ repo_vars:
- DOCKERHUB_IMAGE = 'linuxserver/tvheadend'
- DEV_DOCKERHUB_IMAGE = 'lsiodev/tvheadend'
- PR_DOCKERHUB_IMAGE = 'lspipepr/tvheadend'
- DIST_IMAGE = 'alpine'
- DIST_IMAGE = 'ubuntu'
- MULTIARCH='true'
- CI='true'
- CI_WEB='true'

1466
patches/config.guess vendored

File diff suppressed because it is too large Load Diff

1836
patches/config.sub vendored

File diff suppressed because it is too large Load Diff

View File

@ -148,7 +148,7 @@ init_diagram: |
"tvheadend:latest" <- Base Images
# changelog
changelogs:
- {date: "27.07.25:", desc: "Rebase to Alpine 3.22."}
- {date: "27.07.25:", desc: "Rebase to Ubuntu Noble."}
- {date: "25.06.24:", desc: "Rebase to Alpine 3.20."}
- {date: "20.03.24:", desc: "Rebase to Alpine 3.19."}
- {date: "16.10.23:", desc: "Add mesa-va-gallium package for AMD transcoding."}