aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/pkgs/applications/misc/orca
diff options
context:
space:
mode:
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/applications/misc/orca')
-rw-r--r--infra/libkookie/nixpkgs/pkgs/applications/misc/orca/default.nix117
-rw-r--r--infra/libkookie/nixpkgs/pkgs/applications/misc/orca/fix-paths.patch78
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()