persepolis: fix build and startup on darwin
Notifications will be broken until https://github.com/NixOS/nixpkgs/issues/105156 is resolved. ZHF: #265948
This commit is contained in:
parent
e5f2b7e703
commit
89f023360c
4 changed files with 126 additions and 3 deletions
|
@ -0,0 +1,45 @@
|
|||
---
|
||||
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)
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
---
|
||||
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)
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
---
|
||||
persepolis/scripts/download.py | 10 +---------
|
||||
1 file changed, 1 insertion(+), 9 deletions(-)
|
||||
|
||||
diff --git a/persepolis/scripts/download.py b/persepolis/scripts/download.py
|
||||
index aaabb35..69676d3 100644
|
||||
--- a/persepolis/scripts/download.py
|
||||
+++ b/persepolis/scripts/download.py
|
||||
@@ -72,16 +72,8 @@ def startAria():
|
||||
|
||||
# in macintosh
|
||||
elif os_type == 'Darwin':
|
||||
- if aria2_path == "" or aria2_path == None or os.path.isfile(str(aria2_path)) == False:
|
||||
-
|
||||
- cwd = sys.argv[0]
|
||||
- current_directory = os.path.dirname(cwd)
|
||||
- aria2d = os.path.join(current_directory, 'aria2c')
|
||||
|
||||
- else:
|
||||
- aria2d = aria2_path
|
||||
-
|
||||
- subprocess.Popen([aria2d, '--no-conf',
|
||||
+ subprocess.Popen(['aria2c', '--no-conf',
|
||||
'--enable-rpc', '--rpc-listen-port=' + str(port),
|
||||
'--rpc-max-request-size=2M',
|
||||
'--rpc-listen-all', '--quiet=true'],
|
||||
--
|
||||
2.39.3 (Apple Git-145)
|
||||
|
|
@ -1,4 +1,7 @@
|
|||
{ lib, stdenv, buildPythonApplication, fetchFromGitHub
|
||||
{ lib
|
||||
, stdenv
|
||||
, buildPythonApplication
|
||||
, fetchFromGitHub
|
||||
, aria
|
||||
, libnotify
|
||||
, pulseaudio
|
||||
|
@ -30,6 +33,12 @@ buildPythonApplication rec {
|
|||
substituteInPlace setup.py --replace "answer = input(" "answer = 'y'#"
|
||||
'';
|
||||
|
||||
patches = lib.optionals stdenv.isDarwin [
|
||||
./0001-Allow-building-on-darwin.patch
|
||||
./0002-Fix-startup-crash-on-darwin.patch
|
||||
./0003-Search-PATH-for-aria2c-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
|
||||
|
@ -46,7 +55,7 @@ buildPythonApplication rec {
|
|||
|
||||
# feed args to wrapPythonApp
|
||||
makeWrapperArgs = [
|
||||
"--prefix PATH : ${lib.makeBinPath [aria libnotify ]}"
|
||||
"--prefix PATH : ${lib.makeBinPath [ aria libnotify ]}"
|
||||
"\${qtWrapperArgs[@]}"
|
||||
];
|
||||
|
||||
|
@ -64,7 +73,6 @@ buildPythonApplication rec {
|
|||
meta = with lib; {
|
||||
description = "Persepolis Download Manager is a GUI for aria2";
|
||||
homepage = "https://persepolisdm.github.io/";
|
||||
broken = stdenv.isDarwin; # Upstream’s build scripts check and fail on Darwin.
|
||||
license = licenses.gpl3;
|
||||
maintainers = [ ];
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue