#Packager: Dimitris Tzemos pkgname=openjdk pkgver=7u9 pkgrel=1dj options=('noautodotnew') dotnew=('etc/java/java.security' 'etc/java/java.policy' 'etc/java/jvm.cfg' 'etc/java/nss.cfg') _icedtea_ver=2.3.3 # check "${srcdir}/icedtea7"/Makefile.am _CORBA_CHANGESET=9a95d714d136 _HOTSPOT_CHANGESET=d2d0a106917c # see "${srcdir}/icedtea7"/hotspot.map _JAXP_CHANGESET=f45296ac69be _JAXWS_CHANGESET=03f54ef33914 _JDK_CHANGESET=5ec94d162f05 _LANGTOOLS_CHANGESET=ec73c6927fb7 _OPENJDK_CHANGESET=301e79a966b4 _CACAO_VERSION=a567bcb7f589 _JAMVM_VERSION=0972452d441544f7dd29c55d64f1ce3a5db90d82 _CACAO_BASE_URL=http://icedtea.classpath.org/download/drops/cacao _JAMVM_BASE_URL=http://icedtea.classpath.org/download/drops/jamvm _ICEDTEA_PREFIX=icedtea7-forest-2.3 _ICEDTEA_HG_URL=http://icedtea.classpath.org/hg/release/${_ICEDTEA_PREFIX} _url=${_ICEDTEA_HG_URL} source=(http://icedtea.classpath.org/download/source/icedtea-${_icedtea_ver}.tar.gz{,.sig} ${_url}/archive/${_OPENJDK_CHANGESET}.tar.gz # openjdk.tar.gz ${_url}/corba/archive/${_CORBA_CHANGESET}.tar.gz # corba.tar.gz ${_url}/jaxp/archive/${_JAXP_CHANGESET}.tar.gz # jaxp.tar.gz ${_url}/jaxws/archive/${_JAXWS_CHANGESET}.tar.gz # jaxws.tar.gz ${_url}/jdk/archive/${_JDK_CHANGESET}.tar.gz # jdk.tar.gz ${_url}/langtools/archive/${_LANGTOOLS_CHANGESET}.tar.gz # langtools.tar.gz ${_url}/hotspot/archive/${_HOTSPOT_CHANGESET}.tar.gz # hotspot.tar.gz ${_CACAO_BASE_URL}/${_CACAO_VERSION}.tar.gz ${_JAMVM_BASE_URL}/jamvm-${_JAMVM_VERSION}.tar.gz 'generate-cacerts.pl' 'icedtea,zero_debuginfo.patch' 'openjdk.arm_fixes.patch' 'openjdk.csh' 'openjdk.sh' ) docs=("ASSEMBLY_EXCEPTION" "LICENSE" "README*" "THIRD_PARTY_README") url=http://openjdk.java.net/ slackdesc=\ ( #|-----handy-ruler------------------------------------------------------| "Java(TM) 2 Platform Standard Edition Development Kit." "The Java 2 SDK software includes tools for developing, testing, and" "running programs written in the Java programming language. This" "package contains the Open Source version of the JDK, which holds" "everything you need to run Java(TM)." "For additional information, refer to this web page:" "HomePage: http://openjdk.java.net/" ) build() { JAVAVER=7u9 JAVABLD=b30 ICEDTEA=2.3.3 VERSION="${JAVAVER}_${JAVABLD}" # If BOOTSTRAP is set to "YES" then we bootstrap the build using GCC's # java compiler (gcj) instead of a depending on a pre-installed version # of OpenJDK to build OpenJDK. BOOTSTRAP=${BOOTSTRAP:-"YES"} SRC_OPENJDK=openjdk.tar.gz SRC_HOTSPOT=hotspot.tar.gz SRC_CORBA=corba.tar.gz SRC_JAXP=jaxp.tar.gz SRC_JAXWS=jaxws.tar.gz SRC_JDK=jdk.tar.gz SRC_LANGTOOLS=langtools.tar.gz SRC_CACAO=cacao-a567bcb7f589.tar.gz if [ "$ARCH" = "i486" ]; then SLKCFLAGS="-O2 -march=i486 -mtune=i686" LIBDIRSUFFIX="" LIB_ARCH=i386 ARCH_OPTS="" elif [ "$ARCH" = "i686" ]; then SLKCFLAGS="-O2 -march=i686 -mtune=i686" LIBDIRSUFFIX="" LIB_ARCH=i386 ARCH_OPTS="" elif [ "$ARCH" = "x86_64" ]; then SLKCFLAGS="-O2 -fPIC" LIBDIRSUFFIX="64" LIB_ARCH=amd64 ARCH_OPTS="" elif [ "$ARCH" = "arm" ]; then SLKCFLAGS="-O2" LIBDIRSUFFIX="" LIB_ARCH=$ARCH ARCH_OPTS="--enable-cacao --with-cacao-src-zip=$SRC/${SRC_CACAO}" elif [ "$ARCH" = "armv7hl" ]; then SLKCFLAGS="-O2 -march=armv7-a -mfpu=vfpv3-d16" LIBDIRSUFFIX="" LIB_ARCH=$ARCH ARCH_OPTS="--enable-cacao --with-cacao-src-zip=$SRC/${SRC_CACAO}" else SLKCFLAGS="-O2" LIBDIRSUFFIX="" LIB_ARCH=$ARCH ARCH_OPTS="" fi case "ARCH" in arm*) TARGET=$ARCH-slackware-linux-gnueabi ;; *) TARGET=$ARCH-slackware-linux ;; esac cd $SRC mv d2d0a106917c.tar.gz hotspot.tar.gz mv f45296ac69be.tar.gz jaxp.tar.gz mv 03f54ef33914.tar.gz jaxws.tar.gz mv 5ec94d162f05.tar.gz jdk.tar.gz mv 301e79a966b4.tar.gz openjdk.tar.gz mv ec73c6927fb7.tar.gz langtools.tar.gz mv 9a95d714d136.tar.gz corba.tar.gz mv a567bcb7f589.tar.gz cacao-a567bcb7f589.tar.gz cd icedtea-$ICEDTEA || exit 1 # We start with creating a proper build environment. # Prevent an error which aborts the build: mkdir -p bootstrap/boot/jre/lib unset CLASSPATH unset JAVA_HOME unset MAKEFLAGS if [ "$BOOTSTRAP" = "YES" -o "$BOOTSTRAP" = "yes" ]; then # Use gcc's java compiler: export JVMDIR=/usr/lib${LIBDIRSUFFIX}/jvm export ALT_BOOTDIR=/usr/lib${LIBDIRSUFFIX}/jvm export ECJJAR=/usr/share/java/ecj.jar export RTJAR=/tmp/icedtea-$ICEDTEA/bootstrap/boot/jre/lib/rt.jar ! echo $PATH | grep -q jvm/bin && export PATH=/usr/lib${LIBDIRSUFFIX}/jvm/bin:$PATH EXTRA_OPTS="--enable-bootstrap --with-gcj=/usr/bin/gcj" # Bootstrap without cacao: ARCH_OPTS="" else # Use a pre-installed OpenJDK: export JVMDIR=/usr/lib${LIBDIRSUFFIX}/java EXTRA_OPTS="--disable-bootstrap" fi export ANT_HOME=/usr/share/ant export ALT_FREETYPE_LIB_PATH=/usr/lib${LIBDIRSUFFIX} export ALT_PARALLEL_COMPILE_JOBS="${NUMJOBS/-j}" export BUILD_NUMBER=$JAVABLD export HOTSPOT_BUILD_JOBS="${ALT_PARALLEL_COMPILE_JOBS}" export LANG=C export OS_VARIANT_NAME="Slackware" export OS_VARIANT_VERSION=$(cat /etc/slackware-version | cut -f2 -d' ') cp $SRC/*.patch $SRC/icedtea-$ICEDTEA/patches/ export DISTRIBUTION_BOOT_PATCHES="patches/openjdk.arm_fixes.patch" CFLAGS="$SLKCFLAGS" \ CXXFLAGS="$SLKCFLAGS" \ ./configure \ --with-abs-install-dir=/usr/lib${LIBDIRSUFFIX}/java \ --with-pkgversion=Slackware \ --with-parallel-jobs=${HOTSPOT_BUILD_JOBS} \ --with-corba-src-zip=$SRC/${SRC_CORBA} \ --with-hotspot-src-zip=$SRC/${SRC_HOTSPOT} \ --with-jaxp-src-zip=$SRC/${SRC_JAXP} \ --with-jaxws-src-zip=$SRC/${SRC_JAXWS} \ --with-jdk-src-zip=$SRC/${SRC_JDK} \ --with-langtools-src-zip=$SRC/${SRC_LANGTOOLS} \ --with-openjdk-src-zip=$SRC/${SRC_OPENJDK} \ --with-jdk-home=${JVMDIR} \ --disable-docs \ --disable-jamvm \ --disable-jdk-tests \ --disable-langtools-tests \ --disable-system-lcms \ --enable-nss \ $ARCH_OPTS \ $EXTRA_OPTS \ --build=$TARGET #--with-javac=${JVMDIR}/bin/javac || return 1 # In bootstrap build on Slackware 14, avoid a DSO linking error: sed -i -e "s/-o native-ecj/-lgcj -o native-ecj/" Makefile make VERBOSE=TRUE || exit 1 # Move the generated jre and sdk images to the respective packages: mkdir -p $PKG/usr/lib${LIBDIRSUFFIX} cp -a openjdk.build/j2sdk-image \ $PKG/usr/lib${LIBDIRSUFFIX}/java # Generate a cacerts file from the certificates installed through our # ca-certificates package - the "cacerts" in the OpenJDK sources is empty. # This will only work if we already have a proper JDK/JRE installed: if which keytool 1>/dev/null 2>&1 ; then mkdir certgen ( cd certgen cp $SRC/generate-cacerts.pl . for cert in /usr/share/ca-certificates/*/*.crt; do openssl x509 -text -in "${cert}" >> all.crt done perl generate-cacerts.pl keytool all.crt install -p -m0644 cacerts $PKG/usr/lib${LIBDIRSUFFIX}/java/jre/lib/security ) else echo "** Not installing a proper cacerts file !" echo "** Missing keytool program (do you really have a Java installed?)" fi # Pick a selection of fontconfig files: cp -a $PKG/usr/lib${LIBDIRSUFFIX}/java/jre/lib/fontconfig{.Ubuntu,}.properties.src cp -a $PKG/usr/lib${LIBDIRSUFFIX}/java/jre/lib/fontconfig{.Ubuntu,}.bfc # Symlinks are present in Slackware historically: ( cd $PKG/usr/lib${LIBDIRSUFFIX} ln -sf java jdk${VERSION} ) || exit 1 # Add the profile scripts: mkdir -p $PKG/etc/profile.d mkdir -p $SRC/profile.d cp $SRC/openjdk.sh $SRC/profile.d cp $SRC/openjdk.csh $SRC/profile.d for file in $(ls $SRC/profile.d/openjdk*) ; do cat $file | sed -e "s#lib/java#lib${LIBDIRSUFFIX}/java#" \ > $PKG/etc/profile.d/$(basename $file) done chmod 755 $PKG/etc/profile.d/* # Add menu entries and icons: for i in 16 24 32 48 ; do mkdir -p ${PKG}/usr/share/icons/hicolor/${i}x${i}/apps install -m644 openjdk/jdk/src/solaris/classes/sun/awt/X11/java-icon${i}.png \ ${PKG}/usr/share/icons/hicolor/${i}x${i}/apps/java.png done mkdir -p ${PKG}/usr/share/applications install -m644 *.desktop ${PKG}/usr/share/applications/ rm ${PKG}/usr/share/applications/javaws.desktop rm ${PKG}/usr/share/applications/jconsole.desktop # We do not create symlinks for binaries in /usr/bin , instead we add the # Java directory to the $PATH : for FILE in ${PKG}/usr/share/applications/*.desktop \ ; do sed -i -e "s,^Exec=/usr/bin/,Exec=," $FILE done # User-modifiable configuration files go to /etc : mkdir -p $PKG/etc/java mv $PKG/usr/lib${LIBDIRSUFFIX}/java/jre/lib/${LIB_ARCH}/jvm.cfg $PKG/etc/java/jvm.cfg ln -sf /etc/java/jvm.cfg $PKG/usr/lib${LIBDIRSUFFIX}/java/jre/lib/${LIB_ARCH}/jvm.cfg mv $PKG/usr/lib${LIBDIRSUFFIX}/java/jre/lib/security/java.policy $PKG/etc/java/java.policy ln -sf /etc/java/java.policy $PKG/usr/lib${LIBDIRSUFFIX}/java/jre/lib/security/java.policy mv $PKG/usr/lib${LIBDIRSUFFIX}/java/jre/lib/security/java.security $PKG/etc/java/java.security ln -sf /etc/java/java.security $PKG/usr/lib${LIBDIRSUFFIX}/java/jre/lib/security/java.security cat << EOF > $PKG/usr/lib${LIBDIRSUFFIX}/java/jre/lib/security/nss.cfg name = NSS nssLibraryDirectory = /usr/lib${LIBDIRSUFFIX}/seamonkey nssDbMode = noDb attributes = compatibility EOF cat $PKG/usr/lib${LIBDIRSUFFIX}/java/jre/lib/security/nss.cfg | sed -e 's/seamonkey-.*$/seamonkey/' > $PKG/etc/java/nss.cfg ln -sf /etc/java/nss.cfg $PKG/usr/lib${LIBDIRSUFFIX}/java/jre/lib/security/nss.cfg # NOTE: # The openjdk does not build a mozilla plugin: install icedtea-web instead. ( cd $PKG/usr/lib${LIBDIRSUFFIX} ln -sf ./java/jre/lib/${LIB_ARCH}/server/libjvm.so . ) # Add documentation files: mkdir -p $PKG/usr/doc/$pkgname-$pkgver/icedtea ( cd openjdk cp -a \ ASSEMBLY_EXCEPTION LICENSE README* THIRD_PARTY_README \ $PKG/usr/doc/$pkgname-$pkgver ) cp -a \ AUTHORS COPYING HACKING INSTALL NEWS README* THANKYOU \ $PKG/usr/doc/$pkgname-$pkgver/icedtea # 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 for DOCSDIR in $(echo $PKG/usr/doc/$pkgname-$pkgver) do cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog touch -r ChangeLog $DOCSDIR/ChangeLog done fi }