Package Details: gcc-git 7.0.1.r152299.a718e363671-1

Git Clone URL: https://aur.archlinux.org/gcc-git.git (read-only)
Package Base: gcc-git
Description: The GNU Compiler Collection - C and C++ frontends (developmental version)
Upstream URL: http://gcc.gnu.org
Licenses: GPL, custom, LGPL, FDL
Groups: base-devel
Conflicts: gcc
Provides: gcc=${_base_ver}
Submitter: Allan
Maintainer: jamespharvey20
Last Packager: jamespharvey20
Votes: 10
Popularity: 0.022655
First Submitted: 2013-06-26 03:43
Last Updated: 2017-02-15 10:52

Required by (987)

Sources (2)

Pinned Comments

jamespharvey20 commented on 2017-02-15 04:30

*** STICKY ***

These gcc*-git packages replace core's gcc* (non-git) packages. Technically, replacing the system gcc-libs can be dangerous. The possibility of a new upstream gcc git commit breaking your system isn't zero. When you compile and install this, you're using the latest git source, so you may be the first Arch user to be using that particular commit.

In practice, I haven't seen an Arch user report such a problem for many years. Just understand that if installing these packages causes your computer to eat you, don't have your loved ones blame me. Oh, and know that if things go wrong, all you *should* have to do is uninstall the git version and go back to a previously working git version or even the core version. You might be able to do this while your system is still running, or you might have to do something like boot off an Arch ISO CD.

Latest Comments

mnovick1988 commented on 2017-05-21 00:27

Please update the PKGBUILD to conform with binutils-git(s/binutils>=2.26/binutils>=2.29/)

jamespharvey20 commented on 2017-04-03 01:28

@giacombum. Also, I've never used yaourt before. But, out of curiosity, in a VM, I installed yaourt and successfully built gcc-git 7.0.1.r153096.7714131b8c8-1.

jamespharvey20 commented on 2017-04-02 04:21

@giacombum. This is caused by your CHOST environment variable being set incorrectly.

My bet is: (1) in your /etc/makepkg.conf, your CHOST is set to "x86_64-unknown-linux-gnu", rather than "x86_64-pc-linux-gnu"; and (2) there's probably an /etc/makepkg.conf.pacnew file. If this is the case, if you never made custom modifications to makepkg.conf, move the .pacnew file to the .conf file. Read up at https://wiki.archlinux.org/index.php/Pacman/Pacnew_and_Pacsave, and read through pacman notifications when upgrading packages for the future.

Please comment back if this was the issue or not.

I ran into the exact failure you're having in late 2015 (you can see comments on this package) when upstream gcc git changed, and no longer expected the vendor portion of CHOST to be "unknown". On a x86_64 platform, it started expecting "pc".

In late 2015, I changed this PKGBUILD to have a workaround of changing unknown to pc, which should have worked for everyone on x86_64 platforms. On 2/15/2017, I changed the PKGBUILD to mirror the gcc (non git) package, which was able to avoid this workaround since /etc/makepkg.conf had been changed to use "pc".

You'll see in the beginning part of your build, it's properly using "x86_64-pc-linux-gnu". Then, you hit PKGBUILD line 110 (just after running "make") which is "make -C $CHOST/libstdc++-v3/doc doc-man-doxygen" which causes the failure.

giacombum commented on 2017-03-30 21:26

I obtain the following error:

/bin/sh ./libtool --tag=CC --mode=link /tmp/yaourt-tmp-giacomo/aur-gcc-git/src/gcc-build/./gcc/xgcc -B/tmp/yaourt-tmp-giacomo/aur-gcc-git/src/gcc-build/./gcc/ -B/usr/x86_64-pc-linux-gnu/bin/ -B/usr/x86_64-pc-linux-gnu/lib/ -isystem /usr/x86_64-pc-linux-gnu/include -isystem /usr/x86_64-pc-linux-gnu/sys-include -mrtm -Wall -Werror -Wc,-pthread -g -march=native -O2 -fstack-protector-strong -Wl,-O1 -o libitm.la -version-info 1:0:0 -Wl,--version-script,/tmp/yaourt-tmp-giacomo/aur-gcc-git/src/gcc/libitm/libitm.map -rpath /usr/lib/../lib aatree.lo alloc.lo alloc_c.lo alloc_cpp.lo barrier.lo beginend.lo clone.lo eh_cpp.lo local.lo query.lo retry.lo rwlock.lo useraction.lo util.lo sjlj.lo tls.lo method-serial.lo method-gl.lo method-ml.lo x86_sse.lo x86_avx.lo futex.lo
libtool: link: /tmp/yaourt-tmp-giacomo/aur-gcc-git/src/gcc-build/./gcc/xgcc -B/tmp/yaourt-tmp-giacomo/aur-gcc-git/src/gcc-build/./gcc/ -B/usr/x86_64-pc-linux-gnu/bin/ -B/usr/x86_64-pc-linux-gnu/lib/ -isystem /usr/x86_64-pc-linux-gnu/include -isystem /usr/x86_64-pc-linux-gnu/sys-include -shared -fPIC -DPIC .libs/aatree.o .libs/alloc.o .libs/alloc_c.o .libs/alloc_cpp.o .libs/barrier.o .libs/beginend.o .libs/clone.o .libs/eh_cpp.o .libs/local.o .libs/query.o .libs/retry.o .libs/rwlock.o .libs/useraction.o .libs/util.o .libs/sjlj.o .libs/tls.o .libs/method-serial.o .libs/method-gl.o .libs/method-ml.o .libs/x86_sse.o .libs/x86_avx.o .libs/futex.o -mrtm -pthread -march=native -Wl,-O1 -Wl,--version-script -Wl,/tmp/yaourt-tmp-giacomo/aur-gcc-git/src/gcc/libitm/libitm.map -Wl,-soname -Wl,libitm.so.1 -o .libs/libitm.so.1.0.0
libtool: link: (cd ".libs" && rm -f "libitm.so.1" && ln -s "libitm.so.1.0.0" "libitm.so.1")
libtool: link: (cd ".libs" && rm -f "libitm.so" && ln -s "libitm.so.1.0.0" "libitm.so")
libtool: link: ar rc .libs/libitm.a aatree.o alloc.o alloc_c.o alloc_cpp.o barrier.o beginend.o clone.o eh_cpp.o local.o query.o retry.o rwlock.o useraction.o util.o sjlj.o tls.o method-serial.o method-gl.o method-ml.o x86_sse.o x86_avx.o futex.o
libtool: link: ranlib .libs/libitm.a
libtool: link: ( cd ".libs" && rm -f "libitm.la" && ln -s "../libitm.la" "libitm.la" )
true DO=all multi-do # make
make[4]: Leaving directory '/tmp/yaourt-tmp-giacomo/aur-gcc-git/src/gcc-build/x86_64-pc-linux-gnu/libitm'
make[3]: Leaving directory '/tmp/yaourt-tmp-giacomo/aur-gcc-git/src/gcc-build/x86_64-pc-linux-gnu/libitm'
make[2]: Leaving directory '/tmp/yaourt-tmp-giacomo/aur-gcc-git/src/gcc-build/x86_64-pc-linux-gnu/libitm'
make[1]: Leaving directory '/tmp/yaourt-tmp-giacomo/aur-gcc-git/src/gcc-build'
make: *** x86_64-unknown-linux-gnu/libstdc++-v3/doc: No such file or directory. Stop.

