Index: head/shells/fish/Makefile =================================================================== --- head/shells/fish/Makefile (revision 490603) +++ head/shells/fish/Makefile (revision 490604) @@ -1,47 +1,48 @@ # Created by: Kai Wang # $FreeBSD$ PORTNAME= fish PORTVERSION= 3.0.0 +PORTREVISION= 1 CATEGORIES= shells MASTER_SITES= https://github.com/fish-shell/fish-shell/releases/download/${PORTVERSION}/ MAINTAINER= asomers@FreeBSD.org COMMENT= User friendly command line shell LICENSE= GPLv2 LIB_DEPENDS+= libpcre2-32.so:devel/pcre2 # The python dependency is only needed by shebangfix. At runtime python is # only needed by some optional scripts that aren't in PATH. -USES= cmake cpe ncurses python:3.4+:build \ +USES= cmake cpe ncurses python:3.4+,build \ localbase compiler:c++11-lang shebangfix SHEBANG_FILES= share/tools/*.py share/tools/web_config/webconfig.py CONFLICTS_INSTALL= comms/mlan3 CPE_VENDOR= fishshell MANDIRS= ${DATADIR}/man/man1 OPTIONS_DEFAULT= MANPAGES DOCS NLS OPTIONS_DEFINE= MANPAGES DOCS NLS OPTIONS_SUB= yes DOCS_BUILD_DEPENDS+= doxygen:devel/doxygen MANPAGES_BUILD_DEPENDS+= doxygen:devel/doxygen NLS_USES= gettext NLS_CMAKE_BOOL= WITH_GETTEXT post-install: .for i in fish fish_indent fish_key_reader @${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/${i} .endfor post-stage-MANPAGES-off: @${RM} -rf ${STAGEDIR}${MANPREFIX}/man/man1 @${RM} -rf ${STAGEDIR}${DATADIR}/man .include Index: head/shells/fish/files/patch-src_fallback.cpp =================================================================== --- head/shells/fish/files/patch-src_fallback.cpp (nonexistent) +++ head/shells/fish/files/patch-src_fallback.cpp (revision 490604) @@ -0,0 +1,16 @@ +--- src/fallback.cpp ++++ src/fallback.cpp +@@ -390,9 +390,10 @@ int flock(int fd, int op) { + #endif // HAVE_FLOCK + + #ifndef HAVE_WCSTOD_L +-// musl doesn't feature wcstod_l, +-// so we just wrap wcstod. +-double wcstod_l(const wchar_t *enptr, wchar_t **endptr, locale_t loc) { ++#undef wcstod_l ++// For platforms without wcstod_l C extension, wrap wcstod after changing the ++// thread-specific locale. ++double fish_compat::wcstod_l(const wchar_t *enptr, wchar_t **endptr, locale_t loc) { + char *saved_locale = strdup(setlocale(LC_NUMERIC, NULL)); + // Yes, this is hardcoded to use the "C" locale. + // That's the only thing we need, and uselocale(loc) broke in my testing. Property changes on: head/shells/fish/files/patch-src_fallback.cpp ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/shells/fish/files/patch-src_fallback.h =================================================================== --- head/shells/fish/files/patch-src_fallback.h (nonexistent) +++ head/shells/fish/files/patch-src_fallback.h (revision 490604) @@ -0,0 +1,19 @@ +--- src/fallback.h ++++ src/fallback.h +@@ -200,5 +200,15 @@ int flock(int fd, int op); + #endif + + #ifndef HAVE_WCSTOD_L +-double wcstod_l(const wchar_t *enptr, wchar_t **endptr, locale_t loc); ++// On some platforms if this is incorrectly detected and a system-defined ++// defined version of `wcstod_l` exists, calling `wcstod` from our own ++// `wcstod_l` can call back into `wcstod_l` causing infinite recursion. ++// e.g. FreeBSD defines `wcstod(x, y)` as `wcstod_l(x, y, __get_locale())`. ++// Solution: namespace our implementation to make sure there is no symbol ++// duplication. ++#undef wcstod_l ++namespace fish_compat { ++ double wcstod_l(const wchar_t *enptr, wchar_t **endptr, locale_t loc); ++} ++#define wcstod_l(x, y, z) fish_compat::wcstod_l(x, y, z) + #endif Property changes on: head/shells/fish/files/patch-src_fallback.h ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property