#!/bin/bash # Slackware build script for XnConvert # 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=xnconvert-bin VERSION=${VERSION:-1.106.0} BUILD=${BUILD:-1} TAG=${TAG:-_SBo} PKGTYPE=${PKGTYPE:-tgz} ARCH=x86_64 if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE" exit 0 fi TMP=${TMP:-/tmp/SBo} PKG=$TMP/package-$PRGNAM OUTPUT=${OUTPUT:-/tmp} set -e if [ "$ARCH" != "x86_64" ]; then echo "$PRGNAM is only available for x86_64." exit 1 fi SRCNAM=XnConvert rm -rf $PKG mkdir -p $TMP $PKG $OUTPUT cd $TMP rm -rf ${SRCNAM} tar xvf $CWD/${SRCNAM}-${VERSION}-linux-x64.tgz cd ${SRCNAM} 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 {} \; # Install files mkdir -p $PKG/opt/${SRCNAM} cp -a * $PKG/opt/${SRCNAM}/ chmod 0755 $PKG/opt/${SRCNAM}/${SRCNAM} find $PKG/opt/${SRCNAM} -name "*.so*" -exec chmod 0755 {} \; # Create missing SONAME symlinks for libdir in $PKG/opt/${SRCNAM}/lib $PKG/opt/${SRCNAM}/Plugins; do [ -d "$libdir" ] || continue ( cd $libdir for lib in *.so; do [ -f "$lib" ] || continue soname=$(objdump -p "$lib" 2>/dev/null | awk '/SONAME/{print $2}') if [ -n "$soname" ] && [ "$soname" != "$lib" ] && [ ! -e "$soname" ]; then ln -sf "$lib" "$soname" fi done ) done # Wrapper script (Qt XCB fix included) mkdir -p $PKG/usr/bin cat > $PKG/usr/bin/xnconvert << 'EOF' #!/bin/sh export LD_LIBRARY_PATH=/opt/XnConvert/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} # Qt XCB platform plugin fix export QT_QPA_PLATFORM=xcb export QT_QPA_PLATFORM_PLUGIN_PATH=/opt/XnConvert/lib/platforms exec /opt/XnConvert/XnConvert "$@" EOF chmod 0755 $PKG/usr/bin/xnconvert # Desktop entry mkdir -p $PKG/usr/share/applications cat > $PKG/usr/share/applications/xnconvert.desktop << 'EOF' [Desktop Entry] Name=XnConvert GenericName=Batch Image Converter GenericName[es]=Convertidor de imágenes por lotes Comment=Batch image converter and resizer Comment[es]=Convertidor y redimensionador de imágenes por lotes Exec=xnconvert %F Icon=xnconvert Terminal=false Type=Application Categories=Graphics;2DGraphics;RasterGraphics; MimeType=image/bmp;image/gif;image/jpeg;image/png;image/tiff;image/webp; StartupNotify=true EOF # Icon mkdir -p $PKG/usr/share/pixmaps cp $PKG/opt/${SRCNAM}/xnconvert.png $PKG/usr/share/pixmaps/xnconvert.png # Docs mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION for doc in README LICENSE COPYING ChangeLog changelog; do [ -f "$doc" ] && cp -a "$doc" $PKG/usr/doc/$PRGNAM-$VERSION/ done cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild mkdir -p $PKG/install cat $CWD/slack-desc > $PKG/install/slack-desc cat $CWD/doinst.sh > $PKG/install/doinst.sh cd $PKG /sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE