Merge pull request #292837 from iFreilicht/update-persepolis

persepolis: 3.2.0 -> 4.0.1
This commit is contained in:
Sandro
2024-05-17 20:05:33 +02:00
committed by GitHub
7 changed files with 85 additions and 183 deletions
@@ -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]
+84
View File
@@ -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 ];
};
}
@@ -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)
@@ -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)
@@ -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 ];
};
}
-4
View File
@@ -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 { };