From: Jakub Jirutka Date: Mon, 20 Dec 2021 18:52:00 +0100 Subject: [PATCH] Add support for utmps Allow to link programs that use utmpx.h with utmps by passing relevant -I and -l flags via variable UTMPX_CFLAGS and UTMPX_LIBS, respectively. The following programs use utmpx.h: last, login, lslogins, agetty, wall, write. Programs 'su' and 'runuser' include utmpx.h, but use only btmp which is not supported on Alpine. 'utmpdump' includes utmpx.h, but doesn't log anything, just parses utmp/wtmp files, so doesn't need to be linked with utmps. --- a/include/pathnames.h +++ b/include/pathnames.h @@ -214,5 +214,13 @@ #define _PATH_DEV_RFKILL "/dev/rfkill" #define _PATH_SYS_RFKILL "/sys/class/rfkill" +#ifdef UTMPS_UTMPX_H +/* override stub paths from with ones for utmps */ +# undef _PATH_UTMP +# define _PATH_UTMP UTMPX_FILE +# undef _PATH_WTMP +# define _PATH_WTMP "/var/log/wtmp" +#endif + #endif /* PATHNAMES_H */ --- a/login-utils/Makemodule.am +++ b/login-utils/Makemodule.am @@ -5,7 +5,8 @@ dist_noinst_DATA += login-utils/last.1.adoc MANLINKS += login-utils/lastb.1 last_SOURCES = login-utils/last.c lib/monotonic.c -last_LDADD = $(LDADD) libcommon.la $(REALTIME_LIBS) +last_CFLAGS = $(AM_CFLAGS) $(UTMPX_CFLAGS) +last_LDADD = $(LDADD) libcommon.la $(UTMPX_LIBS) $(REALTIME_LIBS) install-exec-hook-last: cd $(DESTDIR)$(usrbin_execdir) && ln -sf last lastb @@ -61,7 +62,9 @@ login-utils/login.c \ login-utils/logindefs.c \ login-utils/logindefs.h -login_LDADD = $(LDADD) libcommon.la -lpam +login_CFLAGS = $(AM_CFLAGS) $(UTMPX_CFLAGS) +login_LDADD = $(LDADD) libcommon.la $(UTMPX_LIBS) -lpam + if HAVE_LINUXPAM login_LDADD += -lpam_misc endif @@ -237,8 +242,8 @@ login-utils/lslogins.c \ login-utils/logindefs.c \ login-utils/logindefs.h -lslogins_LDADD = $(LDADD) libcommon.la libsmartcols.la -lslogins_CFLAGS = $(AM_CFLAGS) -I$(ul_libsmartcols_incdir) +lslogins_LDADD = $(LDADD) libcommon.la libsmartcols.la $(UTMPX_LIBS) +lslogins_CFLAGS = $(AM_CFLAGS) $(UTMPX_CFLAGS) -I$(ul_libsmartcols_incdir) if HAVE_SELINUX lslogins_LDADD += -lselinux endif --- a/term-utils/Makemodule.am +++ b/term-utils/Makemodule.am @@ -47,10 +47,11 @@ MANPAGES += term-utils/agetty.8 dist_noinst_DATA += term-utils/agetty.8.adoc agetty_SOURCES = term-utils/agetty.c +agetty_CFLAGS = $(AM_CFLAGS) $(UTMPX_CFLAGS) if USE_PLYMOUTH_SUPPORT agetty_SOURCES += lib/plymouth-ctrl.c endif -agetty_LDADD = $(LDADD) libcommon.la +agetty_LDADD = $(LDADD) libcommon.la $(UTMPX_LIBS) if BSD agetty_LDADD += -lutil endif @@ -91,9 +92,9 @@ term-utils/ttymsg.h MANPAGES += term-utils/wall.1 dist_noinst_DATA += term-utils/wall.1.adoc -wall_CFLAGS = $(SUID_CFLAGS) $(AM_CFLAGS) +wall_CFLAGS = $(SUID_CFLAGS) $(AM_CFLAGS) $(UTMPX_CFLAGS) wall_LDFLAGS = $(SUID_LDFLAGS) $(AM_LDFLAGS) -wall_LDADD = $(LDADD) libcommon.la +wall_LDADD = $(LDADD) libcommon.la $(UTMPX_LIBS) if USE_TTY_GROUP if MAKEINSTALL_DO_CHOWN install-exec-hook-wall:: @@ -111,9 +112,9 @@ MANPAGES += term-utils/write.1 dist_noinst_DATA += term-utils/write.1.adoc write_SOURCES = term-utils/write.c -write_CFLAGS = $(SUID_CFLAGS) $(AM_CFLAGS) +write_CFLAGS = $(SUID_CFLAGS) $(AM_CFLAGS) $(UTMPX_CFLAGS) write_LDFLAGS = $(SUID_LDFLAGS) $(AM_LDFLAGS) -write_LDADD = $(LDADD) libcommon.la +write_LDADD = $(LDADD) libcommon.la $(UTMPX_LIBS) if USE_TTY_GROUP if MAKEINSTALL_DO_CHOWN