public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Sam James" <sam@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: sys-apps/coreutils/files/, sys-apps/coreutils/
Date: Mon, 21 Feb 2022 01:51:17 +0000 (UTC)	[thread overview]
Message-ID: <1645408261.76eb7a1b115968e0b879a5c00cee64da1cdf92b5.sam@gentoo> (raw)

commit:     76eb7a1b115968e0b879a5c00cee64da1cdf92b5
Author:     Arsen Arsenović <arsen <AT> aarsen <DOT> me>
AuthorDate: Sat Feb 12 22:12:23 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Mon Feb 21 01:51:01 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=76eb7a1b

sys-apps/coreutils: add $COLORTERM support to 9.0-r2

Package-Manager: Portage-3.0.30, Repoman-3.0.3
Signed-off-by: Arsen Arsenović <arsen <AT> aarsen.me>
Closes: https://github.com/gentoo/gentoo/pull/24174
Signed-off-by: Sam James <sam <AT> gentoo.org>

 sys-apps/coreutils/coreutils-9.0-r2.ebuild         | 228 +++++++++++++++++++++
 ...s-consider-COLORTERM-sufficient-for-color.patch | 130 ++++++++++++
 2 files changed, 358 insertions(+)

diff --git a/sys-apps/coreutils/coreutils-9.0-r2.ebuild b/sys-apps/coreutils/coreutils-9.0-r2.ebuild
new file mode 100644
index 000000000000..c8d7eca8e649
--- /dev/null
+++ b/sys-apps/coreutils/coreutils-9.0-r2.ebuild
@@ -0,0 +1,228 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{8..10} )
+
+inherit flag-o-matic python-any-r1 toolchain-funcs
+
+PATCH="${PN}-8.30-patches-01"
+DESCRIPTION="Standard GNU utilities (chmod, cp, dd, ls, sort, tr, head, wc, who,...)"
+HOMEPAGE="https://www.gnu.org/software/coreutils/"
+SRC_URI="mirror://gnu/${PN}/${P}.tar.xz
+	!vanilla? (
+		mirror://gentoo/${PATCH}.tar.xz
+		https://dev.gentoo.org/~polynomial-c/dist/${PATCH}.tar.xz
+	)"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x86-linux"
+IUSE="acl caps gmp hostname kill multicall nls selinux +split-usr static test vanilla xattr"
+RESTRICT="!test? ( test )"
+
+LIB_DEPEND="acl? ( sys-apps/acl[static-libs] )
+	caps? ( sys-libs/libcap )
+	gmp? ( dev-libs/gmp:=[static-libs] )
+	xattr? ( sys-apps/attr[static-libs] )"
+RDEPEND="!static? ( ${LIB_DEPEND//\[static-libs]} )
+	selinux? ( sys-libs/libselinux )
+	nls? ( virtual/libintl )"
+DEPEND="
+	${RDEPEND}
+	static? ( ${LIB_DEPEND} )
+"
+BDEPEND="
+	app-arch/xz-utils
+	dev-lang/perl
+	test? (
+		dev-lang/perl
+		dev-perl/Expect
+		dev-util/strace
+		${PYTHON_DEPS}
+	)
+"
+RDEPEND+="
+	hostname? ( !sys-apps/net-tools[hostname] )
+	kill? (
+		!sys-apps/util-linux[kill]
+		!sys-process/procps[kill]
+	)
+	!app-misc/realpath
+	!<sys-apps/util-linux-2.13
+	!<sys-apps/sandbox-2.10-r4
+	!sys-apps/stat
+	!net-mail/base64
+	!sys-apps/mktemp
+	!<app-forensics/tct-1.18-r1
+	!<net-fs/netatalk-2.0.3-r4"
+
+pkg_setup() {
+	if use test ; then
+		python-any-r1_pkg_setup
+	fi
+}
+
+src_prepare() {
+	local PATCHES=(
+		# Upstream patches
+		"${FILESDIR}"/${P}-fix-chmod-symlink-exit.patch
+	)
+
+	if ! use vanilla ; then
+		PATCHES+=( "${WORKDIR}"/patch )
+		PATCHES+=( "${FILESDIR}"/${PN}-8.32-sandbox-env-test.patch )
+		PATCHES+=( "${FILESDIR}"/${PN}-9.0-r1-0001-dircolors-consider-COLORTERM-sufficient-for-color.patch )
+	fi
+
+	default
+
+	# Since we've patched many .c files, the make process will try to
+	# re-build the manpages by running `./bin --help`.  When doing a
+	# cross-compile, we can't do that since 'bin' isn't a native bin.
+	#
+	# Also, it's not like we changed the usage on any of these things,
+	# so let's just update the timestamps and skip the help2man step.
+	set -- man/*.x
+	touch ${@/%x/1} || die
+
+	# Avoid perl dep for compiled in dircolors default (bug #348642)
+	if ! has_version dev-lang/perl ; then
+		touch src/dircolors.h || die
+		touch ${@/%x/1} || die
+	fi
+}
+
+src_configure() {
+	local myconf=(
+		--with-packager="Gentoo"
+		--with-packager-version="${PVR} (p${PATCH_VER:-0})"
+		--with-packager-bug-reports="https://bugs.gentoo.org/"
+		# kill/uptime - procps
+		# groups/su   - shadow
+		# hostname    - net-tools
+		--enable-install-program="arch,$(usev hostname),$(usev kill)"
+		--enable-no-install-program="groups,$(usev !hostname),$(usev !kill),su,uptime"
+		--enable-largefile
+		$(usex caps '' --disable-libcap)
+		$(use_enable nls)
+		$(use_enable acl)
+		$(use_enable multicall single-binary)
+		$(use_enable xattr)
+		$(use_with gmp libgmp)
+	)
+
+	if use gmp ; then
+		myconf+=( --with-libgmp-prefix="${ESYSROOT}"/usr )
+	fi
+
+	if tc-is-cross-compiler && [[ ${CHOST} == *linux* ]] ; then
+		# bug #311569
+		export fu_cv_sys_stat_statfs2_bsize=yes
+		# bug #416629
+		export gl_cv_func_realpath_works=yes
+	fi
+
+	# bug #409919
+	export gl_cv_func_mknod_works=yes
+
+	if use static ; then
+		append-ldflags -static
+		# bug #321821
+		sed -i '/elf_sys=yes/s:yes:no:' configure || die
+	fi
+
+	if ! use selinux ; then
+		# bug #301782
+		export ac_cv_{header_selinux_{context,flash,selinux}_h,search_setfilecon}=no
+	fi
+
+	econf "${myconf[@]}"
+}
+
+src_test() {
+	# Known to fail with FEATURES=usersandbox (bug #439574):
+	#   -  tests/du/long-from-unreadable.sh} (bug #413621)
+	#   -  tests/rm/deep-2.sh (bug #413621)
+	#   -  tests/dd/no-allocate.sh (bug #629660)
+	if has usersandbox ${FEATURES} ; then
+		ewarn "You are emerging ${P} with 'usersandbox' enabled." \
+			"Expect some test failures or emerge with 'FEATURES=-usersandbox'!"
+	fi
+
+	# Non-root tests will fail if the full path isn't
+	# accessible to non-root users
+	chmod -R go-w "${WORKDIR}" || die
+	chmod a+rx "${WORKDIR}" || die
+
+	# coreutils tests like to do `mount` and such with temp dirs,
+	# so make sure:
+	# - /etc/mtab is writable (bug #265725)
+	# - /dev/loop* can be mounted (bug #269758)
+	mkdir -p "${T}"/mount-wrappers || die
+	mkwrap() {
+		local w ww
+		for w in "${@}" ; do
+			ww="${T}/mount-wrappers/${w}"
+			cat <<-EOF > "${ww}"
+				#!${EPREFIX}/bin/sh
+				exec env SANDBOX_WRITE="\${SANDBOX_WRITE}:/etc/mtab:/dev/loop" $(type -P ${w}) "\$@"
+			EOF
+			chmod a+rx "${ww}" || die
+		done
+	}
+	mkwrap mount umount
+
+	addwrite /dev/full
+	#export RUN_EXPENSIVE_TESTS="yes"
+	#export FETISH_GROUPS="portage wheel"
+	env PATH="${T}/mount-wrappers:${PATH}" \
+	emake -j1 -k check
+}
+
+src_install() {
+	default
+
+	insinto /etc
+	newins src/dircolors.hin DIR_COLORS
+
+	if use split-usr ; then
+		cd "${ED}"/usr/bin || die
+		dodir /bin
+
+		# Move critical binaries into /bin (required by FHS)
+		local fhs="cat chgrp chmod chown cp date dd df echo false ln ls
+		           mkdir mknod mv pwd rm rmdir stty sync true uname"
+		mv ${fhs} ../../bin/ || die "Could not move FHS bins!"
+
+		if use hostname ; then
+			mv hostname ../../bin/ || die
+		fi
+
+		if use kill ; then
+			mv kill ../../bin/ || die
+		fi
+
+		# Move critical binaries into /bin (common scripts)
+		# (Why are these required for booting?)
+		local com="basename chroot cut dir dirname du env expr head mkfifo
+		           mktemp readlink seq sleep sort tail touch tr tty vdir wc yes"
+		mv ${com} ../../bin/ || die "Could not move common bins!"
+
+		# Create a symlink for uname in /usr/bin/ since autotools require it.
+		# (Other than uname, we need to figure out why we are
+		# creating symlinks for these in /usr/bin instead of leaving
+		# the files there in the first place...)
+		local x
+		for x in ${com} uname ; do
+			dosym ../../bin/${x} /usr/bin/${x}
+		done
+	fi
+}
+
+pkg_postinst() {
+	ewarn "Make sure you run 'hash -r' in your active shells."
+	ewarn "You should also re-source your shell settings for LS_COLORS"
+	ewarn "  changes, such as: source /etc/profile"
+}

diff --git a/sys-apps/coreutils/files/coreutils-9.0-r1-0001-dircolors-consider-COLORTERM-sufficient-for-color.patch b/sys-apps/coreutils/files/coreutils-9.0-r1-0001-dircolors-consider-COLORTERM-sufficient-for-color.patch
new file mode 100644
index 000000000000..e77766cbfe3a
--- /dev/null
+++ b/sys-apps/coreutils/files/coreutils-9.0-r1-0001-dircolors-consider-COLORTERM-sufficient-for-color.patch
@@ -0,0 +1,130 @@
+From cbb451b63faee375415691c1abc8a6fd3e1677a9 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?P=C3=A1draig=20Brady?= <P@draigBrady.com>
+Date: Sat, 12 Feb 2022 22:54:07 +0100
+Subject: [PATCH] dircolors: consider COLORTERM as well as TERM env vars
+
+COLORTERM is an environment used usually to expose truecolor support in
+terminal emulators.  Therefore support matches on that in addition
+to TERM.  Also set the default COLORTERM match pattern so that
+we apply colors if COLORTERM is any value.
+
+This implicitly supports a terminal like "foot"
+without a need for an explicit TERM entry.
+
+* NEWS: Mention the new feature.
+* src/dircolors.c (main): Match COLORTERM like we do for TERM.
+* src/dircolors.hin: Add default config to match any COLORTERM.
+* tests/misc/dircolors.pl: Add test cases.
+---
+Backported from coreutils 75c9fc6740e93dba95f63a1e5e92bd5cf17f1743.
+See also https://lists.gnu.org/archive/html/coreutils/2022-02/msg00019.html
+
+ NEWS                    |  3 +++
+ src/dircolors.c         | 15 ++++++++++++++-
+ src/dircolors.hin       |  7 +++++--
+ tests/misc/dircolors.pl | 14 ++++++++++++++
+ 4 files changed, 36 insertions(+), 3 deletions(-)
+
+diff --git a/NEWS b/NEWS
+index f2fbcbb..646c132 100644
+--- a/NEWS
++++ b/NEWS
+@@ -64,6 +64,9 @@ GNU coreutils NEWS                                    -*- outline -*-
+   on (1024*5) buffer boundaries
+   [bug introduced in coreutils-8.31]
+ 
++  dircolors will now also match COLORTERM in addition to TERM environment
++  variables.  The default config will apply colors with any COLORTERM set.
++
+ ** Changes in behavior
+ 
+   cp and install now default to copy-on-write (COW) if available.
+diff --git a/src/dircolors.c b/src/dircolors.c
+index b765ded..64ff665 100644
+--- a/src/dircolors.c
++++ b/src/dircolors.c
+@@ -243,6 +243,7 @@ dc_parse_stream (FILE *fp, char const *filename)
+   size_t input_line_size = 0;
+   char const *line;
+   char const *term;
++  char const *colorterm;
+   bool ok = true;
+ 
+   /* State for the parser.  */
+@@ -253,6 +254,11 @@ dc_parse_stream (FILE *fp, char const *filename)
+   if (term == NULL || *term == '\0')
+     term = "none";
+ 
++  /* Also match $COLORTERM.  */
++  colorterm = getenv ("COLORTERM");
++  if (colorterm == NULL)
++    colorterm = "";  /* Doesn't match default "?*"  */
++
+   while (true)
+     {
+       char *keywd, *arg;
+@@ -299,10 +305,17 @@ dc_parse_stream (FILE *fp, char const *filename)
+           else if (state != ST_TERMSURE)
+             state = ST_TERMNO;
+         }
++      else if (c_strcasecmp (keywd, "COLORTERM") == 0)
++        {
++          if (fnmatch (arg, colorterm, 0) == 0)
++            state = ST_TERMSURE;
++          else if (state != ST_TERMSURE)
++            state = ST_TERMNO;
++        }
+       else
+         {
+           if (state == ST_TERMSURE)
+-            state = ST_TERMYES; /* Another TERM can cancel */
++            state = ST_TERMYES;  /* Another {COLOR,}TERM can cancel.  */
+ 
+           if (state != ST_TERMNO)
+             {
+diff --git a/src/dircolors.hin b/src/dircolors.hin
+index b5d6452..6d2d3a4 100644
+--- a/src/dircolors.hin
++++ b/src/dircolors.hin
+@@ -8,8 +8,11 @@
+ # The keywords COLOR, OPTIONS, and EIGHTBIT (honored by the
+ # slackware version of dircolors) are recognized but ignored.
+ 
+-# Below are TERM entries, which can be a glob patterns, to match
+-# against the TERM environment variable to determine if it is colorizable.
++# Global config options can be specified before TERM or COLORTERM entries
++
++# Below are TERM or COLORTERM entries, which can be glob patterns, which
++# restrict following config to systems with matching environment variables.
++COLORTERM ?*
+ TERM Eterm
+ TERM ansi
+ TERM *color*
+diff --git a/tests/misc/dircolors.pl b/tests/misc/dircolors.pl
+index 2c57104..464acfd 100755
+--- a/tests/misc/dircolors.pl
++++ b/tests/misc/dircolors.pl
+@@ -42,6 +42,20 @@ my @Tests =
+      ['term-4', '-b', {IN => "TERM N*match\nowt 40;33\n"},
+       {OUT => "LS_COLORS='';\nexport LS_COLORS\n"}],
+ 
++     ['print-clash1', '-p', '--print-ls',
++      {ERR => "dircolors: options --print-database and --print-ls-colors " .
++              "are mutually exclusive\n" .
++              "Try 'dircolors --help' for more information.\n"},
++      {EXIT => 1}],
++     ['print-clash2', '-b', '--print-database',
++      {ERR => "dircolors: the options to output non shell syntax,\n" .
++              "and to select a shell syntax are mutually exclusive\n" .
++              "Try 'dircolors --help' for more information.\n"},
++      {EXIT => 1}],
++
++     ['print-ls-colors', '--print-ls-colors', {IN => "OWT 40;33\n"},
++      {OUT => "\x1B[40;33mtw\t40;33\x1B[0m\n"}],
++
+      # CAREFUL: always specify the -b option, unless explicitly testing
+      # for csh syntax output.
+     );
+-- 
+2.34.1
+


             reply	other threads:[~2022-02-21  1:51 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-21  1:51 Sam James [this message]
  -- strict thread matches above, loose matches on Subject: below --
2024-07-04  0:49 [gentoo-commits] repo/gentoo:master commit in: sys-apps/coreutils/files/, sys-apps/coreutils/ Sam James
2024-03-23 17:55 Sam James
2024-01-30 20:49 Sam James
2023-09-01 14:05 Sam James
2023-05-05  1:54 Sam James
2023-04-02 19:38 Sam James
2021-05-24 11:36 David Seifert
2020-04-29 15:21 Thomas Deutschmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1645408261.76eb7a1b115968e0b879a5c00cee64da1cdf92b5.sam@gentoo \
    --to=sam@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox