From 39a752255e593143cf0090d4dfb407793d5ea6b3 Mon Sep 17 00:00:00 2001 From: Sergei Reznikov Date: Wed, 16 Mar 2016 21:03:45 +0300 Subject: [PATCH] tmux: add recipe for version 2.1 builds but doesn't run --- app-misc/tmux/licenses/ISC | 21 ++ app-misc/tmux/patches/tmux-2.1.patchset | 321 ++++++++++++++++++++++++ app-misc/tmux/tmux-2.1.recipe | 56 +++++ 3 files changed, 398 insertions(+) create mode 100644 app-misc/tmux/licenses/ISC create mode 100644 app-misc/tmux/patches/tmux-2.1.patchset create mode 100644 app-misc/tmux/tmux-2.1.recipe diff --git a/app-misc/tmux/licenses/ISC b/app-misc/tmux/licenses/ISC new file mode 100644 index 000000000..9d96b3e65 --- /dev/null +++ b/app-misc/tmux/licenses/ISC @@ -0,0 +1,21 @@ +THIS IS FOR INFORMATION ONLY, CODE IS UNDER THE LICENCE AT THE TOP OF ITS FILE. + +The README, CHANGES, FAQ and TODO files are licensed under the ISC +license. Files under examples/ remain copyright their authors unless otherwise +stated in the file but permission has been received to distribute them with +tmux. All other files have a license and copyright notice at their start, +typically: + +Copyright (c) + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER +IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING +OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/app-misc/tmux/patches/tmux-2.1.patchset b/app-misc/tmux/patches/tmux-2.1.patchset new file mode 100644 index 000000000..cac6994fb --- /dev/null +++ b/app-misc/tmux/patches/tmux-2.1.patchset @@ -0,0 +1,321 @@ +From c588c45e408ac16a80ffb90d3db22c7b49bcaabc Mon Sep 17 00:00:00 2001 +From: Sergei Reznikov +Date: Wed, 16 Mar 2016 20:40:09 +0300 +Subject: Add initial Haiku support based on hpux + + +diff --git a/b/compat/forkpty-haiku.c b/b/compat/forkpty-haiku.c +new file mode 100644 +index 0000000..6960ee4 +--- /dev/null ++++ b/b/compat/forkpty-haiku.c +@@ -0,0 +1,87 @@ ++/* ++ * Copyright (c) 2008 Nicholas Marriott ++ * ++ * Permission to use, copy, modify, and distribute this software for any ++ * purpose with or without fee is hereby granted, provided that the above ++ * copyright notice and this permission notice appear in all copies. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES ++ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF ++ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ++ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++ * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER ++ * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING ++ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ */ ++ ++#include ++#include ++ ++#include ++#include ++//#include ++#include ++ ++#include "tmux.h" ++ ++pid_t ++forkpty(int *master, char *name, struct termios *tio, struct winsize *ws) ++{ ++ int slave = -1; ++ char *path; ++ pid_t pid; ++ ++ if ((*master = open("/dev/ptmx", O_RDWR|O_NOCTTY)) == -1) ++ return (-1); ++ if (grantpt(*master) != 0) ++ goto out; ++ if (unlockpt(*master) != 0) ++ goto out; ++ ++ if ((path = ptsname(*master)) == NULL) ++ goto out; ++ if (name != NULL) ++ strlcpy(name, path, TTY_NAME_MAX); ++ if ((slave = open(path, O_RDWR|O_NOCTTY)) == -1) ++ goto out; ++ ++ switch (pid = fork()) { ++ case -1: ++ goto out; ++ case 0: ++ close(*master); ++ ++ setsid(); ++#ifdef TIOCSCTTY ++ if (ioctl(slave, TIOCSCTTY, NULL) == -1) ++ fatal("ioctl failed"); ++#endif ++/* ++ if (ioctl(slave, I_PUSH, "ptem") == -1) ++ fatal("ioctl failed"); ++ if (ioctl(slave, I_PUSH, "ldterm") == -1) ++ fatal("ioctl failed"); ++*/ ++ if (tio != NULL && tcsetattr(slave, TCSAFLUSH, tio) == -1) ++ fatal("tcsetattr failed"); ++ if (ioctl(slave, TIOCSWINSZ, ws) == -1) ++ fatal("ioctl failed"); ++ ++ dup2(slave, 0); ++ dup2(slave, 1); ++ dup2(slave, 2); ++ if (slave > 2) ++ close(slave); ++ return (0); ++ } ++ ++ close(slave); ++ return (pid); ++ ++out: ++ if (*master != -1) ++ close(*master); ++ if (slave != -1) ++ close(slave); ++ return (-1); ++} +diff --git a/b/osdep-haiku.c b/b/osdep-haiku.c +new file mode 100644 +index 0000000..4baa6d4 +--- /dev/null ++++ b/b/osdep-haiku.c +@@ -0,0 +1,41 @@ ++/* $OpenBSD$ */ ++ ++/* ++ * Copyright (c) 2009 Nicholas Marriott ++ * ++ * Permission to use, copy, modify, and distribute this software for any ++ * purpose with or without fee is hereby granted, provided that the above ++ * copyright notice and this permission notice appear in all copies. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES ++ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF ++ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ++ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++ * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER ++ * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING ++ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ */ ++ ++#include ++ ++#include ++ ++#include "tmux.h" ++ ++char * ++osdep_get_name(unused int fd, unused char *tty) ++{ ++ return (NULL); ++} ++ ++char * ++osdep_get_cwd(unused int fd) ++{ ++ return (NULL); ++} ++ ++struct event_base * ++osdep_event_init(void) ++{ ++ return (event_init()); ++} +diff --git a/compat/forkpty-haiku.c b/compat/forkpty-haiku.c +new file mode 100644 +index 0000000..6960ee4 +--- /dev/null ++++ b/compat/forkpty-haiku.c +@@ -0,0 +1,87 @@ ++/* ++ * Copyright (c) 2008 Nicholas Marriott ++ * ++ * Permission to use, copy, modify, and distribute this software for any ++ * purpose with or without fee is hereby granted, provided that the above ++ * copyright notice and this permission notice appear in all copies. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES ++ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF ++ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ++ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++ * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER ++ * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING ++ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ */ ++ ++#include ++#include ++ ++#include ++#include ++//#include ++#include ++ ++#include "tmux.h" ++ ++pid_t ++forkpty(int *master, char *name, struct termios *tio, struct winsize *ws) ++{ ++ int slave = -1; ++ char *path; ++ pid_t pid; ++ ++ if ((*master = open("/dev/ptmx", O_RDWR|O_NOCTTY)) == -1) ++ return (-1); ++ if (grantpt(*master) != 0) ++ goto out; ++ if (unlockpt(*master) != 0) ++ goto out; ++ ++ if ((path = ptsname(*master)) == NULL) ++ goto out; ++ if (name != NULL) ++ strlcpy(name, path, TTY_NAME_MAX); ++ if ((slave = open(path, O_RDWR|O_NOCTTY)) == -1) ++ goto out; ++ ++ switch (pid = fork()) { ++ case -1: ++ goto out; ++ case 0: ++ close(*master); ++ ++ setsid(); ++#ifdef TIOCSCTTY ++ if (ioctl(slave, TIOCSCTTY, NULL) == -1) ++ fatal("ioctl failed"); ++#endif ++/* ++ if (ioctl(slave, I_PUSH, "ptem") == -1) ++ fatal("ioctl failed"); ++ if (ioctl(slave, I_PUSH, "ldterm") == -1) ++ fatal("ioctl failed"); ++*/ ++ if (tio != NULL && tcsetattr(slave, TCSAFLUSH, tio) == -1) ++ fatal("tcsetattr failed"); ++ if (ioctl(slave, TIOCSWINSZ, ws) == -1) ++ fatal("ioctl failed"); ++ ++ dup2(slave, 0); ++ dup2(slave, 1); ++ dup2(slave, 2); ++ if (slave > 2) ++ close(slave); ++ return (0); ++ } ++ ++ close(slave); ++ return (pid); ++ ++out: ++ if (*master != -1) ++ close(*master); ++ if (slave != -1) ++ close(slave); ++ return (-1); ++} +diff --git a/configure.ac b/configure.ac +index 93aae20..38cfdae 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -503,6 +503,10 @@ case "$host_os" in + PLATFORM=sunos + MANFORMAT=man + ;; ++ *haiku*) ++ AC_MSG_RESULT(haiku) ++ PLATFORM=haiku ++ ;; + *hpux*) + AC_MSG_RESULT(hpux) + PLATFORM=hpux +diff --git a/osdep-haiku.c b/osdep-haiku.c +new file mode 100644 +index 0000000..4baa6d4 +--- /dev/null ++++ b/osdep-haiku.c +@@ -0,0 +1,41 @@ ++/* $OpenBSD$ */ ++ ++/* ++ * Copyright (c) 2009 Nicholas Marriott ++ * ++ * Permission to use, copy, modify, and distribute this software for any ++ * purpose with or without fee is hereby granted, provided that the above ++ * copyright notice and this permission notice appear in all copies. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES ++ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF ++ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ++ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++ * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER ++ * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING ++ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ */ ++ ++#include ++ ++#include ++ ++#include "tmux.h" ++ ++char * ++osdep_get_name(unused int fd, unused char *tty) ++{ ++ return (NULL); ++} ++ ++char * ++osdep_get_cwd(unused int fd) ++{ ++ return (NULL); ++} ++ ++struct event_base * ++osdep_event_init(void) ++{ ++ return (event_init()); ++} +diff --git a/tty.c b/tty.c +index 7be952c..56334e8 100644 +--- a/tty.c ++++ b/tty.c +@@ -198,7 +198,11 @@ tty_init_termios(int fd, struct termios *orig_tio, struct bufferevent *bufev) + bufferevent_enable(bufev, EV_READ|EV_WRITE); + + memcpy(&tio, orig_tio, sizeof tio); +- tio.c_iflag &= ~(IXON|IXOFF|ICRNL|INLCR|IGNCR|IMAXBEL|ISTRIP); ++ tio.c_iflag &= ~(IXON|IXOFF|ICRNL|INLCR|IGNCR ++ #ifndef __HAIKU__ ++ |IMAXBEL ++ #endif ++ |ISTRIP); + tio.c_iflag |= IGNBRK; + tio.c_oflag &= ~(OPOST|ONLCR|OCRNL|ONLRET); + tio.c_lflag &= ~(IEXTEN|ICANON|ECHO|ECHOE|ECHONL|ECHOCTL| +-- +2.7.0 + diff --git a/app-misc/tmux/tmux-2.1.recipe b/app-misc/tmux/tmux-2.1.recipe new file mode 100644 index 000000000..b87bd3024 --- /dev/null +++ b/app-misc/tmux/tmux-2.1.recipe @@ -0,0 +1,56 @@ +SUMMARY="A terminal multiplexer" +DESCRIPTION="tmux is a \"terminal multiplexer\", it enables a number of \ +terminals (or windows) to be accessed and controlled from a single terminal. \ +tmux is intended to be a simple, modern, BSD-licensed alternative to programs \ +such as GNU screen." +HOMEPAGE="http://tmux.github.io/" +COPYRIGHT="2015 tmux team" +LICENSE="ISC" +SOURCE_URI="https://github.com/tmux/tmux/releases/download/$portVersion/tmux-$portVersion.tar.gz" +CHECKSUM_SHA256="31564e7bf4bcef2defb3cb34b9e596bd43a3937cad9e5438701a81a5a9af6176" +REVISION="1" + +PATCHES="tmux-$portVersion.patchset" + +ARCHITECTURES="!x86_gcc2 ?x86 ?x86_64" +SECONDARY_ARCHITECTURES="x86" + +PROVIDES=" + tmux$secondaryArchSuffix = $portVersion + cmd:tmux$secondaryArchSuffix = $portVersion + " +REQUIRES=" + haiku$secondaryArchSuffix + lib:libncurses$secondaryArchSuffix + lib:libevent$secondaryArchSuffix + " + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + devel:libncurses$secondaryArchSuffix + devel:libevent$secondaryArchSuffix + " +BUILD_PREREQUIRES=" + cmd:aclocal + cmd:autom4te + cmd:awk + cmd:make + cmd:gcc$secondaryArchSuffix + cmd:pkg_config$secondaryArchSuffix + " + +PATCH() +{ + sed -i 's/-lresolv/-lnetwork/g' configure* +} + +BUILD() +{ + runConfigure ./configure + make $jobArgs +} + +INSTALL() +{ + make install +}