Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 653724 - sys-devel/crossdev-20180410: USE Flag 'headers-only' not in IUSE
Summary: sys-devel/crossdev-20180410: USE Flag 'headers-only' not in IUSE
Status: RESOLVED INVALID
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Gentoo Crossdev team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-04-21 20:21 UTC by Joe Harvell
Modified: 2018-04-23 16:27 UTC (History)
2 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
output of 'emerge --info' (einfo.txt,6.83 KB, text/plain)
2018-04-21 20:22 UTC, Joe Harvell
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Joe Harvell 2018-04-21 20:21:23 UTC
Unable to create toolchain due to recent change in USE flags for sys-devel/glibc:

https://github.com/gentoo/gentoo/commit/91a02442c5a6c157bf9de58b20d327c88e9fac20

Error message when running: sudo crossdev --stable --portage -v --target armv7a-hardfloat-linux-gnueabihf
>>>  '/var/tmp/portage/cross-armv7a-hardfloat-linux-gnueabihf/glibc-2.23-r4/temp/build.log'
 * Messages for package cross-armv7a-hardfloat-linux-gnueabihf/glibc-2.23-r4:
 * ERROR: cross-armv7a-hardfloat-linux-gnueabihf/glibc-2.23-r4::crossdev failed (unpack phase):
 *   USE Flag 'headers-only' not in IUSE for cross-armv7a-hardfloat-linux-gnueabihf/glibc-2.23-r4

Obviously crossdev still expects the IUSE flag to be crosscompile_opts_headers-only rather than the new value headers-only
Comment 1 Joe Harvell 2018-04-21 20:22:13 UTC
Created attachment 528176 [details]
output of 'emerge --info'
Comment 2 Joe Harvell 2018-04-21 20:27:25 UTC
Here is a diff of the overlay ebuild for glibc that crossdev created versus the original ebuild.  Note the difference in the IUSE line.  Should there be any difference at all?

jharvell@wolfhound glibc$ diff -u /usr/portage/sys-libs/glibc/glibc-2.23-r4.ebuild glibc-2.23-r4.ebuild 
--- /usr/portage/sys-libs/glibc/glibc-2.23-r4.ebuild    2018-01-07 13:09:53.000000000 -0700
+++ glibc-2.23-r4.ebuild        2017-07-07 02:55:44.000000000 -0600
@@ -1,4 +1,4 @@
-# Copyright 1999-2018 Gentoo Foundation
+# Copyright 1999-2017 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI="5"
@@ -9,7 +9,7 @@
 HOMEPAGE="https://www.gnu.org/software/libc/libc.html"
 
 LICENSE="LGPL-2.1+ BSD HPND ISC inner-net rc PCRE"
-KEYWORDS="alpha amd64 arm arm64 hppa ia64 ~m68k ~mips ppc ppc64 ~s390 ~sh sparc x86"
+KEYWORDS="alpha amd64 arm ~arm64 hppa ia64 ~m68k ~mips ppc ppc64 ~s390 ~sh sparc x86"
 RESTRICT="strip" # strip ourself #46186
 EMULTILIB_PKG="true"
 
@@ -30,7 +30,7 @@
 PATCH_VER="8"                                  # Gentoo patchset
 : ${NPTL_KERN_VER:="2.6.32"}                   # min kernel version nptl requires
 
-IUSE="audit caps debug gd hardened multilib nscd +rpc selinux systemtap profile suid vanilla headers-only"
+IUSE="audit caps debug gd hardened multilib nscd +rpc selinux systemtap profile suid vanilla crosscompile_opts_headers-only"
 
 # Here's how the cross-compile logic breaks down ...
 #  CTARGET - machine that will target the binaries
@@ -82,7 +82,7 @@
        !sys-libs/nss-db"
 
 if [[ ${CATEGORY} == cross-* ]] ; then
-       DEPEND+=" !headers-only? (
+       DEPEND+=" !crosscompile_opts_headers-only? (
                >=${CATEGORY}/binutils-2.24
                >=${CATEGORY}/gcc-4.7
        )"
Comment 3 Joe Harvell 2018-04-21 20:44:57 UTC
Strange....looks like this has to do with the fact that at some time in the past I set up crossdev into a different overlay:

See below the first two invocations of crossdev.  In the first one I specified the portage option -a (--ask) so it never continued after portage asked for input but not from the terminal.  I did a ctrl-C once I realized that.  But notice that it symlinked glibc from another overlay repo "wolfhound" instead of the default repo.  I remember I had to make an overlay for glibc to add a patch for glibc-2.23-r4.ebuild to work around this bug https://sourceware.org/bugzilla/show_bug.cgi?id=21666.  To do that, I copied all the glibc packages that existed at that time into the wolfhound overlay and then modified the one I was trying to install to include the patch.

Is there some way to control which overlay crossdev uses to symlink its packages?

