diff options
Diffstat (limited to 'gcc5/build')
-rwxr-xr-x | gcc5/build/gcc5.SlackBuild | 214 |
1 files changed, 113 insertions, 101 deletions
diff --git a/gcc5/build/gcc5.SlackBuild b/gcc5/build/gcc5.SlackBuild index 4a6c9424..83a8455f 100755 --- a/gcc5/build/gcc5.SlackBuild +++ b/gcc5/build/gcc5.SlackBuild @@ -53,10 +53,11 @@ # efficient on modern CPUs running in 32-bit mode than the alternate i586 # instructions. No need to throw i586 CPUs under the bus (yet). -PKGNAM=gcc5 +PRGNAM=gcc5 VERSION=${VERSION:-5.4.0} MAJVER=$(echo ${VERSION} |cut -d. -f1) -BUILD=${BUILD:-1alien} +BUILD=${BUILD:-1} +TAG=${TAG:-alien} # How many jobs to run in parallel: NUMJOBS=" -j7 " @@ -124,10 +125,15 @@ case "$ARCH" in *) TARGET=$ARCH-slackware-linux ;; esac -if [ "$ARCH" = "x86_64" -a -f /usr/lib/libc.a ]; then - # If we find a 32bit C library on 64bit Slackware, assume multilib: - GCC_ARCHOPTS="--enable-multilib" - MULTILIB="YES" +if [ "$ARCH" = "x86_64" ]; then + if [ -f /usr/lib/libc.a ]; then + # If we find a 32bit C library on 64bit Slackware, assume multilib: + GCC_ARCHOPTS="--enable-multilib" + MULTILIB="YES" + else + GCC_ARCHOPTS="--disable-multilib" + MULTILIB="NO" + fi else GCC_ARCHOPTS="--with-arch=$ARCH" MULTILIB="NO" @@ -139,23 +145,23 @@ CWD=$(pwd) TMP=${TMP:-"/gcc-$(mcookie)"} # This is the main DESTDIR target: -PKG1=$TMP/package-gcc +PKG=$TMP/package-gcc # Clear the build locations: if [ -d $TMP ]; then rm -rf $TMP fi -mkdir -p $PKG1/usr/doc/gcc-$VERSION +mkdir -p $PKG/usr/doc/gcc-$VERSION # Insert package description: -mkdir -p $PKG1/install +mkdir -p $PKG/install if [ ${MULTILIB} = "YES" ]; then SLDESC=" The compilers support multilib." else SLDESC="" fi cat $CWD/slack-desc.gcc5 | sed -e "s/@MULTILIB@/${SLDESC}/" \ - > $PKG1/install/slack-desc + > $PKG/install/slack-desc # Unpack the gcc sources: cd $TMP @@ -184,105 +190,107 @@ ANTLJAR=$(echo $CWD/antlr-*.jar | tail -1) find . -perm 775 -exec chmod 755 {} \; find . -perm 754 -exec chmod 755 {} \; find . -perm 664 -exec chmod 644 {} \; - mkdir -p $PKG1/usr/doc/gcc-$VERSION + mkdir -p $PKG/usr/doc/gcc-$VERSION cp -a \ COPYING* ChangeLog* FAQ INSTALL \ LAST_UPDATED MAINTAINERS NEWS \ README* *.html \ - $PKG1/usr/doc/gcc-$VERSION + $PKG/usr/doc/gcc-$VERSION # We will keep part of these, but they are really big... if [ -r ChangeLog ]; then - DOCSDIR=$(echo $PKG1/usr/doc/gcc-$VERSION) + DOCSDIR=$(echo $PKG/usr/doc/gcc-$VERSION) cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog touch -r ChangeLog $DOCSDIR/ChangeLog fi if [ -r NEWS ]; then - DOCSDIR=$(echo $PKG1/usr/doc/gcc-$VERSION) + DOCSDIR=$(echo $PKG/usr/doc/gcc-$VERSION) cat NEWS | head -n 1000 > $DOCSDIR/NEWS touch -r NEWS $DOCSDIR/NEWS fi - mkdir -p $PKG1/usr/doc/gcc-${VERSION}/gcc + mkdir -p $PKG/usr/doc/gcc-${VERSION}/gcc ( cd gcc cp -a \ ABOUT* COPYING* DATESTAMP DEV-PHASE LANG* ONEWS README* SERVICE \ - $PKG1/usr/doc/gcc-$VERSION/gcc + $PKG/usr/doc/gcc-$VERSION/gcc - mkdir -p $PKG1/usr/doc/gcc-${VERSION}/gcc/java + mkdir -p $PKG/usr/doc/gcc-${VERSION}/gcc/java ( cd java cp -a \ ChangeLog.tree-ssa \ - $PKG1/usr/doc/gcc-${VERSION}/gcc/java + $PKG/usr/doc/gcc-${VERSION}/gcc/java if [ -r ChangeLog ]; then - cat ChangeLog | head -n 1000 > $PKG1/usr/doc/gcc-${VERSION}/gcc/java/ChangeLog - touch -r ChangeLog $PKG1/usr/doc/gcc-${VERSION}/gcc/java/ChangeLog + cat ChangeLog | head -n 1000 > $PKG/usr/doc/gcc-${VERSION}/gcc/java/ChangeLog + touch -r ChangeLog $PKG/usr/doc/gcc-${VERSION}/gcc/java/ChangeLog fi ) ) || exit 1 - mkdir -p $PKG1/usr/doc/gcc-${VERSION}/libffi + mkdir -p $PKG/usr/doc/gcc-${VERSION}/libffi ( cd libffi cp -a \ ChangeLog.libgcj ChangeLog.v1 \ LICENSE* README* \ - $PKG1/usr/doc/gcc-${VERSION}/libffi + $PKG/usr/doc/gcc-${VERSION}/libffi if [ -r ChangeLog ]; then - cat ChangeLog | head -n 1000 > $PKG1/usr/doc/gcc-${VERSION}/libffi/ChangeLog - touch -r ChangeLog $PKG1/usr/doc/gcc-${VERSION}/libffi/ChangeLog + cat ChangeLog | head -n 1000 > $PKG/usr/doc/gcc-${VERSION}/libffi/ChangeLog + touch -r ChangeLog $PKG/usr/doc/gcc-${VERSION}/libffi/ChangeLog fi ) - mkdir -p $PKG1/usr/doc/gcc-${VERSION}/libjava + mkdir -p $PKG/usr/doc/gcc-${VERSION}/libjava ( cd libjava cp -a \ COPYING* HACKING LIBGCJ_LICENSE \ NEWS README* THANKS \ - $PKG1/usr/doc/gcc-${VERSION}/libjava + $PKG/usr/doc/gcc-${VERSION}/libjava if [ -r ChangeLog ]; then - cat ChangeLog | head -n 1000 > $PKG1/usr/doc/gcc-${VERSION}/libjava/ChangeLog - touch -r ChangeLog $PKG1/usr/doc/gcc-${VERSION}/libjava/ChangeLog + cat ChangeLog | head -n 1000 > $PKG/usr/doc/gcc-${VERSION}/libjava/ChangeLog + touch -r ChangeLog $PKG/usr/doc/gcc-${VERSION}/libjava/ChangeLog fi ) - mkdir -p $PKG1/usr/doc/gcc-${VERSION}/libmudflap - ( cd libmudflap - if [ -r ChangeLog ]; then - cat ChangeLog | head -n 1000 > $PKG1/usr/doc/gcc-${VERSION}/libmudflap/ChangeLog - touch -r ChangeLog $PKG1/usr/doc/gcc-${VERSION}/libmudflap/ChangeLog - fi - ) + if [ -d libmudflap ]; then + mkdir -p $PKG/usr/doc/gcc-${VERSION}/libmudflap + ( cd libmudflap + if [ -r ChangeLog ]; then + cat ChangeLog | head -n 1000 > $PKG/usr/doc/gcc-${VERSION}/libmudflap/ChangeLog + touch -r ChangeLog $PKG/usr/doc/gcc-${VERSION}/libmudflap/ChangeLog + fi + ) + fi - mkdir -p $PKG1/usr/doc/gcc-${VERSION}/libgomp + mkdir -p $PKG/usr/doc/gcc-${VERSION}/libgomp ( cd libgomp if [ -r ChangeLog ]; then - cat ChangeLog | head -n 1000 > $PKG1/usr/doc/gcc-${VERSION}/libgomp/ChangeLog - touch -r ChangeLog $PKG1/usr/doc/gcc-${VERSION}/libgomp/ChangeLog + cat ChangeLog | head -n 1000 > $PKG/usr/doc/gcc-${VERSION}/libgomp/ChangeLog + touch -r ChangeLog $PKG/usr/doc/gcc-${VERSION}/libgomp/ChangeLog fi ) - mkdir -p $PKG1/usr/doc/gcc-${VERSION}/libstdc++-v3 + mkdir -p $PKG/usr/doc/gcc-${VERSION}/libstdc++-v3 ( cd libstdc++-v3 cp -a \ README* \ doc/html/faq.html \ - $PKG1/usr/doc/gcc-${VERSION}/libstdc++-v3 + $PKG/usr/doc/gcc-${VERSION}/libstdc++-v3 if [ -r ChangeLog ]; then - cat ChangeLog | head -n 1000 > $PKG1/usr/doc/gcc-${VERSION}/libstdc++-v3/ChangeLog - touch -r ChangeLog $PKG1/usr/doc/gcc-${VERSION}/libstdc++-v3/ChangeLog + cat ChangeLog | head -n 1000 > $PKG/usr/doc/gcc-${VERSION}/libstdc++-v3/ChangeLog + touch -r ChangeLog $PKG/usr/doc/gcc-${VERSION}/libstdc++-v3/ChangeLog fi ) ) # Add fastjar to the gcc5 package: ( cd $TMP - FASTJARVER=$(echo $CWD/fastjar-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev) + FASTJARVER=$(echo $CWD/fastjar-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev) echo echo "Building fastjar-$FASTJARVER first" echo rm -rf fastjar-$FASTJARVER - tar xvf $CWD/fastjar-$FASTJARVER.tar.xz || exit 1 + tar xvf $CWD/fastjar-$FASTJARVER.tar.?z* || exit 1 cd fastjar-$FASTJARVER || exit 1 chown -R root:root . find . \ @@ -303,23 +311,23 @@ ANTLJAR=$(echo $CWD/antlr-*.jar | tail -1) --infodir=/usr/info \ --build=$TARGET make $NUMJOBS || exit 1 - make install DESTDIR=$PKG1 || exit 1 - mkdir -p $PKG1/usr/doc/fastjar-$FASTJARVER + make install DESTDIR=$PKG || exit 1 + mkdir -p $PKG/usr/doc/fastjar-$FASTJARVER cp -a \ AUTHORS CHANGES COPYING* INSTALL NEWS README* TODO \ - $PKG1/usr/doc/fastjar-$FASTJARVER + $PKG/usr/doc/fastjar-$FASTJARVER # If there's a ChangeLog, installing at least part of the recent history # is useful, but don't let it get totally out of control: if [ -r ChangeLog ]; then - DOCSDIR=$(echo $PKG1/usr/doc/fastjar-$FASTJARVER) + DOCSDIR=$(echo $PKG/usr/doc/fastjar-$FASTJARVER) cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog touch -r ChangeLog $DOCSDIR/ChangeLog fi - find $PKG1 | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null # Compress and if needed symlink the man pages: - if [ -d $PKG1/usr/man ]; then - ( cd $PKG1/usr/man + if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man for manpagedir in $(find . -type d -name "man*") ; do ( cd $manpagedir for eachpage in $( find . -type l -maxdepth 1) ; do @@ -332,8 +340,8 @@ ANTLJAR=$(echo $CWD/antlr-*.jar | tail -1) ) fi # Compress info files, if any: - if [ -d $PKG1/usr/info ]; then - ( cd $PKG1/usr/info + if [ -d $PKG/usr/info ]; then + ( cd $PKG/usr/info rm -f dir gzip -9 * ) @@ -400,17 +408,17 @@ ANTLJAR=$(echo $CWD/antlr-*.jar | tail -1) # Include all debugging info (for now): make $NUMJOBS bootstrap make info - make install DESTDIR=$PKG1 + make install DESTDIR=$PKG # KLUDGE ALERT # These *gdb.py files are causing ldconfig to complain, so they are going # to be REMOVED for now... at some point, they might be moved somewhere # else, in which case things should Just Work(tm). Keep an eye on it. -rm -f $PKG1/usr/lib*/*gdb.py +rm -f $PKG/usr/lib*/*gdb.py # Be sure the "specs" file is installed. -if [ ! -r $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/${TARGET}/${VERSION}/specs ]; then - cat stage1-gcc/specs > $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/${TARGET}/${VERSION}/specs +if [ ! -r $PKG/usr/lib${LIBDIRSUFFIX}/gcc/${TARGET}/${VERSION}/specs ]; then + cat stage1-gcc/specs > $PKG/usr/lib${LIBDIRSUFFIX}/gcc/${TARGET}/${VERSION}/specs fi if [ ${MULTILIB} = "NO" ]; then @@ -418,39 +426,39 @@ if [ ${MULTILIB} = "NO" ]; then (only needed if gcc was compiled with disable-multilib) if [ "$ARCH" = "x86_64" ]; then sed -i 's#;.\(:../lib !m64 m32;\)$#;32\1#' \ - $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/${TARGET}/${VERSION}/specs + $PKG/usr/lib${LIBDIRSUFFIX}/gcc/${TARGET}/${VERSION}/specs fi fi -make -i install-info DESTDIR=$PKG1 +make -i install-info DESTDIR=$PKG # Move potentially conflicting stuff to version specific subdirectory: -if [ -d $PKG1/usr/lib${LIBDIRSUFFIX} ]; then - mv $PKG1/usr/lib${LIBDIRSUFFIX}/lib* $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/${TARGET}/${VERSION}/ +if [ -d $PKG/usr/lib${LIBDIRSUFFIX} ]; then + mv $PKG/usr/lib${LIBDIRSUFFIX}/lib* $PKG/usr/lib${LIBDIRSUFFIX}/gcc/${TARGET}/${VERSION}/ fi -if [ -d $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/${TARGET}/lib${LIBDIRSUFFIX}/ ]; then - mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/${TARGET}/lib${LIBDIRSUFFIX}/lib* $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/${TARGET}/${VERSION}/ +if [ -d $PKG/usr/lib${LIBDIRSUFFIX}/gcc/${TARGET}/lib${LIBDIRSUFFIX}/ ]; then + mv $PKG/usr/lib${LIBDIRSUFFIX}/gcc/${TARGET}/lib${LIBDIRSUFFIX}/lib* $PKG/usr/lib${LIBDIRSUFFIX}/gcc/${TARGET}/${VERSION}/ fi -chmod 755 $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/${TARGET}/${VERSION}/libgcc_s.so.1 +chmod 755 $PKG/usr/lib${LIBDIRSUFFIX}/gcc/${TARGET}/${VERSION}/libgcc_s.so.1 if [ ${MULTILIB} = "YES" ]; then - if [ -d $PKG1/usr/lib ]; then - mv $PKG1/usr/lib/lib* $PKG1/usr/lib/gcc/${TARGET}/${VERSION}/ + if [ -d $PKG/usr/lib ]; then + mv $PKG/usr/lib/lib* $PKG/usr/lib/gcc/${TARGET}/${VERSION}/ fi - if [ -d $PKG1/usr/lib/gcc/${TARGET}/lib/ ]; then - mv $PKG1/usr/lib/gcc/${TARGET}/lib/lib* $PKG1/usr/lib/gcc/${TARGET}/${VERSION}/ + if [ -d $PKG/usr/lib/gcc/${TARGET}/lib/ ]; then + mv $PKG/usr/lib/gcc/${TARGET}/lib/lib* $PKG/usr/lib/gcc/${TARGET}/${VERSION}/ fi - chmod 755 $PKG1/usr/lib/gcc/${TARGET}/${VERSION}/libgcc_s.so.1 + chmod 755 $PKG/usr/lib/gcc/${TARGET}/${VERSION}/libgcc_s.so.1 fi # The (huge) static GNU java libraries are not packaged. In nearly all # cases one or more dependencies will not be available as static anyway. -rm -f $PKG1/usr/lib${LIBDIRSUFFIX}/libgcj.a -rm -f $PKG1/usr/lib${LIBDIRSUFFIX}/libgcj-tools.a -rm -f $PKG1/usr/lib/libgcj.a -rm -f $PKG1/usr/lib/libgcj-tools.a +rm -f $PKG/usr/lib${LIBDIRSUFFIX}/libgcj.a +rm -f $PKG/usr/lib${LIBDIRSUFFIX}/libgcj-tools.a +rm -f $PKG/usr/lib/libgcj.a +rm -f $PKG/usr/lib/libgcj-tools.a # Fix stuff up: -( cd $PKG1/usr/info +( cd $PKG/usr/info rm dir for eachinfo in *.info ; do mv $eachinfo $(basename $eachinfo .info)-${MAJVER}.info @@ -458,12 +466,17 @@ rm -f $PKG1/usr/lib/libgcj-tools.a gzip -9 * ) -( cd $PKG1/usr/bin +( cd $PKG/usr/bin ln -sf g++-${MAJVER} c++-${MAJVER} ln -sf gcc-${MAJVER} cc-${MAJVER} + # Improved versions of the Slackware c?9 scripts, + # it is safe to overwrite the originals: + cat $CWD/c89.sh > c89 + cat $CWD/c99.sh > c99 + chmod 755 c89 c99 ) -( cd $PKG1/usr/man +( cd $PKG/usr/man rm -r man7 # Part of the system gcc package gzip -9 */* cd man1 @@ -476,25 +489,25 @@ rm -f $PKG1/usr/lib/libgcj-tools.a # Add profile scripts (non-executable by default) to make it easier # to set the environment for compiling with gcc5: -mkdir -p $PKG1/etc/profile.d -cat $CWD/profile.d/gcc5.sh > $PKG1/etc/profile.d/gcc5.sh -cat $CWD/profile.d/gcc5.csh > $PKG1/etc/profile.d/gcc5.csh -chmod 644 $PKG1/etc/profile.d/* +mkdir -p $PKG/etc/profile.d +cat $CWD/profile.d/gcc5.sh > $PKG/etc/profile.d/gcc5.sh +cat $CWD/profile.d/gcc5.csh > $PKG/etc/profile.d/gcc5.csh +chmod 644 $PKG/etc/profile.d/* # The ecj wrapper script: -cat $CWD/ecj.sh | sed -e "s,@JAVADIR@,/usr/share/java," > $PKG1/usr/bin/ecj -chmod 755 $PKG1/usr/bin/ecj +cat $CWD/ecj.sh | sed -e "s,@JAVADIR@,/usr/share/java," > $PKG/usr/bin/ecj +chmod 755 $PKG/usr/bin/ecj # Some compatibility links. -for JAVAPROG in gcj gcjh gcj-dbtool ; do - ln -s ${JAVAPROG}-${MAJVER} $PKG1/usr/bin/${JAVAPROG} +for JAVAPROG in gcj gcjh gcj-dbtool gjar gjarsigner gjavah ; do + ln -s ${JAVAPROG}-${MAJVER} $PKG/usr/bin/${JAVAPROG} done -( cd $PKG1 +( cd $PKG for JAVALIB in usr/lib${LIBDIRSUFFIX}/gcc/${TARGET}/${VERSION}/libgcj* ; do - ln -s /${JAVALIB} $PKG1/usr/lib${LIBDIRSUFFIX}/ + ln -s /${JAVALIB} $PKG/usr/lib${LIBDIRSUFFIX}/ done ) # And add the missing javac symlink: -ln -s ../../../bin/ecj $PKG1/usr/lib$LIBDIRSUFFIX/jvm/bin/javac +ln -s ../../../bin/ecj $PKG/usr/lib$LIBDIRSUFFIX/jvm/bin/javac # Don't package libffi stuff anymore. GCC will link the internal version # statically, and we'll need a newer one elsewhere. find . -name "ffi*.h" | xargs rm -f @@ -502,26 +515,26 @@ find . -name "libffi*" | xargs rm -f rm -f usr/man/man3/ffi* rm -f usr/info/libffi* # Install a proper pkgconfig file for libgcj: -rm $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/${TARGET}/${VERSION}/pkgconfig/libgcj*pc -rm $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/${TARGET}/${VERSION}/32/pkgconfig/libgcj*pc -mkdir -p $PKG1/usr/lib${LIBDIRSUFFIX}/pkgconfig +rm $PKG/usr/lib${LIBDIRSUFFIX}/gcc/${TARGET}/${VERSION}/pkgconfig/libgcj*pc +rm $PKG/usr/lib${LIBDIRSUFFIX}/gcc/${TARGET}/${VERSION}/32/pkgconfig/libgcj*pc +mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig cat $CWD/libgcj-5.pc \ | sed -e "s,@LIBDIRSUFFIX@,${LIBDIRSUFFIX}," \ | sed -e "s,@TARGET@,${TARGET}," \ | sed -e "s,@VERSION@,${VERSION}," \ - > $PKG1/usr/lib${LIBDIRSUFFIX}/pkgconfig/libgcj-5.pc + > $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig/libgcj-5.pc # 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 + for file in $(find $PKG -type f -name "*.la") ; do + cat $file | sed -e 's%-L'${TMP}'[[:graph:]]* % %g' > $TMP/tmp-la-file cat $TMP/tmp-la-file > $file done rm $TMP/tmp-la-file ) ## Strip bloated binaries and libraries: -( cd $PKG1 +( cd $PKG find . -name "lib*so*" -exec strip --strip-unneeded "{}" \; find . -name "lib*a" -exec strip -g "{}" \; strip --strip-unneeded usr/bin/* 2> /dev/null @@ -529,15 +542,14 @@ cat $CWD/libgcj-5.pc \ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null ) -( cd $PKG1 +# Remove localizations overlapping with Slackware's gcc +rm -rf $PKG/usr/share/locale + +( cd $PKG if [ ${MULTILIB} = "YES" ]; then - makepkg -l y -c n $TMP/${PKGNAM}-${VERSION}_multilib-$ARCH-$BUILD.txz + /sbin/makepkg -l y -c n $TMP/${PRGNAM}-${VERSION}_multilib-$ARCH-$BUILD$TAG.txz else - makepkg -l y -c n $TMP/${PKGNAM}-${VERSION}-$ARCH-$BUILD.txz + /sbin/makepkg -l y -c n $TMP/${PRGNAM}-${VERSION}-$ARCH-$BUILD$TAG.txz fi ) -echo -echo "Slackware GCC5 package build complete!" -echo - |