• [gentoo-dev] [PATCH] kernel-2.eclass: Make xmakeopts an array for space

    From James Le Cuirot@21:1/5 to All on Sat Jan 21 12:10:01 2023
    Variables like CC can have spaces for additional arguments. This is particularly useful for reliably setting the sysroot.

    Signed-off-by: James Le Cuirot <chewi@gentoo.org>
    ---
    eclass/kernel-2.eclass | 21 +++++++++++++++------
    1 file changed, 15 insertions(+), 6 deletions(-)

    diff --git a/eclass/kernel-2.eclass b/eclass/kernel-2.eclass
    index 873d4a204669..f7fcf15743f0 100644
    --- a/eclass/kernel-2.eclass
    +++ b/eclass/kernel-2.eclass
    @@ -1,4 +1,4 @@
    -# Copyright 1999-2022 Gentoo Authors
    +# Copyright 1999-2023 Gentoo Authors
    # Distributed under the terms of the GNU General Public License v2

    # @ECLASS: kernel-2.eclass
    @@ -756,13 +756,22 @@ env_setup_xmakeopts() {

    # When cross-compiling, we need to set the ARCH/CROSS_COMPILE
    # variables properly or bad things happen !
    - xmakeopts="ARCH=${KARCH}"
    + xmakeopts=( ARCH="${KARCH}" )
    if [[ ${CTARGET} != ${CHOST} ]] && ! cross_pre_c_headers; then
    - xmakeopts="${xmakeopts} CROSS_COMPILE=${CTARGET}-"
    + xmakeopts+=( CROSS_COMPILE="${CTARGET}-" )
    elif type -p ${CHOST}-ar >/dev/null; then
    - xmakeopts="${xmakeopts} CROSS_COMPILE=${CHOST}-"
    + xmakeopts+=( CROSS_COMPILE="${CHOST}-" )
    fi
    - xmakeopts="${x
  • From Joshua Kinard@21:1/5 to James Le Cuirot on Mon Jan 23 17:30:01 2023
    On 1/21/2023 06:03, James Le Cuirot wrote:
    Variables like CC can have spaces for additional arguments. This is particularly useful for reliably setting the sysroot.

    Signed-off-by: James Le Cuirot <chewi@gentoo.org>
    ---
    eclass/kernel-2.eclass | 21 +++++++++++++++------
    1 file changed, 15 insertions(+), 6 deletions(-)

    diff --git a/eclass/kernel-2.eclass b/eclass/kernel-2.eclass
    index 873d4a204669..f7fcf15743f0 100644
    --- a/eclass/kernel-2.eclass
    +++ b/eclass/kernel-2.eclass
    @@ -1,4 +1,4 @@
    -# Copyright 1999-2022 Gentoo Authors
    +# Copyright 1999-2023 Gentoo Authors
    # Distributed under the terms of the GNU General Public License v2

    # @ECLASS: kernel-2.eclass
    @@ -756,13 +756,22 @@ env_setup_xmakeopts() {

    # When cross-compiling, we need to set the ARCH/CROSS_COMPILE
    # variables properly or bad things happen !
    - xmakeopts="ARCH=${KARCH}"
    + xmakeopts=( ARCH="${KARCH}" )
    if [[ ${CTARGET} != ${CHOST} ]] && ! cross_pre_c_headers; then
    - xmakeopts="${xmakeopts} CROSS_COMPILE=${CTARGET}-"
    + xmakeopts+=( CROSS_COMPILE="${CTARGET}-" )
    elif type -p ${CHOST}-ar >/dev/null; then
    - xmakeopts="${xmakeopts} CROSS_COMPILE=${CHOST}-"
    + xmakeopts+=( CROSS_COMPILE="${CHOST}-" )
    fi
    - xmakeopts="${xmakeopts} HOSTCC=$(tc-getBUILD_CC) CC=$(tc-getCC) LD=$(tc-getLD) AR=$(tc-getAR) NM=$(tc-getNM) OBJCOPY=$(tc-getOBJCOPY) READELF=$(tc-getREADELF) STRIP=$(tc-getSTRIP)"
    + xmakeopts+=(
    + HOSTCC="$(tc-getBUILD_CC)"
    + CC="$(tc-getCC)"
    + LD="$(tc-getLD)"
    + AR="$(tc-getAR)"
    + NM="$(tc-getNM)"
    + OBJCOPY="$(tc-getOBJCOPY)"
    + READELF="$(tc-getREADELF)"
    + STRIP="$(tc-getSTRIP)"
    + )
    export xmakeopts
    }

    @@ -850,7 +859,7 @@ install_headers() {
    local ddir=$(kernel_header_destdir)

    env_setup_xmakeopts
    - emake headers_install INSTALL_HDR_PATH="${ED}"${ddir}/.. ${xmakeopts}
    + emake headers_install INSTALL_HDR_PATH="${ED}"${ddir}/.. "${xmakeopts[@]}"

    # let other packages install some of these headers
    rm -rf "${ED}"${ddir}/scsi || die #glibc/uclibc/etc...

    Can we perhaps use this opportunity to make "xmakeopts" more clear via a better name, as well as uppercase it
    to indicate that it is an exported variable? E.g., something like "CROSS_MAKEOPTS" is more clear to the
    reader than "xmakeopts", IMHO.

    I realize such a change may be a tad invasive to the eclass and possibly touch some ebuilds, so that may need
    to be a separate patch that this proposed change would then be based off of.

    --
    Joshua Kinard
    Gentoo/MIPS
    kumba@gentoo.org
    rsa6144/5C63F4E3F5C6C943 2015-04-27
    177C 1972 1FB8 F254 BAD0 3E72 5C63 F4E3 F5C6 C943

    "The past tempts us, the present confuses us, the future frightens us. And our lives slip away, moment by
    moment, lost in that vast, terrible in-between."

    --Emperor Turhan, Centauri Republic

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From James Le Cuirot@21:1/5 to All on Wed Jan 25 00:40:02 2023
    An upper-case name suggests that the variable is exported. This variable
    is also not just used for cross-compiling any more.

    Signed-off-by: James Le Cuirot <chewi@gentoo.org>
    ---
    eclass/kernel-2.eclass | 25 +++++++++++++------------
    1 file changed, 13 insertions(+), 12 deletions(-)

    diff --git a/eclass/kernel-2.eclass b/eclass/kernel-2.eclass
    index f7fcf15743f0..3c78aa5a8445 100644
    --- a/eclass/kernel-2.eclass
    +++ b/eclass/kernel-2.eclass
    @@ -745,24 +745,25 @@ cross_pre_c_headers() {
    use headers-only && [[ ${CHOST} != ${CTARGET} ]]
    }

    -# @FUNCTION: env_setup_xmakeopts
    +# @FUNCTION: env_setup_kernel_makeopts
    # @USAGE:
    # @DESCRIPTION:
    -# set the ARCH/CROSS_COMPILE when cross compiling
    +# Set the toolchain variables, as well as ARCH and CROSS_COMPILE when
    +# cross-compiling.

    -env_setup_xmakeopts() {
    +env_setup_kernel_makeopts() {
    # Kernel ARCH != portage ARCH
    export KARCH=$(tc-arch-kernel)

    # When cross-compiling, we need to set the ARCH/CROSS_COMPILE
    # variables properly or bad things happen !
    - xmakeopts=( ARCH="${KARCH}" )
    + KERNEL_MAKEOPTS=( ARCH="${KARCH}" )
    if [[ ${CTARGET} != ${CHOST} ]] && ! cross_pre_c_headers; then
    - xmakeopt
  • From James Le Cuirot@21:1/5 to All on Wed Jan 25 00:40:02 2023
    Signed-off-by: James Le Cuirot <chewi@gentoo.org>
    ---
    sys-kernel/linux-headers/linux-headers-5.10-r2.ebuild | 2 +-
    sys-kernel/linux-headers/linux-headers-5.15-r3.ebuild | 2 +-
    sys-kernel/linux-headers/linux-headers-5.19.ebuild | 2 +-
    3 files changed, 3 insertions(+), 3 deletions(-)

    diff --git a/sys-kernel/linux-headers/linux-headers-5.10-r2.ebuild b/sys-kernel/linux-headers/linux-headers-5.10-r2.ebuild
    index 08907ac2fb24..06fcc6978ce1 100644
    --- a/sys-kernel/linux-headers/linux-headers-5.10-r2.ebuild
    +++ b/sys-kernel/linux-headers/linux-headers-5.10-r2.ebuild
    @@ -40,7 +40,7 @@ src_prepare() {
    }

    src_test() {
    - emake headers_check ${xmakeopts}
    + emake headers_check "${KERNEL_MAKEOPTS[@]}"
    }

    src_install() {
    diff --git a/sys-kernel/linux-headers/linux-headers-5.15-r3.ebuild b/sys-kernel/linux-headers/linux-headers-5.15-r3.ebuild
    index 9d2ebae3daee..dae40c5ab655 100644
    --- a/sys-kernel/linux-headers/linux-headers-5.15-r3.ebuild
    +++ b/sys-kernel/linux-headers/linux-headers-5.15-r3.ebuild
    @@ -43,7 +43,7 @@ src_prepare() {
    }
  • From James Le Cuirot@21:1/5 to Joshua Kinard on Wed Jan 25 00:50:01 2023
    On Mon, 2023-01-23 at 11:20 -0500, Joshua Kinard wrote:
    On 1/21/2023 06:03, James Le Cuirot wrote:
    Variables like CC can have spaces for additional arguments. This is particularly useful for reliably setting the sysroot.

    Signed-off-by: James Le Cuirot <chewi@gentoo.org>
    ---
    eclass/kernel-2.eclass | 21 +++++++++++++++------
    1 file changed, 15 insertions(+), 6 deletions(-)

    diff --git a/eclass/kernel-2.eclass b/eclass/kernel-2.eclass
    index 873d4a204669..f7fcf15743f0 100644
    --- a/eclass/kernel-2.eclass
    +++ b/eclass/kernel-2.eclass
    @@ -1,4 +1,4 @@
    -# Copyright 1999-2022 Gentoo Authors
    +# Copyright 1999-2023 Gentoo Authors
    # Distributed under the terms of the GNU General Public License v2

    # @ECLASS: kernel-2.eclass
    @@ -756,13 +756,22 @@ env_setup_xmakeopts() {

    # When cross-compiling, we need to set the ARCH/CROSS_COMPILE
    # variables properly or bad things happen !
    - xmakeopts="ARCH=${KARCH}"
    + xmakeopts=( ARCH="${KARCH}" )
    if [[ ${CTARGET} != ${CHOST} ]] && ! cross_pre_c_headers; then
    - xmakeopts="${xmakeopts} CROSS_COMPILE=${CTARGET}-"
    + xmakeopts+=( CROSS_COMPILE="${CTARGET}-" )
    elif type -p ${CHOST}-ar >/dev/null; then
    - xmakeopts="${xmakeopts} CROSS_COMPILE=${CHOST}-"
    + xmakeopts+=( CROSS_COMPILE="${CHOST}-" )
    fi
    - xmakeopts="${xmakeopts} HOSTCC=$(tc-getBUILD_CC) CC=$(tc-getCC) LD=$(tc-getLD) AR=$(tc-getAR) NM=$(tc-getNM) OBJCOPY=$(tc-getOBJCOPY) READELF=$(tc-getREADELF) STRIP=$(tc-getSTRIP)"
    + xmakeopts+=(
    + HOSTCC="$(tc-getBUILD_CC)"
    + CC="$(tc-getCC)"
    + LD="$(tc-getLD)"
    + AR="$(tc-getAR)"
    + NM="$(tc-getNM)"
    + OBJCOPY="$(tc-getOBJCOPY)"
    + READELF="$(tc-getREADELF)"
    + STRIP="$(tc-getSTRIP)"
    + )
    export xmakeopts
    }

    @@ -850,7 +859,7 @@ install_headers() {
    local ddir=$(kernel_header_destdir)

    env_setup_xmakeopts
    - emake headers_install INSTALL_HDR_PATH="${ED}"${ddir}/.. ${xmakeopts}
    + emake headers_install INSTALL_HDR_PATH="${ED}"${ddir}/.. "${xmakeopts[@]}"

    # let other packages install some of these headers
    rm -rf "${ED}"${ddir}/scsi || die #glibc/uclibc/etc...

    Can we perhaps use this opportunity to make "xmakeopts" more clear via a better name, as well as uppercase it
    to indicate that it is an exported variable? E.g., something like "CROSS_MAKEOPTS" is more clear to the
    reader than "xmakeopts", IMHO.

    I realize such a change may be a tad invasive to the eclass and possibly touch some ebuilds, so that may need
    to be a separate patch that this proposed change would then be based off of.

    I hadn't noticed some older linux-headers ebuilds use this variable, so thanks for bringing that to my attention. Arguably they shouldn't, as it appears to
    be an internal variable, even if it is exported, but it's been dropped in
    later versions anyway. I've now made further changes. Please see the two additional patches.

    -----BEGIN PGP SIGNATURE-----

    iQJFBAABCAAvFiEEPxcZ3tkwcedKm2a8EiZBXQDdMTcFAmPQbHQRHGNoZXdpQGdl bnRvby5vcmcACgkQEiZBXQDdMTevaA/+KDH7Lp3fqxvxykvo6dNP6s7LcLfrlmYb TgqsLwaguIZMbYJCFj6Zg4cmVoR0d3/dn22i74qN7E5X/mh9b3Oea1xBCR8VK1/E R0BEvDw9dK2v0QtfmgzqfJjUm7qvXRRrrpdiRFyylrzG+5J/e9EOjmd3h9SJREdA tdEquCjOvOcCB/bMeyNIQFmpXLLKvRFrCSZ/1SzL+5S3xERCrA3Objlg1xL7asaw T1GGwcI5MZkeW4/EFLzEK7pBuhoUXXhztdSQFQ2ny6rDVd1wJylzNAkkGUkVhZTP GCASWv/CKeITDIBeDl2BJWaWABtzL+l9NuthYirG51t9FQmD1pP2ml06U6sxPhij kHkP02BbzW1Tz6atV1j7sXKIYRHiOKpYZv85AtDUHA0bUyyG9zec13hJ8Uvmbqjy 4KOKWtorChJRjEEO5mBdwQwqQ4ATDEYU3oDTOvisbU2pXDXpHRALcodWUVPznZwd s7OgKhIhZUnGVk49B9+dVxcefSAkpJoihOhsiD0BHHzla9l2fIv/Xs889gFpVFZ8 IZPXMw/wZO4ThRTBV4MB0t3WtrSy7Ls9pZxhsd2CrnAgWpiR/DMRYWanJA/flmDy e4F9F/ZCAvUG6AcpgPrH+BZuqveHEr+DZf7+nPGbbTXsPCzVPIL/CBlOj+e5R6gX
    qfqJk3Mq8FA=
    =/ukh
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Joshua Kinard@21:1/5 to James Le Cuirot on Fri Jan 27 12:50:02 2023
    On 1/24/2023 18:40, James Le Cuirot wrote:
    On Mon, 2023-01-23 at 11:20 -0500, Joshua Kinard wrote:
    On 1/21/2023 06:03, James Le Cuirot wrote:
    Variables like CC can have spaces for additional arguments. This is
    particularly useful for reliably setting the sysroot.

    Signed-off-by: James Le Cuirot <chewi@gentoo.org>
    ---
    eclass/kernel-2.eclass | 21 +++++++++++++++------
    1 file changed, 15 insertions(+), 6 deletions(-)

    diff --git a/eclass/kernel-2.eclass b/eclass/kernel-2.eclass
    index 873d4a204669..f7fcf15743f0 100644
    --- a/eclass/kernel-2.eclass
    +++ b/eclass/kernel-2.eclass
    @@ -1,4 +1,4 @@
    -# Copyright 1999-2022 Gentoo Authors
    +# Copyright 1999-2023 Gentoo Authors
    # Distributed under the terms of the GNU General Public License v2

    # @ECLASS: kernel-2.eclass
    @@ -756,13 +756,22 @@ env_setup_xmakeopts() {

    # When cross-compiling, we need to set the ARCH/CROSS_COMPILE
    # variables properly or bad things happen !
    - xmakeopts="ARCH=${KARCH}"
    + xmakeopts=( ARCH="${KARCH}" )
    if [[ ${CTARGET} != ${CHOST} ]] && ! cross_pre_c_headers; then
    - xmakeopts="${xmakeopts} CROSS_COMPILE=${CTARGET}-"
    + xmakeopts+=( CROSS_COMPILE="${CTARGET}-" )
    elif type -p ${CHOST}-ar >/dev/null; then
    - xmakeopts="${xmakeopts} CROSS_COMPILE=${CHOST}-"
    + xmakeopts+=( CROSS_COMPILE="${CHOST}-" )
    fi
    - xmakeopts="${xmakeopts} HOSTCC=$(tc-getBUILD_CC) CC=$(tc-getCC) LD=$(tc-getLD) AR=$(tc-getAR) NM=$(tc-getNM) OBJCOPY=$(tc-getOBJCOPY) READELF=$(tc-getREADELF) STRIP=$(tc-getSTRIP)"
    + xmakeopts+=(
    + HOSTCC="$(tc-getBUILD_CC)"
    + CC="$(tc-getCC)"
    + LD="$(tc-getLD)"
    + AR="$(tc-getAR)"
    + NM="$(tc-getNM)"
    + OBJCOPY="$(tc-getOBJCOPY)"
    + READELF="$(tc-getREADELF)"
    + STRIP="$(tc-getSTRIP)"
    + )
    export xmakeopts
    }

    @@ -850,7 +859,7 @@ install_headers() {
    local ddir=$(kernel_header_destdir)

    env_setup_xmakeopts
    - emake headers_install INSTALL_HDR_PATH="${ED}"${ddir}/.. ${xmakeopts} >>> + emake headers_install INSTALL_HDR_PATH="${ED}"${ddir}/.. "${xmakeopts[@]}"

    # let other packages install some of these headers
    rm -rf "${ED}"${ddir}/scsi || die #glibc/uclibc/etc...

    Can we perhaps use this opportunity to make "xmakeopts" more clear via a better name, as well as uppercase it
    to indicate that it is an exported variable? E.g., something like "CROSS_MAKEOPTS" is more clear to the
    reader than "xmakeopts", IMHO.

    I realize such a change may be a tad invasive to the eclass and possibly touch some ebuilds, so that may need
    to be a separate patch that this proposed change would then be based off of.

    I hadn't noticed some older linux-headers ebuilds use this variable, so thanks
    for bringing that to my attention. Arguably they shouldn't, as it appears to be an internal variable, even if it is exported, but it's been dropped in later versions anyway. I've now made further changes. Please see the two additional patches.

    The changes look good to me, thanks!

    Signed-off-by: Joshua Kinard <kumba@gentoo.org>


    --
    Joshua Kinard
    Gentoo/MIPS
    kumba@gentoo.org
    rsa6144/5C63F4E3F5C6C943 2015-04-27
    177C 1972 1FB8 F254 BAD0 3E72 5C63 F4E3 F5C6 C943

    "The past tempts us, the present confuses us, the future frightens us. And our lives slip away, moment by
    moment, lost in that vast, terrible in-between."

    --Emperor Turhan, Centauri Republic

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mike Pagano@21:1/5 to James Le Cuirot on Fri Jan 27 14:50:02 2023
    On 1/24/23 18:37, James Le Cuirot wrote:
    Signed-off-by: James Le Cuirot <chewi@gentoo.org>
    ---
    sys-kernel/linux-headers/linux-headers-5.10-r2.ebuild | 2 +-
    sys-kernel/linux-headers/linux-headers-5.15-r3.ebuild | 2 +-
    sys-kernel/linux-headers/linux-headers-5.19.ebuild | 2 +-
    3 files changed, 3 insertions(+), 3 deletions(-)

    diff --git a/sys-kernel/linux-headers/linux-headers-5.10-r2.ebuild b/sys-kernel/linux-headers/linux-headers-5.10-r2.ebuild
    index 08907ac2fb24..06fcc6978ce1 100644
    --- a/sys-kernel/linux-headers/linux-headers-5.10-r2.ebuild
    +++ b/sys-kernel/linux-headers/linux-headers-5.10-r2.ebuild
    @@ -40,7 +40,7 @@ src_prepare() {
    }

    src_test() {
    - emake headers_check ${xmakeopts}
    + emake headers_check "${KERNEL_MAKEOPTS[@]}"
    }

    src_install() {
    diff --git a/sys-kernel/linux-headers/linux-headers-5.15-r3.ebuild b/sys-kernel/linux-headers/linux-headers-5.15-r3.ebuild
    index 9d2ebae3daee..dae40c5ab655 100644
    --- a/sys-kernel/linux-headers/linux-headers-5.15-r3.ebuild
    +++ b/sys-kernel/linux-headers/linux-headers-5.15-r3.ebuild
    @@ -43,7 +43,7 @@ src_prepare() {
    }

    src_test() {
    - emake headers_check ${xmakeopts}
    + emake headers_check "${KERNEL_MAKEOPTS[@]}"
    }

    src_install() {
    diff --git a/sys-kernel/linux-headers/linux-headers-5.19.ebuild b/sys-kernel/linux-headers/linux-headers-5.19.ebuild
    index 527b4b401d6c..8ae17e59be76 100644
    --- a/sys-kernel/linux-headers/linux-headers-5.19.ebuild
    +++ b/sys-kernel/linux-headers/linux-headers-5.19.ebuild
    @@ -42,7 +42,7 @@ src_prepare() {
    }

    src_test() {
    - emake headers_check ${xmakeopts}
    + emake headers_check "${KERNEL_MAKEOPTS[@]}"
    }

    src_install() {

    ACK

    --
    Mike Pagano
    Gentoo Developer - Kernel Project
    E-Mail : mpagano@gentoo.org
    GnuPG FP : 52CC A0B0 F631 0B17 0142 F83F 92A6 DBEC 81F2 B137
    Public Key : http://pgp.mit.edu/pks/lookup?search=0x92A6DBEC81F2B137&op=index

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