From owner-svn-ports-all@freebsd.org Sat Feb 11 16:19:15 2017 Return-Path: Delivered-To: svn-ports-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C6C4DCDB670; Sat, 11 Feb 2017 16:19:15 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 776C313A8; Sat, 11 Feb 2017 16:19:15 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v1BGJEeN050970; Sat, 11 Feb 2017 16:19:14 GMT (envelope-from bapt@FreeBSD.org) Received: (from bapt@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v1BGJDYY050963; Sat, 11 Feb 2017 16:19:13 GMT (envelope-from bapt@FreeBSD.org) Message-Id: <201702111619.v1BGJDYY050963@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: bapt set sender to bapt@FreeBSD.org using -f From: Baptiste Daroussin Date: Sat, 11 Feb 2017 16:19:13 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r433888 - in head/x11-toolkits: . wcl wcl/files X-SVN-Group: ports-head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-all@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the ports tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Feb 2017 16:19:15 -0000 Author: bapt Date: Sat Feb 11 16:19:13 2017 New Revision: 433888 URL: https://svnweb.freebsd.org/changeset/ports/433888 Log: Wayland compositor library WWW: https://github.com/Cloudef/wlc Added: head/x11-toolkits/wcl/ head/x11-toolkits/wcl/Makefile (contents, props changed) head/x11-toolkits/wcl/distinfo (contents, props changed) head/x11-toolkits/wcl/files/ head/x11-toolkits/wcl/files/patch-src_session_fd.c (contents, props changed) head/x11-toolkits/wcl/files/patch-src_session_tty.c (contents, props changed) head/x11-toolkits/wcl/pkg-descr (contents, props changed) head/x11-toolkits/wcl/pkg-plist (contents, props changed) Modified: head/x11-toolkits/Makefile Modified: head/x11-toolkits/Makefile ============================================================================== --- head/x11-toolkits/Makefile Sat Feb 11 16:10:17 2017 (r433887) +++ head/x11-toolkits/Makefile Sat Feb 11 16:19:13 2017 (r433888) @@ -282,6 +282,7 @@ SUBDIR += vte290 SUBDIR += vte3 SUBDIR += vtkfox + SUBDIR += wcl SUBDIR += wmapp SUBDIR += wxgtk28 SUBDIR += wxgtk28-common Added: head/x11-toolkits/wcl/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/x11-toolkits/wcl/Makefile Sat Feb 11 16:19:13 2017 (r433888) @@ -0,0 +1,40 @@ +# $FreeBSD$ + +PORTNAME= wlc +PORTVERSION= 0.0.5 +CATEGORIES= x11-toolkits wayland + +MAINTAINER= x11@FreeBSD.org +COMMENT= Wayland compositor library + +LICENSE= MIT +LICENSE_FILES= ${WRKSRC}/LISENSE + +BUILD_DEPENDS= wayland-protocols>=0:graphics/wayland-protocols +LIB_DEPENDS= libxkbcommon.so:x11/libxkbcommon \ + libxcb-ewmh.so:x11/xcb-util-wm \ + libwayland-server.so:graphics/wayland \ + libdrm.so:graphics/libdrm \ + libudev.so:devel/libudev-devd \ + libinput.so:x11/libinput \ + libxcb-image.so:x11/xcb-util-image + +RUN_DEPENDS= xkeyboard-config>=0:x11/xkeyboard-config + +USE_GITHUB= yes +GH_ACCOUNT= cloudef +GH_TAGNAME= fa780ce +GH_TUPLE= cloudef:chck:3f27d2a:chck + +USES= cmake gnome localbase pkgconfig pathfix +USE_XORG= pixman x11 xcb xcursor xfixes +USE_GL= egl gbm glesv2 +USE_GNOME= cairo + +USE_LDCONFIG= yes + +post-extract: + @${RM} -r ${WRKSRC}/lib/chck + @${LN} -s ${WRKSRC_chck} ${WRKSRC}/lib/chck + +.include Added: head/x11-toolkits/wcl/distinfo ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/x11-toolkits/wcl/distinfo Sat Feb 11 16:19:13 2017 (r433888) @@ -0,0 +1,5 @@ +TIMESTAMP = 1486829262 +SHA256 (cloudef-wlc-0.0.5-fa780ce_GH0.tar.gz) = bf22b99b52cc2fb4ecc27da90ee47f516f8d5d1a02afdc495488c14d01788bc8 +SIZE (cloudef-wlc-0.0.5-fa780ce_GH0.tar.gz) = 120603 +SHA256 (cloudef-chck-3f27d2a_GH0.tar.gz) = fa3765dbaad52e968aae8b9a06a8ace24fab0d9ca53cc08a1f5543ff33959ebd +SIZE (cloudef-chck-3f27d2a_GH0.tar.gz) = 119955 Added: head/x11-toolkits/wcl/files/patch-src_session_fd.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/x11-toolkits/wcl/files/patch-src_session_fd.c Sat Feb 11 16:19:13 2017 (r433888) @@ -0,0 +1,48 @@ +--- src/session/fd.c.orig 2016-08-19 13:28:50 UTC ++++ src/session/fd.c +@@ -10,7 +10,9 @@ + #include + #include + #include ++#if !defined(__FreeBSD__) + #include ++#endif + #include + #include "internal.h" + #include "macros.h" +@@ -135,7 +137,7 @@ recv_fd(int sock, int *out_fd, void *out + return read; + + if (message.msg_controllen == 0) +- return read; ++ return read; + + if (!(cmsg = CMSG_FIRSTHDR(&message))) + return read; +@@ -171,6 +173,7 @@ fd_open(const char *path, int flags, enu + } + + /* we will only open allowed paths */ ++#if !defined(__FreeBSD__) + #define FILTER(x, m) { x, (sizeof(x) > 32 ? 32 : sizeof(x)) - 1, m } + static struct { + const char *base; +@@ -186,14 +189,15 @@ fd_open(const char *path, int flags, enu + wlc_log(WLC_LOG_WARN, "Denying open from: %s", path); + return -1; + } ++#endif + + struct stat st; + if (stat(path, &st) < 0) +- return -1; ++ return -1; + +-#ifdef __linux__ ++#if !defined(__FreeBSD__) + if (major(st.st_rdev) != allow[type].major) +- return -1; ++ return -1; + #endif + + int fd; Added: head/x11-toolkits/wcl/files/patch-src_session_tty.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/x11-toolkits/wcl/files/patch-src_session_tty.c Sat Feb 11 16:19:13 2017 (r433888) @@ -0,0 +1,165 @@ +--- src/session/tty.c.orig 2016-08-19 13:28:50 UTC ++++ src/session/tty.c +@@ -9,27 +9,18 @@ + #include "internal.h" + #include "tty.h" + +-#if defined(__linux__) +-# define TTY_BASENAME "/dev/tty" +-# define TTY_0 "/dev/tty0" +-# include +-# include +-# include +-#elif defined(__FreeBSD__) ++#if defined(__FreeBSD__) ++# include + # include + # include + # define TTY_BASENAME "/dev/ttyv" + # define TTY_0 "/dev/ttyv0" +-# define TTY_MAJOR 0 +-# define VT_GETSTATE 0x5603 +-# define VT_ACTIVATE 0x5606 +-# define K_UNICODE 0x03 +-# define K_OFF 0x04 +-struct vt_stat { +- unsigned short v_active; /* active vt */ +- unsigned short v_signal; /* signal to send */ +- unsigned short v_state; /* vt bitmask */ +-}; ++#else ++# include ++# include ++# include ++# define TTY_BASENAME "/dev/tty" ++# define TTY_0 "/dev/tty0" + #endif + + #ifndef KDSKBMUTE +@@ -100,22 +91,22 @@ open_tty(int vt) + } + + static bool +-setup_tty(int fd, bool replace_vt) ++setup_tty(int fd, int vt, bool replace_vt) + { + if (fd < 0) + return false; + ++#if defined(__FreeBSD__) ++ wlc.vt = vt+1; ++#else + struct stat st; + if (fstat(fd, &st) == -1) + die("Could not stat tty fd"); +- + wlc.vt = minor(st.st_rdev); +- + if (major(st.st_rdev) != TTY_MAJOR || wlc.vt == 0) + die("Not a valid vt"); ++#endif + +-/* FreeBSD's new vt is still missing some bits */ +-#if defined(__linux__) + if (!replace_vt) { + int kd_mode; + if (ioctl(fd, KDGETMODE, &kd_mode) == -1) +@@ -125,18 +116,20 @@ setup_tty(int fd, bool replace_vt) + die("vt%d is already in graphics mode (%d). Is another display server running?", wlc.vt, kd_mode); + } + ++#if defined(__FreeBSD__) ++ ioctl(fd, VT_GETACTIVE, &wlc.old_state.vt); ++#else + struct vt_stat state; + if (ioctl(fd, VT_GETSTATE, &state) == -1) + die("Could not get current vt"); +- + wlc.old_state.vt = state.v_active; ++#endif + + if (ioctl(fd, VT_ACTIVATE, wlc.vt) == -1) + die("Could not activate vt%d", wlc.vt); + + if (ioctl(fd, VT_WAITACTIVE, wlc.vt) == -1) + die("Could not wait for vt%d to become active", wlc.vt); +-#endif + + if (ioctl(fd, KDGKBMODE, &wlc.old_state.kb_mode) == -1) + die("Could not get keyboard mode"); +@@ -144,7 +137,19 @@ setup_tty(int fd, bool replace_vt) + // vt will be restored from now on + wlc.tty = fd; + +-#if defined(__linux__) ++#if defined(__FreeBSD__) ++ if (ioctl(fd, KDSKBMODE, K_CODE) == -1) { ++ wlc_tty_terminate(); ++ die("Could not set keyboard mode to K_CODE"); ++ } ++ /* Put the tty into raw mode */ ++ struct termios tios; ++ if (tcgetattr(fd, &tios)) ++ die("Failed to get terminal attribute"); ++ cfmakeraw(&tios); ++ if (tcsetattr(fd, TCSANOW, &tios)) ++ die("Failed to set terminal attribute"); ++#else + if (ioctl(fd, KDSKBMUTE, 1) == -1 && ioctl(fd, KDSKBMODE, K_OFF) == -1) { + wlc_tty_terminate(); + die("Could not set keyboard mode to K_OFF"); +@@ -156,18 +161,19 @@ setup_tty(int fd, bool replace_vt) + die("Could not set console mode to KD_GRAPHICS"); + } + +-#if defined(__linux__) + struct vt_mode mode = { + .mode = VT_PROCESS, + .relsig = SIGUSR1, + .acqsig = SIGUSR2 + }; ++#if defined(__FreeBSD__) ++ mode.frsig = SIGIO; /* not used, but has to be set anyway */ ++#endif + + if (ioctl(fd, VT_SETMODE, &mode) == -1) { + wlc_tty_terminate(); + die("Could not set vt%d mode", wlc.vt); + } +-#endif + + return true; + } +@@ -230,13 +236,19 @@ wlc_tty_terminate(void) + // The ACTIVATE / WAITACTIVE may be potentially bad here. + // However, we need to make sure the vt we initially opened is also active on cleanup. + // We can't make sure this is synchronized due to unclean exits. ++ + if (ioctl(wlc.tty, VT_ACTIVATE, wlc.vt) != -1 && ioctl(wlc.tty, VT_WAITACTIVE, wlc.vt) != -1) { + wlc_log(WLC_LOG_INFO, "Restoring vt %d (0x%lx) (fd %d)", wlc.vt, wlc.old_state.kb_mode, wlc.tty); + +- if (ioctl(wlc.tty, KDSKBMUTE, 0) == -1 && +- ioctl(wlc.tty, KDSKBMODE, wlc.old_state.kb_mode) == -1 && +- ioctl(wlc.tty, KDSKBMODE, K_UNICODE) == -1) +- wlc_log(WLC_LOG_ERROR, "Failed to restore vt%d KDSKMODE", wlc.vt); ++#if defined(__FreeBSD__) ++ if (ioctl(wlc.tty, KDSKBMODE, wlc.old_state.kb_mode) == -1 && ++ ioctl(wlc.tty, KDSKBMODE, K_XLATE) == -1) ++#else ++ if (ioctl(wlc.tty, KDSKBMUTE, 0) == -1 && ++ ioctl(wlc.tty, KDSKBMODE, wlc.old_state.kb_mode) == -1 && ++ ioctl(wlc.tty, KDSKBMODE, K_UNICODE) == -1) ++#endif ++ wlc_log(WLC_LOG_ERROR, "Failed to restore vt%d KDSKMODE", wlc.vt); + + if (ioctl(wlc.tty, KDSETMODE, KD_TEXT) == -1) + wlc_log(WLC_LOG_ERROR, "Failed to restore vt%d mode to VT_AUTO", wlc.vt); +@@ -271,7 +283,7 @@ wlc_tty_init(int vt) + if (!vt && !(vt = find_vt(getenv("XDG_VTNR"), &replace_vt))) + die("Could not find vt"); + +- if (!setup_tty(open_tty(vt), replace_vt)) ++ if (!setup_tty(open_tty(vt), vt, replace_vt)) + die("Could not open tty with vt%d", vt); + + struct sigaction action = { Added: head/x11-toolkits/wcl/pkg-descr ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/x11-toolkits/wcl/pkg-descr Sat Feb 11 16:19:13 2017 (r433888) @@ -0,0 +1,3 @@ +Wayland compositor library + +WWW: https://github.com/Cloudef/wlc Added: head/x11-toolkits/wcl/pkg-plist ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/x11-toolkits/wcl/pkg-plist Sat Feb 11 16:19:13 2017 (r433888) @@ -0,0 +1,9 @@ +include/wlc/defines.h +include/wlc/geometry.h +include/wlc/wlc-render.h +include/wlc/wlc-wayland.h +include/wlc/wlc.h +lib/libwlc.so +lib/libwlc.so.0 +lib/libwlc.so.0.0.5 +libdata/pkgconfig/wlc.pc