Index: head/x11/ly/Makefile =================================================================== --- head/x11/ly/Makefile (revision 564127) +++ head/x11/ly/Makefile (revision 564128) @@ -1,66 +1,66 @@ # $FreeBSD$ PORTNAME= ly DISTVERSIONPREFIX= v -DISTVERSION= 0.4.0 +DISTVERSION= 0.5.0 CATEGORIES= x11 -MAINTAINER= ports@FreeBSD.org +MAINTAINER= nc@FreeBSD.org COMMENT= TUI (ncurses-like) display manager for X and Wayland LICENSE= WTFPL LICENSE_FILE= ${WRKSRC}/license.md BUILD_DEPENDS= ginstall:sysutils/coreutils USES= gmake localbase xorg USE_GITHUB= yes GH_ACCOUNT= cylgom GH_TUPLE= cylgom:argoat:36c41f09ecc2a10c9acf35e4194e08b6fa10cf45:argoat/sub/argoat \ cylgom:testoasterror:71620b47872b5535f87c908883576d73153a6911:testoasterror/sub/argoat/sub/testoasterror \ cylgom:configator:8227b3a835bf4c7e50a57e4ad6aff620ba0dc349:configator/sub/configator \ cylgom:ctypes:5dd979d3644ab0c85ca14e72b61e6d3d238d432b:ctypes/sub/ctypes \ cylgom:dragonfail:6b40d1f8b7f6dda9746e688666af623dfbcceb94:dragonfail/sub/dragonfail \ cylgom:termbox_next:2312da153e44face7bb45aa2798ec284289c17ca:termbox_next/sub/termbox_next USE_XORG= xcb MAKEFILE= makefile MAKE_ARGS= CC="${CC}" \ DISTVERSIONFULL="${DISTVERSIONFULL}" ALL_TARGET= final BINARY_ALIAS= install=ginstall SUB_FILES= pkg-message _GITDIR= ${WRKDIR}/${GH_PROJECT}-git post-patch: # Note to maintainers: patches can be regenerated with # "make clean extract do-patch makepatch" (YMMV). @${REINPLACE_CMD} "s|%%ETCDIR%%|${ETCDIR}|g" ${WRKSRC}/src/config.c @${REINPLACE_CMD} -e "s|%%ETCDIR%%|${ETCDIR}|g" \ -e "s|%%LOCALBASE%%|${LOCALBASE}|g" \ ${WRKSRC}/res/config.ini @${REINPLACE_CMD} -e "s|%%LOCALBASE%%|${LOCALBASE}|g" \ ${WRKSRC}/res/xsetup.sh post-install: @${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/ly .for _f in config.ini xsetup.sh wsetup.sh @${MV} ${STAGEDIR}${ETCDIR}/${_f} \ ${STAGEDIR}${ETCDIR}/${_f}.sample .endfor # Target for maintainers. Use this target to regenerate GH_TUPLE for Git # submodules used by the project (and project's dependencies). _git-submodules-to-gh-tuple: ${RM} -r ${_GITDIR} git clone https://github.com/${GH_ACCOUNT}/${GH_PROJECT} ${_GITDIR} git -C ${_GITDIR} checkout ${GH_TAGNAME} ${REINPLACE_CMD} 's/make github/${MAKE_CMD} github/g' ${_GITDIR}/makefile ${MAKE_CMD} -C ${_GITDIR} github git -C ${_GITDIR} submodule status --recursive | cut -c 2- | \ ${AWK} -f ${FILESDIR}/git-submodules-to-gh-tuple.awk .include Index: head/x11/ly/distinfo =================================================================== --- head/x11/ly/distinfo (revision 564127) +++ head/x11/ly/distinfo (revision 564128) @@ -1,15 +1,15 @@ -TIMESTAMP = 1573652164 -SHA256 (cylgom-ly-v0.4.0_GH0.tar.gz) = c4e505be200d54679f27929cffb1f4625c20ab51e8b6ffe7c06b3bccff5fb40d -SIZE (cylgom-ly-v0.4.0_GH0.tar.gz) = 18807 +TIMESTAMP = 1612242690 +SHA256 (cylgom-ly-v0.5.0_GH0.tar.gz) = 5311d77a1f9e5e827adc26e7bdf4a6dadb5ada0fa7d85b451b35231cb6d84b6d +SIZE (cylgom-ly-v0.5.0_GH0.tar.gz) = 20355 SHA256 (cylgom-argoat-36c41f09ecc2a10c9acf35e4194e08b6fa10cf45_GH0.tar.gz) = 5c284cae748b1cec4eef311845f53ad673f91996ec425c6e323f0c40e829e77f SIZE (cylgom-argoat-36c41f09ecc2a10c9acf35e4194e08b6fa10cf45_GH0.tar.gz) = 5497 SHA256 (cylgom-testoasterror-71620b47872b5535f87c908883576d73153a6911_GH0.tar.gz) = bffa1100ffbb7d541a16a9a543e216748fe6f6264fd2b9137738cebcf68d3e8c SIZE (cylgom-testoasterror-71620b47872b5535f87c908883576d73153a6911_GH0.tar.gz) = 3360 SHA256 (cylgom-configator-8227b3a835bf4c7e50a57e4ad6aff620ba0dc349_GH0.tar.gz) = bde1826acb80092bd551985082dc872c7f3e48e03132c377f0e5cdd2f9f331e3 SIZE (cylgom-configator-8227b3a835bf4c7e50a57e4ad6aff620ba0dc349_GH0.tar.gz) = 4501 SHA256 (cylgom-ctypes-5dd979d3644ab0c85ca14e72b61e6d3d238d432b_GH0.tar.gz) = 778189ee022a0ad97073372681fb92a7b2a1ecc5a242e99b1f23745f084ee3e1 SIZE (cylgom-ctypes-5dd979d3644ab0c85ca14e72b61e6d3d238d432b_GH0.tar.gz) = 1242 SHA256 (cylgom-dragonfail-6b40d1f8b7f6dda9746e688666af623dfbcceb94_GH0.tar.gz) = c185f739e392313c08b0d5fd27e93891b89c36b7b49b83570b601b9cbfbddae1 SIZE (cylgom-dragonfail-6b40d1f8b7f6dda9746e688666af623dfbcceb94_GH0.tar.gz) = 3348 SHA256 (cylgom-termbox_next-2312da153e44face7bb45aa2798ec284289c17ca_GH0.tar.gz) = b788c86e1454c32cd218d0478a87def0a4d1322fef407885359d1ed0c343b045 SIZE (cylgom-termbox_next-2312da153e44face7bb45aa2798ec284289c17ca_GH0.tar.gz) = 23558 Index: head/x11/ly/files/patch-makefile =================================================================== --- head/x11/ly/files/patch-makefile (revision 564127) +++ head/x11/ly/files/patch-makefile (revision 564128) @@ -1,47 +1,47 @@ ---- makefile.orig 2019-09-21 16:00:16 UTC +--- makefile.orig 2020-02-03 07:51:05 UTC +++ makefile @@ -1,9 +1,9 @@ NAME = ly CC = gcc FLAGS = -std=c99 -pedantic -g --FLAGS+= -Wall -Wno-unused-parameter -Wextra -Werror=vla -Werror -+FLAGS+= -Wall -Wno-unused-parameter -Wextra -Werror=vla +-FLAGS+= -Wall -Wextra -Werror=vla -Wno-unused-parameter ++FLAGS+= -Wall -Wextra -Wno-unused-parameter #FLAGS+= -DDEBUG -FLAGS+= -DGIT_VERSION_STRING=\"$(shell git describe --long --tags | sed 's/\([^-]*-g\)/r\1/;s/-/./g')\" +FLAGS+= -DGIT_VERSION_STRING=\"${DISTVERSIONFULL}\" LINK = -lpam -lxcb VALGRIND = --show-leak-kinds=all --track-origins=yes --leak-check=full --suppressions=../res/valgrind.supp CMD = ./$(NAME) @@ -12,6 +12,10 @@ OS:= $(shell uname -s) ifeq ($(OS), Linux) FLAGS+= -D_DEFAULT_SOURCE endif +ifeq ($(OS), FreeBSD) + FLAGS+= -D_DEFAULT_SOURCE ${CPPFLAGS} ${CFLAGS} + LINK+= ${LIBS} +endif BIND = bin OBJD = obj -@@ -68,14 +72,13 @@ leakgrind: $(BIND)/$(NAME) +@@ -71,14 +75,13 @@ leakgrind: $(BIND)/$(NAME) install: $(BIND)/$(NAME) @echo "installing" - @install -dZ ${DESTDIR}/etc/ly - @install -DZ $(BIND)/$(NAME) -t ${DESTDIR}/usr/bin -- @install -DZ $(RESD)/xsetup.sh -t ${DESTDIR}/etc/ly -- @install -DZ $(RESD)/wsetup.sh -t ${DESTDIR}/etc/ly - @install -DZ $(RESD)/config.ini -t ${DESTDIR}/etc/ly -- @install -dZ ${DESTDIR}/etc/ly/lang -- @install -DZ $(RESD)/lang/* -t ${DESTDIR}/etc/ly/lang +- @install -DZ $(RESD)/xsetup.sh -t $(DATADIR) +- @install -DZ $(RESD)/wsetup.sh -t $(DATADIR) +- @install -dZ $(DATADIR)/lang +- @install -DZ $(RESD)/lang/* -t $(DATADIR)/lang - @install -DZ $(RESD)/ly.service -t ${DESTDIR}/usr/lib/systemd/system + @install -dZ ${DESTDIR}${PREFIX}/etc/ly + @install -DZ $(BIND)/$(NAME) -t ${DESTDIR}${PREFIX}/bin ++ @install -DZ $(RESD)/config.ini -t ${DESTDIR}${PREFIX}/etc/ly + @install -DZ $(RESD)/xsetup.sh -t ${DESTDIR}${PREFIX}/etc/ly + @install -DZ $(RESD)/wsetup.sh -t ${DESTDIR}${PREFIX}/etc/ly -+ @install -DZ $(RESD)/config.ini -t ${DESTDIR}${PREFIX}/etc/ly + @install -dZ ${DESTDIR}${PREFIX}/etc/ly/lang + @install -DZ $(RESD)/lang/* -t ${DESTDIR}${PREFIX}/etc/ly/lang - uninstall: - @echo "uninstalling" + installnoconf: $(BIND)/$(NAME) + @echo "installing without the configuration file" Index: head/x11/ly/files/patch-res_config.ini =================================================================== --- head/x11/ly/files/patch-res_config.ini (revision 564127) +++ head/x11/ly/files/patch-res_config.ini (revision 564128) @@ -1,69 +1,71 @@ ---- res/config.ini.orig 2019-06-26 21:11:33 UTC -+++ res/config.ini +--- res/config.ini.orig 2020-02-02 23:51:05.000000000 -0800 ++++ res/config.ini 2021-02-02 19:37:58.212398000 -0800 @@ -1,3 +1,5 @@ +# This is a FreeBSD-ready patched version of the upstream configuration file. + # animation enabled #animate = false #animate = true -@@ -52,12 +54,15 @@ +@@ -52,12 +54,14 @@ # cookie generator #mcookie_cmd = /usr/bin/mcookie -+# startx uses the same replacement for mcookie. +mcookie_cmd = /usr/bin/openssl rand -hex 16 # event timeout in milliseconds #min_refresh_delta = 5 # default path - #path = /sbin:/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/env -+path = /sbin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/bin/env + #path = /sbin:/bin:/usr/local/sbin:/usr/local/bin:/usr/bin ++path = /sbin:/bin:%%LOCALBASE%%/sbin:%%LOCALBASE%%/bin:/usr/sbin:/usr/bin:/usr/bin/env # command executed when pressing F2 #restart_cmd = /sbin/shutdown -r now -@@ -67,12 +72,14 @@ +@@ -67,12 +71,14 @@ # file in which to save and load the default desktop and login #save_file = /etc/ly/save +save_file = %%ETCDIR%%/save # service name (pam needs this set to login) #service_name = login # command executed when pressing F1 #shutdown_cmd = /sbin/shutdown -a now +shutdown_cmd = /sbin/shutdown -p now # terminal reset command (tput is faster) #term_reset_cmd = /usr/bin/tput reset -@@ -80,20 +87,29 @@ +@@ -80,23 +86,32 @@ # tty in use #tty = 2 +# vt in use by X or Wayland +#vt = 9 + # wayland setup command #wayland_cmd = /etc/ly/wsetup.sh +wayland_cmd = %%ETCDIR%%/wsetup.sh + + # add wayland specifier to session names + #wayland_specifier = false # wayland desktop environments #waylandsessions = /usr/share/wayland-sessions +waylandsessions = %%LOCALBASE%%/share/wayland-sessions # xorg server command #x_cmd = /usr/bin/X +x_cmd = %%LOCALBASE%%/bin/X # xorg setup command #x_cmd_setup = /etc/ly/xsetup.sh +x_cmd_setup = %%ETCDIR%%/xsetup.sh # xorg xauthority edition tool #xauth_cmd = /usr/bin/xauth +xauth_cmd = %%LOCALBASE%%/bin/xauth # xorg desktop environments #xsessions = /usr/share/xsessions +xsessions = %%LOCALBASE%%/share/xsessions Index: head/x11/ly/files/patch-res_xsetup.sh =================================================================== --- head/x11/ly/files/patch-res_xsetup.sh (revision 564127) +++ head/x11/ly/files/patch-res_xsetup.sh (revision 564128) @@ -1,41 +1,41 @@ ---- res/xsetup.sh.orig 2019-11-13 13:46:11 UTC +--- res/xsetup.sh.orig 2020-02-03 07:51:05 UTC +++ res/xsetup.sh @@ -55,8 +55,8 @@ esac [ -f $HOME/.xprofile ] && . $HOME/.xprofile # run all system xinitrc shell scripts. -if [ -d /etc/X11/xinit/xinitrc.d ]; then - for i in /etc/X11/xinit/xinitrc.d/* ; do +if [ -d %%LOCALBASE%%/etc/X11/xinit/xinitrc.d ]; then + for i in %%LOCALBASE%%/etc/X11/xinit/xinitrc.d/* ; do if [ -x "$i" ]; then . "$i" fi @@ -66,8 +66,8 @@ fi # Load Xsession scripts # OPTIONFILE, USERXSESSION, USERXSESSIONRC and ALTUSERXSESSION are required # by the scripts to work -xsessionddir="/etc/X11/Xsession.d" -OPTIONFILE=/etc/X11/Xsession.options +xsessionddir="%%LOCALBASE%%/etc/X11/Xsession.d" +OPTIONFILE=%%LOCALBASE%%/etc/X11/Xsession.options USERXSESSION=$HOME/.xsession USERXSESSIONRC=$HOME/.xsessionrc ALTUSERXSESSION=$HOME/.Xsession @@ -82,12 +82,12 @@ if [ -d "$xsessionddir" ]; then done fi -if [ -d /etc/X11/Xresources ]; then - for i in /etc/X11/Xresources/*; do +if [ -d %%LOCALBASE%%/etc/X11/Xresources ]; then + for i in %%LOCALBASE%%/etc/X11/Xresources/*; do [ -f $i ] && xrdb -merge $i done -elif [ -f /etc/X11/Xresources ]; then - xrdb -merge /etc/X11/Xresources +elif [ -f %%LOCALBASE%%/etc/X11/Xresources ]; then + xrdb -merge %%LOCALBASE%%/etc/X11/Xresources fi [ -f $HOME/.Xresources ] && xrdb -merge $HOME/.Xresources Index: head/x11/ly/files/patch-src_config.c =================================================================== --- head/x11/ly/files/patch-src_config.c (revision 564127) +++ head/x11/ly/files/patch-src_config.c (revision 564128) @@ -1,38 +1,38 @@ ---- src/config.c.orig 2019-06-26 21:11:33 UTC -+++ src/config.c +--- src/config.c.orig 2020-02-02 23:51:05.000000000 -0800 ++++ src/config.c 2021-02-02 19:41:09.071495000 -0800 @@ -9,8 +9,8 @@ #include #ifndef DEBUG -- #define INI_LANG "/etc/ly/lang/%s.ini" +- #define INI_LANG DATADIR "/lang/%s.ini" - #define INI_CONFIG "/etc/ly/config.ini" + #define INI_LANG "%%ETCDIR%%/lang/%s.ini" + #define INI_CONFIG "%%ETCDIR%%/config.ini" #else #define INI_LANG "../res/lang/%s.ini" #define INI_CONFIG "../res/config.ini" -@@ -179,6 +179,7 @@ void config_load() +@@ -183,6 +183,7 @@ {"shutdown_cmd", &config.shutdown_cmd, config_handle_str}, {"term_reset_cmd", &config.term_reset_cmd, config_handle_str}, {"tty", &config.tty, config_handle_u8}, + {"vt", &config.vt, config_handle_u8}, {"wayland_cmd", &config.wayland_cmd, config_handle_str}, + {"wayland_specifier", &config.wayland_specifier, config_handle_bool}, {"waylandsessions", &config.waylandsessions, config_handle_str}, - {"x_cmd", &config.x_cmd, config_handle_str}, -@@ -187,7 +188,7 @@ void config_load() +@@ -192,7 +193,7 @@ {"xsessions", &config.xsessions, config_handle_str}, }; - uint16_t map_len[] = {34}; + uint16_t map_len[] = {35}; struct configator_param* map[] = { map_no_section, -@@ -284,6 +285,7 @@ void config_defaults() +@@ -289,6 +290,7 @@ config.shutdown_cmd = strdup("/sbin/shutdown -a now"); config.term_reset_cmd = strdup("/usr/bin/tput reset"); config.tty = 2; + config.vt = 9; - config.wayland_cmd = strdup("/etc/ly/wsetup.sh"); + config.wayland_cmd = strdup(DATADIR "/wsetup.sh"); + config.wayland_specifier = false; config.waylandsessions = strdup("/usr/share/wayland-sessions"); - config.x_cmd = strdup("/usr/bin/X"); Index: head/x11/ly/files/patch-src_config.h =================================================================== --- head/x11/ly/files/patch-src_config.h (revision 564127) +++ head/x11/ly/files/patch-src_config.h (revision 564128) @@ -1,10 +1,10 @@ ---- src/config.h.orig 2019-11-12 22:29:26 UTC +--- src/config.h.orig 2020-02-03 07:51:05 UTC +++ src/config.h -@@ -82,6 +82,7 @@ struct config +@@ -88,6 +88,7 @@ struct config char* shutdown_cmd; char* term_reset_cmd; u8 tty; + u8 vt; char* wayland_cmd; + bool wayland_specifier; char* waylandsessions; - char* x_cmd; Index: head/x11/ly/files/patch-src_login.c =================================================================== --- head/x11/ly/files/patch-src_login.c (revision 564127) +++ head/x11/ly/files/patch-src_login.c (revision 564128) @@ -1,30 +1,104 @@ ---- src/login.c.orig 2019-09-21 16:00:16 UTC +--- src/login.c.orig 2020-02-03 07:51:05 UTC +++ src/login.c -@@ -239,9 +239,15 @@ void env_init(struct passwd* pwd, const char* display_ +@@ -18,7 +18,7 @@ + #include + #include + #include +-#include ++#include + #include + int get_free_display() +@@ -243,9 +243,15 @@ void env_init(struct passwd* pwd) + void env_xdg(const char* tty_id, const enum display_server display_server) { - char user[15]; - snprintf(user, 15, "/run/user/%d", getuid()); - setenv("XDG_RUNTIME_DIR", user, 0); + // The "/run/user/%d" directory is not available on FreeBSD. It is much + // better to stick to the defaults and let applications using + // XDG_RUNTIME_DIR to fall back to directories inside user's home + // directory. + /* + * char user[15]; + * snprintf(user, 15, "/run/user/%d", getuid()); + * setenv("XDG_RUNTIME_DIR", user, 0); + */ setenv("XDG_SESSION_CLASS", "user", 0); setenv("XDG_SEAT", "seat0", 0); setenv("XDG_VTNR", tty_id, 0); -@@ -553,7 +559,7 @@ void auth( +@@ -271,8 +277,8 @@ void env_xdg(const char* tty_id, const enum display_se + } + } - snprintf(display_name, 3, ":%d", display_id); +-void add_utmp_entry( +- struct utmp *entry, ++void add_utmpx_entry( ++ struct utmpx *entry, + char *username, + pid_t display_pid + ) { +@@ -283,24 +289,23 @@ void add_utmp_entry( + /* only correct for ptys named /dev/tty[pqr][0-9a-z] */ + strcpy(entry->ut_id, ttyname(STDIN_FILENO) + strlen("/dev/tty")); + +- time((long int *) &entry->ut_time); ++ time((long int *) &entry->ut_tv.tv_sec); + +- strncpy(entry->ut_user, username, UT_NAMESIZE); +- memset(entry->ut_host, 0, UT_HOSTSIZE); +- entry->ut_addr = 0; +- setutent(); ++ strncpy(entry->ut_user, username, sizeof(entry->ut_user)); ++ memset(entry->ut_host, 0, sizeof(entry->ut_host)); ++ setutxent(); + +- pututline(entry); ++ pututxline(entry); + } + +-void remove_utmp_entry(struct utmp *entry) { ++void remove_utmpx_entry(struct utmpx *entry) { + entry->ut_type = DEAD_PROCESS; +- memset(entry->ut_line, 0, UT_LINESIZE); +- entry->ut_time = 0; +- memset(entry->ut_user, 0, UT_NAMESIZE); +- setutent(); +- pututline(entry); +- endutent(); ++ memset(entry->ut_line, 0, sizeof(entry->ut_line)); ++ entry->ut_tv.tv_sec = 0; ++ memset(entry->ut_user, 0, sizeof(entry->ut_user)); ++ setutxent(); ++ pututxline(entry); ++ endutxent(); + } + + void xauth(const char* display_name, const char* shell, const char* dir) +@@ -581,7 +586,7 @@ void auth( + char vt[5]; + snprintf(tty_id, 3, "%d", config.tty); - snprintf(vt, 5, "vt%d", config.tty); + snprintf(vt, 5, "vt%d", config.vt); // set env - env_init(pwd, display_name); + env_init(pwd); +@@ -636,13 +641,13 @@ void auth( + } + + // add utmp audit +- struct utmp entry; +- add_utmp_entry(&entry, pwd->pw_name, pid); ++ struct utmpx entry; ++ add_utmpx_entry(&entry, pwd->pw_name, pid); + + // wait for the session to stop + int status; + waitpid(pid, &status, 0); +- remove_utmp_entry(&entry); ++ remove_utmpx_entry(&entry); + + reset_terminal(pwd); + Index: head/x11/ly/pkg-plist =================================================================== --- head/x11/ly/pkg-plist (revision 564127) +++ head/x11/ly/pkg-plist (revision 564128) @@ -1,6 +1,7 @@ bin/ly @sample %%ETCDIR%%/config.ini.sample %%ETCDIR%%/lang/en.ini +%%ETCDIR%%/lang/es.ini %%ETCDIR%%/lang/fr.ini @sample %%ETCDIR%%/wsetup.sh.sample @sample %%ETCDIR%%/xsetup.sh.sample