Re: [gentoo-dev] [News item review] V2 Chromium access to Google services

2021-03-08 Thread Aisha Tammy




On 3/8/21 5:19 PM, Thomas Deutschmann wrote:

Hi,

On 2021-03-08 20:01, Stephan Hartmann wrote:

Starting March 15th, 2021 Google Chrome Team will restrict access to
 Google APIs and services that are reserved for Google use only. This
 means that users are no longer able to login into their Google 
Accounts which disables access to for example Chrome Sync.


Maybe outline that this will only affect browser functions. You can
still log in into your Google Account when accessing
https://accounts.google.com/.


As a consequence we have to remove Client ID and secret from all 
www-client/chromium ebuilds. This change has already been done for 
=www-client/chromium-89.0.4389.82. Other versions will be updated 
shortly.


My first reaction was: WTF?! Why remove... maybe add a reference to [2]
already or quote

As explained in section above, signing in to Google web is rate 
limited if the developer has configured a client ID and client 
secret. To avoid hitting this limit in Chromium Derivatives, please 
remove the OAuth 2.0 client ID and client secret from your build 
configuration.


directly in the news item.
As quantitative feedback helps, I second this! I had the exact same 
reaction.


Aisha



That said, I wonder if there's a use case to allow users to bake-in
custom credentials. I know at least one large Gentoo setup distributing
Firefox to its users with custom keys. This is possible via environment
variables set at build time, see
https://gitweb.gentoo.org/repo/gentoo.git/tree/www-client/firefox/firefox-86.0.ebuild?id=dfe26277ee7441d00d88da14691cfc48db85ac8a#n453 





If you need one of the Google use only APIs, then you either have to
 switch to www-client/google-chrome{-beta,-unstable} or setup your 
own keys [1].


Should be

  www-client/google-chrome{,-beta,-unstable}
  ^^^



However, the latter is only intended for development. Documentation
on how to generate and use own keys can be found in [2].


I wouldn't mention that at all. Either there is suitable way to keep 
status quo or there isn't.


My suggestion:

announcement>


client_id or client_secret as explained in last paragraph of [2].>


environment variable at runtime (and or build-time if you are going to 
support that) or add reference to [2] again.>








Re: [gentoo-dev] [News item review] V2 Chromium access to Google services

2021-03-08 Thread Sam James



> On 8 Mar 2021, at 19:01, Stephan Hartmann  wrote:
> 
> Hi,

Hi!

Review from mobile so please excuse non-ideal formatting.


> 
> updated based on previous suggestions.
> 
> ```
> Title: Chromium access to Google services
> Author: Stephan Hartmann 
> Content-Type: text/plain
> Posted: 2021-03-09
> Revision: 1
> News-Item-Format: 2.0
> Display-If-Installed: www-client/chromium
> 
> Starting March 15th, 2021 Google Chrome Team will restrict access to

From March 15th 2021, Google’s Chrome team will be restricting access to...

> Google APIs and services that are reserved for Google use only. This
> means that users are no longer able to login into

users of?

> their Google Accounts
> which disables access to for example Chrome Sync.
> 

Access to e.g Chrome Sync and ... will be affected.

> As a consequence we have to remove Client ID and secret from all
> www-client/chromium ebuilds.

As a consequence, we must remove both the Client ID and secret(s) from the 
www-client/chromium ebuilds in Gentoo.

> This change has already been done for
> =www-client/chromium-89.0.4389.82.

This change has already been made for...

> Other versions will be updated
> shortly.
> 
> If you need one of the Google use only APIs, then you either have to

If you need to use one of these Google-only APIs. then you either have to...

1) ...

> switch to www-client/google-chrome{-beta,-unstable}

Or

2)
> setup your own
> keys [1]. However, the latter is only intended for development.
> Documentation on how to generate and use own keys can be found in [2].
> 
> [1] 
> https://groups.google.com/a/chromium.org/g/chromium-dev/c/jgy5pcJ7np8/m/p3j_4b6vBQAJ
> [2] https://www.chromium.org/developers/how-tos/api-keys
> ```
> 
> Best regards,
> 
> Stephan
> 



Re: [gentoo-dev] [News item review] V2 Chromium access to Google services

