git: ae1787aab23e - main - shells/zsh: Add BASE_ZSH option

From: Yasuhiro Kimura <yasu_at_FreeBSD.org>
Date: Fri, 26 Nov 2021 00:55:10 UTC
The branch main has been updated by yasu:

URL: https://cgit.FreeBSD.org/ports/commit/?id=ae1787aab23e44e369dbb0cc814e8318c6f86e0d

commit ae1787aab23e44e369dbb0cc814e8318c6f86e0d
Author:     Yasuhiro Kimura <yasu@FreeBSD.org>
AuthorDate: 2021-10-12 16:47:27 +0000
Commit:     Yasuhiro Kimura <yasu@FreeBSD.org>
CommitDate: 2021-11-26 00:53:36 +0000

    shells/zsh: Add BASE_ZSH option
    
    Add new option BASE_ZSH that makes zsh and rzsh also available as
    /bin/zsh and /bin/rzsh.
    
    Under ports flamework everything is installed under /usr/local unless
    custom prefix is used. And according to it zsh is installed as
    /usr/local/bin/zsh. But on most Linux based OSes zsh is installed as
    /bin/zsh. And it causes problem if user's account information is
    shared between FreeBSD and Linux by using such tools as LDAP or NIS as
    account information also includes absolute path of user's login shell.
    To work around it I have created /bin/zsh as symbolic link referencing
    /usr/local/bin/zsh and also edited /etc/shells to add /bin/zsh to it
    every time I set up new FreeBSD system. But it's quite bothersome and
    that is why I add new BASE_ZSH option.
    
    While I'm here,
    
    * Pet portclippy
    * Re-format Makefile with portfmt
    
    PR:             259109
    Proposed by:    Chris Hutchinson (more intuitive option name)
    Approved by:    maintainer timeout (> 2 weeks)
---
 shells/zsh/Makefile  | 80 ++++++++++++++++++++++++++++------------------------
 shells/zsh/pkg-plist |  2 ++
 2 files changed, 45 insertions(+), 37 deletions(-)

diff --git a/shells/zsh/Makefile b/shells/zsh/Makefile
index 2298ee440644..3d107054fe63 100644
--- a/shells/zsh/Makefile
+++ b/shells/zsh/Makefile
@@ -17,69 +17,69 @@ LICENSE_NAME=	ZSH license
 LICENSE_FILE=	${WRKSRC}/LICENCE
 LICENSE_PERMS=	dist-mirror dist-sell pkg-mirror pkg-sell auto-accept
 
-MAKE_JOBS_UNSAFE=	yes
-
-USES=		autoreconf cpe iconv localbase:ldflags ncurses shebangfix tar:xz
+USES=		autoreconf cpe iconv localbase:ldflags ncurses shebangfix \
+		tar:xz
 
