#!/bin/sh # Slackware build script for adoptopenjdk # Copyright 2018 Sukma Wardana # # Permission is hereby granted, free of charge, to any person obtaining a copy of this software # and associated documentation files (the "Software"), to deal in the Software without restriction, # including without limitation the rights to use, copy, modify, merge, publish, distribute, # sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in all copies or # substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, # INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR # PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE # FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. PRGNAM=adoptopenjdk VERSION=${VERSION:-11.0.2+9} BUILD=${BUILD:-1} ARCH=${ARCH:-$(uname -m)} TAG=${TAG:=_SBo} # Submission for SlackBuilds.org MAJORVER=${VERSION%+*} MINORVER=${VERSION#*+} # The name of openjdk provided by AdoptOpenJDK has structured : # # OpenJDK11-jdk_x64_linux_hotspot_11_28 # # The extracted openjdk archive will show directory named : # # jdk-11+28 TARNAM=OpenJDK11U-jdk_x64_linux_hotspot_${MAJORVER}_${MINORVER}.tar.gz CWD=$(pwd) TMP=${TMP:-/tmp/SBo} PKG=${TMP}/package-${PRGNAM} OUTPUT=${OUTPUT:-/tmp} if [ "${ARCH}" != "x86_64" ]; then echo "Architecture ${ARCH} is not supported." exit 1 fi LIBDIRSUFFIX="64" # Exit on most errors. set -e rm -rf ${PKG} mkdir -p ${TMP} ${PKG} ${OUTPUT} mkdir -p ${PKG}/usr/lib${LIBDIRSUFFIX}/${PRGNAM}${MAJORVER} # Extract start from sub-directory 1 level beneath cd ${PKG}/usr/lib${LIBDIRSUFFIX}/${PRGNAM}${MAJORVER} tar -xvzf ${CWD}/${TARNAM} --strip-components=1 chown -R root:root . find -L . \ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ -o -perm 511 \) -exec chmod 755 {} \; -o \ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; # Define whether or not a symlink to libjvm.so library must # be created into /usr/lib${LIBDIRSUFFIX}. Can be set to "yes" # or "no". Default to "yes". if [ "${CREATE_LIBJVM_SYMLINK:-yes}" = "yes" ]; then # Important Note: # -------------- # This will create symlink under /usr/lib${LIBDIRSUFFIX} cd ${PKG}/usr/lib${LIBDIRSUFFIX} ln -sf ./${PRGNAM}${MAJORVER}/lib/server/libjvm.so \ ${PKG}/usr/lib${LIBDIRSUFFIX}/libjvm.so fi # Add profile scripts. mkdir -p ${PKG}/etc/profile.d for SCRIPT in $(ls "${CWD}/profile.d/${PRGNAM}"*) ; do sed -e "s;@MAJORVER@;${MAJORVER};" \ < ${SCRIPT} \ > ${PKG}/etc/profile.d/$(basename ${SCRIPT}) chmod 755 ${PKG}/etc/profile.d/* done # Create documentation directory. mkdir -p ${PKG}/usr/doc/${PRGNAM}-${MAJORVER} # Copy documentation within OpenJDK binary. cd ${PKG}/usr/lib${LIBDIRSUFFIX}/${PRGNAM}${MAJORVER} cp -a release ${PKG}/usr/doc/${PRGNAM}-${MAJORVER} # Copy SlackBuild docfile. cat ${CWD}/${PRGNAM}.SlackBuild > \ ${PKG}/usr/doc/${PRGNAM}-${MAJORVER}/${PRGNAM}.SlackBuild # Create install directory. mkdir -p ${PKG}/install # Copy slack-desc into install directory. cat ${CWD}/slack-desc > ${PKG}/install/slack-desc # Strip some libraries and binaries ( cd $PKG find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | \ xargs strip --strip-unneeded 2> /dev/null find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | \ xargs strip --strip-unneeded 2> /dev/null ) # Build the package. cd ${PKG} /sbin/makepkg -l y -c n ${OUTPUT}/${PRGNAM}-${VERSION}-${ARCH}-${BUILD}${TAG}.${PKGTYPE:-tgz}