diff --git a/x11/lightdm/Makefile b/x11/lightdm/Makefile index 3be758e97f2e..737751f9d759 100644 --- a/x11/lightdm/Makefile +++ b/x11/lightdm/Makefile @@ -1,94 +1,94 @@ PORTNAME= lightdm PORTVERSION= 1.32.0 -PORTREVISION= 5 +PORTREVISION= 6 CATEGORIES= x11 MASTER_SITES= https://github.com/canonical/${PORTNAME}/releases/download/${DISTVERSIONPREFIX}${DISTVERSION}/ MAINTAINER= desktop@FreeBSD.org COMMENT= Lightweight Display Manager WWW= https://github.com/canonical/lightdm # library/bindings are LGPLv2 or LGPLv3, the rest GPLv3+ LICENSE= GPLv3 LGPL20 LGPL3 LICENSE_COMB= multi LICENSE_FILE_GPLv3= ${WRKSRC}/COPYING.GPL3 LICENSE_FILE_LGPL20= ${WRKSRC}/COPYING.LGPL2 LICENSE_FILE_LGPL3= ${WRKSRC}/COPYING.LGPL3 BUILD_DEPENDS= itstool:textproc/itstool LIB_DEPENDS= libgcrypt.so:security/libgcrypt \ libxklavier.so:x11/libxklavier RUN_DEPENDS= accountsservice>=0:sysutils/accountsservice \ ck-launch-session:sysutils/consolekit2 USES= autoreconf compiler:c++11-lang cpe gettext-tools gmake gnome \ libtool localbase pathfix pkgconfig tar:xz xorg CPE_VENDOR= ${PORTNAME}_project USE_CXXSTD= c++11 USE_GNOME= glib20 intltool USE_LDCONFIG= yes USE_RC_SUBR= lightdm USE_XORG= x11 xcb xdmcp GNU_CONFIGURE= yes GNU_CONFIGURE_MANPREFIX=${PREFIX}/share # tests causes PAM errors CONFIGURE_ARGS= --disable-libaudit \ --disable-tests INSTALL_TARGET= install-strip LIBS= -lutil CONFLICTS_INSTALL= sddm PORTSCOUT= limitw:1,even SUB_FILES= Xsession USERS= lightdm GROUPS= lightdm video OPTIONS_DEFINE= DOCS NLS QT5 VAPI OPTIONS_DEFAULT= VAPI OPTIONS_SUB= yes DOCS_BUILD_DEPENDS= ${LOCALBASE}/share/aclocal/yelp.m4:textproc/yelp-tools \ gtkdoc-check:textproc/gtk-doc DOCS_CONFIGURE_ON= --enable-gtk-doc NLS_USES= gettext-runtime NLS_CONFIGURE_ENABLE= nls QT5_USES= qt:5 QT5_USE= QT=buildtools,core,dbus,gui QT5_CONFIGURE_ENABLE= liblightdm-qt5 VAPI_USES= vala:build VAPI_USE= GNOME=introspection:build VAPI_CONFIGURE_ENABLE= vala post-patch: @${REINPLACE_CMD} -e 's,%%PREFIX%%,${PREFIX},' \ ${WRKSRC}/data/lightdm.conf post-patch-DOCS-off: @${REINPLACE_CMD} -e '/^GTK_DOC_CHECK/d' \ -e '/^YELP_HELP_INIT/d' \ -e '/^doc\/Makefile/d' \ -e '/^help\/Makefile/d' \ ${WRKSRC}/configure.ac @${REINPLACE_CMD} -e '/^SUBDIRS/s/ doc help//' \ ${WRKSRC}/Makefile.am post-install: ${RM} -r ${STAGEDIR}${PREFIX}/etc/init ${INSTALL_SCRIPT} ${WRKDIR}/Xsession ${STAGEDIR}${ETCDIR} ${MV} ${STAGEDIR}${ETCDIR}/keys.conf ${STAGEDIR}${ETCDIR}/keys.conf.sample ${MV} ${STAGEDIR}${ETCDIR}/lightdm.conf ${STAGEDIR}${ETCDIR}/lightdm.conf.sample ${MV} ${STAGEDIR}${ETCDIR}/users.conf ${STAGEDIR}${ETCDIR}/users.conf.sample ${MV} ${STAGEDIR}${PREFIX}/etc/pam.d/lightdm ${STAGEDIR}${PREFIX}/etc/pam.d/lightdm.sample ${MV} ${STAGEDIR}${PREFIX}/etc/pam.d/lightdm-autologin ${STAGEDIR}${PREFIX}/etc/pam.d/lightdm-autologin.sample ${MV} ${STAGEDIR}${PREFIX}/etc/pam.d/lightdm-greeter ${STAGEDIR}${PREFIX}/etc/pam.d/lightdm-greeter.sample ${MKDIR} ${STAGEDIR}/var/cache/lightdm \ ${STAGEDIR}/var/log/lightdm \ ${STAGEDIR}/var/run/lightdm ${MKDIR} ${STAGEDIR}${PREFIX}/share/xgreeters @(cd ${STAGEDIR}${PREFIX}/share/xgreeters && \ ${LN} -sf lightdm-gtk-greeter.desktop default.desktop) .include diff --git a/x11/lightdm/files/patch-src_vt.c b/x11/lightdm/files/patch-src_vt.c new file mode 100644 index 000000000000..a41bfc74fd41 --- /dev/null +++ b/x11/lightdm/files/patch-src_vt.c @@ -0,0 +1,99 @@ +--- src/vt.c.orig 2019-08-04 22:29:55 UTC ++++ src/vt.c +@@ -16,6 +16,9 @@ + #include + #include + #include ++#ifdef __FreeBSD__ ++#include ++#endif + #ifdef __linux__ + #include + #endif +@@ -23,31 +26,56 @@ + #include "vt.h" + #include "configuration.h" + ++#if defined(__FreeBSD__) ++#define CONSOLE "/dev/console" ++#else ++#define CONSOLE "/dev/tty0" ++#endif ++ + static GList *used_vts = NULL; + + static gint + open_tty (void) + { +- int fd = g_open ("/dev/tty0", O_RDONLY | O_NOCTTY, 0); ++ int fd = g_open (CONSOLE, O_RDONLY | O_NOCTTY, 0); + if (fd < 0) +- g_warning ("Error opening /dev/tty0: %s", strerror (errno)); ++ g_warning ("Error opening " CONSOLE ": %s", strerror (errno)); + return fd; + } + + gboolean + vt_can_multi_seat (void) + { ++#if defined(__linux__) + /* Quick check to see if we can multi seat. This is intentionally the + same check logind does, just without actually reading from the files. + Existence will prove whether we have CONFIG_VT built into the kernel. */ + return access ("/dev/tty0", F_OK) == 0 && + access ("/sys/class/tty/tty0/active", F_OK) == 0; ++#else ++ return FALSE; ++#endif + } + + gint + vt_get_active (void) + { +-#ifdef __linux__ ++#if defined(__FreeBSD__) ++ int active, res; ++ int tty_fd = open_tty (); ++ ++ if (tty_fd >= 0) ++ { ++ res = ioctl (tty_fd, VT_GETACTIVE, &active); ++ close (tty_fd); ++ if (res == 0) ++ return active; ++ ++ g_warning ("Error using VT_GETACTIVE on " CONSOLE ": %s", strerror (errno)); ++ } ++ ++ return -1; ++#elif defined(__linux__) + /* Pretend always active */ + if (getuid () != 0) + return 1; +@@ -73,7 +101,7 @@ vt_set_active (gint number) + void + vt_set_active (gint number) + { +-#ifdef __linux__ ++#if defined(__FreeBSD__) || defined(__linux__) + g_debug ("Activating VT %d", number); + + /* Pretend always active */ +@@ -86,7 +114,7 @@ vt_set_active (gint number) + int n = number; + if (ioctl (tty_fd, VT_ACTIVATE, n) < 0) + { +- g_warning ("Error using VT_ACTIVATE %d on /dev/tty0: %s", n, strerror (errno)); ++ g_warning ("Error using VT_ACTIVATE %d on " CONSOLE ": %s", n, strerror (errno)); + close (tty_fd); + return; + } +@@ -101,7 +129,7 @@ vt_set_active (gint number) + { + if (errno == EINTR) + continue; +- g_warning ("Error using VT_WAITACTIVE %d on /dev/tty0: %s", n, strerror (errno)); ++ g_warning ("Error using VT_WAITACTIVE %d on " CONSOLE ": %s", n, strerror (errno)); + } + break; + }