#Packager: Dimitris Tzemos pkgname=openjdk pkgver=7u45 pkgrel=1dj options=('noautodotnew') dotnew=('etc/java/java.security' 'etc/java/java.policy' 'etc/java/jvm.cfg' 'etc/java/nss.cfg') _icedtea_ver=2.4.3 # check "${srcdir}/icedtea7"/Makefile.am _CORBA_CHANGESET=8ed5df839fbc _HOTSPOT_CHANGESET=b59e02d9e72b # see "${srcdir}/icedtea7"/hotspot.map _JAXP_CHANGESET=8f220f7b51c7 _JAXWS_CHANGESET=652eb396f959 _JDK_CHANGESET=7958751eb9ef _LANGTOOLS_CHANGESET=3c8eb52a32ea _OPENJDK_CHANGESET=e2f5917da3c1 _CACAO_VERSION=e215e36be9fc _JAMVM_VERSION=ac22c9948434e528ece451642b4ebde40953ee7e _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.4 _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' 'icedtea_zero_buildfix.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=7u45 JAVABLD=b31 ICEDTEA=2.4.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-e215e36be9fc.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 b59e02d9e72b.tar.gz hotspot.tar.gz mv 8f220f7b51c7.tar.gz jaxp.tar.gz mv 652eb396f959.tar.gz jaxws.tar.gz mv 7958751eb9ef.tar.gz jdk.tar.gz mv e2f5917da3c1.tar.gz openjdk.tar.gz mv 3c8eb52a32ea.tar.gz langtools.tar.gz mv 8ed5df839fbc.tar.gz corba.tar.gz mv e215e36be9fc.tar.gz cacao-e215e36be9fc.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" export DISTRIBUTION_BOOT_PATCHES="" 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-jdk-tests \ --disable-langtools-tests \ --disable-system-kerberos \ --disable-system-lcms \ --enable-nss \ $ARCH_OPTS \ $EXTRA_OPTS \ --build=$TARGET #--disable-jamvm \ #--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 }