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
Created attachment 528176 [details] output of 'emerge --info'
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 )"
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
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]
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
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
(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.
(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.