• [gentoo-dev] [PATCH] distutils-r1.eclass: Add PYTHON_DEPS to DEPEND unc

    From =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?@21:1/5 to All on Wed Apr 12 18:00:01 2023
    From: Raul E Rangel <rrangel@chromium.org>

    Python distutils packages that build C extensions are currently not
    declaring PYTHON_DEPS as part of their DEPEND declaration. This results
    in build errors when cross compiling using ROOT=.

    i.e.,
    In file included from src/setproctitle.c:14:
    In file included from src/spt.h:15:
    src/spt_python.h:15:10: fatal error: 'Python.h' file not found
    #include <Python.h>
    ^~~~~~~~~~
    1 error generated.

    Since the distutils-r1 eclass currently sets the RDEPEND and BDEPEND
    variables it makes sense to have the eclass also set the DEPEND
    variable. We unconditionally add it to keep the API simple. If in the
    future this is problematic, we can maybe add a DISTUTILS_PURE_PYTHON
    eclass variable that will omit the DEPEND.

    Signed-off-by: Raul E Rangel <rrangel@chromium.org>
    Closes: https://github.com/gentoo/gentoo/pull/30469
    Signed-off-by: Michał Górny <mgorny@gentoo.org>
    ---
    eclass/distutils-r1.eclass | 10 ++++++++--
    1 file changed, 8 insertions(+), 2 deletions(-)

    diff --git a/eclass/distutils-r1.eclass b/eclass/distutils-r1.eclass
    index 09684781de2a..7e9cd6ef9b5a 100644
    --- a/eclass/distutils-r1.eclass
    +++ b/eclass/distutils-r1.eclass
    @@ -34,8 +34,8 @@
    # functions, you should consider calling the defaults (and especially
    # distutils-r1_python_prepare_all).
    #
    -# Please note that distutils-r1 sets RDEPEND and BDEPEND (or DEPEND
    -# in earlier EAPIs) unconditionally for you.
    +# Please note that distutils-r1 sets BDEPEND, DEPEND, and RDEPEND
    +# unconditionally for you.
    #
    # Also, please note that distutils-r1 will always inherit python-r1
    # as well. Thus, all the variables defined and documented there are
    @@ -307,6 +307,12 @@ _distutils_set_globals() {
    fi

    if [[ ! ${DISTUTILS_OPTIONAL} ]]; then
    + # This dependency is only required for packages that build
    + # C extensions. It was deemed cleaner to unconditionally
    + # add the dependency than
  • From James Le Cuirot@21:1/5 to mgorny@gentoo.org on Wed Apr 12 19:10:01 2023
    On 12 April 2023 16:58:58 BST, "Michał Górny" <mgorny@gentoo.org> wrote: >From: Raul E Rangel <rrangel@chromium.org>

    Python distutils packages that build C extensions are currently not
    declaring PYTHON_DEPS as part of their DEPEND declaration. This results
    in build errors when cross compiling using ROOT=.

    i.e.,
    In file included from src/setproctitle.c:14:
    In file included from src/spt.h:15:
    src/spt_python.h:15:10: fatal error: 'Python.h' file not found
    #include <Python.h>
    ^~~~~~~~~~
    1 error generated.

    Since the distutils-r1 eclass currently sets the RDEPEND and BDEPEND >variables it makes sense to have the eclass also set the DEPEND
    variable. We unconditionally add it to keep the API simple. If in the
    future this is problematic, we can maybe add a DISTUTILS_PURE_PYTHON
    eclass variable that will omit the DEPEND.

    Signed-off-by: Raul E Rangel <rrangel@chromium.org>
    Closes: https://github.com/gentoo/gentoo/pull/30469
    Signed-off-by: Michał Górny <mgorny@gentoo.org>
    ---
    eclass/distutils-r1.eclass | 10 ++++++++--
    1 file changed, 8 insertions(+), 2 deletions(-)

    diff --git a/eclass/distutils-r1.eclass b/eclass/distutils-r1.eclass
    index 09684781de2a..7e9cd6ef9b5a 100644
    --- a/eclass/distutils-r1.eclass
    +++ b/eclass/distutils-r1.eclass
    @@ -34,8 +34,8 @@
    # functions, you should consider calling the defaults (and especially
    # distutils-r1_python_prepare_all).
    #
    -# Please note that distutils-r1 sets RDEPEND and BDEPEND (or DEPEND
    -# in earlier EAPIs) unconditionally for you.
    +# Please note that distutils-r1 sets BDEPEND, DEPEND, and RDEPEND
    +# unconditionally for you.
    #
    # Also, please note that distutils-r1 will always inherit python-r1
    # as well. Thus, all the variables defined and documented there are
    @@ -307,6 +307,12 @@ _distutils_set_globals() {
    fi

    if [[ ! ${DISTUTILS_OPTIONAL} ]]; then
    + # This dependency is only required for packages that build
    + # C extensions. It was deemed cleaner to unconditionally
    + # add the dependency than add it to the individual
    + # ebuilds that need it.
    + DEPEND="${PYTHON_DEPS}"
    +
    RDEPEND="${PYTHON_DEPS} ${rdep}"
    BDEPEND="${PYTHON_DEPS} ${bdep}"
    REQUIRED_USE=${PYTHON_REQUIRED_USE}

    I think that's reasonable.
    --
    Sent from my Android device with K-9 Mail. Please excuse my brevity.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?Q?Micha=C5=82_G=C3=B3rny?=@21:1/5 to All on Wed Apr 19 12:30:01 2023
    On Wed, 2023-04-12 at 17:58 +0200, Michał Górny wrote:
    From: Raul E Rangel <rrangel@chromium.org>

    Python distutils packages that build C extensions are currently not
    declaring PYTHON_DEPS as part of their DEPEND declaration. This results
    in build errors when cross compiling using ROOT=.

    i.e.,
    In file included from src/setproctitle.c:14:
    In file included from src/spt.h:15:
    src/spt_python.h:15:10: fatal error: 'Python.h' file not found
    #include <Python.h>
    ^~~~~~~~~~
    1 error generated.

    Since the distutils-r1 eclass currently sets the RDEPEND and BDEPEND variables it makes sense to have the eclass also set the DEPEND
    variable. We unconditionally add it to keep the API simple. If in the
    future this is problematic, we can maybe add a DISTUTILS_PURE_PYTHON
    eclass variable that will omit the DEPEND.

    Signed-off-by: Raul E Rangel <rrangel@chromium.org>
    Closes: https://github.com/gentoo/gentoo/pull/30469
    Signed-off-by: Michał Górny <mgorny@gentoo.org>
    ---
    eclass/distutils-r1.eclass | 10 ++++++++--
    1 file changed, 8 insertions(+), 2 deletions(-)

    diff --git a/eclass/distutils-r1.eclass b/eclass/distutils-r1.eclass
    index 09684781de2a..7e9cd6ef9b5a 100644
    --- a/eclass/distutils-r1.eclass
    +++ b/eclass/distutils-r1.eclass
    @@ -34,8 +34,8 @@
    # functions, you should consider calling the defaults (and especially
    # distutils-r1_python_prepare_all).
    #
    -# Please note that distutils-r1 sets RDEPEND and BDEPEND (or DEPEND
    -# in earlier EAPIs) unconditionally for you.
    +# Please note that distutils-r1 sets BDEPEND, DEPEND, and RDEPEND
    +# unconditionally for you.
    #
    # Also, please note that distutils-r1 will always inherit python-r1
    # as well. Thus, all the variables defined and documented there are
    @@ -307,6 +307,12 @@ _distutils_set_globals() {
    fi

    if [[ ! ${DISTUTILS_OPTIONAL} ]]; then
    + # This dependency is only required for packages that build
    + # C extensions. It was deemed cleaner to unconditionally
    + # add the dependency than add it to the individual
    + # ebuilds that need it.
    + DEPEND="${PYTHON_DEPS}"
    +
    RDEPEND="${PYTHON_DEPS} ${rdep}"
    BDEPEND="${PYTHON_DEPS} ${bdep}"
    REQUIRED_USE=${PYTHON_REQUIRED_USE}

    Actually, I'm withdrawing this one. We'd be adding a dedicated variable controlling this, and a few other features specific to packages
    installing Python extensions.

    --
    Best regards,
    Michał Górny

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)