about summary refs log tree commit diff
diff options
context:
space:
mode:
authorSandro <sandro.jaeckel@gmail.com>2024-05-17 20:05:33 +0200
committerGitHub <noreply@github.com>2024-05-17 20:05:33 +0200
commit3dd4b58d05d876feaf8ae308daf7556053a5504a (patch)
treeac352b49b216a7e89c687d1d526f46fccd95085d
parentd769131c2703094f9c78fe74c09606173c38e6df (diff)
parent0535756bb00c8313624e98a4a95b2459a71c60ea (diff)
Merge pull request #292837 from iFreilicht/update-persepolis
persepolis: 3.2.0 -> 4.0.1
-rw-r--r--pkgs/by-name/pe/persepolis/0003-Search-PATH-for-aria2c-on-darwin.patch (renamed from pkgs/tools/networking/persepolis/0003-Search-PATH-for-aria2c-on-darwin.patch)2
-rw-r--r--pkgs/by-name/pe/persepolis/0004-Search-PATH-for-ffmpeg-on-darwin.patch (renamed from pkgs/tools/networking/persepolis/0004-Search-PATH-for-ffmpeg-on-darwin.patch)0
-rw-r--r--pkgs/by-name/pe/persepolis/package.nix84
-rw-r--r--pkgs/tools/networking/persepolis/0001-Allow-building-on-darwin.patch45
-rw-r--r--pkgs/tools/networking/persepolis/0002-Fix-startup-crash-on-darwin.patch41
-rw-r--r--pkgs/tools/networking/persepolis/default.nix92
-rw-r--r--pkgs/top-level/all-packages.nix4
7 files changed, 85 insertions, 183 deletions
diff --git a/pkgs/tools/networking/persepolis/0003-Search-PATH-for-aria2c-on-darwin.patch b/pkgs/by-name/pe/persepolis/0003-Search-PATH-for-aria2c-on-darwin.patch
index ab3c957ef4b19..505961d1ce6b7 100644
--- a/pkgs/tools/networking/persepolis/0003-Search-PATH-for-aria2c-on-darwin.patch
+++ b/pkgs/by-name/pe/persepolis/0003-Search-PATH-for-aria2c-on-darwin.patch
@@ -9,7 +9,7 @@ index aaabb35..69676d3 100644
 @@ -72,16 +72,8 @@ def startAria():
  
      # in macintosh
-     elif os_type == 'Darwin':
+     elif os_type == OS.OSX:
 -        if aria2_path == "" or aria2_path == None or os.path.isfile(str(aria2_path)) == False:
 -
 -            cwd = sys.argv[0]
