diff options
author | Marek Szuba <marecki@gentoo.org> | 2024-01-24 16:28:10 +0000 |
---|---|---|
committer | Marek Szuba <marecki@gentoo.org> | 2024-01-24 16:30:30 +0000 |
commit | 13e8f68494f4c02c91bc047a8224d8b059105b3e (patch) | |
tree | 26896d404a1b5f2791889a2cc68e5b2dbb33332b /app-misc/mc | |
parent | app-misc/mc: drop 4.8.29 (diff) | |
download | gentoo-13e8f68494f4c02c91bc047a8224d8b059105b3e.tar.gz gentoo-13e8f68494f4c02c91bc047a8224d8b059105b3e.tar.bz2 gentoo-13e8f68494f4c02c91bc047a8224d8b059105b3e.zip |
app-misc/mc: fix broken non-ASCII characters in shell links
With many thanks to the reporter of and the participants in the relevant
bug, for the thorough debugging and having eventually found the fix.
Closes: https://bugs.gentoo.org/916528
Signed-off-by: Marek Szuba <marecki@gentoo.org>
Diffstat (limited to 'app-misc/mc')
-rw-r--r-- | app-misc/mc/files/mc-4.8.30-fish_fix_broken_national_characters.patch | 40 | ||||
-rw-r--r-- | app-misc/mc/mc-4.8.30-r2.ebuild | 127 |
2 files changed, 167 insertions, 0 deletions
diff --git a/app-misc/mc/files/mc-4.8.30-fish_fix_broken_national_characters.patch b/app-misc/mc/files/mc-4.8.30-fish_fix_broken_national_characters.patch new file mode 100644 index 000000000000..193ac7225076 --- /dev/null +++ b/app-misc/mc/files/mc-4.8.30-fish_fix_broken_national_characters.patch @@ -0,0 +1,40 @@ +--- a/src/vfs/fish/fish.c ++++ b/src/vfs/fish/fish.c +@@ -647,7 +647,7 @@ fish_open_archive_int (struct vfs_class *me, struct vfs_s_super *super) + /* Set up remote locale to C, otherwise dates cannot be recognized */ + if (fish_command + (me, super, WAIT_REPLY, +- "LANG=C LC_ALL=C LC_TIME=C; export LANG LC_ALL LC_TIME;\n" "echo '### 200'\n", ++ "LANG=C.UTF-8 LC_ALL=C.UTF-8 LC_TIME=C.UTF-8; export LANG LC_ALL LC_TIME;\n" "echo '### 200'\n", + -1) != COMPLETE) + ERRNOR (E_PROTO, -1); + +--- a/src/vfs/fish/fishdef.h ++++ b/src/vfs/fish/fishdef.h +@@ -12,7 +12,7 @@ + /* default 'ls' script */ + #define FISH_LS_DEF_CONTENT "" \ + "#LIST /${FISH_FILENAME}\n" \ +-"export LC_TIME=C\n" \ ++"export LC_TIME=C.UTF-8\n" \ + "ls -Qlan \"/${FISH_FILENAME}\" 2>/dev/null | grep '^[^cbt]' | (\n" \ + "while read p l u g s m d y n; do\n" \ + " echo \"P$p $u.$g\"\n" \ +@@ -129,7 +129,7 @@ + + /* default 'retr' script */ + #define FISH_GET_DEF_CONTENT "" \ +-"export LC_TIME=C\n" \ ++"export LC_TIME=C.UTF-8\n" \ + "#RETR $FISH_FILENAME\n" \ + "if dd if=\"/${FISH_FILENAME}\" of=/dev/null bs=1 count=1 2>/dev/null ; then\n" \ + " ls -ln \"/${FISH_FILENAME}\" 2>/dev/null | (\n" \ +@@ -181,7 +181,7 @@ + + /* default 'info' script */ + #define FISH_INFO_DEF_CONTENT "" \ +-"export LC_TIME=C\n" \ ++"export LC_TIME=C.UTF-8\n" \ + "#FISH_HAVE_HEAD 1\n" \ + "#FISH_HAVE_SED 2\n" \ + "#FISH_HAVE_AWK 4\n" \ diff --git a/app-misc/mc/mc-4.8.30-r2.ebuild b/app-misc/mc/mc-4.8.30-r2.ebuild new file mode 100644 index 000000000000..1d701a9bdb43 --- /dev/null +++ b/app-misc/mc/mc-4.8.30-r2.ebuild @@ -0,0 +1,127 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit autotools flag-o-matic + +MY_P="${P/_/-}" +SRC_URI="http://ftp.midnight-commander.org/${MY_P}.tar.xz" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~ppc-macos ~x64-macos" + +DESCRIPTION="GNU Midnight Commander is a text based file manager" +HOMEPAGE="https://midnight-commander.org" + +LICENSE="GPL-3" +SLOT="0" +IUSE="+edit gpm nls sftp +slang spell test unicode X" + +REQUIRED_USE="spell? ( edit )" + +DEPEND=" + >=dev-libs/glib-2.30.0:2 + gpm? ( sys-libs/gpm ) + kernel_linux? ( sys-fs/e2fsprogs[tools(+)] ) + sftp? ( net-libs/libssh2 ) + slang? ( >=sys-libs/slang-2 ) + !slang? ( sys-libs/ncurses:=[unicode(+)?] ) + spell? ( app-text/aspell ) + X? ( + x11-libs/libX11 + x11-libs/libICE + x11-libs/libXau + x11-libs/libXdmcp + x11-libs/libSM + ) +" +RDEPEND="${DEPEND} + spell? ( app-dicts/aspell-en )" +BDEPEND=" + app-arch/xz-utils + virtual/pkgconfig + nls? ( sys-devel/gettext ) + test? ( dev-libs/check ) +" + +RESTRICT="!test? ( test )" + +S="${WORKDIR}/${MY_P}" + +PATCHES=( + "${FILESDIR}"/${PN}-4.8.26-ncurses-mouse.patch + "${FILESDIR}"/${PN}-4.8.29-gentoo-tools.patch + "${FILESDIR}"/${PN}-4.8.30-mcdiff-segfault.patch +) + +src_prepare() { + default + + # Bug #906194 + use elibc_musl && eapply "${FILESDIR}"/${PN}-4.8.30-musl-tests.patch + + # Bug #916528 + use unicode && eapply "${FILESDIR}"/${PN}-4.8.30-fish_fix_broken_national_characters.patch + + eautoreconf +} + +src_configure() { + [[ ${CHOST} == *-solaris* ]] && append-ldflags "-lnsl -lsocket" + + local myeconfargs=( + --enable-charset + --enable-vfs + --with-screen=$(usex slang 'slang' "ncurses$(usex unicode 'w' '')") + $(use_enable kernel_linux vfs-undelfs) + # Today mclib does not expose any headers and is linked to + # single 'mc' binary. Thus there is no advantage of having + # a library. Let's avoid shared library altogether + # as it also conflicts with sci-libs/mc: bug #685938 + --disable-mclib + $(use_enable nls) + $(use_enable sftp vfs-sftp) + $(use_enable spell aspell) + $(use_enable test tests) + $(use_with gpm gpm-mouse) + $(use_with X x) + $(use_with edit internal-edit) + ) + econf "${myeconfargs[@]}" +} + +src_test() { + # Bug #759466 + if [[ ${EUID} == 0 ]] ; then + ewarn "You are emerging ${PN} as root with 'userpriv' disabled." + ewarn "Expect some test failures, or emerge with 'FEATURES=userpriv'!" + fi + + # CK_FORK=no to avoid using fork() in check library + # as mc mocks fork() itself: bug #644462. + # + # VERBOSE=1 to make test failures contain detailed + # information. + CK_FORK=no emake check VERBOSE=1 +} +src_install() { + emake DESTDIR="${D}" install + dodoc AUTHORS NEWS README + + # fix bug #334383 + if use kernel_linux && [[ ${EUID} == 0 ]] ; then + fowners root:tty /usr/libexec/mc/cons.saver + fperms g+s /usr/libexec/mc/cons.saver + fi +} + +pkg_postinst() { + if use spell && ! has_version app-dicts/aspell-en ; then + elog "'spell' USE flag is enabled however app-dicts/aspell-en is not installed." + elog "You should manually set 'spell_language' in the Misc section of ~/.config/mc/ini" + elog "It has to be set to one of your installed aspell dictionaries or 'NONE'" + elog + fi + elog "To enable exiting to latest working directory," + elog "put this into your ~/.bashrc:" + elog ". ${EPREFIX}/usr/libexec/mc/mc.sh" +} |