From a10db1930cbdfbee274abd0a80ac4226295e4696 Mon Sep 17 00:00:00 2001 From: Charlotte Van Petegem Date: Sun, 2 Jul 2023 19:57:43 +0200 Subject: [PATCH 1/4] transmission_4: init at 4.0.3 https://github.com/transmission/transmission/releases/tag/4.0.0 https://github.com/transmission/transmission/releases/tag/4.0.1 https://github.com/transmission/transmission/releases/tag/4.0.2 https://github.com/transmission/transmission/releases/tag/4.0.3 --- .../networking/p2p/transmission/4.nix | 139 ++++++++++++++++++ pkgs/top-level/all-packages.nix | 9 ++ 2 files changed, 148 insertions(+) create mode 100644 pkgs/applications/networking/p2p/transmission/4.nix diff --git a/pkgs/applications/networking/p2p/transmission/4.nix b/pkgs/applications/networking/p2p/transmission/4.nix new file mode 100644 index 000000000000..82f6aa83ed7c --- /dev/null +++ b/pkgs/applications/networking/p2p/transmission/4.nix @@ -0,0 +1,139 @@ +{ stdenv +, lib +, fetchFromGitHub +, cmake +, pkg-config +, python3 +, openssl +, curl +, libevent +, inotify-tools +, systemd +, zlib +, pcre +, libb64 +, libutp +, libdeflate +, miniupnpc +, dht +, libnatpmp +, libiconv +, darwin + # Build options +, enableGTK3 ? false +, gtkmm3 +, xorg +, wrapGAppsHook +, enableQt ? false +, qt5 +, nixosTests +, enableSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd +, enableDaemon ? true +, enableCli ? true +, installLib ? false +, apparmorRulesFromClosure +}: + +stdenv.mkDerivation rec { + pname = "transmission"; + version = "4.0.3"; + + src = fetchFromGitHub { + owner = "transmission"; + repo = "transmission"; + rev = version; + hash = "sha256-P7omd49xLmReo9Zrg0liO1msUVzCa5CxH7PGmH4oPzg="; + fetchSubmodules = true; + }; + + outputs = [ "out" "apparmor" ]; + + cmakeFlags = + let + mkFlag = opt: if opt then "ON" else "OFF"; + in + [ + "-DENABLE_MAC=OFF" # requires xcodebuild + "-DENABLE_GTK=${mkFlag enableGTK3}" + "-DENABLE_QT=${mkFlag enableQt}" + "-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 + python3 + ] + ++ lib.optionals enableGTK3 [ wrapGAppsHook ] + ++ lib.optionals enableQt [ qt5.wrapQtAppsHook ] + ; + + buildInputs = [ + openssl + curl + libevent + zlib + pcre + libb64 + libutp + libdeflate + miniupnpc + dht + libnatpmp + ] + ++ 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 ]; + + postInstall = '' + mkdir $apparmor + cat >$apparmor/bin.transmission-daemon < + $out/bin/transmission-daemon { + include + include + include + include "${apparmorRulesFromClosure { name = "transmission-daemon"; } ([ + curl libevent openssl pcre zlib libdeflate 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_*, + + r $out/share/transmission/web/**, + + include + } + EOF + ''; + + meta = { + description = "A fast, easy and free BitTorrent client"; + longDescription = '' + Transmission is a BitTorrent client which features a simple interface + on top of a cross-platform back-end. + Feature spotlight: + * Uses fewer resources than other clients + * Native Mac, GTK and Qt GUI clients + * Daemon ideal for servers, embedded systems, and headless use + * All these can be remote controlled by Web and Terminal clients + * Bluetack (PeerGuardian) blocklists with automatic updates + * Full encryption, DHT, and PEX support + ''; + homepage = "http://www.transmissionbt.com/"; + license = with lib.licenses; [ gpl2Plus mit ]; + 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 e1e5ba389773..31780a83eb7a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -35212,6 +35212,15 @@ with pkgs; transmission-gtk = transmission.override { enableGTK3 = true; }; transmission-qt = transmission.override { enableQt = true; }; + transmission_4 = callPackage ../applications/networking/p2p/transmission/4.nix { }; + libtransmission_4 = transmission_4.override { + installLib = true; + enableDaemon = false; + enableCli = false; + }; + transmission_4-gtk = transmission_4.override { enableGTK3 = true; }; + transmission_4-qt = transmission_4.override { enableQt = true; }; + transmission-remote-gtk = callPackage ../applications/networking/p2p/transmission-remote-gtk { }; transgui = callPackage ../applications/networking/p2p/transgui { }; From d5188368ce62dca0821b5a157f9d7d6124d0cc82 Mon Sep 17 00:00:00 2001 From: Charlotte Van Petegem Date: Sun, 2 Jul 2023 20:11:11 +0200 Subject: [PATCH 2/4] libutp_3_4: init at 3.4 --- .../networking/p2p/libutp/3.4.nix | 30 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 1 + 2 files changed, 31 insertions(+) create mode 100644 pkgs/applications/networking/p2p/libutp/3.4.nix diff --git a/pkgs/applications/networking/p2p/libutp/3.4.nix b/pkgs/applications/networking/p2p/libutp/3.4.nix new file mode 100644 index 000000000000..4ea4ebbb2dc4 --- /dev/null +++ b/pkgs/applications/networking/p2p/libutp/3.4.nix @@ -0,0 +1,30 @@ +{ stdenv, lib, fetchFromGitHub, cmake, unstableGitUpdater }: + +stdenv.mkDerivation rec { + pname = "libutp"; + version = "unstable-2023-03-05"; + + src = fetchFromGitHub { + # Use transmission fork from post-3.4-transmission branch + owner = "transmission"; + repo = pname; + rev = "9cb9f9c4f0073d78b08d6542cebaea6564ecadfe"; + hash = "sha256-dpbX1h/gpuVIAXC4hwwuRwQDJ0pwVVEsgemOVN0Dv9Q="; + }; + + nativeBuildInputs = [ cmake ]; + + passthru = { + updateScript = unstableGitUpdater { + branch = "post-3.4-transmission"; + }; + }; + + 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/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 31780a83eb7a..ba833ab7a4dd 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -32671,6 +32671,7 @@ with pkgs; libvmi = callPackage ../development/libraries/libvmi { }; libutp = callPackage ../applications/networking/p2p/libutp { }; + libutp_3_4 = callPackage ../applications/networking/p2p/libutp/3.4.nix { }; lifelines = callPackage ../applications/misc/lifelines { }; From 760949b72bcb5762ffed8c39124f1704e784b1d4 Mon Sep 17 00:00:00 2001 From: Charlotte Van Petegem Date: Sun, 2 Jul 2023 20:12:10 +0200 Subject: [PATCH 3/4] transmission_4: make sure to use dependencies from nixpkgs --- .../networking/p2p/transmission/4.nix | 41 +++++++++++++++---- pkgs/top-level/all-packages.nix | 5 ++- 2 files changed, 36 insertions(+), 10 deletions(-) diff --git a/pkgs/applications/networking/p2p/transmission/4.nix b/pkgs/applications/networking/p2p/transmission/4.nix index 82f6aa83ed7c..6ad2c8dd0828 100644 --- a/pkgs/applications/networking/p2p/transmission/4.nix +++ b/pkgs/applications/networking/p2p/transmission/4.nix @@ -14,6 +14,9 @@ , libb64 , libutp , libdeflate +, utf8cpp +, fmt +, libpsl , miniupnpc , dht , libnatpmp @@ -64,6 +67,23 @@ stdenv.mkDerivation rec { "-DCMAKE_OSX_DEPLOYMENT_TARGET=${stdenv.hostPlatform.darwinMinVersion}" ]; + 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 + # Upstream uses different config file name. + substituteInPlace CMakeLists.txt --replace 'find_package(UtfCpp)' 'find_package(utf8cpp)' + ''; + nativeBuildInputs = [ pkg-config cmake @@ -74,17 +94,20 @@ stdenv.mkDerivation rec { ; buildInputs = [ - openssl curl - libevent - zlib - pcre - libb64 - libutp - libdeflate - miniupnpc dht + fmt + libb64 + libdeflate + libevent libnatpmp + libpsl + libutp + miniupnpc + openssl + pcre + utf8cpp + zlib ] ++ lib.optionals enableQt [ qt5.qttools qt5.qtbase ] ++ lib.optionals enableGTK3 [ gtkmm3 xorg.libpthreadstubs ] @@ -101,7 +124,7 @@ stdenv.mkDerivation rec { include include include "${apparmorRulesFromClosure { name = "transmission-daemon"; } ([ - curl libevent openssl pcre zlib libdeflate libnatpmp miniupnpc + curl libevent openssl pcre zlib libdeflate libpsl libnatpmp miniupnpc ] ++ lib.optionals enableSystemd [ systemd ] ++ lib.optionals stdenv.isLinux [ inotify-tools ] )}" diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index ba833ab7a4dd..da3910ca91ec 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -35213,7 +35213,10 @@ with pkgs; transmission-gtk = transmission.override { enableGTK3 = true; }; transmission-qt = transmission.override { enableQt = true; }; - transmission_4 = callPackage ../applications/networking/p2p/transmission/4.nix { }; + transmission_4 = callPackage ../applications/networking/p2p/transmission/4.nix { + fmt = fmt_9; + libutp = libutp_3_4; + }; libtransmission_4 = transmission_4.override { installLib = true; enableDaemon = false; From a58c8585e285b371d751316781f96a27cbbb1855 Mon Sep 17 00:00:00 2001 From: Charlotte Van Petegem Date: Mon, 3 Jul 2023 11:16:08 +0200 Subject: [PATCH 4/4] transmission_4: mark as broken on x86_64-darwin --- pkgs/applications/networking/p2p/transmission/4.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/applications/networking/p2p/transmission/4.nix b/pkgs/applications/networking/p2p/transmission/4.nix index 6ad2c8dd0828..d388f07e0150 100644 --- a/pkgs/applications/networking/p2p/transmission/4.nix +++ b/pkgs/applications/networking/p2p/transmission/4.nix @@ -158,5 +158,7 @@ stdenv.mkDerivation rec { license = with lib.licenses; [ gpl2Plus mit ]; maintainers = with lib.maintainers; [ astsmtl ]; platforms = lib.platforms.unix; + # Needs macOS >= 10.14.6 + broken = stdenv.isDarwin && stdenv.isx86_64; }; }