[gentoo-dev] Packages up for grabs: dev-libs/liblzw, dev-vcs/repo, net-misc/chrome-remote-desktop, sys-apps/daisydog, sys-apps/nosig

2024-05-19 Thread Michał Górny
The following packages are now looking for a new maintainer, because of
their maintainer's prolonged inactivity:

dev-libs/liblzw
dev-vcs/repo
net-misc/chrome-remote-desktop
sys-apps/daisydog
sys-apps/nosig

Of these, repo has a version bump request pending, and chrome-remote-
desktop is pending py3.12 port and has one more bug reported.  Most of
them have some pkgcheck reports, and daisydog seems to have a broken
mirror:// URI.

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: dev-python/aesara

2024-05-18 Thread Michał Górny
# Michał Górny  (2024-05-18)
# Another abandoned project in the middle of a line of forks.
# Broken with Python 3.12, with pytest 8 and with numpy 2.  Last
# upstream activity in September 2023, but bugs remained unanswered
# before that.
# Removal on 2024-06-17.  Bug #929433.
dev-python/aesara

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: dev-python/pdm-pep517

2024-05-18 Thread Michał Górny
# Michał Górny  (2024-05-18)
# Superseded by dev-python/pdm-backend.  No revdeps left.
# Removal on 2024-06-17.  Bug #932160.
dev-python/pdm-pep517

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: dev-python/dictpath

2024-05-17 Thread Michał Górny
# Michał Górny  (2024-05-17)
# Superseded by dev-python/pathable.  No revdeps.
# Removal on 2024-06-16.  Bug #932103.
dev-python/dictpath

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: dev-python/cached-property

2024-05-17 Thread Michał Górny
# Michał Górny  (2024-05-17)
# Unmaintained.  Last activity in 2020.  Redundant to stdlib.
# No revdeps.
# Removal on 2024-06-16.  Bug #932096.
dev-python/cached-property

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] [PATCH] python-utils-r1.eclass: Fix cleanup in failing epytest

2024-05-17 Thread Michał Górny
Fix epytest to call `die -n` after performing the cleanup, rather than
before.  This ensures that stray cache files are cleaned up even if
we're actually going to die, e.g. when using
`FEATURES=test-fail-continue`.

Signed-off-by: Michał Górny 
---
 eclass/python-utils-r1.eclass | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/eclass/python-utils-r1.eclass b/eclass/python-utils-r1.eclass
index 584ed831f816..f6ee6a39a1c7 100644
--- a/eclass/python-utils-r1.eclass
+++ b/eclass/python-utils-r1.eclass
@@ -1444,7 +1444,7 @@ epytest() {
set -- "${EPYTHON}" -m pytest "${args[@]}" "${@}" ${EPYTEST_FLAGS}
 
echo "${@}" >&2
-   "${@}" || die -n "pytest failed with ${EPYTHON}"
+   "${@}"
local ret=${?}
 
# remove common temporary directories left over by pytest plugins
@@ -1455,6 +1455,7 @@ epytest() {
find "${BUILD_DIR}" -name '*-pytest-*.pyc' -delete || die
fi
 
+   [[ ${ret} -ne 0 ]] && die -n "pytest failed for ${EPYTHON}"
return ${ret}
 }
 
-- 
2.45.1




[gentoo-dev] Last rites: dev-python/whichcraft

2024-05-17 Thread Michał Górny
# Michał Górny  (2024-05-17)
# A Python < 3.3 backport of shutil.which().  No revdeps left.
# Removal on 2024-06-16.  Bug #932088.
dev-python/whichcraft

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] [PATCH v2 7/7] distutils-r1.eclass: Pass ninja options to scikit-build-core

2024-05-17 Thread Michał Górny
Signed-off-by: Michał Górny 
---
 eclass/distutils-r1.eclass | 6 ++
 1 file changed, 6 insertions(+)

diff --git a/eclass/distutils-r1.eclass b/eclass/distutils-r1.eclass
index 3aa2c8984ab2..71b80fafe1a5 100644
--- a/eclass/distutils-r1.eclass
+++ b/eclass/distutils-r1.eclass
@@ -1457,11 +1457,17 @@ distutils_pep517_install() {
"${DISTUTILS_ARGS[@]}"
)
 
