--- gcc.SlackBuild 2006-04-03 20:38:59.000000000 -0400
+++ gcc.SlackBuild.s390x 2009-05-19 04:28:57.000000000 -0400
@@ -50,7 +50,8 @@
CWD=`pwd`
# Temporary build location. This should *NOT* be a directory
# path a non-root user could create later...
-TMP=/gcc-`mcookie`
+#TMP=/gcc-`mcookie`
+TMP=/root/gcc-$VERSION
# This is the main DESTDIR target:
PKG1=$TMP/package-gcc
@@ -63,8 +64,10 @@
PKG7=$TMP/package-gcc-g++-gch
# Clear the build locations:
-if [ -d $TMP ]; then
- rm -rf $TMP
+if [ -e $TMP ]; then
+ rm -rf $TMP /tmp/gcc-$VERSION
+ mkdir /tmp/gcc-$VERSION
+ ln -s /tmp/gcc-$VERSION $TMP
fi
mkdir -p $PKG{1,2,3,4,5,6,7}/usr/doc/gcc-$VERSION
@@ -72,6 +75,10 @@
tar xjvf $CWD/gcc-$VERSION.tar.bz2
# install docs
( cd gcc-$VERSION
+ # Fix a problem that keeps the kernel from building with gcc 3.4.x
+ # Taken from the version of the module that first contained the fix:
+ #
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/~checkout~/gcc/gcc/cgraphunit.c?rev=1.37.2.1
+ # cat $CWD/cgraphunit.c.diff.new2 | patch -p1 --backup --suffix=.orig --verbose || exit 1
# Fix perms/owners
chown -R root:root .
find . -perm 777 -exec chmod 755 {} \;
@@ -139,10 +146,15 @@
cp -a docs/html/faq/index.html $PKG2/usr/doc/gcc-${VERSION}/libstdc++-v3/faq.html
)
)
+# This is to get around a problem caused by the GCC developers not wanting to use POSIX
+# compliant calls to the head command (they use head -1 instead of head -n 1). The problem
+# shows up in the "make check" as "FAIL: abi_check" for libstdc++
+export _POSIX2_VERSION=199209
+
# build gcc
( mkdir gcc.build.lnx;
cd gcc.build.lnx;
- ../gcc-$VERSION/configure --prefix=/usr \
+ $TMP/gcc-$VERSION/configure --prefix=/usr \
--enable-shared \
--enable-threads=posix \
--enable-__cxa_atexit \
@@ -153,7 +165,7 @@
--host=${TARGET}
# Start the build:
- make -j2 bootstrap
+ make -j2 bootstrap || exit 1
( cd gcc
#make gnatlib GNATLIBCFLAGS="-g -O2"
@@ -174,10 +186,13 @@
# make install-gnatlib DESTDIR=$PKG1
make -i install-info DESTDIR=$PKG1
- chmod 755 $PKG1/usr/lib/libgcc_s.so.1
+ chmod 755 $PKG1/usr/lib/libgcc_s.so.1 \
+ $PKG1/usr/lib64/libgcc_s.so.1
# This is provided by binutils, so delete it here:
- rm -f $PKG1/usr/lib/libiberty.a
+ rm -f $PKG1/usr/lib/libiberty.a \
+ $PKG1/usr/lib/32/libiberty.a
+ rmdir $PKG1/usr/lib/32
# Strip out unneeded stuff from the libraries and binaries:
( cd $PKG1
@@ -211,6 +226,7 @@
ln -sf g++-gcc-$VERSION ${TARGET}-c++
ln -sf g++-gcc-$VERSION ${TARGET}-g++
ln -sf g77 f77
+ chown root:bin * .
)
( cd $PKG1/usr/man
gzip -9 */*
@@ -246,10 +262,12 @@
( cd $PKG2
mkdir -p usr/bin
mv $PKG1/usr/bin/*++* usr/bin
+ chown -R root:bin usr/bin
mkdir -p usr/include
mv $PKG1/usr/include/c++ usr/include
- mkdir -p usr/lib
+ mkdir -p usr/lib usr/lib64
mv $PKG1/usr/lib/*++* usr/lib
+ mv $PKG1/usr/lib64/*++* usr/lib64
mkdir -p usr/libexec/gcc/$TARGET/$VERSION
mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/cc1plus usr/libexec/gcc/$TARGET/$VERSION/cc1plus
mkdir -p usr/man/man1
@@ -260,11 +278,14 @@
( cd $PKG3
mkdir -p usr/bin
mv $PKG1/usr/bin/*77* usr/bin
+ chown -R root:bin usr/bin
mkdir -p usr/info
mv $PKG1/usr/info/g77* usr/info
- mkdir -p usr/lib
+ mkdir -p usr/lib usr/lib64
mv $PKG1/usr/lib/libfrtbegin.a usr/lib
+ mv $PKG1/usr/lib64/libfrtbegin.a usr/lib64
mv $PKG1/usr/lib/libg2c* usr/lib
+ mv $PKG1/usr/lib64/libg2c* usr/lib64
mkdir -p usr/libexec/gcc/$TARGET/$VERSION
mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/f771 usr/libexec/gcc/$TARGET/$VERSION/f771
mkdir -p usr/lib/gcc/$TARGET/$VERSION/include
@@ -278,6 +299,7 @@
mkdir -p usr/bin
mv $PKG1/usr/bin/gnat* usr/bin
mv $PKG1/usr/bin/gpr* usr/bin
+ chown -R root:bin usr/bin
mkdir -p usr/info
mv $PKG1/usr/info/gnat* usr/info
mkdir -p usr/share
@@ -300,6 +322,7 @@
mv $PKG1/usr/bin/jcf-dump usr/bin
mv $PKG1/usr/bin/jv-* usr/bin
mv $PKG1/usr/bin/rmi* usr/bin
+ chown -R root:bin usr/bin
mkdir -p usr/include
mv $PKG1/usr/include/gcj usr/include
mv $PKG1/usr/include/gnu usr/include
@@ -311,10 +334,13 @@
mkdir -p usr/info
mv $PKG1/usr/info/gcj.* usr/info
mv $PKG1/usr/info/fastjar.* usr/info
- mkdir -p usr/lib
+ mkdir -p usr/lib usr/lib64
mv $PKG1/usr/lib/libgcj* usr/lib
- strip -g usr/lib/libgcj.a
+ mv $PKG1/usr/lib64/libgcj* usr/lib64
+ strip -g usr/lib/libgcj.a \
+ usr/lib64/libgcj.a
mv $PKG1/usr/lib/lib-org* usr/lib
+ mv $PKG1/usr/lib64/lib-org* usr/lib64
mv $PKG1/usr/lib/security usr/lib
mkdir -p usr/lib/pkgconfig
mv $PKG1/usr/lib/pkgconfig/libgcj.pc usr/lib/pkgconfig
@@ -339,8 +365,9 @@
# gcc-objc:
( cd $PKG6
- mkdir -p usr/lib
+ mkdir -p usr/lib usr/lib64
mv $PKG1/usr/lib/libobjc* usr/lib
+ mv $PKG1/usr/lib64/libobjc* usr/lib64
mkdir -p usr/libexec/gcc/$TARGET/$VERSION
mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/cc1obj usr/libexec/gcc/$TARGET/$VERSION
mkdir -p usr/lib/gcc/$TARGET/$VERSION/include
@@ -358,7 +385,7 @@
# Filter all .la files (thanks much to Mark Post for the sed script):
( cd $TMP
for file in `find . -type f -name "*.la"` ; do
- cat $file | sed -e 's%-L/gcc-[[:graph:]]* % %g' > $TMP/tmp-la-file
+ cat $file | sed -e 's%-L/root/gcc-[[:graph:]]* % %g' > $TMP/tmp-la-file
cat $TMP/tmp-la-file > $file
done
rm $TMP/tmp-la-file