2021-03-08 Thread Thomas Deutschmann

Hi,

On 2021-03-08 20:01, Stephan Hartmann wrote:

Starting March 15th, 2021 Google Chrome Team will restrict access to
 Google APIs and services that are reserved for Google use only. This
 means that users are no longer able to login into their Google 
Accounts which disables access to for example Chrome Sync.


Maybe outline that this will only affect browser functions. You can
still log in into your Google Account when accessing
https://accounts.google.com/.


As a consequence we have to remove Client ID and secret from all 
www-client/chromium ebuilds. This change has already been done for 
=www-client/chromium-89.0.4389.82. Other versions will be updated 
shortly.


My first reaction was: WTF?! Why remove... maybe add a reference to [2]
already or quote

As explained in section above, signing in to Google web is rate 
limited if the developer has configured a client ID and client 
secret. To avoid hitting this limit in Chromium Derivatives, please 
remove the OAuth 2.0 client ID and client secret from your build 
configuration.


directly in the news item.

That said, I wonder if there's a use case to allow users to bake-in
custom credentials. I know at least one large Gentoo setup distributing
Firefox to its users with custom keys. This is possible via environment
variables set at build time, see
https://gitweb.gentoo.org/repo/gentoo.git/tree/www-client/firefox/firefox-86.0.ebuild?id=dfe26277ee7441d00d88da14691cfc48db85ac8a#n453



If you need one of the Google use only APIs, then you either have to
 switch to www-client/google-chrome{-beta,-unstable} or setup your 
own keys [1].


Should be

  www-client/google-chrome{,-beta,-unstable}
  ^^^



However, the latter is only intended for development. Documentation
on how to generate and use own keys can be found in [2].


I wouldn't mention that at all. Either there is suitable way to keep 
status quo or there isn't.


My suggestion:

announcement>


client_id or client_secret as explained in last paragraph of [2].>


environment variable at runtime (and or build-time if you are going to 
support that) or add reference to [2] again.>



--
Regards,
Thomas Deutschmann / Gentoo Linux Developer
fpr: C4DD 695F A713 8F24 2AA1 5638 5849 7EE5 1D5D 74A5



OpenPGP_signature
Description: OpenPGP digital signature


Re: [gentoo-dev] [PATCH] tmpfiles.eclass: introduce TMPFILES_OPTIONAL variable

2021-03-08 Thread David Seifert
On Mon, 2021-03-08 at 14:38 -0500, Mike Gilbert wrote:
> This allows the automatic dependency on virtual/tmpfiles to be
> disabled.
> 
> Bug: https://bugs.gentoo.org/774855
> Signed-off-by: Mike Gilbert 
> ---
>  eclass/tmpfiles.eclass | 10 +-
>  1 file changed, 9 insertions(+), 1 deletion(-)
> 
> diff --git a/eclass/tmpfiles.eclass b/eclass/tmpfiles.eclass
> index 360c5e3b816f..632343821648 100644
> --- a/eclass/tmpfiles.eclass
> +++ b/eclass/tmpfiles.eclass
> @@ -60,7 +60,15 @@ case "${EAPI}" in
>  *) die "API is undefined for EAPI ${EAPI}" ;;
>  esac
>  
> -RDEPEND="virtual/tmpfiles"
> +# @ECLASS-VARIABLE: TMPFILES_OPTIONAL
> +# @DEFAULT_UNSET
> +# @DESCRIPTION:
> +# When not empty, disables the dependency on virtual/tmpfiles.
> +# Ebuilds that call tmpfiles_process conditionally should declare a
> +# conditional dependency themselves.
> +if [[ -z ${TMPFILES_OPTIONAL} ]]; then
> +   RDEPEND="virtual/tmpfiles"
> +fi
>  
>  # @FUNCTION: dotmpfiles
>  # @USAGE:  ...

ACK, and please merge ASAP.




Re: [gentoo-dev] [News item review] V2 Chromium access to Google services

2021-03-08 Thread Alexey Sokolov
Hi, Russian translation follows.

Title: Доступ браузера Chromium к сервисам Google
Author: Stephan Hartmann 
Translator: Alexey Sokolov 
Posted: 2021-03-09
Revision: 1
News-Item-Format: 2.0
Display-If-Installed: www-client/chromium

