#!/bin/bash # Slackware SlackBuild for ipscan-bin # Copyright 2026 Pablo Romano, Seville, Spain # All rights reserved. # # Redistribution and use of this script, with or without modification, is # permitted provided that the following conditions are met: # # 1. Redistributions of this script must retain the above copyright # notice, this list of conditions and the following disclaimer. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS 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 AUTHOR 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. cd $(dirname $0) ; CWD=$(pwd) PRGNAM=ipscan-bin VERSION=${VERSION:-3.9.3} BUILD=${BUILD:-1} TAG=${TAG:-_SBo} PKGTYPE=${PKGTYPE:-tgz} if [ -z "$ARCH" ]; then case "$( uname -m )" in i?86) ARCH=i586 ;; arm*) ARCH=arm ;; *) ARCH=$( uname -m ) ;; esac fi if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE" exit 0 fi if [ "$ARCH" != "x86_64" ]; then echo "ERROR: This precompiled package only supports x86_64 architectures." exit 1 fi TMP=${TMP:-/tmp/SBo} PKG=$TMP/package-$PRGNAM OUTPUT=${OUTPUT:-/tmp} set -e # -------------------------------------------------- # Java detection (Slackware + Zulu + OpenJDK safe) # -------------------------------------------------- JAVA_HOME="" for d in \ /usr/lib64/zulu-openjdk17 \ /usr/lib64/openjdk17 \ /usr/lib64/java \ /usr/lib/zulu-openjdk17 \ /usr/lib/openjdk17 \ /usr/lib/java do if [ -x "$d/bin/java" ]; then JAVA_HOME="$d" break fi done if [ -z "$JAVA_HOME" ]; then if command -v java >/dev/null 2>&1; then JAVA_BIN="$(command -v java)" JAVA_BIN="$(readlink -f "$JAVA_BIN")" JAVA_HOME="$(dirname "$(dirname "$JAVA_BIN")")" fi fi if [ -z "$JAVA_HOME" ] || [ ! -x "$JAVA_HOME/bin/java" ]; then echo "ERROR: Java not found" echo "Install OpenJDK or Zulu OpenJDK 17+" exit 1 fi export JAVA_HOME export PATH="$JAVA_HOME/bin:$PATH" rm -rf "$PKG" mkdir -p "$TMP" "$PKG" "$OUTPUT" cd "$TMP" rm -rf "$PRGNAM-$VERSION" mkdir -p "$PKG/opt/ipscan" if [ -f "$CWD/ipscan-linux64-$VERSION.jar" ]; then install -m 644 "$CWD/ipscan-linux64-$VERSION.jar" "$PKG/opt/ipscan/ipscan.jar" else echo "ERROR: ipscan-linux64-$VERSION.jar not found in $CWD" exit 1 fi mkdir -p "$PKG/usr/bin" cat > "$PKG/usr/bin/ipscan" << 'EOF' #!/bin/sh SWT_JAR="" for path in \ /usr/share/java/swt.jar \ /usr/lib64/java/swt.jar \ /usr/lib64/java/swt-*.jar; do if [ -f "$path" ]; then SWT_JAR="$path" break fi done if [ -z "$SWT_JAR" ]; then echo "ERROR: swt.jar not found. Please ensure Slackware's 'swt' package is installed." >&2 exit 1 fi CLASSPATH="/opt/ipscan/ipscan.jar:$SWT_JAR" exec java \ --add-opens java.base/java.net=ALL-UNNAMED \ -cp "$CLASSPATH" \ net.azib.ipscan.Main "$@" EOF chmod 755 "$PKG/usr/bin/ipscan" mkdir -p "$PKG/usr/share/applications" install -m 644 "$CWD/ipscan.desktop" "$PKG/usr/share/applications/" mkdir -p "$PKG/usr/share/icons/hicolor/64x64/apps" install -m 644 "$CWD/ipscan.png" "$PKG/usr/share/icons/hicolor/64x64/apps/" mkdir -p "$PKG/usr/doc/$PRGNAM-$VERSION" cp -a LICENSE* COPYING* README* "$PKG/usr/doc/$PRGNAM-$VERSION" 2>/dev/null || true cat "$CWD/$PRGNAM.SlackBuild" > "$PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild" # Configure the description file and post-install script mkdir -p "$PKG/install" install -m 644 "$CWD/slack-desc" "$PKG/install/" if [ -f "$CWD/doinst.sh" ]; then cat "$CWD/doinst.sh" > "$PKG/install/doinst.sh" fi chown -R root:root "$PKG" cd "$PKG" /sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE