Browse Source

graphics/imv: Updated for version 4.3.0.

Signed-off-by: B. Watson <yalhcru@gmail.com>

Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
pull/140/head
B. Watson 4 years ago
committed by Willy Sudiarto Raharjo
parent
commit
52adb0d461
No known key found for this signature in database GPG Key ID: 3F617144D7238786
  1. 27
      graphics/imv/README
  2. 104
      graphics/imv/imv.SlackBuild
  3. 6
      graphics/imv/imv.info
  4. 2
      graphics/imv/slack-desc
  5. 44
      graphics/imv/squelch_libtiff_warnings.diff

27
graphics/imv/README

@ -3,15 +3,17 @@ imv (image viewer for X and/or Wayland)
imv is a command line image viewer intended for use with tiling window imv is a command line image viewer intended for use with tiling window
managers. Features: managers. Features:
* Native Wayland [2] and X11 [1] support
* Native Wayland and X11 support
* Support for dozens of image formats including: * Support for dozens of image formats including:
* PNG [1]
* JPEG [1]
* Animated GIFs [3]
* SVG [4]
* TIFF [1]
* Various RAW formats [5]
* Photoshop PSD files [5]
* PNG
* JPEG
* Animated GIFs (requires FreeImage or libnsgif)
* SVG
* TIFF
* Various RAW formats (requires FreeImage)
* Photoshop PSD files (requires FreeImage)
* WEBP
* HEIF/AVIF (requires libheif)
* Configurable key bindings and behaviour * Configurable key bindings and behaviour
* Highly scriptable with IPC via imv-msg * Highly scriptable with IPC via imv-msg
@ -19,14 +21,7 @@ Optional dependencies (autodetected):
- FreeImage (support for GIF, RAW, PSD formats) - FreeImage (support for GIF, RAW, PSD formats)
- libnsgif (support for GIF) - libnsgif (support for GIF)
- libheif (support for HEIF/AVIF)
If you don't have at least one of FreeImage or libnsgif, imv won't If you don't have at least one of FreeImage or libnsgif, imv won't
support GIF images at all. support GIF images at all.
Notes:
[1] - uses a library from core Slackware, so always enabled.
[2] - requires either FreeImage or libnsgif.
[3] - imv supports SVG images, but the librsvg in Slackware 14.2 is too
old for imv to use, so SVG support is disabled. Sorry.
[4] - requires FreeImage.

104
graphics/imv/imv.SlackBuild

