From 42b64667a214172b65aa20e7d96edb9c6a6e66b8 Mon Sep 17 00:00:00 2001 From: Eric Hameleers Date: Thu, 19 Oct 2017 15:52:50 +0000 Subject: gcc5: only build java compiler if needed; several cleanups to the SlackBuild --- gcc5/build/gcc5.SlackBuild | 204 +++++++++++++++++++++++++-------------------- 1 file changed, 113 insertions(+), 91 deletions(-) (limited to 'gcc5') diff --git a/gcc5/build/gcc5.SlackBuild b/gcc5/build/gcc5.SlackBuild index 83a8455f..6ba32c06 100755 --- a/gcc5/build/gcc5.SlackBuild +++ b/gcc5/build/gcc5.SlackBuild @@ -62,8 +62,12 @@ TAG=${TAG:-alien} # How many jobs to run in parallel: NUMJOBS=" -j7 " -# What do we want to build -LANGS=${LANGS:-'c,c++,java'} +# If the current gcc is 5 or older it already contains java so we skip that: +if [ $(gcc --version |grep "^gcc (GCC)" |rev |cut -d' ' -f1 |rev |cut -d. -f1) -le 5 ]; then + LANGS=${LANGS:-'c,c++'} +else + LANGS=${LANGS:-'c,c++,java'} +fi echo "Building these compilers: $LANGS"; sleep 5 @@ -151,7 +155,7 @@ PKG=$TMP/package-gcc if [ -d $TMP ]; then rm -rf $TMP fi -mkdir -p $PKG/usr/doc/gcc-$VERSION +mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION # Insert package description: mkdir -p $PKG/install @@ -171,14 +175,16 @@ tar xvf $CWD/gcc-$VERSION.tar.?z* cat $CWD/patches/gcc.66782.diff | patch -p0 --verbose || exit 1 ) || exit 1 -# Copy ecj.jar into the TLD of the source. Needed for java compiler. -# This can be retrieved from ftp://sourceware.org/pub/java -cp $CWD/ecj-4.9.jar gcc-$VERSION/ecj.jar +if echo $LANGS | grep -wq java ; then + # Copy ecj.jar into the TLD of the source. Needed for java compiler. + # This can be retrieved from ftp://sourceware.org/pub/java + cp $CWD/ecj-4.9.jar gcc-$VERSION/ecj.jar -# Use an antlr runtime to compile javadoc. -# The runtime can be obtained from: -#https://oss.sonatype.org/content/repositories/releases/org/antlr/antlr-runtime/ -ANTLJAR=$(echo $CWD/antlr-*.jar | tail -1) + # Use an antlr runtime to compile javadoc. + # The runtime can be obtained from: + # https://oss.sonatype.org/content/repositories/releases/org/antlr/antlr-runtime/ + ANTLJAR=$(echo $CWD/antlr-*.jar | tail -1) +fi # install docs ( cd gcc-$VERSION @@ -190,95 +196,99 @@ 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 $PKG/usr/doc/gcc-$VERSION + mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION cp -a \ COPYING* ChangeLog* FAQ INSTALL \ LAST_UPDATED MAINTAINERS NEWS \ README* *.html \ - $PKG/usr/doc/gcc-$VERSION + $PKG/usr/doc/$PRGNAM-$VERSION # We will keep part of these, but they are really big... if [ -r ChangeLog ]; then - DOCSDIR=$(echo $PKG/usr/doc/gcc-$VERSION) + DOCSDIR=$(echo $PKG/usr/doc/$PRGNAM-$VERSION) cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog touch -r ChangeLog $DOCSDIR/ChangeLog fi if [ -r NEWS ]; then - DOCSDIR=$(echo $PKG/usr/doc/gcc-$VERSION) + DOCSDIR=$(echo $PKG/usr/doc/$PRGNAM-$VERSION) cat NEWS | head -n 1000 > $DOCSDIR/NEWS touch -r NEWS $DOCSDIR/NEWS fi - mkdir -p $PKG/usr/doc/gcc-${VERSION}/gcc + mkdir -p $PKG/usr/doc/$PRGNAM-${VERSION}/gcc ( cd gcc cp -a \ ABOUT* COPYING* DATESTAMP DEV-PHASE LANG* ONEWS README* SERVICE \ - $PKG/usr/doc/gcc-$VERSION/gcc - - mkdir -p $PKG/usr/doc/gcc-${VERSION}/gcc/java - ( cd java - cp -a \ - ChangeLog.tree-ssa \ - $PKG/usr/doc/gcc-${VERSION}/gcc/java - if [ -r ChangeLog ]; then - 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 - ) + $PKG/usr/doc/$PRGNAM-$VERSION/gcc + + if echo $LANGS|grep -wq java ; then + mkdir -p $PKG/usr/doc/$PRGNAM-${VERSION}/gcc/java + ( cd java + cp -a \ + ChangeLog.tree-ssa \ + $PKG/usr/doc/$PRGNAM-${VERSION}/gcc/java + if [ -r ChangeLog ]; then + cat ChangeLog | head -n 1000 > $PKG/usr/doc/$PRGNAM-${VERSION}/gcc/java/ChangeLog + touch -r ChangeLog $PKG/usr/doc/$PRGNAM-${VERSION}/gcc/java/ChangeLog + fi + ) + fi ) || exit 1 - mkdir -p $PKG/usr/doc/gcc-${VERSION}/libffi + mkdir -p $PKG/usr/doc/$PRGNAM-${VERSION}/libffi ( cd libffi cp -a \ ChangeLog.libgcj ChangeLog.v1 \ LICENSE* README* \ - $PKG/usr/doc/gcc-${VERSION}/libffi + $PKG/usr/doc/$PRGNAM-${VERSION}/libffi if [ -r ChangeLog ]; then - cat ChangeLog | head -n 1000 > $PKG/usr/doc/gcc-${VERSION}/libffi/ChangeLog - touch -r ChangeLog $PKG/usr/doc/gcc-${VERSION}/libffi/ChangeLog + cat ChangeLog | head -n 1000 > $PKG/usr/doc/$PRGNAM-${VERSION}/libffi/ChangeLog + touch -r ChangeLog $PKG/usr/doc/$PRGNAM-${VERSION}/libffi/ChangeLog fi ) - mkdir -p $PKG/usr/doc/gcc-${VERSION}/libjava - ( cd libjava - cp -a \ - COPYING* HACKING LIBGCJ_LICENSE \ - NEWS README* THANKS \ - $PKG/usr/doc/gcc-${VERSION}/libjava - if [ -r ChangeLog ]; then - cat ChangeLog | head -n 1000 > $PKG/usr/doc/gcc-${VERSION}/libjava/ChangeLog - touch -r ChangeLog $PKG/usr/doc/gcc-${VERSION}/libjava/ChangeLog - fi - ) + if echo $LANGS|grep -wq java ; then + mkdir -p $PKG/usr/doc/$PRGNAM-${VERSION}/libjava + ( cd libjava + cp -a \ + COPYING* HACKING LIBGCJ_LICENSE \ + NEWS README* THANKS \ + $PKG/usr/doc/$PRGNAM-${VERSION}/libjava + if [ -r ChangeLog ]; then + cat ChangeLog | head -n 1000 > $PKG/usr/doc/$PRGNAM-${VERSION}/libjava/ChangeLog + touch -r ChangeLog $PKG/usr/doc/$PRGNAM-${VERSION}/libjava/ChangeLog + fi + ) + fi if [ -d libmudflap ]; then - mkdir -p $PKG/usr/doc/gcc-${VERSION}/libmudflap + mkdir -p $PKG/usr/doc/$PRGNAM-${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 + cat ChangeLog | head -n 1000 > $PKG/usr/doc/$PRGNAM-${VERSION}/libmudflap/ChangeLog + touch -r ChangeLog $PKG/usr/doc/$PRGNAM-${VERSION}/libmudflap/ChangeLog fi ) fi - mkdir -p $PKG/usr/doc/gcc-${VERSION}/libgomp + mkdir -p $PKG/usr/doc/$PRGNAM-${VERSION}/libgomp ( cd libgomp if [ -r ChangeLog ]; then - cat ChangeLog | head -n 1000 > $PKG/usr/doc/gcc-${VERSION}/libgomp/ChangeLog - touch -r ChangeLog $PKG/usr/doc/gcc-${VERSION}/libgomp/ChangeLog + cat ChangeLog | head -n 1000 > $PKG/usr/doc/$PRGNAM-${VERSION}/libgomp/ChangeLog + touch -r ChangeLog $PKG/usr/doc/$PRGNAM-${VERSION}/libgomp/ChangeLog fi ) - mkdir -p $PKG/usr/doc/gcc-${VERSION}/libstdc++-v3 + mkdir -p $PKG/usr/doc/$PRGNAM-${VERSION}/libstdc++-v3 ( cd libstdc++-v3 cp -a \ README* \ doc/html/faq.html \ - $PKG/usr/doc/gcc-${VERSION}/libstdc++-v3 + $PKG/usr/doc/$PRGNAM-${VERSION}/libstdc++-v3 if [ -r ChangeLog ]; then - cat ChangeLog | head -n 1000 > $PKG/usr/doc/gcc-${VERSION}/libstdc++-v3/ChangeLog - touch -r ChangeLog $PKG/usr/doc/gcc-${VERSION}/libstdc++-v3/ChangeLog + cat ChangeLog | head -n 1000 > $PKG/usr/doc/$PRGNAM-${VERSION}/libstdc++-v3/ChangeLog + touch -r ChangeLog $PKG/usr/doc/$PRGNAM-${VERSION}/libstdc++-v3/ChangeLog fi ) ) @@ -363,6 +373,18 @@ ANTLJAR=$(echo $CWD/antlr-*.jar | tail -1) # NOTE: For Slackware 15.0, look into removing --with-default-libstdcxx-abi=gcc4-compatible, # which will then require rebuilding all C++ libraries. That is, if there's any benefit. + if echo $LANGS|grep -wq java ; then + JAVA_OPTS=" \ + --enable-java-home \ + --with-java-home=/usr/lib$LIBDIRSUFFIX/jvm/jre \ + --with-jvm-root-dir=/usr/lib$LIBDIRSUFFIX/jvm \ + --with-jvm-jar-dir=/usr/lib$LIBDIRSUFFIX/jvm/jvm-exports \ + --with-antlr-jar=$ANTLJAR \ + " + else + JAVA_OPTS="" + fi + LDFLAGS="$SLKLDFLAGS" \ CFLAGS="$SLKCFLAGS" \ CXXFLAGS="$SLKCFLAGS" \ @@ -388,14 +410,10 @@ ANTLJAR=$(echo $CWD/antlr-*.jar | tail -1) --disable-install-libiberty \ --with-gnu-ld \ --verbose \ - --enable-java-home \ - --with-java-home=/usr/lib$LIBDIRSUFFIX/jvm/jre \ - --with-jvm-root-dir=/usr/lib$LIBDIRSUFFIX/jvm \ - --with-jvm-jar-dir=/usr/lib$LIBDIRSUFFIX/jvm/jvm-exports \ --with-arch-directory=$LIB_ARCH \ - --with-antlr-jar=$ANTLJAR \ --program-suffix=-${MAJVER} \ --enable-version-specific-runtime-libs \ + $JAVA_OPTS \ $GCC_ARCHOPTS \ --target=${TARGET} \ --build=${TARGET} \ @@ -450,12 +468,14 @@ if [ ${MULTILIB} = "YES" ]; then 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 $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 +if echo $LANGS|grep -wq java ; then + # 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 $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 +fi # Fix stuff up: ( cd $PKG/usr/info @@ -494,35 +514,37 @@ 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," > $PKG/usr/bin/ecj -chmod 755 $PKG/usr/bin/ecj -# Some compatibility links. -for JAVAPROG in gcj gcjh gcj-dbtool gjar gjarsigner gjavah ; do - ln -s ${JAVAPROG}-${MAJVER} $PKG/usr/bin/${JAVAPROG} -done -( cd $PKG - for JAVALIB in usr/lib${LIBDIRSUFFIX}/gcc/${TARGET}/${VERSION}/libgcj* ; do - ln -s /${JAVALIB} $PKG/usr/lib${LIBDIRSUFFIX}/ +if echo $LANGS|grep -wq java ; then + # The ecj wrapper script: + 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 gjar gjarsigner gjavah ; do + ln -s ${JAVAPROG}-${MAJVER} $PKG/usr/bin/${JAVAPROG} done -) -# And add the missing javac symlink: -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 -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 $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}," \ - > $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig/libgcj-5.pc + ( cd $PKG + for JAVALIB in usr/lib${LIBDIRSUFFIX}/gcc/${TARGET}/${VERSION}/libgcj* ; do + ln -s /${JAVALIB} $PKG/usr/lib${LIBDIRSUFFIX}/ + done + ) + # And add the missing javac symlink: + 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 + 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 $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}," \ + > $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig/libgcj-5.pc +fi # Filter all .la files (thanks much to Mark Post for the sed script): ( cd $TMP -- cgit v1.2.3