Add gcc-go support

This commit is contained in:
Travis Cline 2013-02-17 23:44:57 -06:00
parent 6762331ee5
commit c397a1c220
3 changed files with 62 additions and 8 deletions

View file

@ -13,9 +13,9 @@
noautobuild=1
pkgname=('gcc' 'gcc-libs' 'gcc-fortran' 'gcc-objc')
pkgname=('gcc' 'gcc-libs' 'gcc-fortran' 'gcc-objc' 'gcc-go')
pkgver=4.7.2
pkgrel=4
pkgrel=5
#_snapshot=4.7-20120721
pkgdesc="The GNU Compiler Collection"
arch=('i686' 'x86_64')
@ -26,8 +26,10 @@ checkdepends=('dejagnu')
options=('!libtool' '!emptydirs' '!distcc')
source=(ftp://gcc.gnu.org/pub/gcc/releases/gcc-${pkgver}/gcc-${pkgver}.tar.bz2
#ftp://gcc.gnu.org/pub/gcc/snapshots/${_snapshot}/gcc-${_snapshot}.tar.bz2
gcc-4.7.1-libgo-write.patch
armhf-triplet-trunk.diff)
md5sums=('cc308a0891e778cfda7a151ab8a6e762'
'5647f5bbbb74fab3013b396da1749d2a'
'bd7330bd41845929f1e0efb3b7d0a060')
if [ -n "${_snapshot}" ]; then
@ -45,6 +47,9 @@ build() {
# Do not run fixincludes
sed -i 's@\./fixinc\.sh@-c true@' gcc/Makefile.in
# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53679
patch -p1 -i ${srcdir}/gcc-4.7.1-libgo-write.patch
echo ${pkgver} > gcc/BASE-VER
# using -pipe causes spurious test-suite failures
@ -65,7 +70,7 @@ build() {
--libdir=/usr/lib --libexecdir=/usr/lib \
--mandir=/usr/share/man --infodir=/usr/share/info \
--with-bugurl=https://bugs.archlinux.org/ \
--enable-languages=c,c++,fortran,lto,objc,obj-c++ \
--enable-languages=c,c++,fortran,go,lto,objc,obj-c++ \
--enable-shared --enable-threads=posix \
--with-system-zlib --enable-__cxa_atexit \
--disable-libunwind-exceptions --enable-clocale=gnu \
@ -143,17 +148,18 @@ package_gcc()
mv $pkgdir{,/usr/share/gdb/auto-load}/usr/lib/libstdc++.so.6.0.17-gdb.py
# unfortunately it is much, much easier to install the lot and clean-up the mess...
rm -f $pkgdir/usr/bin/{$CHOST-,}gfortran
rm -f $pkgdir/usr/bin/{{$CHOST-,}gfortran,{$CHOST-,}gccgo}
rm -f $pkgdir/usr/lib/*.so*
rm -f $pkgdir/usr/lib/lib{ffi,gfortran,objc}.a
rm -f $pkgdir/usr/lib/lib{ffi,gfortran,go{,begin},objc}.a
rm -f $pkgdir/usr/lib/libgfortran.spec
rm -f -r $pkgdir/usr/lib/gcc/$CHOST/${pkgver}/{finclude,include/objc}
rm -f $pkgdir/usr/lib/gcc/$CHOST/${pkgver}/include/{ffi{,target}.h}
rm -f $pkgdir/usr/lib/gcc/$CHOST/${pkgver}/{cc1obj{,plus},f951}
rm -f $pkgdir/usr/lib/gcc/$CHOST/${pkgver}/{cc1obj{,plus},f951,go1}
rm -f $pkgdir/usr/lib/gcc/$CHOST/${pkgver}/{libcaf_single,libgfortranbegin}.a
rm -f $pkgdir/usr/share/info/{gfortran,libgomp,libitm}.info
rm -f $pkgdir/usr/share/info/{gccgo,gfortran,libgomp,libitm}.info
rm -f -r $pkgdir/usr/lib/go
rm -f $pkgdir/usr/share/locale/{de,fr}/LC_MESSAGES/libstdc++.mo
rm -f $pkgdir/usr/share/man/man1/gfortran.1
rm -f $pkgdir/usr/share/man/man1/{gccgo,gfortran}.1
rm -f $pkgdir/usr/share/man/man3/ffi*
# many packages expect this symlink
@ -237,3 +243,19 @@ package_gcc-objc()
install -Dm644 ${_basedir}/COPYING.RUNTIME \
${pkgdir}/usr/share/licenses/gcc-objc/RUNTIME.LIBRARY.EXCEPTION
}
package_gcc-go()
{
pkgdesc="Go front-end for GCC"
depends=("gcc=$pkgver-$pkgrel")
install=gcc-go.install
cd ${srcdir}/gcc-build
make -j1 DESTDIR=$pkgdir install-target-libgo
make -j1 -C gcc DESTDIR=$pkgdir go.install-{common,man,info}
install -Dm755 gcc/go1 $pkgdir/usr/lib/gcc/$CHOST/$pkgver/go1
# Install Runtime Library Exception
install -Dm644 ${_basedir}/COPYING.RUNTIME \
${pkgdir}/usr/share/licenses/gcc-go/RUNTIME.LIBRARY.EXCEPTION
}

View file

@ -0,0 +1,12 @@
diff -Naur gcc-4.7.1-orig/libgo/runtime/print.c gcc-4.7.1/libgo/runtime/print.c
--- gcc-4.7.1-orig/libgo/runtime/print.c 2012-05-26 04:22:14.000000000 +1000
+++ gcc-4.7.1/libgo/runtime/print.c 2012-06-16 15:06:28.553138502 +1000
@@ -17,7 +17,8 @@
G* g = runtime_g();
if(g == nil || g->writebuf == nil) {
- runtime_write(2, v, n);
+ ssize_t bytesWritten = runtime_write(2, v, n);
+ (void)bytesWritten;
return;
}

20
core/gcc/gcc-go.install Normal file
View file

@ -0,0 +1,20 @@
infodir=usr/share/info
filelist=(gccgo.info)
post_install() {
[ -x usr/bin/install-info ] || return 0
for file in ${filelist[@]}; do
install-info $infodir/$file.gz $infodir/dir 2> /dev/null
done
}
post_upgrade() {
post_install $1
}
pre_remove() {
[ -x usr/bin/install-info ] || return 0
for file in ${filelist[@]}; do
install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null
done
}