jamespharvey20 commented on 2017-02-15 10:53

Awesome. Allan's adding a version to provides did the trick.

pacman now installs these gcc*-git packages without issue now, replacing core's non-git packages.

Allan commented on 2017-02-15 04:46

Well... I when originally uploaded this package, it had provides/conflicts/replaces entries. So i guess my opinion is they should be there.

Nothing should be installed into /usr/local. People can have this as a standalone gcc-git package does not not replace the system version by adding this to configure:
"--program-suffix=-git --enable-version-specific-runtime-libs"

jamespharvey20 commented on 2017-02-15 04:38

@Allan - Thanks! I didn't even get to send my pacman-dev email. :-) By the way, what are your thoughts on replacing (provides/conflicts) the core gcc* packages? Do you think it's appropriate to have a warning posted, since it doesn't seem to have caused a problem for anyone recently? Or, would you urge it to be moved into /usr/local?

Allan commented on 2017-02-15 04:35

You need to add a version to your provides. E.g.

provides=('gcc-libs=7.0.1')

jamespharvey20 commented on 2017-02-15 04:30

*** STICKY ***

These gcc*-git packages replace core's gcc* (non-git) packages. Technically, replacing the system gcc-libs can be dangerous. The possibility of a new upstream gcc git commit breaking your system isn't zero. When you compile and install this, you're using the latest git source, so you may be the first Arch user to be using that particular commit.

In practice, I haven't seen an Arch user report such a problem for many years. Just understand that if installing these packages causes your computer to eat you, don't have your loved ones blame me. Oh, and know that if things go wrong, all you *should* have to do is uninstall the git version and go back to a previously working git version or even the core version. You might be able to do this while your system is still running, or you might have to do something like boot off an Arch ISO CD.

jamespharvey20 commented on 2017-02-15 04:26

Apologize I've been quiet while working on some roadblocks.

I've pushed changes that as closely as possible makes gcc-git match core's gcc 6.3.1-1. It successfully builds and works.

Useful other changes:

* Now uses the github mirror repo. I had many times recently where the git clone from the upstream gcc git repo failed, or took even longer than the long time it is expected to take. I've seen this in the past for the official repo also.
* Has been updated to parse _pkgver_base, _pkgver, and _libdir, rather than be hardcoded.
* Uses isl 0.18


EDIT: The rest no longer applies. See more recent comments.


But, I haven't been able to install it using pacman. I haven't ever used pacaur or yaourt, but I'll probably check if those successfully install it somehow.

# pacman -S gcc-git gcc-libs-git [I use a local network arch repo, without that, you'd probably be using -U to install, but -U acts the same way]
resolving dependencies...
looking for conflicting packages...
:: gcc-git and gcc are in conflict. Remove gcc? [y/N] y
:: gcc-libs-git and gcc-libs are in conflict. Remove gcc-libs? [y/N] y
error: failed to prepare transaction (could not satisfy dependencies)
:: icu: removing gcc-libs breaks dependency 'gcc-libs>=4.7.1-5'

Trying to remove gcc-libs without accounting for that gcc-libs-git will take its place marks almost every package installed for removal. (Just run pactree --reverse gcc-libs and you'll see almost everything installed.)

This used to work. I'm thinking a pacman change must have been made, so it doesn't recognize that the -git version provide the non-git versions, when examining broken dependencies.


(EDIT: This is no longer being considered.) That made me consider having gcc*-git install to /usr/local instead for 2 reasons. (1) Replacing the system gcc-libs can be dangerous. In practice, I and others haven't had problems with it recently, but the possible danger remains. (2) It would avoid the pacman issues above. I've almost completed this switch.


I'm going to reach out to the pacman devs to see if its current refusal to replace the non-git versions with git versions is desirable or not.

All comments