nixos-config/patches/215316.patch
2023-06-17 21:07:19 +02:00

469 lines
13 KiB
Diff

diff --git a/pkgs/applications/networking/p2p/fragments/default.nix b/pkgs/applications/networking/p2p/fragments/default.nix
index da74fd5e60acb..fe911688c762c 100644
--- a/pkgs/applications/networking/p2p/fragments/default.nix
+++ b/pkgs/applications/networking/p2p/fragments/default.nix
@@ -17,12 +17,12 @@
, rustPlatform
, rustc
, sqlite
-, transmission
+, transmission_3
, wrapGAppsHook4
}:
let
- patchedTransmission = transmission.overrideAttrs (oldAttrs: {
+ patchedTransmission = transmission_3.overrideAttrs (oldAttrs: {
patches = (oldAttrs.patches or []) ++ [
(fetchpatch {
url = "https://raw.githubusercontent.com/flathub/de.haeckerfelix.Fragments/2aee477c8e26a24570f8dbbdbd1c49e017ae32eb/transmission_pdeathsig.patch";
diff --git a/pkgs/applications/networking/p2p/libutp/3.3.nix b/pkgs/applications/networking/p2p/libutp/3.3.nix
new file mode 100644
index 0000000000000..a07ffdea6b69d
--- /dev/null
+++ b/pkgs/applications/networking/p2p/libutp/3.3.nix
@@ -0,0 +1,24 @@
+{ stdenv, lib, fetchFromGitHub, cmake }:
+
+stdenv.mkDerivation rec {
+ pname = "libutp";
+ version = "unstable-2017-01-02";
+
+ src = fetchFromGitHub {
+ # Use transmission fork from post-3.3-transmission branch
+ owner = "transmission";
+ repo = pname;
+ rev = "fda9f4b3db97ccb243fcbed2ce280eb4135d705b";
+ sha256 = "CvuZLOBksIl/lS6LaqOIuzNvX3ihlIPjI3Eqwo7YJH0=";
+ };
+
+ nativeBuildInputs = [ cmake ];
+
+ meta = with lib; {
+ description = "uTorrent Transport Protocol library";
+ homepage = "https://github.com/transmission/libutp";
+ license = licenses.mit;
+ maintainers = with maintainers; [ emilytrau ];
+ platforms = platforms.unix;
+ };
+}
diff --git a/pkgs/applications/networking/p2p/libutp/default.nix b/pkgs/applications/networking/p2p/libutp/default.nix
index a07ffdea6b69d..a7a7c7325bca5 100644
--- a/pkgs/applications/networking/p2p/libutp/default.nix
+++ b/pkgs/applications/networking/p2p/libutp/default.nix
@@ -1,18 +1,31 @@
-{ stdenv, lib, fetchFromGitHub, cmake }:
+{ stdenv
+, lib
+, fetchFromGitHub
+, cmake
+, unstableGitUpdater
+}:
stdenv.mkDerivation rec {
pname = "libutp";
- version = "unstable-2017-01-02";
+ version = "unstable-2023-03-05";
src = fetchFromGitHub {
- # Use transmission fork from post-3.3-transmission branch
+ # Use transmission fork from post-3.4-transmission branch
owner = "transmission";
- repo = pname;
- rev = "fda9f4b3db97ccb243fcbed2ce280eb4135d705b";
- sha256 = "CvuZLOBksIl/lS6LaqOIuzNvX3ihlIPjI3Eqwo7YJH0=";
+ repo = "libutp";
+ rev = "9cb9f9c4f0073d78b08d6542cebaea6564ecadfe";
+ sha256 = "dpbX1h/gpuVIAXC4hwwuRwQDJ0pwVVEsgemOVN0Dv9Q=";
};
- nativeBuildInputs = [ cmake ];
+ nativeBuildInputs = [
+ cmake
+ ];
+
+ passthru = {
+ updateScript = unstableGitUpdater {
+ branch = "post-3.4-transmission";
+ };
+ };
meta = with lib; {
description = "uTorrent Transport Protocol library";
diff --git a/pkgs/applications/networking/p2p/torrential/default.nix b/pkgs/applications/networking/p2p/torrential/default.nix
index cfc10c3f7466f..ce739b4a34bd1 100644
--- a/pkgs/applications/networking/p2p/torrential/default.nix
+++ b/pkgs/applications/networking/p2p/torrential/default.nix
@@ -17,8 +17,8 @@
, libevent
, libgee
, libnatpmp
-, libtransmission
-, libutp
+, transmission_3
+, libutp_3_3
, miniupnpc
, openssl
, pantheon
@@ -54,8 +54,8 @@ stdenv.mkDerivation rec {
libevent
libgee
libnatpmp
- libtransmission
- libutp
+ transmission_3
+ libutp_3_3
miniupnpc
openssl
pantheon.granite7
diff --git a/pkgs/applications/networking/p2p/transmission/3.x.nix b/pkgs/applications/networking/p2p/transmission/3.x.nix
new file mode 100644
index 0000000000000..905a2909c58d0
--- /dev/null
+++ b/pkgs/applications/networking/p2p/transmission/3.x.nix
@@ -0,0 +1,79 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, fetchurl
+, cmake
+, pkg-config
+, openssl
+, curl
+, libevent
+, inotify-tools
+, zlib
+, pcre
+, libb64
+, libutp_3_3
+, miniupnpc
+, dht
+, libnatpmp
+, libiconv
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+ pname = "transmission3";
+ version = "3.00";
+
+ src = fetchFromGitHub {
+ owner = "transmission";
+ repo = "transmission";
+ rev = finalAttrs.version;
+ sha256 = "0ccg0km54f700x9p0jsnncnwvfnxfnxf7kcm7pcx1cj0vw78924z";
+ fetchSubmodules = true;
+ };
+
+ patches = [
+ # fix build with openssl 3.0
+ (fetchurl {
+ url = "https://gitweb.gentoo.org/repo/gentoo.git/plain/net-p2p/transmission/files/transmission-3.00-openssl-3.patch";
+ hash = "sha256-peVrkGck8AfbC9uYNfv1CIu1alIewpca7A6kRXjVlVs=";
+ })
+ ];
+
+ nativeBuildInputs = [
+ pkg-config
+ cmake
+ ];
+
+ buildInputs = [
+ openssl
+ curl
+ libevent
+ zlib
+ pcre
+ libb64
+ libutp_3_3
+ miniupnpc
+ dht
+ libnatpmp
+ ] ++ lib.optionals stdenv.isLinux [
+ inotify-tools
+ ] ++ lib.optionals stdenv.isDarwin [
+ libiconv
+ ];
+
+ cmakeFlags = [
+ "-DENABLE_MAC=OFF" # requires xcodebuild
+ "-DENABLE_GTK=OFF"
+ "-DENABLE_QT=OFF"
+ "-DENABLE_DAEMON=ON"
+ "-DENABLE_CLI=OFF"
+ "-DINSTALL_LIB=ON"
+ ];
+
+ meta = {
+ description = "Old version of libtransmission library for apps that depend on it";
+ homepage = "http://www.transmissionbt.com/";
+ license = lib.licenses.gpl2Plus; # parts are under MIT
+ maintainers = with lib.maintainers; [ ];
+ platforms = lib.platforms.unix;
+ };
+})
diff --git a/pkgs/applications/networking/p2p/transmission/default.nix b/pkgs/applications/networking/p2p/transmission/default.nix
index cc82c5038083c..b6fafd54bee85 100644
--- a/pkgs/applications/networking/p2p/transmission/default.nix
+++ b/pkgs/applications/networking/p2p/transmission/default.nix
@@ -1,7 +1,6 @@
{ stdenv
, lib
, fetchFromGitHub
-, fetchurl
, cmake
, pkg-config
, openssl
@@ -17,9 +16,14 @@
, dht
, libnatpmp
, libiconv
+, libdeflate
+, utf8cpp
+, fmt
+, libpsl
+, python3
# Build options
, enableGTK3 ? false
-, gtk3
+, gtkmm3
, xorg
, wrapGAppsHook
, enableQt ? false
@@ -30,32 +34,62 @@
, enableCli ? true
, installLib ? false
, apparmorRulesFromClosure
+, darwin
}:
-let
- version = "3.00";
-
-in stdenv.mkDerivation {
+stdenv.mkDerivation (finalAttrs: {
pname = "transmission";
- inherit version;
+ version = "4.0.3";
+
+ outputs = [ "out" "apparmor" ];
src = fetchFromGitHub {
owner = "transmission";
repo = "transmission";
- rev = version;
- sha256 = "0ccg0km54f700x9p0jsnncnwvfnxfnxf7kcm7pcx1cj0vw78924z";
+ rev = finalAttrs.version;
+ hash = "sha256-P7omd49xLmReo9Zrg0liO1msUVzCa5CxH7PGmH4oPzg=";
fetchSubmodules = true;
};
- patches = [
- # fix build with openssl 3.0
- (fetchurl {
- url = "https://gitweb.gentoo.org/repo/gentoo.git/plain/net-p2p/transmission/files/transmission-3.00-openssl-3.patch";
- hash = "sha256-peVrkGck8AfbC9uYNfv1CIu1alIewpca7A6kRXjVlVs=";
- })
+ nativeBuildInputs = [
+ pkg-config
+ cmake
+ python3
+ ] ++ lib.optionals enableGTK3 [
+ wrapGAppsHook
+ ] ++ lib.optionals enableQt [
+ qt5.wrapQtAppsHook
];
- outputs = [ "out" "apparmor" ];
+ buildInputs = [
+ openssl
+ curl
+ libevent
+ zlib
+ pcre
+ libb64
+ libutp
+ miniupnpc
+ dht
+ libnatpmp
+ libdeflate
+ utf8cpp
+ fmt
+ libpsl
+ ] ++ lib.optionals enableQt [
+ qt5.qttools
+ qt5.qtbase
+ ] ++ lib.optionals enableGTK3 [
+ gtkmm3
+ xorg.libpthreadstubs
+ ] ++ lib.optionals enableSystemd [
+ systemd
+ ] ++ lib.optionals stdenv.isLinux [
+ inotify-tools
+ ] ++ lib.optionals stdenv.isDarwin [
+ libiconv
+ darwin.apple_sdk.frameworks.Foundation
+ ];
cmakeFlags =
let
@@ -68,59 +102,74 @@ in stdenv.mkDerivation {
"-DENABLE_DAEMON=${mkFlag enableDaemon}"
"-DENABLE_CLI=${mkFlag enableCli}"
"-DINSTALL_LIB=${mkFlag installLib}"
+ ] ++ lib.optionals stdenv.isDarwin [
+ # Transmission sets this to 10.13 if not explicitly specified, see https://github.com/transmission/transmission/blob/0be7091eb12f4eb55f6690f313ef70a66795ee72/CMakeLists.txt#L7-L16.
+ "-DCMAKE_OSX_DEPLOYMENT_TARGET=${stdenv.hostPlatform.darwinMinVersion}"
];
- nativeBuildInputs = [
- pkg-config
- cmake
- ]
- ++ lib.optionals enableGTK3 [ wrapGAppsHook ]
- ++ lib.optionals enableQt [ qt5.wrapQtAppsHook ]
- ;
+ postPatch = ''
+ # Clean third-party libraries to ensure system ones are used.
+ # Excluding gtest since it is hardcoded to vendored version. The rest of the listed libraries are not packaged.
+ pushd third-party
+ for f in *; do
+ if [[ ! $f =~ googletest|wildmat|fast_float|wide-integer|jsonsl ]]; then
+ rm -r "$f"
+ fi
+ done
+ popd
+ rm \
+ cmake/FindFmt.cmake \
+ cmake/FindUtfCpp.cmake
- buildInputs = [
- openssl
- curl
- libevent
- zlib
- pcre
- libb64
- libutp
- miniupnpc
- dht
- libnatpmp
- ]
- ++ lib.optionals enableQt [ qt5.qttools qt5.qtbase ]
- ++ lib.optionals enableGTK3 [ gtk3 xorg.libpthreadstubs ]
- ++ lib.optionals enableSystemd [ systemd ]
- ++ lib.optionals stdenv.isLinux [ inotify-tools ]
- ++ lib.optionals stdenv.isDarwin [ libiconv ];
+ # Upstream uses different config file name.
+ substituteInPlace CMakeLists.txt --replace 'find_package(UtfCpp)' 'find_package(utf8cpp)'
+ '';
- postInstall = ''
- mkdir $apparmor
- cat >$apparmor/bin.transmission-daemon <<EOF
- include <tunables/global>
- $out/bin/transmission-daemon {
- include <abstractions/base>
- include <abstractions/nameservice>
- include <abstractions/ssl_certs>
- include "${apparmorRulesFromClosure { name = "transmission-daemon"; } ([
- curl libevent openssl pcre zlib libnatpmp miniupnpc
- ] ++ lib.optionals enableSystemd [ systemd ]
- ++ lib.optionals stdenv.isLinux [ inotify-tools ]
- )}"
- r @{PROC}/sys/kernel/random/uuid,
- r @{PROC}/sys/vm/overcommit_memory,
- r @{PROC}/@{pid}/environ,
- r @{PROC}/@{pid}/mounts,
- rwk /tmp/tr_session_id_*,
+ postInstall =
+ let
+ rules =
+ apparmorRulesFromClosure
+ {
+ name = "transmission-daemon";
+ }
+ ([
+ curl
+ libevent
+ openssl
+ pcre
+ zlib
+ libdeflate
+ libpsl
+ libnatpmp
+ miniupnpc
+ ] ++ lib.optionals enableSystemd [
+ systemd
+ ]
+ ++ lib.optionals stdenv.isLinux [
+ inotify-tools
+ ]);
+ in
+ ''
+ mkdir "$apparmor"
+ cat >"$apparmor/bin.transmission-daemon" <<EOF
+ include <tunables/global>
+ $out/bin/transmission-daemon {
+ include <abstractions/base>
+ include <abstractions/nameservice>
+ include <abstractions/ssl_certs>
+ include "${rules}"
+ r @{PROC}/sys/kernel/random/uuid,
+ r @{PROC}/sys/vm/overcommit_memory,
+ r @{PROC}/@{pid}/environ,
+ r @{PROC}/@{pid}/mounts,
+ rwk /tmp/tr_session_id_*,
- r $out/share/transmission/web/**,
+ r $out/share/transmission/web/**,
- include <local/bin.transmission-daemon>
- }
- EOF
- '';
+ include <local/bin.transmission-daemon>
+ }
+ EOF
+ '';
passthru.tests = {
apparmor = nixosTests.transmission; # starts the service with apparmor enabled
@@ -145,5 +194,4 @@ in stdenv.mkDerivation {
maintainers = with lib.maintainers; [ astsmtl ];
platforms = lib.platforms.unix;
};
-
-}
+})
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 1e6233ca454bc..b85deda21c4e9 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -32356,6 +32356,8 @@ with pkgs;
libutp = callPackage ../applications/networking/p2p/libutp { };
+ libutp_3_3 = callPackage ../applications/networking/p2p/libutp/3.3.nix { };
+
lifelines = callPackage ../applications/misc/lifelines { };
liferea = callPackage ../applications/networking/newsreaders/liferea { };
@@ -34882,14 +34884,16 @@ with pkgs;
transcribe = callPackage ../applications/audio/transcribe { };
- transmission = callPackage ../applications/networking/p2p/transmission { };
- libtransmission = transmission.override {
+ transmission_4 = callPackage ../applications/networking/p2p/transmission { };
+ transmission_3 = callPackage ../applications/networking/p2p/transmission/3.x.nix { };
+ libtransmission_4 = transmission.override {
installLib = true;
enableDaemon = false;
enableCli = false;
};
transmission-gtk = transmission.override { enableGTK3 = true; };
transmission-qt = transmission.override { enableQt = true; };
+ libtransmission = transmission_3;
transmission-remote-gtk = callPackage ../applications/networking/p2p/transmission-remote-gtk { };