diff options
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/applications/misc/orca')
-rw-r--r-- | infra/libkookie/nixpkgs/pkgs/applications/misc/orca/default.nix | 117 | ||||
-rw-r--r-- | infra/libkookie/nixpkgs/pkgs/applications/misc/orca/fix-paths.patch | 78 |
2 files changed, 195 insertions, 0 deletions
diff --git a/infra/libkookie/nixpkgs/pkgs/applications/misc/orca/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/misc/orca/default.nix new file mode 100644 index 000000000000..377f00d1c166 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/misc/orca/default.nix @@ -0,0 +1,117 @@ +{ stdenv +, pkgconfig +, fetchurl +, buildPythonApplication +, autoreconfHook +, wrapGAppsHook +, gobject-introspection +, gettext +, yelp-tools +, itstool +, libxmlxx3 +, python +, pygobject3 +, gtk3 +, gnome3 +, substituteAll +, at-spi2-atk +, at-spi2-core +, pyatspi +, dbus +, dbus-python +, pyxdg +, xkbcomp +, procps +, lsof +, coreutils +, gsettings-desktop-schemas +, speechd +, brltty +, liblouis +, setproctitle +, gst_all_1 +, gst-python +}: + +buildPythonApplication rec { + pname = "orca"; + version = "3.38.1"; + + format = "other"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1sqmq9xhcm3rc3mbhj1bdn55bkpzbk72xhmgka75syxh77gzz0ld"; + }; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + cat = "${coreutils}/bin/cat"; + lsof = "${lsof}/bin/lsof"; + pgrep = "${procps}/bin/pgrep"; + xkbcomp = "${xkbcomp}/bin/xkbcomp"; + }) + ]; + + nativeBuildInputs = [ + autoreconfHook + wrapGAppsHook + pkgconfig + libxmlxx3 + gettext + yelp-tools + itstool + gobject-introspection + ]; + + propagatedBuildInputs = [ + pygobject3 + pyatspi + dbus-python + pyxdg + brltty + liblouis + speechd + gst-python + setproctitle + ]; + + strictDeps = false; + + buildInputs = [ + python + gtk3 + at-spi2-atk + at-spi2-core + dbus + gsettings-desktop-schemas + gst_all_1.gstreamer + gst_all_1.gst-plugins-base + gst_all_1.gst-plugins-good + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + }; + }; + + meta = with stdenv.lib; { + homepage = "https://wiki.gnome.org/Projects/Orca"; + description = "Screen reader"; + longDescription = '' + A free, open source, flexible and extensible screen reader that provides + access to the graphical desktop via speech and refreshable braille. + It works with applications and toolkits that support the Assistive + Technology Service Provider Interface (AT-SPI). That includes the GNOME + GTK toolkit, the Java platform's Swing toolkit, LibreOffice, Gecko, and + WebKitGtk. AT-SPI support for the KDE Qt toolkit is being pursued. + + Needs `services.gnome3.at-spi2-core.enable = true;` in `configuration.nix`. + ''; + maintainers = with maintainers; [ berce ] ++ teams.gnome.members; + license = licenses.lgpl21; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/applications/misc/orca/fix-paths.patch b/infra/libkookie/nixpkgs/pkgs/applications/misc/orca/fix-paths.patch new file mode 100644 index 000000000000..ffb56dbe239c --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/misc/orca/fix-paths.patch @@ -0,0 +1,78 @@ +--- a/src/orca/debug.py ++++ b/src/orca/debug.py +@@ -474,7 +474,7 @@ + return traceit + + def getOpenFDCount(pid): +- procs = subprocess.check_output([ 'lsof', '-w', '-Ff', '-p', str(pid)]) ++ procs = subprocess.check_output([ '@lsof@', '-w', '-Ff', '-p', str(pid)]) + procs = procs.decode('UTF-8').split('\n') + files = list(filter(lambda s: s and s[0] == 'f' and s[1:].isdigit(), procs)) + +@@ -482,7 +482,7 @@ + + def getCmdline(pid): + try: +- openFile = os.popen('cat /proc/%s/cmdline' % pid) ++ openFile = os.popen('@cat@ /proc/%s/cmdline' % pid) + cmdline = openFile.read() + openFile.close() + except: +@@ -492,7 +492,7 @@ + return cmdline + + def pidOf(procName): +- openFile = subprocess.Popen('pgrep %s' % procName, ++ openFile = subprocess.Popen('@pgrep@ %s' % procName, + shell=True, + stdout=subprocess.PIPE).stdout + pids = openFile.read() +--- a/src/orca/orca.py ++++ b/src/orca/orca.py +@@ -239,7 +239,7 @@ + + def _setXmodmap(xkbmap): + """Set the keyboard map using xkbcomp.""" +- p = subprocess.Popen(['xkbcomp', '-w0', '-', os.environ['DISPLAY']], ++ p = subprocess.Popen(['@xkbcomp@', '-w0', '-', os.environ['DISPLAY']], + stdin=subprocess.PIPE, stdout=None, stderr=None) + p.communicate(xkbmap) + +@@ -297,7 +297,7 @@ + """ + + global _originalXmodmap +- _originalXmodmap = subprocess.check_output(['xkbcomp', os.environ['DISPLAY'], '-']) ++ _originalXmodmap = subprocess.check_output(['@xkbcomp@', os.environ['DISPLAY'], '-']) + + def _restoreXmodmap(keyList=[]): + """Restore the original xmodmap values for the keys in keyList. +@@ -309,7 +309,7 @@ + + global _capsLockCleared + _capsLockCleared = False +- p = subprocess.Popen(['xkbcomp', '-w0', '-', os.environ['DISPLAY']], ++ p = subprocess.Popen(['@xkbcomp@', '-w0', '-', os.environ['DISPLAY']], + stdin=subprocess.PIPE, stdout=None, stderr=None) + p.communicate(_originalXmodmap) + +--- a/src/orca/orca_bin.py.in ++++ b/src/orca/orca_bin.py.in +@@ -59,7 +59,7 @@ + name = "[DEAD]" + + try: +- cmdline = subprocess.getoutput('cat /proc/%s/cmdline' % pid) ++ cmdline = subprocess.getoutput('@cat@ /proc/%s/cmdline' % pid) + except: + cmdline = '(exception encountered)' + else: +@@ -192,7 +192,7 @@ + def otherOrcas(): + """Returns the pid of any other instances of Orca owned by this user.""" + +- openFile = subprocess.Popen('pgrep -u %s orca' % os.getuid(), ++ openFile = subprocess.Popen('@pgrep@ -u %s orca' % os.getuid(), + shell=True, + stdout=subprocess.PIPE).stdout + pids = openFile.read() |