2022-12-28 21:21:41 +00:00
|
|
|
{ lib
|
|
|
|
, stdenv
|
|
|
|
, fetchFromGitHub
|
|
|
|
, fetchpatch
|
|
|
|
|
|
|
|
# buildtime
|
|
|
|
, makeWrapper
|
|
|
|
, pkg-config
|
|
|
|
, python3
|
|
|
|
, which
|
|
|
|
|
|
|
|
# runtime
|
|
|
|
, avahi
|
|
|
|
, bzip2
|
|
|
|
, dbus
|
|
|
|
, dtv-scan-tables
|
|
|
|
, ffmpeg
|
|
|
|
, gettext
|
|
|
|
, gnutar
|
|
|
|
, gzip
|
|
|
|
, libiconv
|
|
|
|
, openssl
|
|
|
|
, uriparser
|
|
|
|
, zlib
|
|
|
|
}:
|
2020-04-24 23:36:52 +00:00
|
|
|
|
|
|
|
let
|
|
|
|
version = "4.2.8";
|
|
|
|
in stdenv.mkDerivation {
|
|
|
|
pname = "tvheadend";
|
|
|
|
inherit version;
|
|
|
|
|
|
|
|
src = fetchFromGitHub {
|
2022-12-28 21:21:41 +00:00
|
|
|
owner = "tvheadend";
|
|
|
|
repo = "tvheadend";
|
|
|
|
rev = "v${version}";
|
2020-04-24 23:36:52 +00:00
|
|
|
sha256 = "1xq059r2bplaa0nd0wkhw80jfwd962x0h5hgd7fz2yp6largw34m";
|
|
|
|
};
|
|
|
|
|
2022-12-28 21:21:41 +00:00
|
|
|
outputs = [
|
|
|
|
"out"
|
|
|
|
"man"
|
|
|
|
];
|
|
|
|
|
2022-06-16 17:23:12 +00:00
|
|
|
patches = [
|
|
|
|
# Pull upstream fix for -fno-common toolchain
|
|
|
|
# https://github.com/tvheadend/tvheadend/pull/1342
|
|
|
|
# TODO: can be removed with 4.3 release.
|
|
|
|
(fetchpatch {
|
|
|
|
name = "fno-common.patch";
|
|
|
|
url = "https://github.com/tvheadend/tvheadend/commit/bd92f1389f1aacdd08e913b0383a0ca9dc223153.patch";
|
|
|
|
sha256 = "17bsx6mnv4pjiayvx1d57dphva0kvlppvnmmaym06dh4524pnly1";
|
|
|
|
})
|
|
|
|
];
|
|
|
|
|
2022-12-28 21:21:41 +00:00
|
|
|
nativeBuildInputs = [
|
|
|
|
makeWrapper
|
|
|
|
pkg-config
|
|
|
|
python3
|
|
|
|
which
|
|
|
|
];
|
|
|
|
|
2020-04-24 23:36:52 +00:00
|
|
|
buildInputs = [
|
2022-12-28 21:21:41 +00:00
|
|
|
avahi
|
|
|
|
bzip2
|
|
|
|
dbus
|
|
|
|
ffmpeg
|
|
|
|
gettext
|
|
|
|
gzip
|
|
|
|
libiconv
|
|
|
|
openssl
|
|
|
|
uriparser
|
|
|
|
zlib
|
2020-04-24 23:36:52 +00:00
|
|
|
];
|
|
|
|
|
2022-12-28 21:21:41 +00:00
|
|
|
enableParallelBuilding = true;
|
2020-04-24 23:36:52 +00:00
|
|
|
|
2023-03-04 12:14:45 +00:00
|
|
|
env.NIX_CFLAGS_COMPILE = toString ([
|
2022-12-28 21:21:41 +00:00
|
|
|
"-Wno-error=format-truncation"
|
|
|
|
"-Wno-error=stringop-truncation"
|
2023-02-16 17:41:37 +00:00
|
|
|
] ++ lib.optionals (stdenv.cc.isGNU && lib.versionAtLeast stdenv.cc.version "12") [
|
|
|
|
# Needed with GCC 12 but unrecognized with GCC 9
|
|
|
|
"-Wno-error=use-after-free"
|
2023-03-04 12:14:45 +00:00
|
|
|
]);
|
2020-04-24 23:36:52 +00:00
|
|
|
|
|
|
|
configureFlags = [
|
2022-12-28 21:21:41 +00:00
|
|
|
# disable dvbscan, as having it enabled causes a network download which
|
|
|
|
# cannot happen during build. We now include the dtv-scan-tables ourselves
|
2020-04-24 23:36:52 +00:00
|
|
|
"--disable-dvbscan"
|
|
|
|
"--disable-bintray_cache"
|
|
|
|
"--disable-ffmpeg_static"
|
2022-12-28 21:21:41 +00:00
|
|
|
# incompatible with our libhdhomerun version
|
2020-04-24 23:36:52 +00:00
|
|
|
"--disable-hdhomerun_client"
|
|
|
|
"--disable-hdhomerun_static"
|
2022-12-28 21:21:41 +00:00
|
|
|
"--disable-libx264_static"
|
|
|
|
"--disable-libx265_static"
|
|
|
|
"--disable-libvpx_static"
|
|
|
|
"--disable-libtheora_static"
|
|
|
|
"--disable-libvorbis_static"
|
|
|
|
"--disable-libfdkaac_static"
|
|
|
|
"--disable-libmfx_static"
|
2020-04-24 23:36:52 +00:00
|
|
|
];
|
|
|
|
|
|
|
|
preConfigure = ''
|
|
|
|
patchShebangs ./configure
|
|
|
|
|
|
|
|
substituteInPlace src/config.c \
|
|
|
|
--replace /usr/bin/tar ${gnutar}/bin/tar
|
|
|
|
|
2020-08-20 17:08:02 +00:00
|
|
|
substituteInPlace src/input/mpegts/scanfile.c \
|
2023-01-20 10:41:00 +00:00
|
|
|
--replace /usr/share/dvb ${dtv-scan-tables}/share/dvbv5
|
2020-08-20 17:08:02 +00:00
|
|
|
|
2020-04-24 23:36:52 +00:00
|
|
|
# the version detection script `support/version` reads this file if it
|
|
|
|
# exists, so let's just use that
|
|
|
|
echo ${version} > rpm/version
|
|
|
|
'';
|
|
|
|
|
|
|
|
postInstall = ''
|
|
|
|
wrapProgram $out/bin/tvheadend \
|
2021-01-15 22:18:51 +00:00
|
|
|
--prefix PATH : ${lib.makeBinPath [ bzip2 ]}
|
2020-04-24 23:36:52 +00:00
|
|
|
'';
|
|
|
|
|
2021-01-15 22:18:51 +00:00
|
|
|
meta = with lib; {
|
2022-12-28 21:21:41 +00:00
|
|
|
description = "TV streaming server and digital video recorder";
|
2020-04-24 23:36:52 +00:00
|
|
|
longDescription = ''
|
2022-12-28 21:21:41 +00:00
|
|
|
Tvheadend is a TV streaming server for Linux supporting DVB-S,
|
|
|
|
DVB-S2, DVB-C, DVB-T, ATSC, IPTV,SAT>IP and other formats
|
|
|
|
through the unix pipe as input sources.
|
|
|
|
'';
|
2020-04-24 23:36:52 +00:00
|
|
|
homepage = "https://tvheadend.org";
|
2022-12-28 21:21:41 +00:00
|
|
|
license = licenses.gpl3Only;
|
2020-04-24 23:36:52 +00:00
|
|
|
platforms = platforms.unix;
|
|
|
|
maintainers = with maintainers; [ simonvandel ];
|
|
|
|
};
|
|
|
|
}
|