+SHEBANG_FILES=	Functions/Calendar/* Functions/Misc/*
 SHEBANG_LANG=	zsh
-zsh_OLD_CMD=	zsh	# shebang appears as /bin/zsh and just zsh
-SHEBANG_FILES=	Functions/Calendar/* \
-		Functions/Misc/*
-
-CONFIGURE_ARGS=	--with-tcsetpgrp \
-		--enable-function-subdirs \
-		--enable-maildir-support \
-		--enable-multibyte \
-		--enable-zsh-secure-free \
-		--sysconfdir=${PREFIX}/etc
-
+zsh_OLD_CMD=	zsh # shebang appears as /bin/zsh and just zsh
+
+GNU_CONFIGURE=		yes
+CONFIGURE_ARGS=		--enable-function-subdirs \
+			--enable-maildir-support \
+			--enable-multibyte \
+			--enable-zsh-secure-free \
+			--sysconfdir=${PREFIX}/etc \
+			--with-tcsetpgrp
 # fix PREFIX != LOCALBASE
-CONFIGURE_ARGS+=--disable-site-fndir \
-		--enable-additional-fpath=${DATADIR}/site-functions
+CONFIGURE_ARGS+=	--disable-site-fndir \
+			--enable-additional-fpath=${DATADIR}/site-functions
+CONFIGURE_ENV+=		ac_cv_header_sys_capability_h=no \
+			zsh_cv_sys_path_dev_fd=no
 
-CONFIGURE_ENV+=	zsh_cv_sys_path_dev_fd=no \
-		ac_cv_header_sys_capability_h=no
+MAKE_JOBS_UNSAFE=	yes
+TEST_TARGET=	test
 
-GNU_CONFIGURE=	yes
 CPPFLAGS+=	-DBOOL_DEFINED
 LDFLAGS+=	-Wl,--as-needed
-TEST_TARGET=	test
 
-OPTIONS_DEFINE=	DEBUG ETCDIR GDBM MEM PCRE STATIC \
-		DOCS EXAMPLES
+SUB_FILES=	pkg-message
+
+PLIST_SUB+=	ZSH_VER="${ZSH_VER}"
+PORTDOCS=	*
+
+OPTIONS_DEFINE=	BASE_ZSH DEBUG DOCS ETCDIR EXAMPLES GDBM MEM PCRE STATIC
 OPTIONS_SUB=	yes
 
+BASE_ZSH_DESC=	Make zsh and rzsh also available as /bin/zsh and /bin/rzsh
 ETCDIR_DESC=	System-wide defaults in /etc (instead of $${PREFIX}/etc)
 GDBM_DESC=	Enable GDBM support (GPL)
 MEM_DESC=	Enable zsh-mem options
 
-GDBM_LIB_DEPENDS=	libgdbm.so:databases/gdbm
-PCRE_LIB_DEPENDS=	libpcre.so:devel/pcre
-
 DEBUG_CONFIGURE_ENABLE=	zsh-debug
+DOCS_DISTFILES=		${DISTNAME}-doc${EXTRACT_SUFX}:doc
 ETCDIR_CONFIGURE_OFF=	--enable-etcdir=${PREFIX}/etc
+GDBM_LIB_DEPENDS=	libgdbm.so:databases/gdbm
 GDBM_CONFIGURE_ENABLE=	gdbm
 MEM_CONFIGURE_ENABLE=	zsh-mem
+PCRE_LIB_DEPENDS=	libpcre.so:devel/pcre
 PCRE_CONFIGURE_ENABLE=	pcre
 
 ## Some modules can only be built as a shared library.
 ## If you enable STATIC, you may get strange errors if you, a script,
 ## or a plugin tries to use the regex module.
+STATIC_CONFIGURE_ON=	--disable-dynamic \
+			--with-term-lib="tinfow tinfo"
+STATIC_CONFIGURE_OFF=	--enable-dynamic \
+			--with-term-lib="ncursesw ncurses"
 STATIC_LDFLAGS=		-static
-STATIC_CONFIGURE_ON=	--disable-dynamic --with-term-lib="tinfow tinfo"
-STATIC_CONFIGURE_OFF=	--enable-dynamic  --with-term-lib="ncursesw ncurses"
 
-DOCS=		LICENCE META-FAQ README \
-		Etc/BUGS Etc/CONTRIBUTORS Etc/FAQ Etc/completion-style-guide \
-		Doc/zsh*.html Doc/zsh.dvi
-DOCS_DISTFILES=	${DISTNAME}-doc${EXTRACT_SUFX}:doc
+DOCS=		LICENCE META-FAQ README Etc/BUGS Etc/CONTRIBUTORS Etc/FAQ \
+		Etc/completion-style-guide Doc/zsh*.html Doc/zsh.dvi
 
-PORTDOCS=	*
 PORTEXAMPLES=	zlogin zshenv zshrc
 
 ZSH_VER=	${PORTVERSION}
-PLIST_SUB+=	ZSH_VER="${ZSH_VER}"
-SUB_FILES=	pkg-message
 
 .include <bsd.port.pre.mk>
 
@@ -123,12 +123,18 @@ post-install:
 			${CHMOD} 644 $$i.zwc ; \
 		done')
 
-post-install-EXAMPLES-on:
-	@${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
-	(cd ${WRKSRC}/StartupFiles && ${INSTALL_DATA} ${PORTEXAMPLES} ${STAGEDIR}${EXAMPLESDIR})
+post-install-BASE_ZSH-on:
+	@${MKDIR} ${STAGEDIR}/bin
+.for f in zsh rzsh
+	${RLN} ${STAGEDIR}${PREFIX}/bin/${f} ${STAGEDIR}/bin/${f}
+.endfor
 
 post-install-DOCS-on:
 	@${MKDIR} ${STAGEDIR}${DOCSDIR}
 	(cd ${WRKSRC} && ${INSTALL_DATA} ${DOCS} ${STAGEDIR}${DOCSDIR})
 
+post-install-EXAMPLES-on:
+	@${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
+	(cd ${WRKSRC}/StartupFiles && ${INSTALL_DATA} ${PORTEXAMPLES} ${STAGEDIR}${EXAMPLESDIR})
+
 .include <bsd.port.post.mk>
diff --git a/shells/zsh/pkg-plist b/shells/zsh/pkg-plist
index e51f7e5c411b..27783c0543af 100644
--- a/shells/zsh/pkg-plist
+++ b/shells/zsh/pkg-plist
@@ -1,5 +1,7 @@
 @shell bin/zsh
 @shell bin/rzsh
+%%BASE_ZSH%%@shell /bin/zsh
+%%BASE_ZSH%%@shell /bin/rzsh
 bin/zsh-%%ZSH_VER%%
 %%NO_STATIC%%lib/zsh/%%ZSH_VER%%/zsh/cap.so
 %%NO_STATIC%%lib/zsh/%%ZSH_VER%%/zsh/clone.so