Slackware64-current (15.0+) 向けに最新の fcitx5-mozc 2.30.5520.102 パッケージを作成するための事前準備として
Make depends パッケージ bazel と jdk をバージョンアップした。
先のポスト 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
openjdk22-jconsole.desktop
openjdk22-jshell.desktop
(2) 各ファイル内の記述で openjdk11 の記述を openjdk22 向けに修正編集する。
例:openjdk22-java.desktop の場合
Name=OpenJDK Java 22 Runtime
Comment=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.
---
---