jharvell@wolfhound wolfhound$ sudo crossdev --stable --portage -av --target armv7a-hardfloat-linux-gnueabihf
Mot de passe : 
-                                                                                                                       
 * crossdev version:      20180410
 * Host Portage ARCH:     amd64
 * Target Portage ARCH:   arm
 * Target System:         armv7a-hardfloat-linux-gnueabihf
 * Stage:                 4 (C/C++ compiler)
 * USE=multilib:          no
 * ABIs:                  default

 * binutils:              binutils-[stable]
 * gcc:                   gcc-[stable]
 * headers:               linux-headers-[stable]
 * libc:                  glibc-[stable]

 * CROSSDEV_OVERLAY:      /opt/portage/crossdev
 * PORT_LOGDIR:           /var/log/portage
 * PORTAGE_CONFIGROOT:    /
 * Portage flags:          -av
                                                                                                                        
 * getting sys-libs/glibc from /opt/portage/wolfhound
 * getting sys-devel/gdb from /var/lib/layman/gentoo-zh
 * leaving metadata/layout.conf alone in /opt/portage/crossdev
                                                                                                                        
 * Log: /var/log/portage/cross-armv7a-hardfloat-linux-gnueabihf-binutils.log
 * Emerging cross-binutils ...
^C
 * error: binutils failed :(
 * 
 * If you file a bug, please attach the following logfiles:
 * /var/log/portage/cross-armv7a-hardfloat-linux-gnueabihf-info.log
 * /var/log/portage/cross-armv7a-hardfloat-linux-gnueabihf-binutils.log.xz
 * /var/tmp/portage/cross-armv7a-hardfloat-linux-gnueabihf/binutils*/temp/binutils-config.logs.tar.xz
jharvell@wolfhound wolfhound$ sudo crossdev --stable --portage -v --target armv7a-hardfloat-linux-gnueabihf
Mot de passe : 
-                                                                                                                       
 * crossdev version:      20180410
 * Host Portage ARCH:     amd64
 * Target Portage ARCH:   arm
 * Target System:         armv7a-hardfloat-linux-gnueabihf
 * Stage:                 4 (C/C++ compiler)
 * USE=multilib:          no
 * ABIs:                  default

 * binutils:              binutils-[stable]
 * gcc:                   gcc-[stable]
 * headers:               linux-headers-[stable]
 * libc:                  glibc-[stable]

 * CROSSDEV_OVERLAY:      /opt/portage/crossdev
 * PORT_LOGDIR:           /var/log/portage
 * PORTAGE_CONFIGROOT:    /
 * Portage flags:          -v
                                                                                                                        
 * leaving sys-devel/binutils in /opt/portage/crossdev
 * leaving sys-devel/gcc in /opt/portage/crossdev
 * leaving sys-kernel/linux-headers in /opt/portage/crossdev
 * leaving sys-libs/glibc in /opt/portage/crossdev
 * leaving sys-devel/gdb in /opt/portage/crossdev
 * leaving metadata/layout.conf alone in /opt/portage/crossdev
Comment 4 Joe Harvell 2018-04-21 21:00:21 UTC
I am not sure I understand the overlay options summarized by crossdev --help (below).  I created overlay crossdev, and crossdev is using that overlay.  But how do I control the overlay used as the target for the symlinks?  Shouldn't it use the overlay specified in 'masters' for the crossdev overlay in my case?



Overlay Options:
    -oS, --overlays list     Space delimited list of overlays to search
                                [default: `portageq repositories_configuration`]
    -oO, --ov-output path    Parent directory of overlay to write crossdev package links
                                [default: uses repo with name 'crossdev', or
                                 'cross-${CTARGET}', or falls back to first
                                 from --overlays list]
    -ob, --ov-binutils path  Overlay for binutils ebuilds [default: search]
    -od, --ov-gdb path       Overlay for gdb ebuilds [default: search]
    -og, --ov-gcc path       Overlay for gcc ebuilds [default: search]
    -ok, --ov-kernel path    Overlay for kernel ebuilds [default: search]
    -ol, --ov-libc path      Overlay for C library ebuilds [default: search]
    -ox, --ov-extra path     Overlay for extra packages [default: search]
Comment 5 Joe Harvell 2018-04-21 21:01:05 UTC
jharvell@wolfhound metadata$ cat /etc/portage/repos.conf/crossdev.conf 
[crossdev]
location = /opt/portage/crossdev
jharvell@wolfhound metadata$ cat /opt/portage/crossdev/profiles/repo_name 
crossdev
jharvell@wolfhound metadata$ cat /opt/portage/crossdev/metadata/layout.conf 
masters = gentoo
auto-sync = false
priority = 10
jharvell@wolfhound metadata$ cat /etc/portage/repos.conf/gentoo.conf 
[DEFAULT]
main-repo = gentoo

[gentoo]
location = /usr/portage
sync-type = rsync
#sync-uri = rsync://rsync.us.gentoo.org/gentoo-portage
sync-uri = rsync://rsync11.us.gentoo.org/gentoo-portage
jharvell@wolfhound metadata$ cat /usr/portage/profiles/repo_name 
gentoo
Comment 6 Joe Harvell 2018-04-21 21:04:28 UTC
I was able to work around this issue by invoking crossdev as follows:

sudo crossdev --overlays gentoo crossdev --stable --portage -v --target armv7a-hardfloat-linux-gnueabihf
Comment 7 Sergei Trofimovich (RETIRED) gentoo-dev 2018-04-22 10:36:10 UTC
(In reply to Joe Harvell from comment #0)
> Unable to create toolchain due to recent change in USE flags for
> sys-devel/glibc:
> 
> https://github.com/gentoo/gentoo/commit/
> 91a02442c5a6c157bf9de58b20d327c88e9fac20
> 
> Error message when running: sudo crossdev --stable --portage -v --target
> armv7a-hardfloat-linux-gnueabihf
> >>>  '/var/tmp/portage/cross-armv7a-hardfloat-linux-gnueabihf/glibc-2.23-r4/temp/build.log'
>  * Messages for package cross-armv7a-hardfloat-linux-gnueabihf/glibc-2.23-r4:
>  * ERROR: cross-armv7a-hardfloat-linux-gnueabihf/glibc-2.23-r4::crossdev
> failed (unpack phase):
>  *   USE Flag 'headers-only' not in IUSE for
> cross-armv7a-hardfloat-linux-gnueabihf/glibc-2.23-r4
> 
> Obviously crossdev still expects the IUSE flag to be
> crosscompile_opts_headers-only rather than the new value headers-only

Crossdev can use both 'crosscompile_opts_headers-only' and 'headers-only'.
The error you get is an error emerge complaining that IUSE=headers-only is missing.

Below you show a diff:

-IUSE="audit caps debug gd hardened multilib nscd +rpc selinux systemtap profile suid vanilla headers-only"
+IUSE="audit caps debug gd hardened multilib nscd +rpc selinux systemtap profile suid vanilla crosscompile_opts_headers-only"

Where does this dff comes from? crossdev does symlinks from upstream tree, not file copies to avoid breakages like that. It looks like your ebuilds in the overlay are outdated and you need to synch them.

Or just recreate overlay with crossdev.
Comment 8 Joe Harvell 2018-04-23 16:27:01 UTC
(In reply to Sergei Trofimovich from comment #7)
> (In reply to Joe Harvell from comment #0)
> > Unable to create toolchain due to recent change in USE flags for
> > sys-devel/glibc:
> > 
> > https://github.com/gentoo/gentoo/commit/
> > 91a02442c5a6c157bf9de58b20d327c88e9fac20
> > 
> > Error message when running: sudo crossdev --stable --portage -v --target
> > armv7a-hardfloat-linux-gnueabihf
> > >>>  '/var/tmp/portage/cross-armv7a-hardfloat-linux-gnueabihf/glibc-2.23-r4/temp/build.log'
> >  * Messages for package cross-armv7a-hardfloat-linux-gnueabihf/glibc-2.23-r4:
> >  * ERROR: cross-armv7a-hardfloat-linux-gnueabihf/glibc-2.23-r4::crossdev
> > failed (unpack phase):
> >  *   USE Flag 'headers-only' not in IUSE for
> > cross-armv7a-hardfloat-linux-gnueabihf/glibc-2.23-r4
> > 
> > Obviously crossdev still expects the IUSE flag to be
> > crosscompile_opts_headers-only rather than the new value headers-only
> 
> Crossdev can use both 'crosscompile_opts_headers-only' and 'headers-only'.
> The error you get is an error emerge complaining that IUSE=headers-only is
> missing.
> 
> Below you show a diff:
> 
> -IUSE="audit caps debug gd hardened multilib nscd +rpc selinux systemtap
> profile suid vanilla headers-only"
> +IUSE="audit caps debug gd hardened multilib nscd +rpc selinux systemtap
> profile suid vanilla crosscompile_opts_headers-only"
> 
> Where does this dff comes from? crossdev does symlinks from upstream tree,
> not file copies to avoid breakages like that. It looks like your ebuilds in
> the overlay are outdated and you need to synch them.
> 
> Or just recreate overlay with crossdev.

You are correct that the ebuilds in the overlay are outdated.  The overlay in question is the overaly I use to make patches to ebuilds to fix locally while fixes are not available in portage.  Usually I copy all ebuilds/files for the broken package into my overlay repo and then edit the one I am trying to install to make it apply a custom patch.  I naively did not anticipate that existing ebuilds would ever change.

In any case, I did not want crossdev to choose this particular overlay repo as the upstream, since it only has  a handful of packages in it.  I was able to make crossdev choose the repo I wanted by passing '--overlays gentoo crossdev' so that it would not consider the other repos.

I would say this is not a bug and could be closed.