diff options
Diffstat (limited to 'development/gcc5')
-rw-r--r-- | development/gcc5/README | 5 | ||||
-rw-r--r-- | development/gcc5/gcc5.SlackBuild | 212 |
2 files changed, 107 insertions, 110 deletions
diff --git a/development/gcc5/README b/development/gcc5/README index c1e912ed862..043d62efcf3 100644 --- a/development/gcc5/README +++ b/development/gcc5/README @@ -39,3 +39,8 @@ export RANLIB=gcc-ranlib-5 Nothing else needs to be done after sourcing the profile script. All you do next is run your compile job as usual in that same console. Your program will be compiled with the binaries provided by the gcc5 package. + +** WARNING: +** The temporary build location used by the script (defaulting here to /tmp/SBo) +** should *NOT* be a directory path a non-root user could create later... + diff --git a/development/gcc5/gcc5.SlackBuild b/development/gcc5/gcc5.SlackBuild index 3e92d4fce75..955c14b3025 100644 --- a/development/gcc5/gcc5.SlackBuild +++ b/development/gcc5/gcc5.SlackBuild @@ -59,11 +59,6 @@ MAJVER=$(echo ${VERSION} |cut -d. -f1) BUILD=${BUILD:-1} TAG=${TAG:-SBo} -# What do we want to build -LANGS=${LANGS:-'c,c++,java'} - -echo "Building these compilers: $LANGS"; sleep 5 - # Automatically determine the architecture we're building on: if [ -z "$ARCH" ]; then case "$(uname -m)" in @@ -75,6 +70,11 @@ if [ -z "$ARCH" ]; then export ARCH fi +CWD=$(pwd) +TMP=${TMP:-/tmp/SBo} +PKG=$TMP/package-$PRGNAM +OUTPUT=${OUTPUT:-/tmp} + if [ "$ARCH" = "i386" ]; then SLKCFLAGS="-O2 -march=i386 -mcpu=i686" SLKLDFLAGS="" @@ -117,6 +117,11 @@ else LIB_ARCH=$ARCH fi +# What do we want to build +LANGS=${LANGS:-'c,c++,java'} + +echo "Building these compilers: $LANGS" + case "$ARCH" in arm*) TARGET=$ARCH-slackware-linux-gnueabi ;; *) TARGET=$ARCH-slackware-linux ;; @@ -136,32 +141,20 @@ else MULTILIB="NO" fi -CWD=$(pwd) -# Temporary build location. This should *NOT* be a directory -# path a non-root user could create later... -TMP=${TMP:-"/tmp/SBo/gcc-$(mcookie)"} - -# Where we dump the package: -OUTPUT=${OUTPUT:-/tmp} - -# This is the main DESTDIR target: -PKG1=$TMP/package-gcc - # Clear the build locations: -if [ -d $TMP ]; then - rm -rf $TMP -fi -mkdir -p $PKG1/usr/doc/gcc-$VERSION +rm -fr $TMP/fastjar-* $TMP/gcc-$VERSION $TMP/gcc.build.lnx $TMP/gcc.build.log $TMP/package-$PRGNAM + +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 @@ -190,95 +183,95 @@ 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 ) if [ -d libmudflap ]; then - mkdir -p $PKG1/usr/doc/gcc-${VERSION}/libmudflap + mkdir -p $PKG/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 + 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 ) ) @@ -310,24 +303,24 @@ ANTLJAR=$(echo $CWD/antlr-*.jar | tail -1) --mandir=/usr/man \ --infodir=/usr/info \ --build=$TARGET - make $NUMJOBS || exit 1 - make install DESTDIR=$PKG1 || exit 1 - mkdir -p $PKG1/usr/doc/fastjar-$FASTJARVER + make || exit 1 + 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 @@ -340,8 +333,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 * ) @@ -406,19 +399,19 @@ ANTLJAR=$(echo $CWD/antlr-*.jar | tail -1) # Start the build: # Include all debugging info (for now): - make $NUMJOBS bootstrap + make 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 @@ -426,39 +419,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 @@ -466,16 +459,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: + # 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 @@ -488,25 +482,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 @@ -514,18 +508,18 @@ 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 + for file in $(find $PKG -type f -name "*.la") ; do cat $file | sed -e 's%-L/gcc-[[:graph:]]* % %g' > $TMP/tmp-la-file cat $TMP/tmp-la-file > $file done @@ -533,7 +527,7 @@ cat $CWD/libgcj-5.pc \ ) ## 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 @@ -541,15 +535,13 @@ 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 - /sbin/makepkg -l y -c n $OUTPUT/${PRGNAM}-${VERSION}_multilib-$ARCH-$BUILD$TAG.txz + /sbin/makepkg -l y -c n $OUTPUT/${PRGNAM}-${VERSION}_multilib-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz} else - /sbin/makepkg -l y -c n $OUTPUT/${PRGNAM}-${VERSION}-$ARCH-$BUILD$TAG.txz + /sbin/makepkg -l y -c n $OUTPUT/${PRGNAM}-${VERSION}-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz} fi ) - -echo -echo "Slackware GCC5 package build complete!" -echo - |