С 15 марта 2021 команда Google Chrome ограничит доступ к Google API и службам,
зарезервированным для использования самим Google. Это означает, что
пользователи больше не смогут войти в учётную запись Google и потому у них не
будет доступа к, например, Chrome Sync.

Поэтому нам приходится удалить из www-client/chromium Client ID и ключи. Мы уже
удалили их из =www-client/chromium-89.0.4389.82, остальные версии будут
обновлены в ближайшем будущем.

Если вам нужен доступ к этим API, вам нужно либо перейти на
www-client/google-chrome{-beta,-unstable}, либо установить ваши собственные
ключи [1], что, однако, предназначено только для разработки. Инструкцию по
созданию и использованию собственных ключей можно найти здесь [2].

[1]
https://groups.google.com/a/chromium.org/g/chromium-dev/c/jgy5pcJ7np8/m/p3j_4b6vBQAJ
[2] https://www.chromium.org/developers/how-tos/api-keys

пн, 8 мар. 2021 г. в 19:01, Stephan Hartmann :
>
> Hi,
>
> updated based on previous suggestions.
>
> ```
> Title: Chromium access to Google services
> Author: Stephan Hartmann 
> Content-Type: text/plain
> Posted: 2021-03-09
> Revision: 1
> News-Item-Format: 2.0
> Display-If-Installed: www-client/chromium
>
> Starting March 15th, 2021 Google Chrome Team will restrict access to
> Google APIs and services that are reserved for Google use only. This
> means that users are no longer able to login into their Google Accounts
> which disables access to for example Chrome Sync.
>
> As a consequence we have to remove Client ID and secret from all
> www-client/chromium ebuilds. This change has already been done for
> =www-client/chromium-89.0.4389.82. Other versions will be updated
> shortly.
>
> If you need one of the Google use only APIs, then you either have to
> switch to www-client/google-chrome{-beta,-unstable} or setup your own
> keys [1]. However, the latter is only intended for development.
> Documentation on how to generate and use own keys can be found in [2].
>
> [1]
> https://groups.google.com/a/chromium.org/g/chromium-dev/c/jgy5pcJ7np8/m/p3j_4b6vBQAJ
> [2] https://www.chromium.org/developers/how-tos/api-keys
> ```
>
> Best regards,
>
> Stephan
>


[gentoo-dev] [PATCH] tmpfiles.eclass: introduce TMPFILES_OPTIONAL variable

2021-03-08 Thread Mike Gilbert
This allows the automatic dependency on virtual/tmpfiles to be disabled.

Bug: https://bugs.gentoo.org/774855
Signed-off-by: Mike Gilbert 
---
 eclass/tmpfiles.eclass | 10 +-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/eclass/tmpfiles.eclass b/eclass/tmpfiles.eclass
index 360c5e3b816f..632343821648 100644
--- a/eclass/tmpfiles.eclass
+++ b/eclass/tmpfiles.eclass
@@ -60,7 +60,15 @@ case "${EAPI}" in
 *) die "API is undefined for EAPI ${EAPI}" ;;
 esac
 
-RDEPEND="virtual/tmpfiles"
+# @ECLASS-VARIABLE: TMPFILES_OPTIONAL
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# When not empty, disables the dependency on virtual/tmpfiles.
+# Ebuilds that call tmpfiles_process conditionally should declare a
+# conditional dependency themselves.
+if [[ -z ${TMPFILES_OPTIONAL} ]]; then
+   RDEPEND="virtual/tmpfiles"
+fi
 
 # @FUNCTION: dotmpfiles
 # @USAGE:  ...
-- 
2.31.0.rc1




[gentoo-dev] [PATCH] distutils-r1.eclass: Use underscores in .pydistutils.cfg keys

2021-03-08 Thread Michał Górny
Switch to using underscore instead of hyphens in .pydistutils.cfg keys.
The latter form is now deprecated by setuptools, while both seem to work
fine with plain distutils.

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

