GCC5 provides a new go binary. However, it does not work on ARMv7 (Odroid-U2). I tried running /usr/armv7a-hardfloat-linux-gnueabi/gcc-bin/5.3.0/go without any arguments or with simple arguments like "version" go binary works fine on amd64. Reproducible: Always Steps to Reproduce: 1. emerge sys-devel/gcc-5.3.0[go] on ARMv7 2. run /usr/armv7a-hardfloat-linux-gnueabi/gcc-bin/5.3.0/go Actual Results: go is stuck forever with 100% CPU usage. Portage 2.2.24 (python 3.4.3-final-0, !../../usr/portage/profiles/default/linux/arm/13.0/armv7a/desktop/kde, gcc-5.3.0, glibc-2.21-r1, 4.3.0-gentoo-gnu armv7l) ================================================================= System uname: Linux-4.3.0-gentoo-gnu-armv7l-with-gentoo-2.2 KiB Mem: 2069928 total, 442448 free KiB Swap: 4094972 total, 4067260 free Timestamp of repository gentoo: Tue, 08 Dec 2015 18:15:01 +0000 sh bash 4.3_p39 ld GNU ld (Gentoo 2.25.1 p1.1) 2.25.1 dev-lang/python: 2.7.10-r1::gentoo, 3.4.3::gentoo sys-devel/autoconf: 2.13::gentoo, 2.69::gentoo sys-devel/automake: 1.11.6-r1::gentoo, 1.13.4::gentoo, 1.14.1::gentoo, 1.15::gentoo sys-devel/binutils: 2.25.1-r1::gentoo sys-devel/libtool: 2.4.6::gentoo sys-kernel/linux-headers: 3.18::gentoo (virtual/os-headers) Repositories: digint location: /var/lib/layman/btrbk sync-type: git sync-uri: git://dev.tty0.ch/portage/digint-overlay.git masters: gentoo gentoo location: /usr/portage sync-type: rsync sync-uri: rsync://rsync.uk.gentoo.org/gentoo-portage sunxi location: /var/lib/layman/sunxi masters: gentoo priority: 0 chaos-gitlabhq location: /var/lib/layman/chaos-gitlabhq masters: gentoo priority: 1 bor location: /var/lib/layman/bor masters: gentoo priority: 2 Local-overlay location: /var/lib/portage/overlay/ masters: gentoo priority: 1000 ACCEPT_KEYWORDS="arm" ACCEPT_LICENSE="@FREE" CFLAGS="-O2 -pipe -march=armv7-a -mcpu=cortex-a9 -mfpu=neon -mfloat-abi=hard" CHOST="armv7a-hardfloat-linux-gnueabi" CONFIG_PROTECT="/etc /etc/stunnel/stunnel.conf /usr/share/config /usr/share/easy-rsa /usr/share/gnupg/qualified.txt /var/bind" CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/php/apache2-php5.6/ext-active/ /etc/php/cgi-php5.6/ext-active/ /etc/php/cli-php5.6/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c" CXXFLAGS="-O2 -pipe -march=armv7-a -mcpu=cortex-a9 -mfpu=neon -mfloat-abi=hard" DISTDIR="/usr/portage/distfiles" FEATURES="assume-digests binpkg-logs config-protect-if-modified distlocks ebuild-locks fixlafiles merge-sync news parallel-fetch preserve-libs protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr" GENTOO_MIRRORS="http://mirror.bytemark.co.uk/gentoo/ http://mirror.qubenet.net/mirror/gentoo/ http://www.mirrorservice.org/sites/distfiles.gentoo.org/" PKGDIR="/usr/portage/packages" PORTAGE_TMPDIR="/var/tmp" USE="1stclassmsg X a52 aac aalib acl acpi aio alsa apache2 apng archive arm armv5te armv6 armv6t2 armvfp authdaemond authlib autoipd autotrace avahi awt bash-completion bazaar berkdb bindist bitcoin_policy_cltv bitcoin_policy_dcmp bitcoin_policy_rbf bitcoin_policy_spamfilter bittorrent bluetooth bogofilter bookmarks branding btrfs bugzilla bzip2 c++0x cairo calendar cdda cdr cgi chappa chatzilla chm cli clucene cmake color colordiff context cracklib crypt cryptsetup cups curl custom-optimization cvs cxx d daemon dbus deblob declarative deflate designer device-mapper dhcpd dirac djvu dlz dot dovecot-sasl downloadorder dri drm dts dvd dvdr dvi dvi2tty dvipdfm dynamic eap-sim ebook edit egl eigen emacs embedded emboss enchant encode evdev exif extensions extra extra-algorithms extraengine fakevim fam farstream fat ffmpeg fftw firefox flac fontconfig fontforge foomaticdb fortran fortran2003 fortran95 fpm fpx freetds g3dvl gallium games gbm gcj gd gdbm gdm geoip geoloc geolocation gif git glamor gles gles1 gles2 glew glsl gme gmp gnuplot gnutls go gold google gpg gpm gptfdisk gpu graphics graphicsmagick graphite graphviz gsl gsm gstreamer gtk gtk3 gtkspell gudev gzip harden hdf5 hdri highlight history hscolour http2 hunspell hwdb icedtea7 iconv icu id3tag imagemagick imaging imap imlib imlib2 intl introspection iodbc ipc ipv6 jabber jadetex javascript jbig jbootstrap jingle jit jpeg jpeg2k json kate kde kdepim kerberos keymap kipi kontact kpathsea kscreen ktp lame lapack lastfm latex latexmk lcms ldap lensfun less libass libcaca libkms libnotify libproxy libssh2 libtiger lightning ljr llvm lto lua luatex lvm lyrics lzma lzo mad magic magnetgenerator maildir managesieve marble math mathml matplotlib matroska md5sum mdnsresponder-compat mediaplayer mediawiki melt mercurial metalink mhash mikmod minizip mjpeg mng mod modemmanager modplug modules monolithic monolithic-build monotone mount mp3 mp4 mpeg mpg123 mplayer mpx multitarget music musicbrainz mysql mysqli nat native native-exceptions ncurses nethack network networkmanager new-login nfs nls nntp nptl nsplugin nss ntfs ntfsprogs ntp numpy oauth objc objc++ objc-gc ogg ogg123 ogm okteta okular omega opengl opengtl openid openldap openmp openstreetmap optimization opus otr p2p pam pango parted pcap pcmcia pcntl pcre pcre16 pdf pdftk pdo perl phonon php pkcs11 plasma player plymouth png pnm policykit postgres postproc postscript ppds prediction preview-latex prison privacy privacylists privatestorage projectm psf pstricks pth publishers pulseaudio pyqt4 python qalculate qml qt3support qt4 qt5 quicktime quota quvi qwt r600-llvm-compiler radio radius readline realtime redeyes resolvconf rss rtsp ruby sandbox sasl science script sdk sdl search seccomp secure-delete semantic-desktop sensord server session sftp sha512 shapefile shared-dricore shared-glapi sieve skins small-scale smartcard smime smtp sndfile soap sockets socks solver soprano sound soundtouch sparse speech speex spell sql sqlite sqlite3 srt srtp ssh ssl stars startup-notification strong-optimization stun subversion supernodal svg symlink syslog system-boost system-cairo system-ffmpeg system-icu system-jpeg system-libs system-libvncserver system-libyaml system-mpmath system-mupdf system-renpy system-sqlite system-wine systemd sysv-utils taglib tcl tcpd telepathy terminal tex4ht texteffect themedesigner themes theora thesaurus threads thumbnail thumbnails tidy tiff tls tor tordns translator truetype tty-helpers udev udisks udisks2 umfpack unicode unzip upnp-av usb v4l v8 vamp video videoslideshow vim vlc vlm vnc vorbis wav wavpack wayland wayland-compositor webcam webdav webkit webkit2 webm webp wifi wma wmf word-perfect wps wxwidgets x265 xa xattr xbase xcb xcomposite xetex xface xft xinerama xkb xml xmlrpc xmlwriter xmp xorg xpm xrandr xrender xv xvfb xvid xvmc xwayland xz youtube zeroconf zip zlib" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump author" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CURL_SSL="nss" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ublox ubx" INPUT_DEVICES="keyboard mouse evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LINGUAS="lt en en_GB" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-6" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7 python3_4" RUBY_TARGETS="ruby20 ruby21" USERLAND="GNU" VIDEO_CARDS="exynos fbdev omap omapfb dummy v4l" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account" Unset: EMERGE_DEFAULT_OPTS, PORTAGE_BUNZIP2_COMMAND
Actually, it gets stuck every other time, not every time. I've also noticed that if dev-lang/go is reemerged than it's executable is used. So the bug seems to appear because gcc-config somehow creates a profile where go binary from gcc is used together with go environment from dev-lang/go. Once dev-lang/go is reemerged changes by gcc-config are overwritten and everything works again. I don't know why only ARM version stucks with 100% CPU usage but it looks like other arches are affected by this collision between gcc-config and dev-lang/go too.
we'll just delete the go/gofmt programs from gcc for now
gcc-5+ will now delete `go` and `gofmt` from BINPATH when installing gcc: http://gitweb.gentoo.org/repo/gentoo.git/commit/?id=837dc289f66ec6830a5175f28311b73f20250e07
(In reply to SpanKY from comment #2) > we'll just delete the go/gofmt programs from gcc for now Maybe add a -5 suffix to them. That will be consistent with the go-5 binary mentioned in the golang bootstrap instructions here: https://golang.org/doc/install/source This will solve the chicken/egg problem for bootstrap of dev-lang/go.
Created attachment 428488 [details, diff] toolchain.eclass: install go and gofmt as go-5 and gofmt-5 With this patch, I've successfully bootstrapped go-1.6-r2 with sys-devel/gcc-5.3.0[go] (see bug 576290).
@toolchain: Are there any objections to installing them with a -5 suffix? Note that go-5 is the name used in the golang bootstrap instructions. diff --git a/eclass/toolchain.eclass b/eclass/toolchain.eclass index 7dade5c..0a5a0c5 100644 --- a/eclass/toolchain.eclass +++ b/eclass/toolchain.eclass @@ -1684,10 +1684,12 @@ toolchain_src_install() { ln -sf ${CTARGET}-${x} ${CTARGET}-${x}-${GCC_CONFIG_VER} fi done - # Clear out the main go binaries as we don't want to clobber dev-lang/go + # Rename the main go binaries as we don't want to clobber dev-lang/go # when gcc-config runs. #567806 if tc_version_is_at_least 5 && is_go ; then - rm -f go gofmt + for x in go gofmt; do + mv ${x} ${x}-5 || die + done fi # Now do the fun stripping stuff
Maybe it makes more sense to name it go-${PV%%.*} so that it will only be named go-5 if the major version is 5 (not sure if gcc-4.x has the go/gofmt binaries).
(In reply to Zac Medico from comment #7) > Maybe it makes more sense to name it go-${PV%%.*} so that it will only be > named go-5 if the major version is 5 (not sure if gcc-4.x has the go/gofmt > binaries). Committed, using ${GCCMAJOR} instead of ${PV%%.*}: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=3f171e23da269c77dfa9cb3097737e33db853c8d