summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
author Eric Hameleers <alien@slackware.com>2022-08-09 12:21:52 +0000
committer Eric Hameleers <alien@slackware.com>2022-08-09 12:21:52 +0000
commit1a4a9fe567c96c7c6402484b0de4c8127bd26ced (patch)
treea4402d65c6fbcc7741a248193791ce2e4e64b2a4
parentdb5b93a8a13cb31c54673160c58ea41a2f543765 (diff)
downloadasb-1a4a9fe567c96c7c6402484b0de4c8127bd26ced.tar.gz
asb-1a4a9fe567c96c7c6402484b0de4c8127bd26ced.tar.xz
Initial revision
-rwxr-xr-xopenjdk11/build/openjdk11.SlackBuild358
1 files changed, 358 insertions, 0 deletions
diff --git a/openjdk11/build/openjdk11.SlackBuild b/openjdk11/build/openjdk11.SlackBuild
new file mode 100755
index 00000000..3bdf9a84
--- /dev/null
+++ b/openjdk11/build/openjdk11.SlackBuild
@@ -0,0 +1,358 @@
+#!/bin/sh
+# $Id$
+# Copyright 2021, 2022 Lenard Spencer, Orlando, Florida, USA
+# Copyright 2022 Eric Hameleers, Eindhoven, NL
+# All rights reserved.
+#
+# Permission to use, copy, modify, and distribute this software for
+# any purpose with or without fee is hereby granted, provided that
+# the above copyright notice and this permission notice appear in all
+# copies.
+#
+# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+# -----------------------------------------------------------------------------
+# This script takes inspiration from the OpenJDK11 SBo script by Lenard Spencer
+# -----------------------------------------------------------------------------
+#
+# Slackware SlackBuild script
+# ===========================
+# By: Eric Hameleers <alien@slackware.com>
+# For: openjdk11
+# Descr: Java 11 Platform Standard Edition
+# URL: https://openjdk.org/
+# Build needs:
+# Needs:
+# Changelog:
+# 11.0.16_8-1: 08/aug/2022 by Eric Hameleers <alien@slackware.com>
+# * Initial build.
+#
+# Run 'sh openjdk11.SlackBuild' to build a Slackware package.
+# The package (.t?z) and .txt file as well as build logs are created in /tmp .
+# Install the package using 'installpkg' or 'upgradepkg --install-new'.
+#
+# -----------------------------------------------------------------------------
+
+PRGNAM=openjdk11
+VERSION=${VERSION:-11.0.16}
+UPDVER=${UPDVER:-"8"} # used as "+number" or "-ga"!
+PKGVER=${VERSION}_${UPDVER}
+BOOTVER=${BOOTVER:-"10.0.2+13"}
+
+BUILD=${BUILD:-1}
+NUMJOBS=${NUMJOBS:-"$(nproc)"}
+NUMJOBS=${NUMJOBS#*j} # Remove "-j" in case NUMJOBS is defined as "-j8"
+TAG=${TAG:-alien}
+
+# Do we bootstrap our Java11 using a binary Java10 or Java11 distribution?
+BOOTSTRAP=${BOOTSTRAP:-"NO"}
+
+DOCS="ADDITIONAL_LICENSE_INFO ASSEMBLY_EXCEPTION LICENSE README"
+
+# Where do we look for sources?
+SRCDIR=$(cd $(dirname $0); pwd)
+
+# Place to build (TMP) package (PKG) and output (OUTPUT) the program:
+TMP=${TMP:-/tmp/build}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+# If you want debug symbols in your JVM library, set DEBUGBUILD to "YES";
+# this would inflate the libjvm.so file from 13 to 160 MB (estimate):
+DEBUGBUILD=${DEBUGBUILD:-"NO"}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$(uname -m)" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm; echo "$ARCH currently not supported, aborting."; exit 1 ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) ARCH=$(uname -m) ;;
+ esac
+ export ARCH
+fi
+# Set CFLAGS/CXXFLAGS and LIBDIRSUFFIX:
+case "$ARCH" in
+ i?86) SLKCFLAGS="-O2 -march=${ARCH} -mtune=i686"
+ SLKLDFLAGS=""; LIBDIRSUFFIX=""
+ BSARCH="i686"
+ ;;
+ x86_64) SLKCFLAGS="-O2 -fPIC"
+ SLKLDFLAGS="-L/usr/lib64"; LIBDIRSUFFIX="64"
+ BSARCH="x86_64"
+ ;;
+ *) SLKCFLAGS=${SLKCFLAGS:-"-O2"}
+ SLKLDFLAGS=${SLKLDFLAGS:-""}; LIBDIRSUFFIX=${LIBDIRSUFFIX:-""}
+ ;;
+esac
+
+case "$ARCH" in
+ arm*) TARGET=$ARCH-slackware-linux-gnueabi ;;
+ *) TARGET=$ARCH-slackware-linux ;;
+esac
+
+# Sources:
+# Take care of the '-' or '+' in the archive name:
+[ "$UPDVER" == "ga" ] && EXTRAVER="-${UPDVER}" || EXTRAVER="+${UPDVER}"
+SOURCE[0]="$SRCDIR/sources//jdk11u-jdk-${VERSION}${EXTRAVER}.tar.gz"
+SRCURL[0]="https://github.com/openjdk/jdk11u/archive/jdk-${VERSION}${EXTRAVER}/jdk11u-jdk-${VERSION}${EXTRAVER}.tar.gz"
+
+if [ "${BOOTSTRAP}" != "NO" ]; then
+ SOURCE[1]="$SRCDIR/sources/OpenJDK-${BOOTVER}-${BSARCH}-bin.tar.xz"
+ SRCURL[1]="https://anduin.linuxfromscratch.org/BLFS/OpenJDK/OpenJDK-${BOOTVER%+*}/OpenJDK-${BOOTVER}-${BSARCH}-bin.tar.xz"
+fi
+
+##
+## --- with a little luck, you won't have to edit below this point --- ##
+##
+
+# Exit the script on errors:
+set -e
+trap 'echo "$0 FAILED at line ${LINENO}" | tee $OUTPUT/error-${PRGNAM}.log' ERR
+# Catch unitialized variables:
+set -u
+P1=${1:-1}
+
+# Save old umask and set to 0022:
+_UMASK_=$(umask)
+umask 0022
+
+# Create working directories:
+mkdir -p $OUTPUT # place for the package to be saved
+mkdir -p $TMP/tmp-$PRGNAM # location to build the source
+mkdir -p $PKG # place for the package to be built
+rm -rf $PKG/* # always erase old package's contents
+rm -rf $TMP/tmp-$PRGNAM/* # remove the remnants of previous build
+rm -rf $OUTPUT/{configure,make,install,error,makepkg,patch}-$PRGNAM.log
+ # remove old log files
+
+# Source file availability:
+for (( i = 0; i < ${#SOURCE[*]}; i++ )) ; do
+ if ! [ -f ${SOURCE[$i]} ]; then
+ echo "Source '$(basename ${SOURCE[$i]})' not available yet..."
+ # Check if the $SRCDIR is writable at all - if not, download to $OUTPUT
+ [ -w "$SRCDIR" ] || SOURCE[$i]="$OUTPUT/$(basename ${SOURCE[$i]})"
+ if [ -f ${SOURCE[$i]} ]; then echo "Ah, found it!"; continue; fi
+ if ! [ "x${SRCURL[$i]}" == "x" ]; then
+ echo "Will download file to $(dirname $SOURCE[$i])"
+ wget --no-check-certificate -nv -T 20 -O "${SOURCE[$i]}" "${SRCURL[$i]}" || true
+ if [ $? -ne 0 -o ! -s "${SOURCE[$i]}" ]; then
+ echo "Fail to download '$(basename ${SOURCE[$i]})'. Aborting the build."
+ mv -f "${SOURCE[$i]}" "${SOURCE[$i]}".FAIL
+ exit 1
+ fi
+ fi
+ if [ ! -f "${SOURCE[$i]}" -o ! -s "${SOURCE[$i]}" ]; then
+ echo "File '$(basename ${SOURCE[$i]})' not available. Aborting the build."
+ exit 1
+ fi
+ fi
+done
+
+if [ "$P1" == "--download" ]; then
+ echo "Download complete."
+ exit 0
+fi
+
+# --- PACKAGE BUILDING ---
+
+echo "++"
+echo "|| $PRGNAM-${PKGVER}"
+echo "++"
+
+cd $TMP/tmp-$PRGNAM
+echo "Extracting the source archive(s) for $PRGNAM..."
+for (( i = 0; i < ${#SOURCE[*]}; i++ )) ; do
+ tar -xf ${SOURCE[$i]}
+done
+chown -R root:root *
+chmod -R u+w,go+r-w,a+rX-st *
+cd jdk11u-jdk-${VERSION}-${UPDVER}
+
+if [ "${BOOTSTRAP}" == "NO" ]; then
+ USE_BOOTSTRAP=" "
+else
+ # Building openjdk from source requires bootstrapping from either a
+ # current or previous version of the (open)jdk binary installation.
+ # We use the BLFS binaries for OpenJDK10 to bootstrap:
+ export BOOT_JAVA=$TMP/tmp-$PRGNAM/OpenJDK-10.0.2+13-$BSARCH-bin
+ USE_BOOTSTRAP="--with-boot-jdk=${BOOT_JAVA}"
+fi
+
+if [ "$DEBUGBUILD" = "NO" ]; then
+ USE_DEBUG="--with-native-debug-symbols=none"
+else
+ USE_DEBUG="--enable-debug --with-native-debug-symbols=external"
+fi
+
+# Recommended by upstream:
+unset JAVA_HOME
+unset CFLAGS
+unset CXXFLAGS
+unset LDFLAGS
+
+# Causes the build to fail if set:
+unset MAKEFLAGS
+
+echo Building ...
+sh configure \
+ ${USE_BOOTSTRAP} \
+ ${USE_DEBUG} \
+ --with-vendor-name="AlienBOB Slackware" \
+ --with-vendor-url="https://alien.slackbook.org/blog/wp-admin/edit.php?tag=openjdk" \
+ --with-vendor-bug-url="https://alien.slackbook.org/blog/wp-admin/edit.php?tag=openjdk" \
+ --with-vendor-vm-bug-url="https://bugs.openjdk.java.net" \
+ --with-version-build="${UPDVER}" \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/$PRGNAM-${PKGVER} \
+ --localstatedir=/var \
+ --sysconfdir=/etc \
+ --with-harfbuzz=bundled \
+ --with-zlib=bundled \
+ --with-giflib=system \
+ --with-lcms=system \
+ --with-libjpeg=system \
+ --with-libpng=system \
+ --enable-libffi-bundling \
+ --enable-unlimited-crypto \
+ --disable-precompiled-headers \
+ --disable-warnings-as-errors \
+ --with-extra-cflags="$SLKCFLAGS" \
+ --with-extra-cxxflags="$SLKCFLAGS" \
+ --with-jobs=$NUMJOBS \
+ 2>&1 | tee $OUTPUT/configure-${PRGNAM}.log
+ #--with-extra-ldflags="$SLKLDFLAGS" \
+ #--openjdk-target=$TARGET \
+
+# The 'bootcycle-images' target builds the target JDK using the pre-installed
+# (bootstrap-) JDK and then rebuilds JDK using the just-compiled JDK.
+make bootcycle-images 2>&1 | tee $OUTPUT/make-${PRGNAM}.log
+
+# Manually install the generated jdk image into the package directory:
+mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/java
+cp -a build/linux*/images/jdk/* $PKG/usr/lib${LIBDIRSUFFIX}/java/
+
+# We do not need the demo materials:
+rm -rf $PKG/usr/lib${LIBDIRSUFFIX}/java/demo
+
+# The configuration goes to /etc and we put a symlink in place:
+mkdir -p $PKG/etc
+mv $PKG/usr/lib${LIBDIRSUFFIX}/java/conf $PKG/etc/${PRGNAM}
+ln -s /etc/${PRGNAM} $PKG/usr/lib${LIBDIRSUFFIX}/java/conf
+
+# Do not clobber user modifications to the configuration files:
+mv ${PKG}/etc/${PRGNAM}/logging.properties{,.new}
+mv ${PKG}/etc/${PRGNAM}/net.properties{,.new}
+mv ${PKG}/etc/${PRGNAM}/sound.properties{,.new}
+mv ${PKG}/etc/${PRGNAM}/management/jmxremote.access{,.new}
+mv ${PKG}/etc/${PRGNAM}/management/jmxremote.password.template{,.new}
+mv ${PKG}/etc/${PRGNAM}/management/management.properties{,.new}
+mv ${PKG}/etc/${PRGNAM}/security/policy/unlimited/default_local.policy{,.new}
+mv ${PKG}/etc/${PRGNAM}/security/policy/unlimited/default_US_export.policy{,.new}
+mv ${PKG}/etc/${PRGNAM}/security/policy/limited/default_local.policy{,.new}
+mv ${PKG}/etc/${PRGNAM}/security/policy/limited/default_US_export.policy{,.new}
+mv ${PKG}/etc/${PRGNAM}/security/policy/limited/exempt_local.policy{,.new}
+mv ${PKG}/etc/${PRGNAM}/security/java.security{,.new}
+mv ${PKG}/etc/${PRGNAM}/security/java.policy{,.new}
+
+if [ "$DEBUGBUILD" = "NO" ]; then
+ # Strip debug symbols from the dynamic libraries but leave the symbol tables:
+ find $PKG -name "*.so" -exec strip --strip-debug {} \;
+fi
+
+# Generate a cacerts file from the certificates installed by ca-certificates
+# in Slackware - the "cacerts" in the OpenJDK sources may be outdated.
+# This will only work if we already have a proper JDK/JRE installed:
+if which keytool 1>/dev/null 2>&1 ; then
+ rm -f $PKG/usr/lib${LIBDIRSUFFIX}/java/lib/security/cacerts
+ mkdir certgen
+ ( cd certgen
+ cp $SRCDIR/scripts/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/lib/security
+ )
+else
+ echo "** Not installing a fresh cacerts file !"
+ echo "** Missing keytool program (do you really have a Java installed?)"
+fi
+
+# Symlinks are present in Slackware historically:
+ln -sf java $PKG/usr/lib${LIBDIRSUFFIX}/jdk${VERSION%%.*}
+
+# Add the profile scripts:
+mkdir -p $PKG/etc/profile.d
+for file in $(ls $SRCDIR/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
+ install -D -m0644 src/java.desktop/unix/classes/sun/awt/X11/java-icon$i.png \
+ $PKG/usr/share/icons/hicolor/${i}x${i}/apps/${PRGNAM}.png
+done
+# Add the desktop files:
+mkdir -p ${PKG}/usr/share/applications
+for DTFILE in java jconsole jshell ; do
+ cat $SRCDIR/desktop/openjdk11-${DTFILE}.desktop \
+ | sed -e "s,@JPATH@,/usr/lib${LIBDIRSUFFIX}/java/bin/," \
+ -e "s,@PRGNAM@,${PRGNAM}," \
+ > ${PKG}/usr/share/applications/openjdk11-${DTFILE}.desktop
+done
+
+# Add symlinks to the JVM and runtime libraries:
+for JLIB in server/libjvm libawt_xawt libjava libjawt libjsound libsplashscreen
+do
+ ln -sf java/lib/${JLIB}.so $PKG/usr/lib${LIBDIRSUFFIX}/
+done
+
+# Add documentation:
+mkdir -p $PKG/usr/doc/$PRGNAM-$PKGVER
+cp -a $DOCS $PKG/usr/doc/$PRGNAM-$PKGVER || true
+cat $SRCDIR/$(basename $0) > $PKG/usr/doc/$PRGNAM-$PKGVER/$PRGNAM.SlackBuild
+chown -R root:root $PKG/usr/doc/$PRGNAM-$PKGVER
+find $PKG/usr/doc -type f -exec chmod 644 {} \;
+
+# Move the man pages to the system location and point a symlink to them:
+mv $PKG/usr/lib${LIBDIRSUFFIX}/java/man $PKG/usr
+ln -s /usr/man $PKG/usr/lib${LIBDIRSUFFIX}/java/
+# Slackware has 'ja' as the install location for Japanese man pages:
+rm $PKG/usr/man/ja
+mv $PKG/usr/man/{ja_JP.UTF-8,ja}
+
+# Compress man pages:
+find $PKG/usr/man -type f -name "*.?" -exec gzip -9f {} \;
+for i in $(find $PKG/usr/man -type l -name "*.?") ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+
+# Add a package description:
+mkdir -p $PKG/install
+cat $SRCDIR/slack-desc > $PKG/install/slack-desc
+cat $SRCDIR/doinst.sh > $PKG/install/doinst.sh
+
+# Build the package:
+cd $PKG
+makepkg --linkadd y --chown n $OUTPUT/${PRGNAM}-${PKGVER}-${ARCH}-${BUILD}${TAG}.${PKGTYPE:-txz} 2>&1 | tee $OUTPUT/makepkg-${PRGNAM}.log
+cd $OUTPUT
+md5sum ${PRGNAM}-${PKGVER}-${ARCH}-${BUILD}${TAG}.${PKGTYPE:-txz} > ${PRGNAM}-${PKGVER}-${ARCH}-${BUILD}${TAG}.${PKGTYPE:-txz}.md5
+cd -
+cat $PKG/install/slack-desc | grep "^${PRGNAM}" > $OUTPUT/${PRGNAM}-${PKGVER}-${ARCH}-${BUILD}${TAG}.txt
+
+# Restore the original umask:
+umask ${_UMASK_}
+