diff --git a/pkgs/tools/networking/persepolis/0004-Search-PATH-for-ffmpeg-on-darwin.patch b/pkgs/by-name/pe/persepolis/0004-Search-PATH-for-ffmpeg-on-darwin.patch
index 800f7bddd4086..800f7bddd4086 100644
--- a/pkgs/tools/networking/persepolis/0004-Search-PATH-for-ffmpeg-on-darwin.patch
+++ b/pkgs/by-name/pe/persepolis/0004-Search-PATH-for-ffmpeg-on-darwin.patch
diff --git a/pkgs/by-name/pe/persepolis/package.nix b/pkgs/by-name/pe/persepolis/package.nix
new file mode 100644
index 0000000000000..3105cd8621f3f
--- /dev/null
+++ b/pkgs/by-name/pe/persepolis/package.nix
@@ -0,0 +1,84 @@
+{ lib
+, stdenv
+, qt5
+, python3
+, fetchFromGitHub
+, aria2
+, ffmpeg
+, libnotify
+, pulseaudio
+, sound-theme-freedesktop
+, pkg-config
+, meson
+, ninja
+}:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "persepolis";
+  version = "4.0.1";
+  format = "other";
+
+  src = fetchFromGitHub {
+    owner = "persepolisdm";
+    repo = "persepolis";
+    rev = "57dc9d438bb3f126070a17c7a3677c45ea4dd332";
+    hash = "sha256-7OXAITFQJ2/aY0QmqlAo7if7cY7+T3j6PUjfJJV8Z2Q=";
+  };
+
+  patches = [
+    # Upstream does currently not allow building from source on macOS. These patches can likely
+    # be removed if https://github.com/persepolisdm/persepolis/issues/943 is fixed upstream
+    ./0003-Search-PATH-for-aria2c-on-darwin.patch
+    ./0004-Search-PATH-for-ffmpeg-on-darwin.patch
+  ];
+
+  postPatch = ''
+    # Ensure dependencies with hard-coded FHS dependencies are properly detected
+    substituteInPlace check_dependencies.py --replace-fail "isdir(notifications_path)" "isdir('${sound-theme-freedesktop}/share/sounds/freedesktop')"
+  '';
+
+  postInstall = ''
+    mkdir -p $out/share/applications
+    cp $src/xdg/com.github.persepolisdm.persepolis.desktop $out/share/applications
+  '';
+
+  # prevent double wrapping
+  dontWrapQtApps = true;
+  nativeBuildInputs = [ meson ninja pkg-config qt5.wrapQtAppsHook ];
+
+  # feed args to wrapPythonApp
+  makeWrapperArgs = [
+    "--prefix PATH : ${lib.makeBinPath [ aria2 ffmpeg libnotify ]}"
+    "\${qtWrapperArgs[@]}"
+  ];
+
+  # The presence of these dependencies is checked during setuptoolsCheckPhase,
+  # but apart from that, they're not required during build, only runtime
+  nativeCheckInputs = [
+    aria2
+    libnotify
+    pulseaudio
+    sound-theme-freedesktop
+    ffmpeg
+  ];
+
+  propagatedBuildInputs = [
+    pulseaudio
+    sound-theme-freedesktop
+  ] ++ (with python3.pkgs; [
+    psutil
+    pyqt5
+    requests
+    setproctitle
+    setuptools
+    yt-dlp
+  ]);
+
+  meta = with lib; {
+    description = "A GUI for aria2";
+    mainProgram = "persepolis";
+    homepage = "https://persepolisdm.github.io/";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ iFreilicht ];
+  };
+}
diff --git a/pkgs/tools/networking/persepolis/0001-Allow-building-on-darwin.patch b/pkgs/tools/networking/persepolis/0001-Allow-building-on-darwin.patch
deleted file mode 100644
index 4ddd18bbd4687..0000000000000
--- a/pkgs/tools/networking/persepolis/0001-Allow-building-on-darwin.patch
+++ /dev/null
@@ -1,45 +0,0 @@
----
- setup.py | 13 +++++--------
- 1 file changed, 5 insertions(+), 8 deletions(-)
-
-diff --git a/setup.py b/setup.py
-index 985d28d..933f3df 100755
---- a/setup.py
-+++ b/setup.py
-@@ -24,13 +24,9 @@ import shutil
- # finding os platform
- os_type = platform.system()
- 
--if os_type == 'Linux' or os_type == 'FreeBSD' or os_type == 'OpenBSD':
--    from setuptools import setup, Command, find_packages
--    setuptools_available = True
--    print(os_type + " detected!")
--else:
--    print('This script is only work for GNU/Linux or BSD!')
--    sys.exit(1)
-+from setuptools import setup, Command, find_packages
-+setuptools_available = True
-+print(os_type + " detected!")
- 
- # Checking dependencies!
- not_installed = ''
-@@ -100,6 +96,7 @@ else:
-     print('paplay is found!')
- 
- # sound-theme-freedesktop
-+notifications_path = ''
- if os_type == 'Linux':
-     notifications_path = '/usr/share/sounds/freedesktop/stereo/'
- elif os_type == 'FreeBSD' or os_type == 'OpenBSD':
-@@ -139,7 +136,7 @@ if sys.argv[1] == "test":
- 
- DESCRIPTION = 'Persepolis Download Manager'
- 
--if os_type == 'Linux':
-+if os_type in ['Linux', 'Darwin']:
-     DATA_FILES = [
-         ('/usr/share/man/man1/', ['man/persepolis.1.gz']),
-         ('/usr/share/applications/', ['xdg/com.github.persepolisdm.persepolis.desktop']),
--- 
-2.39.3 (Apple Git-145)
-
diff --git a/pkgs/tools/networking/persepolis/0002-Fix-startup-crash-on-darwin.patch b/pkgs/tools/networking/persepolis/0002-Fix-startup-crash-on-darwin.patch
deleted file mode 100644
index 50252c8cd72a8..0000000000000
--- a/pkgs/tools/networking/persepolis/0002-Fix-startup-crash-on-darwin.patch
+++ /dev/null
@@ -1,41 +0,0 @@
----
- persepolis/scripts/mac_notification.py | 25 +++++++++----------------
- 1 file changed, 9 insertions(+), 16 deletions(-)
-
-diff --git a/persepolis/scripts/mac_notification.py b/persepolis/scripts/mac_notification.py
-index 4d69929..9a9a7cf 100644
---- a/persepolis/scripts/mac_notification.py
-+++ b/persepolis/scripts/mac_notification.py
-@@ -15,20 +15,13 @@
- 
- # native notification on mac! needs Xcode (latest version) installed and pyobjc
- # library from pip
--import Foundation
--import AppKit
--import objc
--
--NSUserNotification = objc.lookUpClass('NSUserNotification')
--NSUserNotificationCenter = objc.lookUpClass('NSUserNotificationCenter')
--
--
- def notifyMac(title, subtitle, info_text, delay=0):
--    notification = NSUserNotification.alloc().init()
--    notification.setTitle_(title)
--    notification.setSubtitle_(subtitle)
--    notification.setInformativeText_(info_text)
--    notification.setDeliveryDate_(Foundation.NSDate.dateWithTimeInterval_sinceDate_(
--        delay, Foundation.NSDate.date()))
--    NSUserNotificationCenter.defaultUserNotificationCenter(
--    ).scheduleNotification_(notification)
-+    print(f"""
-+Warning: Persepolis was installed from nixpkgs, which currently breaks notifications
-+         on macOS. Until https://github.com/NixOS/nixpkgs/issues/105156 is resolved,
-+         this cannot be fixed. The notification that should've been displayed was:
-+
-+         title: {title}
-+         subtitle: {subtitle}
-+         info_text: {info_text}
-+ """)
--- 
-2.39.3 (Apple Git-145)
-
diff --git a/pkgs/tools/networking/persepolis/default.nix b/pkgs/tools/networking/persepolis/default.nix
deleted file mode 100644
index b3b084c225964..0000000000000
--- a/pkgs/tools/networking/persepolis/default.nix
+++ /dev/null
@@ -1,92 +0,0 @@
-{ lib
-, stdenv
-, buildPythonApplication
-, fetchFromGitHub
-, aria2
-, ffmpeg
-, libnotify
-, pulseaudio
-, psutil
-, pyqt5
-, requests
-, setproctitle
-, setuptools
-, sound-theme-freedesktop
-, wrapQtAppsHook
-, yt-dlp
-}:
-
-buildPythonApplication rec {
-  pname = "persepolis";
-  version = "3.2.0";
-
-  src = fetchFromGitHub {
-    owner = "persepolisdm";
-    repo = "persepolis";
-    rev = version;
-    sha256 = "1rh7q432ynbysapsd075nif975ync71icpb71x2mb4j8jx1vzs45";
-  };
-
-  # see: https://github.com/persepolisdm/persepolis/blob/3.2.0/setup.py#L130
-  doCheck = false;
-
-  preBuild=
-  # Make setup automatic
-  ''
-    substituteInPlace setup.py --replace "answer = input(" "answer = 'y'#"
-  '' +
-  # Replace abandoned youtube-dl with maintained fork yt-dlp. Fixes https://github.com/persepolisdm/persepolis/issues/930,
-  # can be removed if that issue is fixed and/or https://github.com/persepolisdm/persepolis/pull/936 is merged
-  ''
-    substituteInPlace setup.py ./persepolis/scripts/video_finder_addlink.py --replace \
-        "import youtube_dl" "import yt_dlp as youtube_dl"
-  '';
-
-  patches = lib.optionals stdenv.isDarwin [
-    # Upstream is abandonware, the last commit to master was on 2021-08-26.
-    # If it is forked or picked up again, consider upstreaming these patches.
-    ./0001-Allow-building-on-darwin.patch
-    ./0002-Fix-startup-crash-on-darwin.patch
-    ./0003-Search-PATH-for-aria2c-on-darwin.patch
-    ./0004-Search-PATH-for-ffmpeg-on-darwin.patch
-  ];
-
-  postPatch = ''
-    sed -i 's|/usr/share/sounds/freedesktop/stereo/|${sound-theme-freedesktop}/share/sounds/freedesktop/stereo/|' setup.py
-    sed -i "s|'persepolis = persepolis.__main__'|'persepolis = persepolis.scripts.persepolis:main'|" setup.py
-  '';
-
-  postInstall = ''
-     mkdir -p $out/share/applications
-     cp $src/xdg/com.github.persepolisdm.persepolis.desktop $out/share/applications
-  '';
-
-  # prevent double wrapping
-  dontWrapQtApps = true;
-  nativeBuildInputs = [ wrapQtAppsHook ];
-
-  # feed args to wrapPythonApp
-  makeWrapperArgs = [
-    "--prefix PATH : ${lib.makeBinPath [ aria2 ffmpeg libnotify ]}"
-    "\${qtWrapperArgs[@]}"
-  ];
-
-  propagatedBuildInputs = [
-    pulseaudio
-    psutil
-    pyqt5
-    requests
-    setproctitle
-    setuptools
-    sound-theme-freedesktop
-    yt-dlp
-  ];
-
-  meta = with lib; {
-    description = "Persepolis Download Manager is a GUI for aria2";
-    mainProgram = "persepolis";
-    homepage = "https://persepolisdm.github.io/";
-    license = licenses.gpl3;
-    maintainers = with maintainers; [ iFreilicht ];
-  };
-}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 1ce75d4d39844..1f6c9407956fa 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -6050,10 +6050,6 @@ with pkgs;
 
   pcp = callPackage ../tools/misc/pcp { };
 
-  persepolis = python3Packages.callPackage ../tools/networking/persepolis {
-    wrapQtAppsHook = qt5.wrapQtAppsHook;
-  };
-
   pev = callPackage ../development/tools/analysis/pev { };
 
   phd2 = callPackage ../applications/science/astronomy/phd2 { };