+   local -x NINJAOPTS=$(get_NINJAOPTS)
config_settings=$(
"${EPYTHON}" - "${cmake_args[@]}" <<-EOF || die
import json
+   import os
+   import shlex
import sys
+
+   ninjaopts = 
shlex.split(os.environ["NINJAOPTS"])
print(json.dumps({
+   "build.tool-args": ninjaopts,
"cmake.args": 
";".join(sys.argv[1:]),
"cmake.build-type": 
"${CMAKE_BUILD_TYPE}",
"cmake.verbose": True,
-- 
2.45.1




[gentoo-dev] [PATCH v2 6/7] distutils-r1.eclass: Update scikit-build-core to 0.9.4

2024-05-17 Thread Michał Górny
Signed-off-by: Michał Górny 
---
 eclass/distutils-r1.eclass | 8 +++-
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/eclass/distutils-r1.eclass b/eclass/distutils-r1.eclass
index a8f9817a3cf0..3aa2c8984ab2 100644
--- a/eclass/distutils-r1.eclass
+++ b/eclass/distutils-r1.eclass
@@ -279,7 +279,7 @@ _distutils_set_globals() {
;;
scikit-build-core)
bdep+='
-   
>=dev-python/scikit-build-core-0.8.2[${PYTHON_USEDEP}]
+   
>=dev-python/scikit-build-core-0.9.4[${PYTHON_USEDEP}]
'
;;
setuptools)
@@ -1457,8 +1457,6 @@ distutils_pep517_install() {
"${DISTUTILS_ARGS[@]}"
)
 
-   # NB: we need to pass strings for boolean fields
-   # 
https://github.com/scikit-build/scikit-build-core/issues/707
config_settings=$(
"${EPYTHON}" - "${cmake_args[@]}" <<-EOF || die
import json
@@ -1466,8 +1464,8 @@ distutils_pep517_install() {
print(json.dumps({
"cmake.args": 
";".join(sys.argv[1:]),
"cmake.build-type": 
"${CMAKE_BUILD_TYPE}",
-   "cmake.verbose": "true",
-   "install.strip": "false",
+   "cmake.verbose": True,
+   "install.strip": False,
}))
EOF
)
-- 
2.45.1




[gentoo-dev] [PATCH v2 5/7] python-utils-r1.eclass: Support passing EPYTEST_FLAGS

2024-05-17 Thread Michał Górny
Closes: https://bugs.gentoo.org/905863
Signed-off-by: Michał Górny 
---
 eclass/python-utils-r1.eclass | 11 ++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/eclass/python-utils-r1.eclass b/eclass/python-utils-r1.eclass
index 275ac3a96523..584ed831f816 100644
--- a/eclass/python-utils-r1.eclass
+++ b/eclass/python-utils-r1.eclass
@@ -1321,6 +1321,15 @@ _python_check_occluded_packages() {
 # Specifies the number of jobs for parallel (pytest-xdist) test runs.
 # When unset, defaults to -j from MAKEOPTS, or the current nproc.
 
+# @ECLASS_VARIABLE: EPYTEST_FLAGS
+# @USER_VARIABLE
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# Additional flags to pass to pytest.  This is intended to be set
+# in the environment when debugging packages (options such as -x or -s
+# are useful here), rather than globally.  It must not be set
+# in ebuilds.
+
 # @FUNCTION: epytest
 # @USAGE: [...]
 # @DESCRIPTION:
@@ -1432,7 +1441,7 @@ epytest() {
for x in "${EPYTEST_IGNORE[@]}"; do
args+=( --ignore "${x}" )
done
-   set -- "${EPYTHON}" -m pytest "${args[@]}" "${@}"
+   set -- "${EPYTHON}" -m pytest "${args[@]}" "${@}" ${EPYTEST_FLAGS}
 
echo "${@}" >&2
"${@}" || die -n "pytest failed with ${EPYTHON}"
-- 
2.45.1




[gentoo-dev] [PATCH v2 4/7] distutils-r1.eclass: Support reusing prior wheels when compatible

2024-05-17 Thread Michał Górny
Support reusing the wheels built for earlier Python implementations
if they are compatible with the subsequent implementations being built.
This includes pure Python wheels in packages that do not set
DISTUTILS_EXT, and stable ABI wheels.

Closes: https://bugs.gentoo.org/931689
Signed-off-by: Michał Górny 
---
 eclass/distutils-r1.eclass | 38 ++
 1 file changed, 38 insertions(+)

diff --git a/eclass/distutils-r1.eclass b/eclass/distutils-r1.eclass
index 29e901720e6c..a8f9817a3cf0 100644
--- a/eclass/distutils-r1.eclass
+++ b/eclass/distutils-r1.eclass
@@ -189,6 +189,18 @@ esac
 # ${DISTUTILS_DEPS}"
 # @CODE
 
+# @ECLASS_VARIABLE: DISTUTILS_ALLOW_WHEEL_REUSE
+# @DEFAULT_UNSET
+# @USER_VARIABLE
+# @DESCRIPTION:
+# If set to a non-empty value, the eclass is allowed to reuse a wheel
+# that was built for a prior Python implementation, provided that it is
+# compatible with the current one, rather than building a new one.
+#
+# This is an optimization that can avoid the overhead of calling into
+# the build system in pure Python packages and packages using the stable
+# Python ABI.
+
 if [[ -z ${_DISTUTILS_R1_ECLASS} ]]; then
 _DISTUTILS_R1_ECLASS=1
 
@@ -1585,6 +1597,32 @@ distutils-r1_python_compile() {
esac
 
if [[ ${DISTUTILS_USE_PEP517} ]]; then
+   if [[ ${DISTUTILS_ALLOW_WHEEL_REUSE} ]]; then
+   local whl
+   for whl in "${!DISTUTILS_WHEELS[@]}"; do
+   # use only wheels corresponding to the current 
directory
+   if [[ ${PWD} != ${DISTUTILS_WHEELS["${whl}"]} 
]]; then
+   continue
+   fi
+
+   # 1. Use pure Python wheels only if we're not 
expected
+   # to build extensions.  Otherwise, we may end up
+   # not building the extension at all when e.g. 
PyPy3
+   # is built without one.
+   #
+   # 2. For CPython, we can reuse stable ABI 
wheels.  Note
+   # that this relies on the assumption that we're 
building
+   # from the oldest to the newest implementation,
+   # and the wheels are forward-compatible.
+   if [[ ( ! ${DISTUTILS_EXT} && ${whl} == 
*py3-none-any* ) ||
+   ( ${EPYTHON} == python* && ${whl} == 
*-abi3-* ) ]]
+   then
+   distutils_wheel_install 
"${BUILD_DIR}/install" "${whl}"
+   return
+   fi
+   done
+   fi
+
distutils_pep517_install "${BUILD_DIR}/install"
DISTUTILS_WHEELS+=( "${DISTUTILS_WHEEL_PATH}" "${PWD}" )
fi
-- 
2.45.1




[gentoo-dev] [PATCH v2 3/7] distutils-r1.eclass: Add a QA warning for pure Python file mismatch

2024-05-17 Thread Michał Górny
If the package is creating at least one pure Python wheel, check whether
the baseline package contents (i.e. everything but compiled Python
modules, extensions and .dist-info) match between implementations.
This is meant to ensure that we can safely optimize builds by reusing
pure Python wheels from previous builds.

Signed-off-by: Michał Górny 
---
 eclass/distutils-r1.eclass | 40 ++
 1 file changed, 40 insertions(+)

diff --git a/eclass/distutils-r1.eclass b/eclass/distutils-r1.eclass
index 955c41fe4e2d..29e901720e6c 100644
--- a/eclass/distutils-r1.eclass
+++ b/eclass/distutils-r1.eclass
@@ -2022,6 +2022,44 @@ distutils-r1_src_configure() {
return ${ret}
 }
 
+# @FUNCTION: _distutils-r1_compare_installed_files
+# @INTERNAL
+# @DESCRIPTION:
+# Verify the the match between files installed between this and previous
+# implementation.
+_distutils-r1_compare_installed_files() {
+   debug-print-function ${FUNCNAME} "${@}"
+
+   # QA check requires diff(1).
+   if ! type -P diff &>/dev/null; then
+   return
+   fi
+
+   # Perform the check only if at least one potentially reusable wheel
+   # has been produced.  Nonpure packages (e.g. NumPy) may install
+   # interpreter configuration details into sitedir.
+   if [[ ${!DISTUTILS_WHEELS[*]} != *-none-any.whl* &&
+   ${!DISTUTILS_WHEELS[*]} != *-abi3-*.whl ]]; then
+   return
+   fi
+
+   local sitedir=${BUILD_DIR}/install$(python_get_sitedir)
+   if [[ -n ${_DISTUTILS_PREVIOUS_SITE} ]]; then
+   diff -dur \
+   --exclude=__pycache__ \
+   --exclude='*.dist-info' \
+   --exclude="*$(get_modname)" \
+   "${_DISTUTILS_PREVIOUS_SITE}" "${sitedir}"
+   if [[ ${?} -ne 0 ]]; then
+   eqawarn "Package creating at least one pure Python 
wheel installs different"
+   eqawarn "Python files between implementations.  See 
diff in build log, above"
+   eqawarn "this message."
+   fi
+   fi
+
+   _DISTUTILS_PREVIOUS_SITE=${sitedir}
+}
+
 # @FUNCTION: _distutils-r1_post_python_compile
 # @INTERNAL
 # @DESCRIPTION:
@@ -2056,6 +2094,8 @@ _distutils-r1_post_python_compile() {
find "${bindir}" -type f -exec sed -i \
-e 
"1s@^#!\(${EPREFIX}/usr/bin/\(python\|pypy\)\)@#!${root}\1@" \
{} + || die
+
+   _distutils-r1_compare_installed_files
fi
 }
 
-- 
2.45.1




[gentoo-dev] [PATCH v2 2/7] distutils-r1.eclass: Store created wheels in DISTUTILS_WHEELS

2024-05-17 Thread Michał Górny
Signed-off-by: Michał Górny 
---
 eclass/distutils-r1.eclass | 11 +++
 1 file changed, 11 insertions(+)

diff --git a/eclass/distutils-r1.eclass b/eclass/distutils-r1.eclass
index 1037c0abe239..955c41fe4e2d 100644
--- a/eclass/distutils-r1.eclass
+++ b/eclass/distutils-r1.eclass
@@ -1532,6 +1532,15 @@ distutils_pep517_install() {
DISTUTILS_WHEEL_PATH=${WHEEL_BUILD_DIR}/${wheel}
 }
 
+# @VARIABLE: DISTUTILS_WHEELS
+# @DESCRIPTION:
+# An associative array of wheels created as a result
+# of distutils-r1_python_compile invocations, mapped to the source
+# directories.  Note that this includes only wheels implicitly created
+# by the eclass, and not wheels created as a result of direct
+# distutils_pep517_install calls in the ebuild.
+declare -g -A DISTUTILS_WHEELS=()
+
 # @FUNCTION: distutils-r1_python_compile
 # @USAGE: [additional-args...]
 # @DESCRIPTION:
@@ -1541,6 +1550,7 @@ distutils_pep517_install() {
 #
 # If DISTUTILS_USE_PEP517 is set to any other value, builds a wheel
 # using the PEP517 backend and installs it into ${BUILD_DIR}/install.
+# Path to the wheel is then added to DISTUTILS_WHEELS array.
 #
 # In legacy mode, runs 'esetup.py build'. Any parameters passed to this
 # function will be appended to setup.py invocation, i.e. passed
@@ -1576,6 +1586,7 @@ distutils-r1_python_compile() {
 
if [[ ${DISTUTILS_USE_PEP517} ]]; then
distutils_pep517_install "${BUILD_DIR}/install"
+   DISTUTILS_WHEELS+=( "${DISTUTILS_WHEEL_PATH}" "${PWD}" )
fi
 }
 
-- 
2.45.1




[gentoo-dev] [PATCH v2 1/7] distutils-r1.eclass: Set DISTUTILS_WHEEL_PATH in PEP517 install

2024-05-17 Thread Michał Górny
Store the created wheel path in DISTUTILS_WHEEL_PATH when returning
from distutils_pep517_install.

Signed-off-by: Michał Górny 
---
 eclass/distutils-r1.eclass | 9 -
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/eclass/distutils-r1.eclass b/eclass/distutils-r1.eclass
index a67122a59a33..1037c0abe239 100644
--- a/eclass/distutils-r1.eclass
+++ b/eclass/distutils-r1.eclass
@@ -1343,6 +1343,10 @@ distutils_wheel_install() {
\) -delete || die
 }
 
+# @VARIABLE: DISTUTILS_WHEEL_PATH
+# @DESCRIPTION:
+# Path to the wheel created by distutils_pep517_install.
+
 # @FUNCTION: distutils_pep517_install
 # @USAGE: 
 # @DESCRIPTION:
@@ -1350,7 +1354,8 @@ distutils_wheel_install() {
 # backend and install it into .
 #
 # This function is intended for expert use only.  It does not handle
-# wrapping executables.
+# wrapping executables.  The wheel path is returned
+# in DISTUTILS_WHEEL_PATH variable.
 distutils_pep517_install() {
debug-print-function ${FUNCNAME} "${@}"
[[ ${#} -eq 1 ]] || die "${FUNCNAME} takes exactly one argument: root"
@@ -1523,6 +1528,8 @@ distutils_pep517_install() {
[[ -n ${wheel} ]] || die "No wheel name returned"
 
distutils_wheel_install "${root}" "${WHEEL_BUILD_DIR}/${wheel}"
+
+   DISTUTILS_WHEEL_PATH=${WHEEL_BUILD_DIR}/${wheel}
 }
 
 # @FUNCTION: distutils-r1_python_compile
-- 
2.45.1




[gentoo-dev] [PATCH v2 0/7] wheel reuse optimization, EPYTEST_FLAGS and scikit-build-core

2024-05-17 Thread Michał Górny
Hi,

Changed in v2:

Made DISTUTILS_WHEELS an associative array, and included source
directory in it.  This ensures that if an ebuild calls
distutils-r1_python_compile multiple times, we don't end up reusing
wheels created for another source directory.


Michał Górny (7):
  distutils-r1.eclass: Set DISTUTILS_WHEEL_PATH in PEP517 install
  distutils-r1.eclass: Store created wheels in DISTUTILS_WHEELS
  distutils-r1.eclass: Add a QA warning for pure Python file mismatch
  distutils-r1.eclass: Support reusing prior wheels when compatible
  python-utils-r1.eclass: Support passing EPYTEST_FLAGS
  distutils-r1.eclass: Update scikit-build-core to 0.9.4
  distutils-r1.eclass: Pass ninja options to scikit-build-core

 eclass/distutils-r1.eclass| 112 --
 eclass/python-utils-r1.eclass |  11 +++-
 2 files changed, 116 insertions(+), 7 deletions(-)

-- 
2.45.1




[gentoo-dev] [PATCH 7/7] distutils-r1.eclass: Pass ninja options to scikit-build-core

2024-05-15 Thread Michał Górny
Signed-off-by: Michał Górny 
---
 eclass/distutils-r1.eclass | 6 ++
 1 file changed, 6 insertions(+)

diff --git a/eclass/distutils-r1.eclass b/eclass/distutils-r1.eclass
index 02921919c7ef..9b2fc0583149 100644
--- a/eclass/distutils-r1.eclass
+++ b/eclass/distutils-r1.eclass
@@ -1457,11 +1457,17 @@ distutils_pep517_install() {
"${DISTUTILS_ARGS[@]}"
)
 
+   local -x NINJAOPTS=$(get_NINJAOPTS)
config_settings=$(
"${EPYTHON}" - "${cmake_args[@]}" <<-EOF || die
import json
+   import os
+   import shlex
import sys
+
+   ninjaopts = 
shlex.split(os.environ["NINJAOPTS"])
print(json.dumps({
+   "build.tool-args": ninjaopts,
"cmake.args": 
";".join(sys.argv[1:]),
"cmake.build-type": 
"${CMAKE_BUILD_TYPE}",
"cmake.verbose": True,
-- 
2.45.1




[gentoo-dev] [PATCH 6/7] distutils-r1.eclass: Update scikit-build-core to 0.9.4

2024-05-15 Thread Michał Górny
Signed-off-by: Michał Górny 
---
 eclass/distutils-r1.eclass | 8 +++-
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/eclass/distutils-r1.eclass b/eclass/distutils-r1.eclass
index e4d53083124e..02921919c7ef 100644
--- a/eclass/distutils-r1.eclass
+++ b/eclass/distutils-r1.eclass
@@ -279,7 +279,7 @@ _distutils_set_globals() {
;;
scikit-build-core)
bdep+='
-   
>=dev-python/scikit-build-core-0.8.2[${PYTHON_USEDEP}]
+   
>=dev-python/scikit-build-core-0.9.4[${PYTHON_USEDEP}]
'
;;
setuptools)
@@ -1457,8 +1457,6 @@ distutils_pep517_install() {
"${DISTUTILS_ARGS[@]}"
)
 
-   # NB: we need to pass strings for boolean fields
-   # 
https://github.com/scikit-build/scikit-build-core/issues/707
config_settings=$(
"${EPYTHON}" - "${cmake_args[@]}" <<-EOF || die
import json
@@ -1466,8 +1464,8 @@ distutils_pep517_install() {
print(json.dumps({
"cmake.args": 
";".join(sys.argv[1:]),
"cmake.build-type": 
"${CMAKE_BUILD_TYPE}",
-   "cmake.verbose": "true",
-   "install.strip": "false",
+   "cmake.verbose": True,
+   "install.strip": False,
}))
EOF
)
-- 
2.45.1




[gentoo-dev] [PATCH 5/7] python-utils-r1.eclass: Support passing EPYTEST_FLAGS

2024-05-15 Thread Michał Górny
Closes: https://bugs.gentoo.org/905863
Signed-off-by: Michał Górny 
---
 eclass/python-utils-r1.eclass | 11 ++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/eclass/python-utils-r1.eclass b/eclass/python-utils-r1.eclass
index 275ac3a96523..584ed831f816 100644
--- a/eclass/python-utils-r1.eclass
+++ b/eclass/python-utils-r1.eclass
@@ -1321,6 +1321,15 @@ _python_check_occluded_packages() {
 # Specifies the number of jobs for parallel (pytest-xdist) test runs.
 # When unset, defaults to -j from MAKEOPTS, or the current nproc.
 
+# @ECLASS_VARIABLE: EPYTEST_FLAGS
+# @USER_VARIABLE
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# Additional flags to pass to pytest.  This is intended to be set
+# in the environment when debugging packages (options such as -x or -s
+# are useful here), rather than globally.  It must not be set
+# in ebuilds.
+
 # @FUNCTION: epytest
 # @USAGE: [...]
 # @DESCRIPTION:
@@ -1432,7 +1441,7 @@ epytest() {
for x in "${EPYTEST_IGNORE[@]}"; do
args+=( --ignore "${x}" )
done
-   set -- "${EPYTHON}" -m pytest "${args[@]}" "${@}"
+   set -- "${EPYTHON}" -m pytest "${args[@]}" "${@}" ${EPYTEST_FLAGS}
 
echo "${@}" >&2
"${@}" || die -n "pytest failed with ${EPYTHON}"
-- 
2.45.1




[gentoo-dev] [PATCH 4/7] distutils-r1.eclass: Support reusing prior wheels when compatible

2024-05-15 Thread Michał Górny
Support reusing the wheels built for earlier Python implementations
if they are compatible with the subsequent implementations being built.
This includes pure Python wheels in packages that do not set
DISTUTILS_EXT, and stable ABI wheels.

Closes: https://bugs.gentoo.org/931689
Signed-off-by: Michał Górny 
---
 eclass/distutils-r1.eclass | 33 +
 1 file changed, 33 insertions(+)

diff --git a/eclass/distutils-r1.eclass b/eclass/distutils-r1.eclass
index f014a184885a..e4d53083124e 100644
--- a/eclass/distutils-r1.eclass
+++ b/eclass/distutils-r1.eclass
@@ -189,6 +189,18 @@ esac
 # ${DISTUTILS_DEPS}"
 # @CODE
 
+# @ECLASS_VARIABLE: DISTUTILS_ALLOW_WHEEL_REUSE
+# @DEFAULT_UNSET
+# @USER_VARIABLE
+# @DESCRIPTION:
+# If set to a non-empty value, the eclass is allowed to reuse a wheel
+# that was built for a prior Python implementation, provided that it is
+# compatible with the current one, rather than building a new one.
+#
+# This is an optimization that can avoid the overhead of calling into
+# the build system in pure Python packages and packages using the stable
+# Python ABI.
+
 if [[ -z ${_DISTUTILS_R1_ECLASS} ]]; then
 _DISTUTILS_R1_ECLASS=1
 
@@ -1584,6 +1596,27 @@ distutils-r1_python_compile() {
esac
 
if [[ ${DISTUTILS_USE_PEP517} ]]; then
+   if [[ ${DISTUTILS_ALLOW_WHEEL_REUSE} ]]; then
+   local whl
+   for whl in "${DISTUTILS_WHEELS[@]}"; do
+   # 1. Use pure Python wheels only if we're not 
expected
+   # to build extensions.  Otherwise, we may end up
+   # not building the extension at all when e.g. 
PyPy3
+   # is built without one.
+   #
+   # 2. For CPython, we can reuse stable ABI 
wheels.  Note
+   # that this relies on the assumption that we're 
building
+   # from the oldest to the newest implementation,
+   # and the wheels are forward-compatible.
+   if [[ ( ! ${DISTUTILS_EXT} && ${whl} == 
*py3-none-any* ) ||
+   ( ${EPYTHON} == python* && ${whl} == 
*-abi3-* ) ]]
+   then
+   distutils_wheel_install 
"${BUILD_DIR}/install" "${whl}"
+   return
+   fi
+   done
+   fi
+
distutils_pep517_install "${BUILD_DIR}/install"
DISTUTILS_WHEELS+=( "${DISTUTILS_WHEEL_PATH}" )
fi
-- 
2.45.1




[gentoo-dev] [PATCH 3/7] distutils-r1.eclass: Add a QA warning for pure Python file mismatch

2024-05-15 Thread Michał Górny
If the package is creating at least one pure Python wheel, check whether
the baseline package contents (i.e. everything but compiled Python
modules, extensions and .dist-info) match between implementations.
This is meant to ensure that we can safely optimize builds by reusing
pure Python wheels from previous builds.

Signed-off-by: Michał Górny 
---
 eclass/distutils-r1.eclass | 40 ++
 1 file changed, 40 insertions(+)

diff --git a/eclass/distutils-r1.eclass b/eclass/distutils-r1.eclass
index 89223b248157..f014a184885a 100644
--- a/eclass/distutils-r1.eclass
+++ b/eclass/distutils-r1.eclass
@@ -2021,6 +2021,44 @@ distutils-r1_src_configure() {
return ${ret}
 }
 
+# @FUNCTION: _distutils-r1_compare_installed_files
+# @INTERNAL
+# @DESCRIPTION:
+# Verify the the match between files installed between this and previous
+# implementation.
+_distutils-r1_compare_installed_files() {
+   debug-print-function ${FUNCNAME} "${@}"
+
+   # QA check requires diff(1).
+   if ! type -P diff &>/dev/null; then
+   return
+   fi
+
+   # Perform the check only if at least one potentially reusable wheel
+   # has been produced.  Nonpure packages (e.g. NumPy) may install
+   # interpreter configuration details into sitedir.
+   if [[ ${DISTUTILS_WHEELS[*]} != *-none-any.whl* &&
+   ${DISTUTILS_WHEELS[*]} != *-abi3-*.whl ]]; then
+   return
+   fi
+
+   local sitedir=${BUILD_DIR}/install$(python_get_sitedir)
+   if [[ -n ${_DISTUTILS_PREVIOUS_SITE} ]]; then
+   diff -dur \
+   --exclude=__pycache__ \
+   --exclude='*.dist-info' \
+   --exclude="*$(get_modname)" \
+   "${_DISTUTILS_PREVIOUS_SITE}" "${sitedir}"
+   if [[ ${?} -ne 0 ]]; then
+   eqawarn "Package creating at least one pure Python 
wheel installs different"
+   eqawarn "Python files between implementations.  See 
diff in build log, above"
+   eqawarn "this message."
+   fi
+   fi
+
+   _DISTUTILS_PREVIOUS_SITE=${sitedir}
+}
+
 # @FUNCTION: _distutils-r1_post_python_compile
 # @INTERNAL
 # @DESCRIPTION:
@@ -2055,6 +2093,8 @@ _distutils-r1_post_python_compile() {
find "${bindir}" -type f -exec sed -i \
-e 
"1s@^#!\(${EPREFIX}/usr/bin/\(python\|pypy\)\)@#!${root}\1@" \
{} + || die
+
+   _distutils-r1_compare_installed_files
fi
 }
 
-- 
2.45.1




[gentoo-dev] [PATCH 2/7] distutils-r1.eclass: Store created wheels in DISTUTILS_WHEELS

2024-05-15 Thread Michał Górny
Signed-off-by: Michał Górny 
---
 eclass/distutils-r1.eclass | 10 ++
 1 file changed, 10 insertions(+)

diff --git a/eclass/distutils-r1.eclass b/eclass/distutils-r1.eclass
index 1037c0abe239..89223b248157 100644
--- a/eclass/distutils-r1.eclass
+++ b/eclass/distutils-r1.eclass
@@ -1532,6 +1532,14 @@ distutils_pep517_install() {
DISTUTILS_WHEEL_PATH=${WHEEL_BUILD_DIR}/${wheel}
 }
 
+# @VARIABLE: DISTUTILS_WHEELS
+# @DESCRIPTION:
+# An array of wheels created as a result of distutils-r1_python_compile.
+# Note that this includes only wheels implicitly created by the eclass,
+# and not wheels created as a result of direct distutils_pep517_install
+# calls in the ebuild.
+DISTUTILS_WHEELS=()
+
 # @FUNCTION: distutils-r1_python_compile
 # @USAGE: [additional-args...]
 # @DESCRIPTION:
@@ -1541,6 +1549,7 @@ distutils_pep517_install() {
 #
 # If DISTUTILS_USE_PEP517 is set to any other value, builds a wheel
 # using the PEP517 backend and installs it into ${BUILD_DIR}/install.
+# Path to the wheel is then added to DISTUTILS_WHEELS array.
 #
 # In legacy mode, runs 'esetup.py build'. Any parameters passed to this
 # function will be appended to setup.py invocation, i.e. passed
@@ -1576,6 +1585,7 @@ distutils-r1_python_compile() {
 
if [[ ${DISTUTILS_USE_PEP517} ]]; then
distutils_pep517_install "${BUILD_DIR}/install"
+   DISTUTILS_WHEELS+=( "${DISTUTILS_WHEEL_PATH}" )
fi
 }
 
-- 
2.45.1




[gentoo-dev] [PATCH 1/7] distutils-r1.eclass: Set DISTUTILS_WHEEL_PATH in PEP517 install

2024-05-15 Thread Michał Górny
Store the created wheel path in DISTUTILS_WHEEL_PATH when returning
from distutils_pep517_install.

Signed-off-by: Michał Górny 
---
 eclass/distutils-r1.eclass | 9 -
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/eclass/distutils-r1.eclass b/eclass/distutils-r1.eclass
index a67122a59a33..1037c0abe239 100644
--- a/eclass/distutils-r1.eclass
+++ b/eclass/distutils-r1.eclass
@@ -1343,6 +1343,10 @@ distutils_wheel_install() {
\) -delete || die
 }
 
+# @VARIABLE: DISTUTILS_WHEEL_PATH
+# @DESCRIPTION:
+# Path to the wheel created by distutils_pep517_install.
+
 # @FUNCTION: distutils_pep517_install
 # @USAGE: 
 # @DESCRIPTION:
@@ -1350,7 +1354,8 @@ distutils_wheel_install() {
 # backend and install it into .
 #
 # This function is intended for expert use only.  It does not handle
-# wrapping executables.
+# wrapping executables.  The wheel path is returned
+# in DISTUTILS_WHEEL_PATH variable.
 distutils_pep517_install() {
debug-print-function ${FUNCNAME} "${@}"
[[ ${#} -eq 1 ]] || die "${FUNCNAME} takes exactly one argument: root"
@@ -1523,6 +1528,8 @@ distutils_pep517_install() {
[[ -n ${wheel} ]] || die "No wheel name returned"
 
distutils_wheel_install "${root}" "${WHEEL_BUILD_DIR}/${wheel}"
+
+   DISTUTILS_WHEEL_PATH=${WHEEL_BUILD_DIR}/${wheel}
 }
 
 # @FUNCTION: distutils-r1_python_compile
-- 
2.45.1




[gentoo-dev] [PATCH 0/7] distutils-r1.eclass: wheel reuse optimization, EPYTEST_FLAGS and scikit-build-core updates

2024-05-15 Thread Michał Górny
Hello,

Here's a small batch of patches that:

1. Add support for reusing prior wheels if they are compatible to avoid
invoking the (slow) build system multiple times when building for
multiple targes.  This is currently opt-in (via make.conf variable)
and can benefit us in two cases:

a. in pure Python packages to avoid repeatedly building wheel with
the same files, and

b. in packages using the stable API to avoid building identical
extensions separately for every impl.

2. Add support for EPYTEST_FLAGS variable that can be used by the user
to quickly append additional flags to pytest invocation (e.g. `-x` to
make them stop on first failure, or `-s` to disable output capture).

3. Support passing ninja options to scikit-build-core, and update
invocation for bugfixes from 0.9.4.



Michał Górny (7):
  distutils-r1.eclass: Set DISTUTILS_WHEEL_PATH in PEP517 install
  distutils-r1.eclass: Store created wheels in DISTUTILS_WHEELS
  distutils-r1.eclass: Add a QA warning for pure Python file mismatch
  distutils-r1.eclass: Support reusing prior wheels when compatible
  python-utils-r1.eclass: Support passing EPYTEST_FLAGS
  distutils-r1.eclass: Update scikit-build-core to 0.9.4
  distutils-r1.eclass: Pass ninja options to scikit-build-core

 eclass/distutils-r1.eclass| 106 --
 eclass/python-utils-r1.eclass |  11 +++-
 2 files changed, 110 insertions(+), 7 deletions(-)

-- 
2.45.1




[gentoo-dev] [PATCH v2] cargo.eclass: Optimize crate unpacking

2024-05-15 Thread Michał Górny
Unpack crates in parallel using xargs to utilize multicore systems
better.  Perform checksumming via a single sha256sum invocation.

For dev-python/watchfiles, this speeds up unpacking on my machine
from 2.6 s to 0.75 s (warm cache).

Signed-off-by: Michał Górny 
---
 eclass/cargo.eclass | 56 ++---
 1 file changed, 33 insertions(+), 23 deletions(-)

Changes in v2:
- fixed errors when CRATES are empty, by skipping the whole block
- made xargs verbosely print executed commands

diff --git a/eclass/cargo.eclass b/eclass/cargo.eclass
index 0f2da982f60c..a685cd99fb38 100644
--- a/eclass/cargo.eclass
+++ b/eclass/cargo.eclass
@@ -329,40 +329,50 @@ _cargo_gen_git_config() {
 cargo_src_unpack() {
debug-print-function ${FUNCNAME} "$@"
 
-   mkdir -p "${ECARGO_VENDOR}" || die
-   mkdir -p "${S}" || die
+   mkdir -p "${ECARGO_VENDOR}" "${S}" || die
 
local archive shasum pkg
+   local crates=()
for archive in ${A}; do
case "${archive}" in
*.crate)
-   # when called by pkgdiff-mg, do not unpack 
crates
-   [[ ${PKGBUMPING} == ${PVR} ]] && continue
-
-   ebegin "Loading ${archive} into Cargo registry"
-   tar -xf "${DISTDIR}"/${archive} -C 
"${ECARGO_VENDOR}/" || die
-   # generate sha256sum of the crate itself as 
cargo needs this
-   shasum=$(sha256sum "${DISTDIR}"/${archive} | 
cut -d ' ' -f 1)
-   pkg=$(basename ${archive} .crate)
-   cat <<- EOF > 
${ECARGO_VENDOR}/${pkg}/.cargo-checksum.json
-   {
-   "package": "${shasum}",
-   "files": {}
-   }
-   EOF
-   # if this is our target package we need it in 
${WORKDIR} too
-   # to make ${S} (and handle any revisions too)
-   if [[ ${P} == ${pkg}* ]]; then
-   tar -xf "${DISTDIR}"/${archive} -C 
"${WORKDIR}" || die
-   fi
-   eend $?
+   crates+=( "${archive}" )
;;
*)
-   unpack ${archive}
+   unpack "${archive}"
;;
esac
done
 
+   if [[ ${PKGBUMPING} != ${PVR} && ${crates[@]} ]]; then
+   pushd "${DISTDIR}" >/dev/null || die
+
+   ebegin "Unpacking crates"
+   printf '%s\0' "${crates[@]}" |
+   xargs -0 -P "$(makeopts_jobs)" -n 1 -t -- \
+   tar -x -C "${ECARGO_VENDOR}" -f
+   assert
+   eend $?
+
+   while read -d '' -r shasum archive; do
+   pkg=${archive%.crate}
+   cat <<- EOF > 
${ECARGO_VENDOR}/${pkg}/.cargo-checksum.json || die
+   {
+   "package": "${shasum}",
+   "files": {}
+   }
+   EOF
+
+   # if this is our target package we need it in 
${WORKDIR} too
+   # to make ${S} (and handle any revisions too)
+   if [[ ${P} == ${pkg}* ]]; then
+   tar -xf "${archive}" -C "${WORKDIR}" || die
+   fi
+   done < <(sha256sum -z "${crates[@]}" || die)
+
+   popd >/dev/null || die
+   fi
+
cargo_gen_config
 }
 
-- 
2.45.1




Re: [gentoo-dev] [PATCH] cargo.eclass: Optimize crate unpacking

2024-05-13 Thread Michał Górny
On Mon, 2024-05-13 at 16:00 +0200, Florian Schmaus wrote:
> On 12/05/2024 20.21, Michał Górny wrote:
> > On Sun, 2024-05-12 at 19:22 +0200, Florian Schmaus wrote:
> > > On 12/05/2024 04.26, Michał Górny wrote:
> > > > +   if [[ ${PKGBUMPING} != ${PVR} ]]; then
> > > > +   pushd "${DISTDIR}" >/dev/null || die
> > > > +
> > > > +   ebegin "Unpacking crates"
> > > > +   printf '%s\0' "${crates[@]}" |
> > > > +   xargs -0 -P "$(makeopts_jobs)" -n 1 -- \
> > > 
> > > Consider using get_makeopts_jobs instead of makeopts_jobs, as it
> > > searches more variables for --jobs.
> > 
> > Whose bright idea was to add a second similarly named function that does
> > roughly the same thing but apparently differently?  It can hardly get
> > more confusing.
> 
> You are absolutely right, it sucks that we have two very similar methods.
> 
> You are invited to suggest how the situation can be improved. However, 
> rambling without presenting alternatives is not helpful in any way.
> 

My suggestion would be for the person who introduced new methods
and implicitly claimed the old methods to be "legacy" to put an actual
effort to migrate consumers.

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


Re: [gentoo-dev] [PATCH] cargo.eclass: Optimize crate unpacking

2024-05-12 Thread Michał Górny
On Sun, 2024-05-12 at 19:22 +0200, Florian Schmaus wrote:
> On 12/05/2024 04.26, Michał Górny wrote:
> > Unpack crates in parallel using xargs to utilize multicore systems
> > better.  Perform checksumming via a single sha256sum invocation.
> > 
> > For dev-python/watchfiles, this speeds up unpacking on my machine
> > from 2.6 s to 0.75 s (warm cache).
> > 
> > Signed-off-by: Michał Górny 
> > ---
> >   eclass/cargo.eclass | 56 ++---
> >   1 file changed, 33 insertions(+), 23 deletions(-)
> > 
> > diff --git a/eclass/cargo.eclass b/eclass/cargo.eclass
> > index 0f2da982f60c..5a16d3a30528 100644
> > --- a/eclass/cargo.eclass
> > +++ b/eclass/cargo.eclass
> > @@ -329,40 +329,50 @@ _cargo_gen_git_config() {
> >   cargo_src_unpack() {
> > debug-print-function ${FUNCNAME} "$@"
> >   
> > -   mkdir -p "${ECARGO_VENDOR}" || die
> > -   mkdir -p "${S}" || die
> > +   mkdir -p "${ECARGO_VENDOR}" "${S}" || die
> >   
> > local archive shasum pkg
> > +   local crates=()
> > for archive in ${A}; do
> > case "${archive}" in
> > *.crate)
> > -   # when called by pkgdiff-mg, do not unpack 
> > crates
> > -   [[ ${PKGBUMPING} == ${PVR} ]] && continue
> > -
> > -   ebegin "Loading ${archive} into Cargo registry"
> > -   tar -xf "${DISTDIR}"/${archive} -C 
> > "${ECARGO_VENDOR}/" || die
> > -   # generate sha256sum of the crate itself as 
> > cargo needs this
> > -   shasum=$(sha256sum "${DISTDIR}"/${archive} | 
> > cut -d ' ' -f 1)
> > -   pkg=$(basename ${archive} .crate)
> > -   cat <<- EOF > 
> > ${ECARGO_VENDOR}/${pkg}/.cargo-checksum.json
> > -   {
> > -   "package": "${shasum}",
> > -   "files": {}
> > -   }
> > -   EOF
> > -   # if this is our target package we need it in 
> > ${WORKDIR} too
> > -   # to make ${S} (and handle any revisions too)
> > -   if [[ ${P} == ${pkg}* ]]; then
> > -   tar -xf "${DISTDIR}"/${archive} -C 
> > "${WORKDIR}" || die
> > -   fi
> > -   eend $?
> > +   crates+=( "${archive}" )
> > ;;
> > *)
> > -   unpack ${archive}
> > +   unpack "${archive}"
> > ;;
> > esac
> >     done
> >   
> > +   if [[ ${PKGBUMPING} != ${PVR} ]]; then
> > +   pushd "${DISTDIR}" >/dev/null || die
> > +
> > +   ebegin "Unpacking crates"
> > +   printf '%s\0' "${crates[@]}" |
> > +   xargs -0 -P "$(makeopts_jobs)" -n 1 -- \
> 
> Consider using get_makeopts_jobs instead of makeopts_jobs, as it 
> searches more variables for --jobs.

Whose bright idea was to add a second similarly named function that does
roughly the same thing but apparently differently?  It can hardly get
more confusing.

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] [PATCH] cargo.eclass: Optimize crate unpacking

2024-05-11 Thread Michał Górny
Unpack crates in parallel using xargs to utilize multicore systems
better.  Perform checksumming via a single sha256sum invocation.

For dev-python/watchfiles, this speeds up unpacking on my machine
from 2.6 s to 0.75 s (warm cache).

Signed-off-by: Michał Górny 
---
 eclass/cargo.eclass | 56 ++---
 1 file changed, 33 insertions(+), 23 deletions(-)

diff --git a/eclass/cargo.eclass b/eclass/cargo.eclass
index 0f2da982f60c..5a16d3a30528 100644
--- a/eclass/cargo.eclass
+++ b/eclass/cargo.eclass
@@ -329,40 +329,50 @@ _cargo_gen_git_config() {
 cargo_src_unpack() {
debug-print-function ${FUNCNAME} "$@"
 
-   mkdir -p "${ECARGO_VENDOR}" || die
-   mkdir -p "${S}" || die
+   mkdir -p "${ECARGO_VENDOR}" "${S}" || die
 
local archive shasum pkg
+   local crates=()
for archive in ${A}; do
case "${archive}" in
*.crate)
-   # when called by pkgdiff-mg, do not unpack 
crates
-   [[ ${PKGBUMPING} == ${PVR} ]] && continue
-
-   ebegin "Loading ${archive} into Cargo registry"
-   tar -xf "${DISTDIR}"/${archive} -C 
"${ECARGO_VENDOR}/" || die
-   # generate sha256sum of the crate itself as 
cargo needs this
-   shasum=$(sha256sum "${DISTDIR}"/${archive} | 
cut -d ' ' -f 1)
-   pkg=$(basename ${archive} .crate)
-   cat <<- EOF > 
${ECARGO_VENDOR}/${pkg}/.cargo-checksum.json
-   {
-   "package": "${shasum}",
-   "files": {}
-   }
-   EOF
-   # if this is our target package we need it in 
${WORKDIR} too
-   # to make ${S} (and handle any revisions too)
-   if [[ ${P} == ${pkg}* ]]; then
-   tar -xf "${DISTDIR}"/${archive} -C 
"${WORKDIR}" || die
-   fi
-   eend $?
+   crates+=( "${archive}" )
;;
*)
-   unpack ${archive}
+   unpack "${archive}"
;;
esac
done
 
+   if [[ ${PKGBUMPING} != ${PVR} ]]; then
+   pushd "${DISTDIR}" >/dev/null || die
+
+   ebegin "Unpacking crates"
+   printf '%s\0' "${crates[@]}" |
+   xargs -0 -P "$(makeopts_jobs)" -n 1 -- \
+   tar -x -C "${ECARGO_VENDOR}" -f
+   assert
+   eend $?
+
+   while read -d '' -r shasum archive; do
+   pkg=${archive%.crate}
+   cat <<- EOF > 
${ECARGO_VENDOR}/${pkg}/.cargo-checksum.json || die
+   {
+   "package": "${shasum}",
+   "files": {}
+   }
+   EOF
+
+   # if this is our target package we need it in 
${WORKDIR} too
+   # to make ${S} (and handle any revisions too)
+   if [[ ${P} == ${pkg}* ]]; then
+   tar -xf "${archive}" -C "${WORKDIR}" || die
+   fi
+   done < <(sha256sum -z "${crates[@]}" || die)
+
+   popd >/dev/null || die
+   fi
+
cargo_gen_config
 }
 
-- 
2.45.0




Re: [gentoo-dev] [PATCH 3/4] acct-user.eclass: use an eclass variable for the override variable name

2024-05-09 Thread Michał Górny
On Thu, 2024-05-09 at 08:12 -0400, Michael Orlitzky wrote:
> On Thu, 2024-05-09 at 14:03 +0200, Michał Górny wrote:
> > >  @ECLASS_VARIABLE: _OVERRIDE_NAME
> > 
> > This is not prefixed correctly.
> > 
> 
> ACCT_USER_OVERRIDE_NAME has an entirely different meaning, but I could
> use _ACCT_USER_OVERRIDE_NAME if that's what you're suggesting.
> 
> 
> > > +# @INTERNAL
> > > +# @DESCRIPTION:
> > > +# A version of the user name suitable for use in a bash variable. This
> > > +# is used to construct the names of the make.conf override variables and
> > > +# it will always be uppercase $PN with the hyphens replaced by
> > > +# underscores. It is defined once, here, so that in an overlay the
> > > +# ebuild may set ACCT_USER_NAME to something other than $PN without
> > > +# affecting the name of the override variable. This is necessary if the
> > > +# username in question would lead to an invalid bash variable
> > > +# name. Doing so does violate expectations with respect to the override
> > > +# naming convention, but (a) your warranty is already void if you are
> > > +# changing ACCT_USER_NAME or using make.conf overrides, and (b) you
> > > +# shouldn't need make.conf overrides in an overlay.
> > > +_OVERRIDE_NAME=${ACCT_USER_NAME^^}
> > > +_OVERRIDE_NAME=${_OVERRIDE_NAME//-/_}
> > 
> > Any reason not to just use PN directly below?  After all, you need to
> > sanitize it anyway.
> > 
> 
> I started out with that, but I had to copy & paste the same comment
> explaining why it uses $PN to each site. Then I had the idea to factor
> it out. I don't really care though if you think it's preferable.
> 

I think it will be less confusing than trying to explain what
_ACCT_USER_OVERRIDE_NAME is, and that it doesn't oveerride name.

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


Re: [gentoo-dev] [PATCH 3/4] acct-user.eclass: use an eclass variable for the override variable name

2024-05-09 Thread Michał Górny
On Thu, 2024-05-09 at 07:57 -0400, Michael Orlitzky wrote:
> If (after upcasing and replacing hyphens by underscores) ACCT_USER_NAME
> is set to something that isn't valid in a bash variable name, the eclass
> will crash: it uses ACCT_USER_NAME to construct the make.conf override
> variables in pkg_pretend() and src_install().
> 
> This commit relocates the computation of the "override name" subsequent
> to the definition of ACCT_USER_NAME="${PN}". In Gentoo, policy prohibits
> redefinition of that variable; so nothing is changed. But in an overlay,
> this allows the ebuild to define ACCT_USER_NAME to something that would
> not be valid in a bash variable at the expense of violating expectations
> about the override variable names.
> 
> Signed-off-by: Michael Orlitzky 
> ---
>  eclass/acct-user.eclass | 32 ++--
>  1 file changed, 22 insertions(+), 10 deletions(-)
> 
> diff --git a/eclass/acct-user.eclass b/eclass/acct-user.eclass
> index a4fe5e9f5e34..fb3ccd2044da 100644
> --- a/eclass/acct-user.eclass
> +++ b/eclass/acct-user.eclass
> @@ -64,6 +64,23 @@ inherit user-info
>  # package naming restrictions would prohibit some otherwise-valid usernames.
>  ACCT_USER_NAME=${PN}
>  
> +# @ECLASS_VARIABLE: _OVERRIDE_NAME

This is not prefixed correctly.

> +# @INTERNAL
> +# @DESCRIPTION:
> +# A version of the user name suitable for use in a bash variable. This
> +# is used to construct the names of the make.conf override variables and
> +# it will always be uppercase $PN with the hyphens replaced by
> +# underscores. It is defined once, here, so that in an overlay the
> +# ebuild may set ACCT_USER_NAME to something other than $PN without
> +# affecting the name of the override variable. This is necessary if the
> +# username in question would lead to an invalid bash variable
> +# name. Doing so does violate expectations with respect to the override
> +# naming convention, but (a) your warranty is already void if you are
> +# changing ACCT_USER_NAME or using make.conf overrides, and (b) you
> +# shouldn't need make.conf overrides in an overlay.
> +_OVERRIDE_NAME=${ACCT_USER_NAME^^}
> +_OVERRIDE_NAME=${_OVERRIDE_NAME//-/_}

Any reason not to just use PN directly below?  After all, you need to
sanitize it anyway.

> +
>  # @ECLASS_VARIABLE: ACCT_USER_ID
>  # @REQUIRED
>  # @DESCRIPTION:
> @@ -231,8 +248,7 @@ acct-user_pkg_pretend() {
>   local user_id=${ACCT_USER_ID}
>  
>   # check for the override
> - local override_name=${ACCT_USER_NAME^^}
> - local override_var=ACCT_USER_${override_name//-/_}_ID
> + local override_var=ACCT_USER_${_OVERRIDE_NAME}_ID
>   if [[ -n ${!override_var} ]]; then
>   user_id=${!override_var}
>   [[ ${user_id} -ge -1 ]] || die "${override_var}=${user_id} 
> invalid!"
> @@ -274,11 +290,9 @@ acct-user_src_install() {
>   local ACCT_USER_GROUPS=${ACCT_USER_GROUPS[*]}
>  
>   # support make.conf overrides
> - local override_name=${ACCT_USER_NAME^^}
> - override_name=${override_name//-/_}
>   local var
>   for var in ACCT_USER_{ID,COMMENT,SHELL,HOME{,_OWNER,_PERMS},GROUPS}; do
> - local var_name=ACCT_USER_${override_name}_${var#ACCT_USER_}
> + local var_name=ACCT_USER_${_OVERRIDE_NAME}_${var#ACCT_USER_}
>   if [[ -n ${!var_name} ]]; then
>   ewarn "${var_name}=${!var_name} override in effect, 
> support will not be provided."
>   else
> @@ -286,7 +300,7 @@ acct-user_src_install() {
>   fi
>   declare -g "_${var}=${!var_name}"
>   done
> - var_name=ACCT_USER_${override_name}_GROUPS_ADD
> + var_name=ACCT_USER_${_OVERRIDE_NAME}_GROUPS_ADD
>   if [[ -n ${!var_name} ]]; then
>   ewarn "${var_name}=${!var_name} override in effect, support 
> will not be provided."
>   _ACCT_USER_GROUPS+=" ${!var_name}"
> @@ -436,12 +450,10 @@ acct-user_pkg_postinst() {
>   has "${g}" "${groups[@]}" || del_groups+="${del_groups:+, }${g}"
>   done
>   if [[ -n ${del_groups} ]]; then
> - local override_name=${ACCT_USER_NAME^^}
> - override_name=${override_name//-/_}
>   ewarn "Removing user ${ACCT_USER_NAME} from group(s): 
> ${del_groups}"
>   ewarn "To retain the user's group membership in the local 
> system"
> - ewarn "config, override with ACCT_USER_${override_name}_GROUPS 
> or"
> - ewarn "ACCT_USER_${override_name}_GROUPS_ADD in make.conf."
> + ewarn "config, override with ACCT_USER_${_OVERRIDE_NAME}_GROUPS 
> or"
> + ewarn "ACCT_USER_${_OVERRIDE_NAME}_GROUPS_ADD in make.conf."
>   ewarn "Documentation reference:"
>   ewarn 
> "https://wiki.gentoo.org/wiki/Practical_guide_to_the_GLEP_81_migration#Override_user_groups;
>   fi

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


Re: [gentoo-dev] [PATCH 1/4] acct-user.eclass: make ACCT_USER_NAME writable

2024-05-09 Thread Michał Górny
On Thu, 2024-05-09 at 07:57 -0400, Michael Orlitzky wrote:
> The ACCT_USER_NAME variable is set to $PN by Gentoo policy. Prior to
> this commit, it was also marked "readonly", preventing it from being
> changed in an ebuild. In an overlay, and combined with the package
> naming restrictions in the PMS, this has the unfortunate side effect of
> prohibiting some otherwise-valid usernames. We drop the "readonly" to
> allow those users to be managed (in overlays) using GLEP81 packages.
> 
> Signed-off-by: Michael Orlitzky 
> ---
>  eclass/acct-user.eclass | 7 +++
>  1 file changed, 3 insertions(+), 4 deletions(-)
> 
> diff --git a/eclass/acct-user.eclass b/eclass/acct-user.eclass
> index 66a4d6667888..a4fe5e9f5e34 100644
> --- a/eclass/acct-user.eclass
> +++ b/eclass/acct-user.eclass
> @@ -1,4 +1,4 @@
> -# Copyright 2019-2023 Gentoo Authors
> +# Copyright 2019-2024 Gentoo Authors
>  # Distributed under the terms of the GNU General Public License v2
>  
>  # @ECLASS: acct-user.eclass
> @@ -58,12 +58,11 @@ inherit user-info
>  # << Eclass variables >>
>  
>  # @ECLASS_VARIABLE: ACCT_USER_NAME
> -# @INTERNAL
>  # @DESCRIPTION:
>  # The name of the user.  This is forced to ${PN} and the policy prohibits
> -# it from being changed.
> +# it from being changed. The variable is left writable for use in overlays;
> +# package naming restrictions would prohibit some otherwise-valid usernames.

You're not following the original style (double spaces).

>  ACCT_USER_NAME=${PN}
> -readonly ACCT_USER_NAME
>  
>  # @ECLASS_VARIABLE: ACCT_USER_ID
>  # @REQUIRED

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


Re: [gentoo-dev] [RFC] Gentoo Bugzilla: new resolution for bugs closed due to last rites

2024-05-08 Thread Michał Górny
On Wed, 2024-02-07 at 12:03 +0100, Michał Górny wrote:
> Hi,
> 
> I think we should add a new bug resolution that would more precisely
> cover closing bugs due to packages being removed.  Right now, whichever
> resolution we use (be it WONTFIX, OBSOLETE, etc.), we aren't able to
> easily distinguish whether the resolution was used "normally" or due to
> last rites.
> 
> Having a dedicated resolution (technical name RESO/PKGREMOVED) would
> make this clear.  Furthermore, it would make it easier to reopen bugs
> if the packages are ever reintroduced.
> 
> WDYT?
> 

Given no opposition, I've added RESO/PKGREMOVED now.

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


Re: [gentoo-dev] Up for grabs: several (34) Qt-based applications and related packages

2024-05-08 Thread Michał Górny
On Sat, 2024-05-04 at 12:07 -0400, Ionen Wolkens wrote:
>  * x11-libs/qscintilla
> 

Adding dev-python/qscintilla-python to that.  We've became maintainer
via fallback, though we've never touched that package and it has no
tests.

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] [REVIEW news] 2024-05-09-python3-12: Add

2024-05-06 Thread Michał Górny
Signed-off-by: Michał Górny 
---
 .../2024-05-09-python3-12.en.txt  | 120 
 .../2024-05-09-python3-12.pl.txt  | 133 ++
 2 files changed, 253 insertions(+)
 create mode 100644 2024-05-09-python3-12/2024-05-09-python3-12.en.txt
 create mode 100644 2024-05-09-python3-12/2024-05-09-python3-12.pl.txt

diff --git a/2024-05-09-python3-12/2024-05-09-python3-12.en.txt 
b/2024-05-09-python3-12/2024-05-09-python3-12.en.txt
new file mode 100644
index 000..cedb196
--- /dev/null
+++ b/2024-05-09-python3-12/2024-05-09-python3-12.en.txt
@@ -0,0 +1,120 @@
+Title: Python 3.12 to become the default on 2024-06-01
+Author: Michał Górny 
+Posted: 2024-05-09
+Revision: 1
+News-Item-Format: 2.0
+Display-If-Installed: dev-lang/python:3.10
+Display-If-Installed: dev-lang/python:3.11
+
+We are planning to switch the default Python target of Gentoo systems
+on 2024-06-01, from Python 3.11 to Python 3.12.  If you have not changed
+the values of PYTHON_TARGETS or PYTHON_SINGLE_TARGET, the change will
+have immediate effect on your system and the package manager will try
+to switch automatically on the next upgrade following the change.
+
+If you did change the values, prefer a safer approach or have problems
+with the update, read on.
+
+Please note that the default upgrade method switches packages to the new
+Python versions as they are rebuilt.  This means that all interdependent
+packages have to support the new version for the upgrade to proceed,
+and that some programs may temporarily fail to find their dependencies
+throughout the upgrade (although programs that are already started
+are unlikely to be affected).
+
+
+If you have PYTHON_TARGETS or PYTHON_SINGLE_TARGET declared
+in make.conf, please remove these declarations as they will interfere
+with the package.use samples provided below.  Using make.conf for Python
+targets is discouraged as it prevents package defaults from applying
+when necessary.  This news item assumes using /etc/portage/package.use
+or your package manager's equivalent file for configuration.
+
+
+At this point, you have a few configuration options to choose from:
+
+1. If you wish Python upgrades to apply automatically, you can remove
+   PYTHON_TARGETS and PYTHON_SINGLE_TARGET declarations.  When
+   the defaults change, your package manager should handle the upgrade
+   automatically.  However, you may still need to run the update
+   commands if any problems arise.
+
+2. If you wish to defer the upgrade for the time being, you can
+   explicitly set the old values in package.use.
+
+3. If you wish to force the upgrade earlier, you can explicitly set
+   the new values and run the upgrade commands.
+
+4. If you wish to use a safer approach (i.e. less likely to temporarily
+   break packages during the upgrade), you can perform a multi-step
+   upgrade as outlined below.
+
+5. Finally, you can use an arbitrary combination of PYTHON_TARGETS
+   and PYTHON_SINGLE_TARGET.
+
+
+Deferring the upgrade
+=
+To defer the upgrade, explicitly set the old targets:
+
+*/* PYTHON_TARGETS: -* python3_11
+*/* PYTHON_SINGLE_TARGET: -* python3_11
+
+This will enforce Python 3.11 and block any future updates.  However,
+please note that this is only a temporary solution and you will
+eventually need to perform the migration.
+
+
+Forcing the upgrade
+===
+To force the upgrade earlier, explicitly select the Python 3.12 targets:
+
+*/* PYTHON_TARGETS: -* python3_12
+*/* PYTHON_SINGLE_TARGET: -* python3_12
+
+However, it is important to remember to remove this after the defaults
+change, as it will interfere with the automatic switch to the next
+Python version in the future.
+
+
+Safer upgrade procedure
+===
+A safer approach is to add Python 3.12 support to your system first,
+and only then remove Python 3.11.  However, note that this involves two
+rebuilds of all the affected packages, so it will take noticeably
+longer.
+
+First, enable both Python 3.11 and Python 3.12, and then run the upgrade
+commands:
+
+*/* PYTHON_TARGETS: -* python3_11 python3_12
+*/* PYTHON_SINGLE_TARGET: -* python3_11
+
+Then switch PYTHON_SINGLE_TARGET and run the second batch of upgrades:
+
+*/* PYTHON_TARGETS: -* python3_11 python3_12
+*/* PYTHON_SINGLE_TARGET: -* python3_12
+
+Finally, switch to the final version and upgrade:
+
+*/* PYTHON_TARGETS: -* python3_12
+*/* PYTHON_SINGLE_TARGET: -* python3_12
+
+You may wish to remove the target overrides after the defaults switch.
+Alternatively, you can keep them to block the next automatic upgrade
+to Python 3.13, and upgrade manually then.
+
+
+Upgrade commands
+
+The Python 3.11 cleanup requires that Python 3.11 is removed from
+the complete dependency trees in batch.  If some of the
+installed packages using an older Python version are not triaged
+for the upgrade, the package manager will throw dependency conflicts

[gentoo-dev] Last rites: dev-games/poker-eval

2024-05-05 Thread Michał Górny
# Michał Górny  (2024-05-05)
# A library last bumped in 2010.  Homepage gone.  No revdeps.
# Removal on 2024-06-04.  Bug #909527.
dev-games/poker-eval

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: dev-games/hawknl

2024-05-05 Thread Michał Górny
# Michał Górny  (2024-05-05)
# A library last bumped in 2004.  Homepage gone.  Carries patches
# and hacks already.  No reverse dependencies.
# Removal on 2024-06-04.  Bug #909581.
dev-games/hawknl

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: dev-python/ovs, net-misc/openvswitch

2024-05-05 Thread Michał Górny
# Michał Górny  (2024-05-05)
# Effectively unmaintained.  Unpatched vulnerability reported
# in February.  The Python counterpart is even more outdated.
# Removal on 2024-06-04.  Bug #924129.
dev-python/ovs
net-misc/openvswitch

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: net-dns/mydns

2024-05-05 Thread Michał Górny
# Michał Górny  (2024-05-05)
# An unmaintained fork of an unmaintained DNS server.  All successive
# homepages are gone.  Last commit in 2014.  Already carries a lot
# of patches and hacks.
# Removal on 2024-06-04.  Bug #928942.
net-dns/mydns

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: dev-python/dask, dev-python/dask-expr

2024-05-03 Thread Michał Górny
# Michał Górny  (2024-05-04)
# A really bad quality package with a never-ending stream of unclear
# test failures, and blocked keywording and stabilization bugs.
# The bump to the most recent release is blocked by a ton of test
# regressions.  No reverse dependencies left.
# Removal on 2024-06-03.  Bug #931151.
dev-python/dask
dev-python/dask-expr

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


Re: [gentoo-dev] Projects without members: ALSA, PHP, VDR

2024-05-01 Thread Michał Górny
On Wed, 2024-05-01 at 17:12 +0200, Martin Dummer wrote:
> Am 01.05.24 um 16:03 schrieb Michał Górny:
> > The following projects have no members right now:
> > 
> > https://wiki.gentoo.org/wiki/Project:VDR
> > 
> I am already proxy maintainer for 27 vdr packages, you can add me as
> proxy maintainer to all remaining packages of v...@gentoo.org.
> 
> Or I place a PR on github for this, let me know your preference.
> 

Please make a PR.

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


Re: [gentoo-dev] [PATCH] .github: Add pull request template

2024-05-01 Thread Michał Górny
On Wed, 2024-05-01 at 10:28 -0400, Ionen Wolkens wrote:
> On Wed, May 01, 2024 at 03:32:21PM +0200, Michał Górny wrote:
> > The idea is to increase awareness of the AI policy, as well as other
> > rules, and to inform users before they submit a PR.
> 
> Bit mixed feelings about this given checkboxes feel like unnecessary
> churn for routine contributors and is semi-redundant with the
> Signed-off-by.
> 
> I think it's great for first-time/occasional contributors though.

Yeah, that's why I tried to keep it relatively short.  We don't want
people clicking too much every single time.

> 
> Having a AI-specific checkbox does feel kind of overkill when it won't
> concern the majority of contributors, albeit given how how hard the whole
> thing is pushed lately and that we have no real way to verify beside the
> user being made aware of it and certifying it...

It's mostly a way of advertising the change.

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


Re: [gentoo-dev] [PATCH] .github: Add pull request template

2024-05-01 Thread Michał Górny
On Wed, 2024-05-01 at 16:27 +0200, Maciej Barć wrote:
> Maybe we could consider also adding something along the lines (4 
> additional positions):
> 
> 1. I have emerged the package(s) on a Gentoo-based system (be it 
> "native" or virtualized by means of hardware-based virtualization or 
> system layer virtualization).
> 2. I have tested that the package(s) merge inside both the user and net 
> sandbox without violations on a Gentoo-based system.
> 3. I can assure that the packages would be able to be merged on the 
> currently default Gentoo profile (with or without modifications to USE 
> flags).
> 4. If manual intervention (beyond "emerge PKG") is required ro complete 
> the install/update of the package(s) I have explained the steps needed 
> to be taken in the PR and/or package ebuild(s) and/or Gentoo Wiki.
> 

Asking people to check 8 checkboxes is a bit much.

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Projects without members: ALSA, PHP, VDR

2024-05-01 Thread Michał Górny
Hello,

The following projects have no members right now:

https://wiki.gentoo.org/wiki/Project:ALSA
https://wiki.gentoo.org/wiki/Project:PHP
https://wiki.gentoo.org/wiki/Project:VDR

Please consider joining to keep them alive.  Or disbanding them
and taking packages over directly.

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] [PATCH] .github: Add pull request template

2024-05-01 Thread Michał Górny
Signed-off-by: Michał Górny 
---
 .github/pull_request_template.md | 12 
 1 file changed, 12 insertions(+)
 create mode 100644 .github/pull_request_template.md

The idea is to increase awareness of the AI policy, as well as other
rules, and to inform users before they submit a PR.

Screenshots @ https://github.com/gentoo/gentoo/pull/36503


diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
new file mode 100644
index ..9e6fe061db11
--- /dev/null
+++ b/.github/pull_request_template.md
@@ -0,0 +1,12 @@
+
+
+---
+
+Please check all the boxes that apply:
+
+- [ ] I can submit this contribution in agreement with the [Copyright 
Policy](https://www.gentoo.org/glep/glep-0076.html#certificate-of-origin).
+- [ ] This contribution has not been created with the assistance of Natural 
Language Processing artificial intelligence tools, in accordance with [AI 
policy](https://wiki.gentoo.org/wiki/Project:Council/AI_policy).
+- [ ] I have certified the above via adding a `Signed-off-by` line to *every* 
commit in the pull request.
+- [ ] I have run `pkgcheck scan --commits --net` to check for issues with my 
commits.
+
+Please note that all boxes must be checked for the pull request to be merged.
-- 
2.45.0




[gentoo-dev] Last rites: dev-python/sphinxcontrib-newsfeed

2024-04-23 Thread Michał Górny
# Michał Górny  (2024-04-23)
# No py3.12, no tests, no maintainer.  Also no revdeps.
# Removal on 2024-05-23.  Bug #929513.
dev-python/sphinxcontrib-newsfeed

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: dev-python/pytest-faulthandler

2024-04-23 Thread Michał Górny
# Michał Górny  (2024-04-23)
# Integrated into >=dev-python/pytest-5.0.  No revdeps.
# Removal on 2024-05-23.  Bug #929496.
dev-python/pytest-faulthandler

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: dev-python/pyannotate

2024-04-23 Thread Michał Górny
# Michał Górny  (2024-04-23)
# Broken with py3.12.  Last commit upstream in 2021.  No revdeps.
# Removal on 2024-05-23.  Bug #929484.
dev-python/pyannotate

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: dev-python/kafka-python

2024-04-23 Thread Michał Górny
# Michał Górny  (2024-04-23)
# No py3.12, broken.  Upstream literally tells people to use a fork
# "for the time being".  No revdeps.
# Removal on 2024-05-23.  Bug #929461.
dev-python/kafka-python

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: dev-python/cgroup-utils

2024-04-23 Thread Michał Górny
# Michał Górny  (2024-04-23)
# Unmaintained.  No py3.12, failing tests.  Last upstream activity
# in 2020, triggered by our previous last rites.  No revdeps.
# Removal on 2024-05-23.  Bug #929445.
dev-python/cgroup-utils

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: dev-python/guzzle_sphinx_theme

2024-04-23 Thread Michał Górny
# Michał Górny  (2024-04-23)
# Unmaintained Sphinx theme.  Last commit in 2021.  No revdeps.
# Removal on 2024-05-23.  Bug #929458.
dev-python/guzzle_sphinx_theme

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: dev-python/fuse-python

2024-04-23 Thread Michał Górny
# Michał Górny  (2024-04-23)
# Unmaintained in Gentoo.  Lacking tests, py3.12 support, outdated.
# No revdeps.  The alternatives are dev-python/{llfuse,pyfuse3}.
# Removal on 2024-05-23.  Bug #929453.
dev-python/fuse-python

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: net-analyzer/tcpstat

2024-04-23 Thread Michał Górny
# Michał Górny  (2024-04-23)
# Unmaintained.  Last release in 2003.  Carries a ton of patches.
# Removal on 2024-05-23.  Bug #928731.
net-analyzer/tcpstat

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: media-video/vstrip

2024-04-23 Thread Michał Górny
# Michał Górny  (2024-04-23)
# Added in 2005 and not updated since.  Homepage and source mirrors
# are gone.  Needs patches to even build.
# Removal on 2024-05-23.  Bug #928594.
media-video/vstrip

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: net-im/librvp

2024-04-23 Thread Michał Górny
# Michał Górny  (2024-04-23)
# Obsolete Pidgin plugin.  Last supported in 2008, removed from plugin
# list in 2019.
# Removal on 2024-05-23.  Bug #928578.
net-im/librvp

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: media-sound/pitchtune

2024-04-23 Thread Michał Górny
# Michał Górny  (2024-04-23)
# Unmaintained GTK+2 application.  Last update in 2005.
# Alternatives include media-sound/fmit and media-sound/lingot.
# Removal on 2024-05-23.  Bug #928512.
media-sound/pitchtune

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: net-analyzer/gensink

2024-04-23 Thread Michał Górny
# Michał Górny  (2024-04-23)
# Ancient.  Homepage gone.  There are many alternative network testing
# tools, such as net-misc/iperf.
# Removal on 2024-05-23.  Bug #928133.
net-analyzer/gensink

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: dev-python/sphinx-py3doc-enhanced-theme

2024-04-23 Thread Michał Górny
# Michał Górny  (2024-04-23)
# An old, unmaintained theme.  The last revdep stopped using it.
# Removal on 2024-05-23.  Bug #927764.
dev-python/sphinx-py3doc-enhanced-theme

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: dev-util/android-ndk

2024-04-23 Thread Michał Górny
# Michał Górny  (2024-04-23)
# Unmaintained in Gentoo and seriously outdated.  EAPI 6.  No revdeps.
# There seem to be an up-to-date ebuilds in ::mva.
# Removal on 2024-05-23.  Bug #928070.
dev-util/android-ndk

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: app-forensics/libewf

2024-04-23 Thread Michał Górny
# Michał Górny  (2024-04-23)
# Unmaintained in Gentoo and seriously outdated.  Its only reverse
# dependency is app-admin/testdisk, and the current TestDisk versions
# do not build against this version anyway
# Removal on 2024-05-23.  Bug #927076.
app-forensics/libewf

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: dev-python/tinycss

2024-04-23 Thread Michał Górny
# Michał Górny  (2024-04-23)
# Superseded by dev-python/tinycss2.  No revdeps.
# Removal on 2024-05-23.  Bug #930503.
dev-python/tinycss

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Package up for grabs: net-p2p/eiskaltdcpp

2024-04-21 Thread Michał Górny
Hi,

Due to the maintainer being retired, the following package is now
looking for a new maintainer:

  net-p2p/eiskaltdcpp

It has a few build failures reported.  Overall, it is at the latest
upstream release but it's from 2021, and there seems to be some actibity
in the upstream repository since.

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] AI policy approved

2024-04-15 Thread Michał Górny
Hello,

On 2024-04-14, the Gentoo Council has unanimously approved the new AI
policy.  The original wording from the mailing list thread was approved:

"""
It is expressly forbidden to contribute to Gentoo any content that has
been created with the assistance of Natural Language Processing
artificial intelligence tools.  This motion can be revisited, should
a case been made over such a tool that does not pose copyright, ethical
and quality concerns.
"""

I have started drafting a Wiki page detailing this at [1].  We will also
look into how best provide this new information to our contributors.

[1] https://wiki.gentoo.org/wiki/Project:Council/AI_policy

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Package up for grabs: dev-vcs/git-filter-repo

2024-04-14 Thread Michał Górny
Hi,

The following package needs a new maintainer:

  dev-vcs/git-filter-repo

The test suite fails with modern git versions, it's entirely possible
that the whole package is broken.  The upstream repository has barely
seen any activity since 2022, and the bug reports remain unanswered. 
Also, the package needs py3.12 and PEP517 ports.

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


Re: [gentoo-dev] Update on the 23.0 profiles

2024-04-07 Thread Michał Górny
On Mon, 2024-04-08 at 01:22 +0100, Alex Boag-Munroe wrote:
> On Sun, 7 Apr 2024 at 22:09, Michael Orlitzky  wrote:
> 
> > What I am saying is that I want the freedom to not have things
> > pointlessly enabled on my systems, because similar problems (and worse)
> > happen all day every day. The less exposure I have, the better. The
> > liblzma backdoor was timely because it will prevent most people from
> > telling me I'm being paranoid, but it could have been USE=anything on
> > any other day. Moving the defaults out of the high-level profiles will
> > give control back to the user, hence my complaint about it.
> > 
> 
> I agree, to be honest. The spirit of profiles has always felt like it
> switches on safe/sane defaults that you'd expect for the name (a
> desktop plasma profile switches on all the useful desktop USE flags, a
> basic profile enables the bare minimum for a bootable system, etc),
> giving an expected functionality in the resulting outcome of a
> re-merge of world.

Precisely.

> Outside of this, preferred compression tools, preferred editors
> etc...should be up to the user, or implied in the profile name if it's
> going to be switched on in the profile defaults. I don't use zstd
> myself, I prefer xz or lz4 depending on my purpose. It's on my system
> because some things I chose to have required it. It feels un-Gentoo
> for me to have zstd around _just because_, which the profile default
> would bring into play.
> 

It's not a "preferred compression tool".  "Preferred compression tool"
is selected via adding the package to your @world set.  The flag is used
for enable specific functionality on packages.  This function may be
limited to being able to optionally compress something.  But it could
e.g. also be responsible for being able to, say, open a specific file
format (and I'm not talking of explicitly .xz compressed files)
or a database, or receive proper interoperability elsewhere.

The cost of enabling support for a compression library that's already
installed by default (because you need it to unpack distfiles) is very
little compared to the cost of suddenly discovering that things don't
work.

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


Re: [gentoo-dev] Update on the 23.0 profiles

2024-04-07 Thread Michał Górny
On Sun, 2024-04-07 at 08:51 -0400, Michael Orlitzky wrote:
> On Sun, 2024-04-07 at 14:35 +0200, Andreas K. Huettel wrote:
> > 
> > Uhh, I dont really remember, I think some Chinese-sounding guy asked
> > me for it... (j/k) 
> 
> It is remarkably bad timing. How it looks: Gentoo's response to the xz
> incident is to have me rebuild my entire system with everything that
> could possibly be linked to liblzma, linked to liblzma. Even on the
> hardened profiles, and with no easy way to prevent it.

So, what you're basically saying, is that the best Gentoo response right
now would be to frantically remove LZMA support everywhere?  I'm sure
that would be so much better than our response of masking vulnerable
versions and issuing a statement.

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Packages up for grabs

2024-04-03 Thread Michał Górny
The following packages are looking for a new home:

net-irc/limnoria
net-irc/limnoria-plugins-chantracker
net-irc/limnoria-plugins-jlu5
net-irc/limnoria-plugins-progval
sys-apps/kcheck
sys-apps/the_silver_searcher
x11-wm/jwm

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Packages up for grabs

2024-04-03 Thread Michał Górny
The following packages are up for grabs due to the inactivity of their
maintainers:

acct-group/oprofile
acct-group/privoxy
acct-group/sobexsrv
acct-user/oprofile
acct-user/privoxy
acct-user/sobexsrv
app-admin/apg
app-admin/clsync
app-admin/cpulimit
app-arch/unrpa
app-doc/e16-docs
app-misc/brewtarget
app-mobilephone/sobexsrv
app-text/sdcv
app-text/xpdf
dev-debug/ald
dev-debug/duma
dev-libs/openobex
dev-python/pygame_sdl2
dev-util/dissembler
dev-util/dropwatch
dev-util/lsuio
dev-util/oprofile
dev-util/pretrace
dev-util/tinlink
dev-util/usb-robot
media-libs/imlib2
media-libs/svgalib
media-plugins/imlib2_loaders
media-sound/apulse
net-dialup/openl2tp
net-fs/openafs
net-misc/l7-filter-userspace
net-misc/l7-protocols
net-proxy/pingtunnel
net-proxy/privoxy
net-proxy/tsocks
sec-keys/openpgp-keys-xpdf
sys-block/flashbench
sys-power/nvclock
sys-power/suspend
x11-misc/e16-keyedit
x11-misc/e16menuedit2
x11-plugins/e16-epplets
x11-themes/e16-themes
x11-wm/e16


-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Packages up for grabs

2024-04-03 Thread Michał Górny
The following packages are now looking for a new maintainer due to
the previous maintainer being inactive:

acct-group/zeppelin
acct-user/zeppelin
app-admin/pydf
app-doc/diveintopython
app-misc/cpipe
app-misc/i2bits
app-misc/pfm
app-misc/screenfetch
app-misc/sl
app-misc/ttyrec
app-misc/vifm
app-text/html-xml-utils
app-vim/scala-syntax
dev-lang/micropython
dev-libs/http-fetcher
dev-python/brython
dev-python/nodeenv
dev-util/dwdiff
dev-util/kup
dev-util/xmlindent
dev-util/yacc
games-action/supermariowar
media-gfx/ttygif
net-irc/irssistats
net-misc/redir
net-misc/spiped
sys-apps/crazydiskinfo
sys-process/ftop
sys-process/memwatch
www-apps/zeppelin-bin
www-client/fetch
x11-libs/xforms
x11-misc/sct


-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


Re: [gentoo-dev] Current unavoidable use of xz utils in Gentoo

2024-04-01 Thread Michał Górny
On Mon, 2024-04-01 at 08:57 +0100, Eddie Chapman wrote:
> I stand by and reiterate my view that there is far too much of a cavalier
> attitude towards the matter in general out there including here in Gentoo.
> But not in particular here, it is everywhere where this is being discussed
> at the moment.

I would like to point out that the xz/sshd issue was primarily a social
one, not a technical one.

The primary problem in open source today isn't bad code.  It's projects
relying on overburdened, burned out maintainers.  And on top of that,
users who are complaining, demanding, outright hostile or primarily
contributing by walls of text on a mailing lists, that bring nothing to
discussion except for furthering the burnout of open source developers
who are actually trying to do something.

Think about that.

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: dev-python/nspektr

2024-03-30 Thread Michał Górny
# Michał Górny  (2024-03-30)
# NIH package that was added for dev-python/setuptools but is no longer
# used there.
# Removal on 2024-04-29.  Bug #928270.
dev-python/nspektr

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


Re: [gentoo-dev] Current unavoidable use of xz utils in Gentoo

2024-03-30 Thread Michał Górny
On Sat, 2024-03-30 at 15:17 +, Eddie Chapman wrote:
> Michał Górny wrote:
> > On Sat, 2024-03-30 at 14:57 +, Eddie Chapman wrote:
> > 
> > > Note, I'm not advocating ripping xz-utils out of tree, all I'm saying
> > > is wouldn't it be nice if there were at least 2 alternatives to choose
> > > from? That doesn't have to be disruptive in any way, people who wish to
> > > continue using and trusting xz-utils should be able to continue to do so
> > > without any friction whatsoever.
> > 
> > So, you're basically saying we should go out of our way, recompress all
> > distfiles using two alternative compression formats, increase mirror load
> > four times and add a lot of complexity to ebuilds, right?
> > 
> > --
> > Best regards,
> > Michał Górny
> > 
> 
> Yes that's a very good point, that was something I was wondering in
> weighing up both sides, what the costs would be practically, as I don't
> know the realities of running Gentoo infrastructure. And maybe the costs
> is just too high of a price to pay.
> 
> I wonder if increased use of git repos rather than distributed tarballs
> could be part of a solution to those issues, although that could put quite
> a storage burden on every user. Unless they were all shallow git pulls and
> the user could optionally choose to tar up the git directory after clone
> with compression.  But yes granted then there is even more ebuild
> complexity.
> 

Should we convert git repositories to Mercurial and Bazaar too, to avoid
relying too much on a single tool?

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


Re: [gentoo-dev] Current unavoidable use of xz utils in Gentoo

2024-03-30 Thread Michał Górny
On Sat, 2024-03-30 at 14:57 +, Eddie Chapman wrote:
> Note, I'm not advocating ripping xz-utils out of tree, all I'm saying is
> wouldn't it be nice if there were at least 2 alternatives to choose from?
> That doesn't have to be disruptive in any way, people who wish to continue
> using and trusting xz-utils should be able to continue to do so without
> any friction whatsoever.

So, you're basically saying we should go out of our way, recompress all
distfiles using two alternative compression formats, increase mirror
load four times and add a lot of complexity to ebuilds, right?

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] [PATCH] python-utils-r1.eclass: epytest, error out on missing async plugin

2024-03-29 Thread Michał Górny
Explicitly error out if epytest is run without an appropriate async
plugin, and the test suite contains async tests.  Currently, these tests
are skipped with a warning but that is usually a mistake, and one can
easily miss it when pytest-asyncio or a similar plugin is installed
on the test system.  However, a missing dependency can result
in the tests being skipped afterwards on the tinderbox.

Signed-off-by: Michał Górny 
---
 eclass/python-utils-r1.eclass | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/eclass/python-utils-r1.eclass b/eclass/python-utils-r1.eclass
index caa39813feec..bbf751399476 100644
--- a/eclass/python-utils-r1.eclass
+++ b/eclass/python-utils-r1.eclass
@@ -1349,6 +1349,9 @@ epytest() {
# override filterwarnings=error, we do not really want -Werror
# for end users, as it tends to fail on new warnings from deps
-Wdefault
+   # however, do error out if the package failed to load
+   # an appropriate async plugin
+   -Werror::pytest.PytestUnhandledCoroutineWarning
# override color output
"--color=${color}"
# count is more precise when we're dealing with a large number
-- 
2.44.0




Re: [gentoo-dev] [PATCH] metadata/install-qa-check.d: make the FHS paths warning easier to read

2024-03-29 Thread Michał Górny
On Thu, 2024-03-28 at 23:54 -0400, Eli Schwartz wrote:
>  * QA Notice: The ebuild is installing to one or more unexpected paths:
>  *
>  *   /var/tmp/portage/sys-cluster/legion-/image/usr/bin/legion_prof_files
>  *   
> /var/tmp/portage/sys-cluster/legion-/image/usr/bin/serializer_examples
>  *
>  * Please fix the ebuild to use correct FHS/Gentoo policy paths.
> 
> This message is hard to understand. Is it saying that the resulting
> package contains files prefixed with ${D} which would be immensely
> broken? Is it saying that these paths are *directories* and the FHS does
> not approve of directories in /usr/bin/*/?
> 
> In fact, it's the latter. Fix this in two ways:
> 
> - clarify that it's an unexpected directory, not just some kind of path
> 
> - strip ${D} so that people can better visualize what sort of path gets
>   installed. This has the downside of not being able to copy/paste the
>   path in order to inspect the image directory, but I think this is a
>   very small downside. Usually by the time you see this message, portage
>   has cleaned up. And if it hasn't, you can still copy/paste that from:
> 
>   Completed installing sys-cluster/legion- into 
> /var/tmp/portage/sys-cluster/legion-/image
> 
> Signed-off-by: Eli Schwartz 
> ---
>  metadata/install-qa-check.d/08gentoo-paths | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/metadata/install-qa-check.d/08gentoo-paths 
> b/metadata/install-qa-check.d/08gentoo-paths
> index 5b8607fd5f96..0b92a7a1c132 100644
> --- a/metadata/install-qa-check.d/08gentoo-paths
> +++ b/metadata/install-qa-check.d/08gentoo-paths
> @@ -70,9 +70,9 @@ gentoo_path_check() {
>   # report
>   # --
>   if [[ -n ${bad_paths[@]} ]]; then
> - eqawarn "QA Notice: The ebuild is installing to one or more 
> unexpected paths:"
> + eqawarn "QA Notice: The ebuild is installing to one or more 
> unexpected directories:"
>   eqawarn
> - eqatag -v non-gentoo-paths "${bad_paths[@]}"
> + eqatag -v non-gentoo-paths "${bad_paths[@]#${D%/}}"
>   eqawarn
>   eqawarn "Please fix the ebuild to use correct FHS/Gentoo policy 
> paths."
>   fi

LGTM.  Thanks!

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] [PATCH 7/7] distutils-r1.eclass: Remove more junk from .dist-info

2024-03-26 Thread Michał Górny
Closes: https://bugs.gentoo.org/927818
Signed-off-by: Michał Górny 
---
 eclass/distutils-r1.eclass | 15 ---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/eclass/distutils-r1.eclass b/eclass/distutils-r1.eclass
index 22b28e915859..7a314673a90b 100644
--- a/eclass/distutils-r1.eclass
+++ b/eclass/distutils-r1.eclass
@@ -1314,14 +1314,23 @@ distutils_wheel_install() {
printf '%s\n' "${cmd[*]}"
"${cmd[@]}" || die "Wheel install failed"
 
-   # remove installed licenses
+   # remove installed licenses and other junk
find "${root}$(python_get_sitedir)" -depth \
-   \( -path '*.dist-info/COPYING*' \
-   -o -path '*.dist-info/LICENSE*' \
+   \( -ipath '*.dist-info/AUTHORS*' \
+   -o -ipath '*.dist-info/CHANGELOG*' \
+   -o -ipath '*.dist-info/CODE_OF_CONDUCT*' \
+   -o -ipath '*.dist-info/COPYING*' \
+   -o -ipath '*.dist-info/*LICEN[CS]E*' \
+   -o -ipath '*.dist-info/NOTICE*' \
+   -o -ipath '*.dist-info/*Apache*' \
+   -o -ipath '*.dist-info/*GPL*' \
+   -o -ipath '*.dist-info/*MIT*' \
+   -o -path '*.dist-info/RECORD' \
-o -path '*.dist-info/license_files/*' \
-o -path '*.dist-info/license_files' \
-o -path '*.dist-info/licenses/*' \
-o -path '*.dist-info/licenses' \
+   -o -path '*.dist-info/zip-safe' \
\) -delete || die
 }
 
-- 
2.44.0




[gentoo-dev] [PATCH 6/7] distutils-r1.eclass: Fix `det unittest` with 3.12 only

2024-03-26 Thread Michał Górny
Closes: https://bugs.gentoo.org/926964
Signed-off-by: Michał Górny 
---
 eclass/distutils-r1.eclass | 8 
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/eclass/distutils-r1.eclass b/eclass/distutils-r1.eclass
index a1617999a037..22b28e915859 100644
--- a/eclass/distutils-r1.eclass
+++ b/eclass/distutils-r1.eclass
@@ -628,11 +628,11 @@ distutils_enable_tests() {
;;
unittest)
# unittest-or-fail is needed in py<3.12
-   test_deps+="
-   $(python_gen_cond_dep '
+   local test_pkgs="$(python_gen_cond_dep '

dev-python/unittest-or-fail[${PYTHON_USEDEP}]
-   ' 3.10 3.11)
-   "
+   ' 3.10 3.11
+   )"
+   [[ -n ${test_pkgs} ]] && test_deps+=" ${test_pkgs}"
;;
*)
die "${FUNCNAME}: unsupported argument: ${1}"
-- 
2.44.0




[gentoo-dev] [PATCH 5/7] distutils-r1.eclass: Refactor `distutils_enable_tests pytest`

2024-03-26 Thread Michał Górny
Refactor `distutils_enable_tests pytest` to move `test_pkgs` logic
straight into pytest block, as it is not used by any other variant
anymore.

Signed-off-by: Michał Górny 
---
 eclass/distutils-r1.eclass | 20 +---
 1 file changed, 9 insertions(+), 11 deletions(-)

diff --git a/eclass/distutils-r1.eclass b/eclass/distutils-r1.eclass
index 44553f8da6f3..a1617999a037 100644
--- a/eclass/distutils-r1.eclass
+++ b/eclass/distutils-r1.eclass
@@ -606,16 +606,23 @@ distutils_enable_tests() {
[[ ${#} -eq 1 ]] || die "${FUNCNAME} takes exactly one argument: 
test-runner"
 
local test_deps=${RDEPEND}
-   local test_pkgs
case ${1} in
pytest)
-   test_pkgs='>=dev-python/pytest-7.4.4[${PYTHON_USEDEP}]'
+   local 
test_pkgs='>=dev-python/pytest-7.4.4[${PYTHON_USEDEP}]'
if [[ -n ${EPYTEST_TIMEOUT} ]]; then
test_pkgs+=' 
dev-python/pytest-timeout[${PYTHON_USEDEP}]'
fi
if [[ ${EPYTEST_XDIST} ]]; then
test_pkgs+=' 
dev-python/pytest-xdist[${PYTHON_USEDEP}]'
fi
+
+   if [[ ! ${DISTUTILS_SINGLE_IMPL} ]]; then
+   test_deps+=" 
${test_pkgs//'${PYTHON_USEDEP}'/${PYTHON_USEDEP}}"
+   else
+   test_deps+=" $(python_gen_cond_dep "
+   ${test_pkgs}
+   ")"
+   fi
;;
setup.py)
;;
@@ -634,15 +641,6 @@ distutils_enable_tests() {
_DISTUTILS_TEST_RUNNER=${1}
python_test() { distutils-r1_python_test; }
 
-   if [[ -n ${test_pkgs} ]]; then
-   if [[ ! ${DISTUTILS_SINGLE_IMPL} ]]; then
-   test_deps+=" 
${test_pkgs//'${PYTHON_USEDEP}'/${PYTHON_USEDEP}}"
-   else
-   test_deps+=" $(python_gen_cond_dep "
-   ${test_pkgs}
-   ")"
-   fi
-   fi
if [[ -n ${test_deps} ]]; then
IUSE+=" test"
RESTRICT+=" !test? ( test )"
-- 
2.44.0




[gentoo-dev] [PATCH 4/7] distutils-r1.eclass: Remove nosetests support

2024-03-26 Thread Michał Górny
Signed-off-by: Michał Górny 
---
 eclass/distutils-r1.eclass | 8 
 1 file changed, 8 deletions(-)

diff --git a/eclass/distutils-r1.eclass b/eclass/distutils-r1.eclass
index 16d97501012b..44553f8da6f3 100644
--- a/eclass/distutils-r1.eclass
+++ b/eclass/distutils-r1.eclass
@@ -572,8 +572,6 @@ distutils_enable_sphinx() {
 # with the specified test runner.  Also copies the current value
 # of RDEPEND to test?-BDEPEND.  The test-runner argument must be one of:
 #
-# - nose: nosetests (dev-python/nose)
-#
 # - pytest: dev-python/pytest
 #
 # - setup.py: setup.py test (no deps included)
@@ -610,9 +608,6 @@ distutils_enable_tests() {
local test_deps=${RDEPEND}
local test_pkgs
case ${1} in
-   nose)
-   
test_pkgs='>=dev-python/nose-1.3.7_p20221026[${PYTHON_USEDEP}]'
-   ;;
pytest)
test_pkgs='>=dev-python/pytest-7.4.4[${PYTHON_USEDEP}]'
if [[ -n ${EPYTEST_TIMEOUT} ]]; then
@@ -1594,9 +1589,6 @@ distutils-r1_python_test() {
fi
 
case ${_DISTUTILS_TEST_RUNNER} in
-   nose)
-   "${EPYTHON}" -m nose -v "${@}"
-   ;;
pytest)
epytest
;;
-- 
2.44.0




[gentoo-dev] [PATCH 3/7] dev-python/jsonref: Use pdm-backend

2024-03-26 Thread Michał Górny
Signed-off-by: Michał Górny 
---
 dev-python/jsonref/jsonref-1.1.0.ebuild | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/dev-python/jsonref/jsonref-1.1.0.ebuild 
b/dev-python/jsonref/jsonref-1.1.0.ebuild
index 59041a7158cf..6233424f0523 100644
--- a/dev-python/jsonref/jsonref-1.1.0.ebuild
+++ b/dev-python/jsonref/jsonref-1.1.0.ebuild
@@ -1,9 +1,9 @@
-# Copyright 1999-2023 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=8
 
-DISTUTILS_USE_PEP517=pdm
+DISTUTILS_USE_PEP517=pdm-backend
 PYTHON_COMPAT=( python3_{10..12} )
 
 inherit distutils-r1
-- 
2.44.0




[gentoo-dev] [PATCH 2/7] distutils-r1.eclass: Run pdm.pep517.api via pdm-backend

2024-03-26 Thread Michał Górny
Signed-off-by: Michał Górny 
---
 eclass/distutils-r1.eclass | 21 -
 1 file changed, 4 insertions(+), 17 deletions(-)

diff --git a/eclass/distutils-r1.eclass b/eclass/distutils-r1.eclass
index e4b17c433e5d..16d97501012b 100644
--- a/eclass/distutils-r1.eclass
+++ b/eclass/distutils-r1.eclass
@@ -124,8 +124,6 @@ esac
 #
 # - pbr - pbr backend
 #
-# - pdm - pdm.pep517 backend
-#
 # - pdm-backend - pdm.backend backend
 #
 # - poetry - poetry-core backend
@@ -257,11 +255,6 @@ _distutils_set_globals() {
>=dev-python/pbr-6.0.0[${PYTHON_USEDEP}]
'
;;
-   pdm)
-   bdep+='
-   
>=dev-python/pdm-pep517-1.1.4[${PYTHON_USEDEP}]
-   '
-   ;;
pdm-backend)
bdep+='

>=dev-python/pdm-backend-2.1.8[${PYTHON_USEDEP}]
@@ -1002,12 +995,6 @@ _distutils-r1_print_package_versions() {
dev-python/wheel
)
;;
-   pdm)
-   packages+=(
-   dev-python/pdm-pep517
-   dev-python/setuptools
-   )
-   ;;
pdm-backend)
packages+=(
dev-python/pdm-backend
@@ -1214,12 +1201,9 @@ _distutils-r1_backend_to_key() {
pbr.build)
echo pbr
;;
-   pdm.backend)
+   pdm.backend|pdm.pep517.api)
echo pdm-backend
;;
-   pdm.pep517.api)
-   echo pdm
-   ;;
poetry.core.masonry.api|poetry.masonry.api)
echo poetry
;;
@@ -1280,6 +1264,9 @@ _distutils-r1_get_backend() {
flit.buildapi)
new_backend=flit_core.buildapi
;;
+   pdm.pep517.api)
+   new_backend=pdm.backend
+   ;;
poetry.masonry.api)
new_backend=poetry.core.masonry.api
;;
-- 
2.44.0




[gentoo-dev] [PATCH 1/7] distutils-r1.eclass: Bump minimal dep versions

2024-03-26 Thread Michał Górny
Signed-off-by: Michał Górny 
---
 eclass/distutils-r1.eclass | 28 ++--
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/eclass/distutils-r1.eclass b/eclass/distutils-r1.eclass
index 9be994595529..e4b17c433e5d 100644
--- a/eclass/distutils-r1.eclass
+++ b/eclass/distutils-r1.eclass
@@ -230,7 +230,7 @@ _distutils_set_globals() {
;;
hatchling)
bdep+='
-   
>=dev-python/hatchling-1.17.0[${PYTHON_USEDEP}]
+   
>=dev-python/hatchling-1.21.1[${PYTHON_USEDEP}]
'
;;
jupyter)
@@ -240,7 +240,7 @@ _distutils_set_globals() {
;;
maturin)
bdep+='
-   
>=dev-util/maturin-1.0.1[${PYTHON_USEDEP}]
+   
>=dev-util/maturin-1.4.0[${PYTHON_USEDEP}]
'
;;
no)
@@ -249,12 +249,12 @@ _distutils_set_globals() {
;;
meson-python)
bdep+='
-   
>=dev-python/meson-python-0.13.1[${PYTHON_USEDEP}]
+   
>=dev-python/meson-python-0.15.0[${PYTHON_USEDEP}]
'
;;
pbr)
bdep+='
-   
>=dev-python/pbr-5.11.1[${PYTHON_USEDEP}]
+   >=dev-python/pbr-6.0.0[${PYTHON_USEDEP}]
'
;;
pdm)
@@ -264,27 +264,27 @@ _distutils_set_globals() {
;;
pdm-backend)
bdep+='
-   
>=dev-python/pdm-backend-2.1.0[${PYTHON_USEDEP}]
+   
>=dev-python/pdm-backend-2.1.8[${PYTHON_USEDEP}]
'
;;
poetry)
bdep+='
-   
>=dev-python/poetry-core-1.6.1[${PYTHON_USEDEP}]
+   
>=dev-python/poetry-core-1.9.0[${PYTHON_USEDEP}]
'
;;
scikit-build-core)
bdep+='
-   
>=dev-python/scikit-build-core-0.4.6[${PYTHON_USEDEP}]
+   
>=dev-python/scikit-build-core-0.8.2[${PYTHON_USEDEP}]
'
;;
setuptools)
bdep+='
-   
>=dev-python/setuptools-67.8.0-r1[${PYTHON_USEDEP}]
+   
>=dev-python/setuptools-69.0.3[${PYTHON_USEDEP}]
'
;;
sip)
bdep+='
-   >=dev-python/sip-6.7.9[${PYTHON_USEDEP}]
+   >=dev-python/sip-6.8.3[${PYTHON_USEDEP}]
'
;;
standalone)
@@ -299,7 +299,7 @@ _distutils_set_globals() {
eqawarn "is enabled."
fi
else
-   local 
setuptools_dep='>=dev-python/setuptools-67.8.0-r1[${PYTHON_USEDEP}]'
+   local 
setuptools_dep='>=dev-python/setuptools-69.0.3[${PYTHON_USEDEP}]'
 
case ${DISTUTILS_USE_SETUPTOOLS:-bdepend} in
no|manual)
@@ -508,7 +508,7 @@ distutils_enable_sphinx() {
_DISTUTILS_SPHINX_PLUGINS=( "${@}" )
 
local deps autodoc=1 d
-   deps=">=dev-python/sphinx-5.3.0[\${PYTHON_USEDEP}]"
+   deps=">=dev-python/sphinx-7.2.6[\${PYTHON_USEDEP}]"
for d; do
if [[ ${d} == --no-autodoc ]]; then
autodoc=
@@ -532,7 +532,7 @@ distutils_enable_sphinx() {
use doc || return 0
 
local p
-   for p in ">=dev-python/sphinx-5.3.0" \
+   for p in ">=dev-python/sphinx-7.2.6" \
"${_DISTUTILS_SPHINX_PLUGINS[@]}"
do
python_has_version "${p}[${PYTHON_USEDEP}]" ||
@@ 

Re: [gentoo-dev] [PATCH 2/2] sys-apps/systemd-utils: add workaround for no-multilib

2024-03-26 Thread Michał Górny
On Tue, 2024-03-26 at 11:01 -0400, Mike Gilbert wrote:
> meson.build has some logic to build ia32 EFI binaries on x86_64 if the
> toolchain is compatible. Rather than trying to reproduce this logic in
> the ebuild, just try to build it and ignore any failures.
> 
> If meson.build actually defines the targets but we have some other
> compile error, this will move the failure to the install phase instead.
> 

That's not a correct use of nonfatal.  It is supposed to be used to
provide customized error handling (e.g. cleanup step before dying), not
a cheap way to ignore errors.

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: dev-python/simplegeneric

2024-03-26 Thread Michał Górny
# Michał Górny  (2024-03-26)
# Last release in 2012.  No reverse dependencies.
# Removal on 2024-04-25.  Bug #927524.
dev-python/simplegeneric

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: net-misc/blinkperl

2024-03-26 Thread Michał Górny
# Michał Górny  (2024-03-26)
# Unmaintained.  EAPI 6.  Homepage gone.  No keywords for modern
# architectures.
# Removal on 2024-04-25.  Bug #927208.
net-misc/blinkperl

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: net-misc/felix

2024-03-26 Thread Michał Górny
# Michał Górny  (2024-03-26)
# Unmaintained.  Multiple bugs open.  The current version is from 2018,
# and it has been discontinued as a separate package since.
# Removal on 2024-04-25.  Bug #926861.
net-misc/felix

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: app-pda/iripdb

2024-03-26 Thread Michał Górny
# Michał Górny  (2024-03-26)
# Unmaintained.  EAPI 6.  Homepage gone.
# Removal on 2024-04-25.  Bug #926860.
app-pda/iripdb

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: media-fonts/dzongkha-fonts

2024-03-26 Thread Michał Górny
# Michał Górny  (2024-03-26)
# Unfetchable proprietary fonts.  The alternatives include
# media-fonts/jomolhari and "Noto Serif Tibetan" from media-fonts/noto.
# Removal on 2024-04-25.  Bug #926836.
media-fonts/dzongkha-fonts

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: x11-libs/scw

2024-03-26 Thread Michał Górny
# Michał Górny  (2024-03-26)
# A dead wiget library with no reverse dependencies.  Homepage gone.
# Removal on 2024-04-25.  Bug #926604.
x11-libs/scw

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: sys-firmware/bluez-firmware

2024-03-26 Thread Michał Górny
# Michał Górny  (2024-03-26)
# Deprecated upstream and the URL no longer works.
# Removal on 2024-04-25.  Bug #926550.
sys-firmware/bluez-firmware

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: dev-python/anyqt

2024-03-26 Thread Michał Górny
# Michał Górny  (2024-03-26)
# Wrapper library that's stuck on Qt5.  No reverse dependencies left.
# Removal on 2024-04-25.  Bug #926548.
dev-python/anyqt

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: dev-python/sumtypes

2024-03-26 Thread Michał Górny
# Michał Górny  (2024-03-26)
# Unfinished package from 2021 that was added as a short-lived
# dependency of dev-python/GitPython.  No reverse dependencies remain.
# Removal on 2024-04-25.  Bug #924683.
dev-python/sumtypes

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: sci-biology/HTSeq

2024-03-26 Thread Michał Górny
# Michał Górny  (2024-03-26)
# Uses deprecated distutils-r1 API.  The current version is outdated,
# from mid-2022.  No reverse dependencies.
# Removal on 2024-04-25.  Bug #910015.
sci-biology/HTSeq

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: media-libs/libopenshot, media-libs/libopenshot-audio, media-video/openshot

2024-03-26 Thread Michał Górny
# Michał Górny  (2024-03-26)
# Uses deprecated distutils-r1 API.  Depends on dev-qt/qtwebengine:5.
# Includes the libraries with no other reverse dependencies.
# Removal on 2024-04-25.  Bug #909996.
media-libs/libopenshot
media-libs/libopenshot-audio
media-video/openshot

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: sys-auth/pam_ssh

2024-03-26 Thread Michał Górny
# Michał Górny  (2024-03-26)
# Issues with OpenSSL 3.  Unmaintained.  Last activity in 2019.
# Removal on 2024-04-25.  Bug #892031.
sys-auth/pam_ssh

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: app-misc/tek

2024-03-26 Thread Michał Górny
# Michał Górny  (2024-03-26)
# Fails to compile.  Unmaintained.  Last activity in 2016.
# Depends on an old wxGTK slot.
# Removal on 2024-04-25.  Bug #895222.
app-misc/tek

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: dev-libs/zthread

2024-03-26 Thread Michał Górny
# Michał Górny  (2024-03-26)
# Bad C++ code.  Unmaintained.  Carries a number of patches already.
# No reverse dependencies.
# Removal on 2024-04-25.  Bug #924925.
dev-libs/zthread

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: dev-python/prov

2024-03-23 Thread Michał Górny
# Michał Górny  (2024-03-23)
# No maintainer.  Broken tests.  Not ported to PEP517 build.
# No release since 2020, little activity since.  No revdeps.
# Removal on 2024-04-22.  Bug #911780.
dev-python/prov

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: dev-python/sphinxcontrib-asyncio

2024-03-23 Thread Michał Górny
# Michał Górny  (2024-03-23)
# Apparently broken.  No tests.  Last code change in 2016.  No revdeps.
# Removal on 2024-04-22.  Bug #892613.
dev-python/sphinxcontrib-asyncio

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


Re: [gentoo-dev] RFC: banning "AI"-backed (LLM/GPT/whatever) contributions to Gentoo

2024-03-21 Thread Michał Górny
On Tue, 2024-02-27 at 15:45 +0100, Michał Górny wrote:
> Given the recent spread of the "AI" bubble, I think we really need to
> look into formally addressing the related concerns.  In my opinion,
> at this point the only reasonable course of action would be to safely
> ban "AI"-backed contribution entirely.  In other words, explicitly
> forbid people from using ChatGPT, Bard, GitHub Copilot, and so on, to
> create ebuilds, code, documentation, messages, bug reports and so on for
> use in Gentoo.
> 
> Just to be clear, I'm talking about our "original" content.  We can't do
> much about upstream projects using it.

Since I've been asked to flesh out a specific motion, here's what I
propose specifically:

"""
It is expressly forbidden to contribute to Gentoo any content that has
been created with the assistance of Natural Language Processing
artificial intelligence tools.  This motion can be revisited, should
a case been made over such a tool that does not pose copyright, ethical
and quality concerns.
"""

This explicitly covers all GPTs, including ChatGPT and Copilot, which is
the category causing the most concern at the moment.  At the same time,
it doesn't block more specific uses of machine learning to problem
solving.

Special thanks to Arthur Zamarin for consulting me on this.

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


Re: [gentoo-dev] mirror storage growth rate

2024-03-15 Thread Michał Górny
On Fri, 2024-03-15 at 10:06 +0200, Jaco Kroon wrote:
> Hi All,
> 
> I was messing with some storage related caching on some of our hosts 
> this morning when I wondered about how much storage the gentoo mirrors 
> were consuming.  I'm not too worried about the current storage, but I am 
> noticing that the storage requirements are creeping quite a bit (as per 
> attached), and if that growth rate continues it may become a problem 
> *eventually*.
> 
> Can this growth be explained?
> 

I guess the simplest explanation is that software is growing larger,
and in the end we should be expecting to adding new packages faster than
removing dead ones.  Add to that the grotesque inefficiency of modern
programming languages such as Go and Rust.

-- 
Best regards,
Michał Górny



signature.asc
Description: This is a digitally signed message part


[gentoo-dev] Last rites: dev-python/pygame_sdl2

2024-03-10 Thread Michał Górny
# Michał Górny  (2024-03-10)
# Packages that still require 

signature.asc
Description: This is a digitally signed message part


  1   2   3   4   5   6   7   8   9   10   >