mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-12-03 20:33:21 +00:00
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
@ -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
|
, aria
|
||||||
, libnotify
|
, libnotify
|
||||||
, pulseaudio
|
, pulseaudio
|
||||||
@ -30,6 +33,12 @@ buildPythonApplication rec {
|
|||||||
substituteInPlace setup.py --replace "answer = input(" "answer = 'y'#"
|
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 = ''
|
postPatch = ''
|
||||||
sed -i 's|/usr/share/sounds/freedesktop/stereo/|${sound-theme-freedesktop}/share/sounds/freedesktop/stereo/|' setup.py
|
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
|
sed -i "s|'persepolis = persepolis.__main__'|'persepolis = persepolis.scripts.persepolis:main'|" setup.py
|
||||||
@ -46,7 +55,7 @@ buildPythonApplication rec {
|
|||||||
|
|
||||||
# feed args to wrapPythonApp
|
# feed args to wrapPythonApp
|
||||||
makeWrapperArgs = [
|
makeWrapperArgs = [
|
||||||
"--prefix PATH : ${lib.makeBinPath [aria libnotify ]}"
|
"--prefix PATH : ${lib.makeBinPath [ aria libnotify ]}"
|
||||||
"\${qtWrapperArgs[@]}"
|
"\${qtWrapperArgs[@]}"
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -64,7 +73,6 @@ buildPythonApplication rec {
|
|||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "Persepolis Download Manager is a GUI for aria2";
|
description = "Persepolis Download Manager is a GUI for aria2";
|
||||||
homepage = "https://persepolisdm.github.io/";
|
homepage = "https://persepolisdm.github.io/";
|
||||||
broken = stdenv.isDarwin; # Upstream’s build scripts check and fail on Darwin.
|
|
||||||
license = licenses.gpl3;
|
license = licenses.gpl3;
|
||||||
maintainers = [ ];
|
maintainers = [ ];
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user