@ -6,10 +6,19 @@
# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details. # Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
# 20210909 bkw:
# - update for v4.3.0.
# - upstream switched to meson, can't build old versions with this script.
# - meson autodetects all the optional libs properly, get rid of the
# messy shell script code that used to do it.
# - add new optional dep libheif.
# - get rid of squelch_libtiff_warnings.diff (upstream fixed it).
# - rework README.
cd $(dirname $0) ; CWD=$(pwd) cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=imv PRGNAM=imv
VERSION=${VERSION:-4.1.0}
VERSION=${VERSION:-4.3.0}
BUILD=${BUILD:-1} BUILD=${BUILD:-1}
TAG=${TAG:-_SBo} TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz} PKGTYPE=${PKGTYPE:-tgz}
@ -22,9 +31,6 @@ if [ -z "$ARCH" ]; then
esac esac
fi fi
# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
# the name of the created package would be, and then exit. This information
# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE" echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0 exit 0
@ -60,67 +66,36 @@ chown -R root:root .
find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \ find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
\! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
# libtiff complains "not a TIFF image" for every non-TIFF image imv
# loads. patch disables libtiff warnings, and also moves libtiff to
# the end of the backend list, so it'll get tried last (after all the
# other backends have decided they can't handle the file).
patch -p1 < $CWD/squelch_libtiff_warnings.diff
# missing an include...
sed -i '1i#include <string.h>' src/backend_freeimage.c
# look in the right place for the config file.
sed -i 's,/usr/local/etc/,/etc/imv/,' src/imv.c
# No autodetection for optional deps. Help it out a little.
# libpng, libtiff, libjpeg-turbo are always included.
# librsvg never included, 14.2's is too old, and the minimum supported
# version requires rust, meaning I don't love it enough to include a
# static build here. I'm not just assuming it's too old because the
# docs say so, I actually tried it. Sigh.
W=x11; F=no; G=no; WS=no
pkg-config --exists wayland-client && W=all && WS=yes
[ -e /usr/include/FreeImage.h ] && F=yes
pkg-config --exists libnsgif && G=yes
cat >config.mk <<EOF
# Core Slackware stuff:
BACKEND_LIBTIFF=yes
BACKEND_LIBPNG=yes
BACKEND_LIBJPEG=yes
# Core Slackware 14.2, but too old to use, sorry.
BACKEND_LIBRSVG=no
# Optional SBo packages (FreeImage, libnsgif):
BACKEND_FREEIMAGE=$F
BACKEND_LIBNSGIF=$G
# Optional: window system (x11, wayland, or 'all' for both)
WINDOWS=$W
EOF
make \
CFLAGS="$SLKCFLAGS" \
PREFIX=/usr \
CONFIGPREFIX=/etc/$PRGNAM
# meson takes an option to say where to install the config file, but
# it doesn't actually change where the binary looks for it.
sed -i -e 's,/etc/imv_config,/etc/imv/imv_config,' \
-e '/\/usr\/local\/etc/d' \
src/imv.c doc/imv.1.txt
make install \
DESTDIR=$PKG \
PREFIX=/usr \
CONFIGPREFIX=/etc/$PRGNAM \
MANPREFIX=/usr/man \
INSTALL_PROGRAM="install -s -m0755"
mkdir build
cd build
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
meson .. \
--buildtype=release \
--infodir=/usr/info \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--localstatedir=/var \
--mandir=/usr/man \
--prefix=/usr \
--sysconfdir=/etc/$PRGNAM \
-Dstrip=true
"${NINJA:=ninja}"
DESTDIR=$PKG $NINJA install
cd ..
gzip -9 $PKG/usr/man/man?/*.? gzip -9 $PKG/usr/man/man?/*.?
mv $PKG/etc/$PRGNAM/${PRGNAM}_config $PKG/etc/$PRGNAM/${PRGNAM}_config.new
( cd $PKG/etc/$PRGNAM; mv ${PRGNAM}_config ${PRGNAM}_config.new )
# make install doesn't install the .desktop file. Also there's no icon
# so we have to include one, below.
# Slackware doesn't have an icon called multimedia-photo-viewer...
mkdir -p $PKG/usr/share/applications mkdir -p $PKG/usr/share/applications
sed "s,multimedia-photo-viewer,$PRGNAM," files/$PRGNAM.desktop > \
$PKG/usr/share/applications/$PRGNAM.desktop
sed -i "s,multimedia-photo-viewer,$PRGNAM," \
$PKG/usr/share/applications/*.desktop
# Icon came from Debian moka-icon-theme package. I have no idea # Icon came from Debian moka-icon-theme package. I have no idea
# what the default icon theme is in Debian (equivalent of hicolor in # what the default icon theme is in Debian (equivalent of hicolor in
@ -138,9 +113,16 @@ cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install mkdir -p $PKG/install
# update slack-desc to say which optional deps are included
F=no; G=no; H=no
ldd $PKG/usr/bin/$PRGNAM-x11 > lddtmp
grep -q 'libfreeimage' lddtmp && F=yes
grep -q 'libnsgif' lddtmp && G=yes
grep -q 'libheif' lddtmp && H=yes
sed -e "s,@F@,$F," \ sed -e "s,@F@,$F," \
-e "s,@G@,$G," \ -e "s,@G@,$G," \
-e "s,@W@,$WS," \
-e "s,@H@,$H," \
$CWD/slack-desc > $PKG/install/slack-desc $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh cat $CWD/doinst.sh > $PKG/install/doinst.sh

6
graphics/imv/imv.info

@ -1,8 +1,8 @@
PRGNAM="imv" PRGNAM="imv"
VERSION="4.1.0"
VERSION="4.3.0"
HOMEPAGE="https://github.com/eXeC64/imv" HOMEPAGE="https://github.com/eXeC64/imv"
DOWNLOAD="https://github.com/eXeC64/imv/archive/v4.1.0/imv-4.1.0.tar.gz"
MD5SUM="325bac66149dfa3f6e7688b1f4ab5f67"
DOWNLOAD="https://github.com/eXeC64/imv/archive/v4.3.0/imv-4.3.0.tar.gz"
MD5SUM="d01fb291c384497cfcc771ad6603a3c0"
DOWNLOAD_x86_64="" DOWNLOAD_x86_64=""
MD5SUM_x86_64="" MD5SUM_x86_64=""
REQUIRES="" REQUIRES=""

2
graphics/imv/slack-desc

@ -13,7 +13,7 @@ imv: managers.
imv: imv:
imv: Package built with support for: imv: Package built with support for:
imv: imv:
imv: FreeImage: @F@ libnsgif: @G@ wayland: @W@
imv: FreeImage: @F@ libnsgif: @G@ libheif: @H@
imv: imv:
imv: imv:
imv: imv:

44
graphics/imv/squelch_libtiff_warnings.diff

@ -1,44 +0,0 @@
diff -Naur imv-4.1.0/src/backend_libtiff.c imv-4.1.0.patched/src/backend_libtiff.c
--- imv-4.1.0/src/backend_libtiff.c 2019-12-21 17:54:26.000000000 -0500
+++ imv-4.1.0.patched/src/backend_libtiff.c 2020-11-21 16:40:37.971589947 -0500
@@ -110,6 +110,7 @@
{
struct private private;
+ TIFFSetErrorHandler(NULL);
private.tiff = TIFFOpen(path, "r");
if (!private.tiff) {
/* Header is read, so no BAD_PATH check here */
@@ -129,6 +130,7 @@
static enum backend_result open_memory(void *data, size_t len, struct imv_source **src)
{
struct private *private = malloc(sizeof *private);
+ TIFFSetErrorHandler(NULL);
private->data = data;
private->len = len;
private->pos = 0;
diff -Naur imv-4.1.0/src/main.c imv-4.1.0.patched/src/main.c
--- imv-4.1.0/src/main.c 2019-12-21 17:54:26.000000000 -0500
+++ imv-4.1.0.patched/src/main.c 2020-11-21 16:40:46.483589173 -0500
@@ -17,10 +17,6 @@
return 1;
}
-#ifdef IMV_BACKEND_LIBTIFF
- imv_install_backend(imv, &imv_backend_libtiff);
-#endif
-
#ifdef IMV_BACKEND_LIBPNG
imv_install_backend(imv, &imv_backend_libpng);
#endif
@@ -41,6 +37,10 @@
imv_install_backend(imv, &imv_backend_freeimage);
#endif
+#ifdef IMV_BACKEND_LIBTIFF
+ imv_install_backend(imv, &imv_backend_libtiff);
+#endif
+
if (!imv_load_config(imv)) {
imv_free(imv);
return 1;
Loading…
Cancel
Save