aboutsummaryrefslogtreecommitdiffstats
path: root/community/tilix/musl-hacks.patch
diff options
context:
space:
mode:
Diffstat (limited to 'community/tilix/musl-hacks.patch')
-rw-r--r--community/tilix/musl-hacks.patch81
1 files changed, 81 insertions, 0 deletions
diff --git a/community/tilix/musl-hacks.patch b/community/tilix/musl-hacks.patch
new file mode 100644
index 0000000000..d706c8354a
--- /dev/null
+++ b/community/tilix/musl-hacks.patch
@@ -0,0 +1,81 @@
+Upstream: No
+Reason: Reverts/Breaks flatpak integration to fix musl build.
+--- a/source/gx/tilix/terminal/terminal.d 2019-01-04 01:03:40.000000000 +0100
++++ b/source/gx/tilix/terminal/terminal.d 2019-01-04 23:38:51.915350033 +0100
+@@ -2834,31 +2834,8 @@
+ if (isFlatpak()) {
+ Pty pty = vte.ptyNewSync(VtePtyFlags.DEFAULT, null);
+
+- int pty_master = pty.getFd();
+-
+- import core.sys.posix.stdlib: grantpt, unlockpt, ptsname;
+- import core.sys.posix.fcntl: open, O_RDWR;
+-
+- if (grantpt(pty_master) != 0) {
+- warning("Failed granting access to slave pseudoterminal device");
+- return false;
+- }
+-
+- if (unlockpt(pty_master) != 0) {
+- warning("Failed unlocking slave pseudoterminal device");
+- return false;
+- }
+-
+- int[] pty_slaves;
+- pty_slaves ~= open(ptsname(pty_master), O_RDWR | O_CLOEXEC);
+- if (pty_slaves[0] < 0) {
+- warning("Failed opening slave pseudoterminal device");
+- return false;
+- }
+-
+- foreach(i; 0 .. 2) {
+- pty_slaves ~= core.sys.posix.unistd.dup(pty_slaves[0]);
+- }
++ import vtec.vte: vte_pty_child_setup;
++ vte_pty_child_setup(pty.getPtyStruct());
+
+ import VteVersion = vte.Version;
+
+@@ -2892,7 +2869,7 @@
+ onTerminalChildExited(status, vte);
+ }
+
+- bool result = sendHostCommand(workingDir, args, envv, pty_slaves, gpid, &exitedCallback);
++ bool result = sendHostCommand(workingDir, args, envv, gpid, &exitedCallback);
+
+ vte.setPty(pty);
+
+@@ -2971,15 +2948,20 @@
+ }
+ }
+
+- bool sendHostCommand(string workingDir, string[] args, string[] envv, int[] stdio_fds, out int gpid, HostCommandExitedCallback exitedCallback) {
++ bool sendHostCommand(string workingDir, string[] args, string[] envv, out int gpid, HostCommandExitedCallback exitedCallback) {
+ import gio.DBusConnection;
+ import gio.UnixFDList;
+
+ uint[] handles;
++ int[] fdList;
++
++ fdList ~= std.stdio.stdin.fileno;
++ fdList ~= std.stdio.stdout.fileno;
++ fdList ~= std.stdio.stderr.fileno;
+
+ UnixFDList outFdList;
+ UnixFDList inFdList = new UnixFDList();
+- foreach(i, fd; stdio_fds) {
++ foreach(i, fd; fdList) {
+ handles ~= inFdList.append(fd);
+ if (handles[i] == -1) {
+ warning("Error creating fd list handles");
+@@ -3071,9 +3053,7 @@
+ status = command_status;
+ }
+
+- int[] stdio_fds = [0, output.writeEnd.fileno, 2] ~ extra_fds;
+-
+- if (!sendHostCommand("/", args, [], stdio_fds, gpid, &commandExited)) {
++ if (!sendHostCommand("/", args, [], gpid, &commandExited)) {
+ return null;
+ }
+