diff --git a/eclass/distutils-r1.eclass b/eclass/distutils-r1.eclass
index f5b151d4b8e2..e384b6d43d4e 100644
--- a/eclass/distutils-r1.eclass
+++ b/eclass/distutils-r1.eclass
@@ -714,7 +714,7 @@ distutils-r1_python_configure() {
 _distutils-r1_create_setup_cfg() {
cat > "${HOME}"/.pydistutils.cfg <<-_EOF_ || die
[build]
-   build-base = ${BUILD_DIR}
+   build_base = ${BUILD_DIR}
 
# using a single directory for them helps us export
# ${PYTHONPATH} and ebuilds find the sources independently
@@ -723,16 +723,16 @@ _distutils-r1_create_setup_cfg() {
# note: due to some packages (wxpython) relying on separate
# platlib & purelib dirs, we do not set --build-lib (which
# can not be overridden with --build-*lib)
-   build-platlib = %(build-base)s/lib
-   build-purelib = %(build-base)s/lib
+   build_platlib = %(build_base)s/lib
+   build_purelib = %(build_base)s/lib
 
# make the ebuild writer lives easier
-   build-scripts = %(build-base)s/scripts
+   build_scripts = %(build_base)s/scripts
 
# this is needed by distutils_install_for_testing since
# setuptools like to create .egg files for install --home.
[bdist_egg]
-   dist-dir = ${BUILD_DIR}/dist
+   dist_dir = ${BUILD_DIR}/dist
_EOF_
 
# we can't refer to ${D} before src_install()
@@ -749,7 +749,7 @@ _distutils-r1_create_setup_cfg() {
 
if [[ ! ${DISTUTILS_SINGLE_IMPL} ]]; then
cat >> "${HOME}"/.pydistutils.cfg <<-_EOF_ || die
-   install-scripts = $(python_get_scriptdir)
+   install_scripts = $(python_get_scriptdir)
_EOF_
fi
fi
-- 
2.30.1




[gentoo-dev] [News item review] V2 Chromium access to Google services

2021-03-08 Thread Stephan Hartmann

Hi,

updated based on previous suggestions.

```
Title: Chromium access to Google services
Author: Stephan Hartmann 
Content-Type: text/plain
Posted: 2021-03-09
Revision: 1
News-Item-Format: 2.0
Display-If-Installed: www-client/chromium

Starting March 15th, 2021 Google Chrome Team will restrict access to
Google APIs and services that are reserved for Google use only. This
means that users are no longer able to login into their Google Accounts
which disables access to for example Chrome Sync.

As a consequence we have to remove Client ID and secret from all
www-client/chromium ebuilds. This change has already been done for
=www-client/chromium-89.0.4389.82. Other versions will be updated
shortly.

If you need one of the Google use only APIs, then you either have to
switch to www-client/google-chrome{-beta,-unstable} or setup your own
keys [1]. However, the latter is only intended for development.
Documentation on how to generate and use own keys can be found in [2].

[1] 
https://groups.google.com/a/chromium.org/g/chromium-dev/c/jgy5pcJ7np8/m/p3j_4b6vBQAJ

[2] https://www.chromium.org/developers/how-tos/api-keys
```

Best regards,

Stephan



Re: [gentoo-dev] [News item review] Chromium access to Google services

2021-03-08 Thread Michał Górny
On Mon, 2021-03-08 at 17:36 +0100, Stephan Hartmann wrote:
> Hi,
> 
> please review the news item inlined below. I would like to publish it 
> tomorrow.
> 
> ```
> Title: Chromium access to Google services
> Author: Stephan Hartmann 
> Content-Type: text/plain
> Posted: 2021-03-09
> Revision: 1
> News-Item-Format: 2.0
> Display-If-Installed: www-client/chromium
> 
> Starting March 15th, 2021 Google Chrome Team will restrict access to
> Google APIs and services that are reserved for Google use only. This
> means that users are no longer able to login into their Google Accounts
> which disables access to for example Chrome Sync.
> 
> As a consequence we have to remove Client ID and secret from all
> www-client/chromium ebuilds. This change has already been done for
> =www-client/chromium-89.0.4389.82. Other versions will be updated
> shortly.
> 
> If you need one of the Google use only APIs, then you either have to
> switch to www-client/google-chrome{-beta,-unstable} or setup your own
> keys [1]. However, the latter is only intended for development.

It would be nice to explain a bit more what this entitles and how to
make it work, or link to a nice guide.

> [1] https://bit.ly/3bsxX8A

Please don't make news items depend on third party URL shorteners.  This
just obfuscates what you're linking here and making them less reliable.

-- 
Best regards,
Michał Górny





[gentoo-dev] Last-rites: dev-php/PEAR-Config

2021-03-08 Thread Brian Evans

# Brian Evans  (2021-03-08)
# No longer consistently maintained, severely broken with PHP 8
# No reverse dependencies, fails tests
# Removal in 30 days.
dev-php/PEAR-Config



OpenPGP_signature
Description: OpenPGP digital signature


[gentoo-dev] [News item review] Chromium access to Google services

2021-03-08 Thread Stephan Hartmann

Hi,

please review the news item inlined below. I would like to publish it 
tomorrow.


```
Title: Chromium access to Google services
Author: Stephan Hartmann 
Content-Type: text/plain
Posted: 2021-03-09
Revision: 1
News-Item-Format: 2.0
Display-If-Installed: www-client/chromium

Starting March 15th, 2021 Google Chrome Team will restrict access to
Google APIs and services that are reserved for Google use only. This
means that users are no longer able to login into their Google Accounts
which disables access to for example Chrome Sync.

As a consequence we have to remove Client ID and secret from all
www-client/chromium ebuilds. This change has already been done for
=www-client/chromium-89.0.4389.82. Other versions will be updated
shortly.

If you need one of the Google use only APIs, then you either have to
switch to www-client/google-chrome{-beta,-unstable} or setup your own
keys [1]. However, the latter is only intended for development.

[1] https://bit.ly/3bsxX8A
```

Best regards,

Stephan



[gentoo-dev] [PATCH] python-r1.eclass: Fix any-r1-style python_setup without USE flags

2021-03-08 Thread Michał Górny
Fix python_setup() not to fail if no USE flags are set while any-r1 API
is being used.  Reported by Arfrever.

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

diff --git a/eclass/python-r1.eclass b/eclass/python-r1.eclass
index 74e3fb38a1cc..5457b515a839 100644
--- a/eclass/python-r1.eclass
+++ b/eclass/python-r1.eclass
@@ -771,15 +771,18 @@ python_foreach_impl() {
 python_setup() {
debug-print-function ${FUNCNAME} "${@}"
 
-   _python_validate_useflags
+   local has_check_deps
+   declare -f python_check_deps >/dev/null && has_check_deps=1
+
+   if [[ ! ${has_check_deps} ]]; then
+   _python_validate_useflags
+   fi
+
local pycompat=( "${PYTHON_COMPAT[@]}" )
if [[ ${PYTHON_COMPAT_OVERRIDE} ]]; then
pycompat=( ${PYTHON_COMPAT_OVERRIDE} )
fi
 
-   local has_check_deps
-   declare -f python_check_deps >/dev/null && has_check_deps=1
-
# (reverse iteration -- newest impl first)
local found
_python_verify_patterns "${@}"
-- 
2.30.1




[gentoo-dev] Last rites: ruby25-only packages

2021-03-08 Thread Hans de Graaff
# Hans de Graaff  (2021-03-08)
# Last litc upstream release in 2010, no reverse dependencies,
# ruby25-only. Includes fakeweb test dependency which is also
# ruby25-only and has no other reverse dependencies.
# Masked for removal in 30 days.
dev-ruby/litc
dev-ruby/fakeweb

# Hans de Graaff  (2021-03-08)
# Last upstream release in 2009, no reverse dependencies,
# no test suite.
# Masked for removal in 30 days.
dev-ruby/metaid

# Hans de Graaff  (2021-03-08)
# Last upstream release in 2018, no reverse dependencies,
# stuck on ruby25.
# Masked for removal in 30 days.
dev-ruby/nexpose

# Hans de Graaff  (2021-03-08)
# No longer maintained upstream, last release in 2014.
# ruby25-only.
# Masked for removal in 30 days.
dev-ruby/session

# Hans de Graaff  (2021-03-08)
# gitsh is maintainer-needed and stuck on ruby25.
# parslet is only needed for gitsh and also ruby25-only.
# Masked for removal in 30 days.
dev-vcs/gitsh
dev-ruby/parslet

# Hans de Graaff  (2021-03-08)
# Old ruby25-only slots. Use the newer slot instead.
# Masked for removal in 30 days.
dev-ruby/i18n:0.7
dev-ruby/pcaprub:0.12
dev-ruby/pg:0


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


[gentoo-dev] [PATCH] distutils-r1.eclass: Use a common distutils-r1_python_test

2021-03-08 Thread Michał Górny
Use a common distutils-r1_python_test function to simplify handling
different test scenarios.  This avoids code duplication due to defining
a lot of python_test() variants, as well as it makes it possible for
overriden python_test() to call the base implementation provided
by distutils_enable_tests.

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

diff --git a/eclass/distutils-r1.eclass b/eclass/distutils-r1.eclass
index f5b151d4b8e2..0e543412f645 100644
--- a/eclass/distutils-r1.eclass
+++ b/eclass/distutils-r1.eclass
@@ -406,10 +406,10 @@ distutils_enable_sphinx() {
 distutils_enable_tests() {
debug-print-function ${FUNCNAME} "${@}"
 
-   local do_install=
+   _DISTUTILS_TEST_INSTALL=
case ${1} in
--install)
-   do_install=1
+   _DISTUTILS_TEST_INSTALL=1
shift
;;
esac
@@ -419,62 +419,21 @@ distutils_enable_tests() {
case ${1} in
nose)
test_pkg=">=dev-python/nose-1.3.7-r4"
-   if [[ ${do_install} ]]; then
-   python_test() {
-   distutils_install_for_testing --via-root
-   nosetests -v || die "Tests fail with 
${EPYTHON}"
-   }
-   else
-   python_test() {
-   nosetests -v || die "Tests fail with 
${EPYTHON}"
-   }
-   fi
;;
pytest)
test_pkg=">=dev-python/pytest-4.5.0"
-   if [[ ${do_install} ]]; then
-   python_test() {
-   distutils_install_for_testing --via-root
-   epytest
-   }
-   else
-   python_test() {
-   epytest
-   }
-   fi
;;
setup.py)
-   if [[ ${do_install} ]]; then
-   python_test() {
-   distutils_install_for_testing --via-root
-   nonfatal esetup.py test --verbose ||
-   die "Tests fail with ${EPYTHON}"
-   }
-   else
-   python_test() {
-   nonfatal esetup.py test --verbose ||
-   die "Tests fail with ${EPYTHON}"
-   }
-   fi
;;
unittest)
-   if [[ ${do_install} ]]; then
-   python_test() {
-   distutils_install_for_testing --via-root
-   "${EPYTHON}" -m unittest discover -v ||
-   die "Tests fail with ${EPYTHON}"
-   }
-   else
-   python_test() {
-   "${EPYTHON}" -m unittest discover -v ||
-   die "Tests fail with ${EPYTHON}"
-   }
-   fi
;;
*)
die "${FUNCNAME}: unsupported argument: ${1}"
esac
 
+   _DISTUTILS_TEST_RUNNER=${1}
+   python_test() { distutils-r1_python_test; }
+
local test_deps=${RDEPEND}
if [[ -n ${test_pkg} ]]; then
if [[ ! ${DISTUTILS_SINGLE_IMPL} ]]; then
@@ -841,6 +800,48 @@ _distutils-r1_wrap_scripts() {
fi
 }
 
+# @FUNCTION: distutils-r1_python_test
+# @USAGE: [additional-args...]
+# @DESCRIPTION:
+# The python_test() implementation used by distutils_enable_tests.
+# Runs tests using the specified test runner, possibly installing them
+# first.
+#
+# This function is used only if distutils_enable_tests is called.
+distutils-r1_python_test() {
+   debug-print-function ${FUNCNAME} "${@}"
+
+   if [[ -z ${_DISTUTILS_TEST_RUNNER} ]]; then
+   die "${FUNCNAME} can be only used after calling 
distutils_enable_tests"
+   fi
+
+   if [[ ${_DISTUTILS_TEST_INSTALL} ]]; then
+   distutils_install_for_testing
+   fi
+
+   case ${_DISTUTILS_TEST_RUNNER} in
+   nose)
+   nosetests -v "${@}"
+   ;;
+   pytest)
+   epytest
+