Slackware64-current (15.0+) 向けに最新の fcitx5-mozc 2.30.5520.102 パッケージを作成するための事前準備として
Make depends パッケージ bazeljdk をバージョンアップした。
先のポスト bazel に続き、jdk をこれまで使っていたバイナリソースベースのjdkバージョン "11.0.20" から openjdk  "22.0.2_9" へバージョンアップ

※ SlackBuild は AlienBoB(Eric Hameleers) 氏の jdk11.SlackBuild を参考にさせていただいた。
Thanks to Eric Harmeleers for making the slackbuild publicly available.
(参考リンク)


openjdk22.SlackBuild (version 22.0.2_9)
[code]
#!/bin/bash
# $Id: openjdk11.SlackBuild,v 1.11 2024/07/18 07:44:40 root Exp root $
# Copyright 2021, 2022 Lenard Spencer, Orlando, Florida, USA
# Copyright 2022, 2023, 2024  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.
# 11.0.17_8-1: 27/nov/2022 by Eric Hameleers <alien@slackware.com>
#              * Update.
# 11.0.18_10-1:07/feb/2023 by Eric Hameleers <alien@slackware.com>
#              * Update.
# 11.0.19_7-1 :25/apr/2023 by Eric Hameleers <alien@slackware.com>
#              * Update.
# 11.0.20_8-1 :05/aug/2023 by Eric Hameleers <alien@slackware.com>
#              * Update.
# 11.0.21_9-1 :28/oct/2023 by Eric Hameleers <alien@slackware.com>
#              * Update.
# 11.0.22_7-1 :03/feb/2024 by Eric Hameleers <alien@slackware.com>
#              * Update.
# 11.0.23_9-1 :13/may/2024 by Eric Hameleers <alien@slackware.com>
#              * Update.
# 11.0.24_8-1 :18/jul/2024 by Eric Hameleers <alien@slackware.com>
#              * Update.
#------------------------------------------------------------------
# 22.0.2+9-1  :24/jul/2024 J_W(Shinichi Abe)\
#              * 1st build by using AlienBoB's original slackbuild for openjdk11
#
# 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=openjdk22
VERSION=${VERSION:-22.0.2}
UPDVER=${UPDVER:-"9"}          # used as "+number" or "-ga"!
PKGVER=${VERSION}_${UPDVER}
BOOTVER=${BOOTVER:-"21.0.2+13"}

BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-"$(nproc)"}
NUMJOBS=${NUMJOBS#*j}          # Remove "-j" in case NUMJOBS is defined as "-j8"
TAG=${TAG:-jw}

# Do we bootstrap our Java22 using a binary Java10 or Java22 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/jdk22u-jdk-${VERSION}${EXTRAVER}.tar.gz"
SRCURL[0]="https://github.com/openjdk/jdk22u/archive/jdk-${VERSION}${EXTRAVER}/jdk22u-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 jdk22u-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-21.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=internal"
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/tag/openjdk/" \
  --with-vendor-bug-url="https://alien.slackbook.org/blog/tag/openjdk/" \
  --with-vendor-vm-bug-url="https://bugs.openjdk.java.net" \
  --with-version-build="${UPDVER}" \
  --with-version-opt="" \
  --with-version-pre="" \
  --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 requires 'trust' program from p11-kit:
rm -f $PKG/usr/lib${LIBDIRSUFFIX}/java/lib/security/cacerts
trust extract --format=java-cacerts --filter=ca-anchors --purpose=server-auth \
  $PKG/usr/lib${LIBDIRSUFFIX}/java/lib/security/cacerts

# 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/openjdk22-${DTFILE}.desktop \
    | sed -e "s,@JPATH@,/usr/lib${LIBDIRSUFFIX}/java/bin/," \
      -e "s,@PRGNAM@,${PRGNAM}," \
    > ${PKG}/usr/share/applications/openjdk22-${DTFILE}.desktop
done

# Add a jre symlink to help programs that look for a jre directory:
ln -s . $PKG/usr/lib${LIBDIRSUFFIX}/java/jre

# 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/
# openjdk22-22.0.2 doesn't have ja_man
#
# 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_}

 slack-desc
[code]
# HOW TO EDIT THIS FILE:
# The "handy ruler" below makes it easier to edit a package description.
# Line up the first '|' above the ':' following the base package name, and
# the '|' on the right side marks the last column you can put a character in.
# You must make exactly 11 lines for the formatting to be correct.  It's also
# customary to leave one space after the ':' except on otherwise blank lines.

         |-----handy-ruler------------------------------------------------------|
openjdk22: openjdk22 (Java Platform Standard Edition Development Kit)
openjdk22:
openjdk22: openjdk22 is an open source implementation of the Java Platform,
openjdk22: Standard Edition, release 22.
openjdk22: The Java SDK software includes tools for developing, testing, and
openjdk22: running programs written in the Java programming language.  This
openjdk22: package contains the Open Source version of the JDK, which holds
openjdk22: everything you need to run Java(TM).
openjdk22:
openjdk22: See also: https://openjdk.org/
openjdk22:


desktopディレクトリ の ***.desktop ファイルを openjdk22 用に修正
(1) ファイル名を修正
      openjdk22-java.desktop
      openjdk22-jconsole.desktop
      openjdk22-jshell.desktop
(2) 各ファイル内の記述で openjdk11 の記述を openjdk22 向けに修正編集する。
 例:openjdk22-java.desktop の場合
   Name=OpenJDK Java 22 Runtime
             Comment=OpenJDK Java 22 Runtime

prpfile.dディレクトリの openjdk11.csh, openjdk11.sh の名称を修正
  openjdk11.csh -> openjdk22.csh
  openjdk11.sh -> openjdk22.sh


以上の事前準備を行った後、SlackBuildを実行する。

謝辞: 
あらためて、openjdkの slackbuildを作成・公開している AlienBoB(Eric Hameleers)氏に感謝します。
Acknowledgements: 
Again, thanks to AlienBoB (Eric Hameleers) for creating and publishing the openjdk slackbuild.

---

---