# Build recipe for sane-backends.
#
# Copyright (c) 2022 Matias Fonzo, <selk@dragora.org>.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Exit immediately on any error
set -e

program=sane-backends
version=1.1.1
release=1

# Define a category for the output of the package name
pkgcategory=scanning

tarname=${program}-${version}.tar.gz

# Remote source(s)
fetch=https://gitlab.com/sane-project/backends/uploads/7d30fab4e115029d91027b6a58d64b43/$tarname

homepage=http://www.sane-project.org/

description="
Essential libraries for the Scanning support.

SANE stands for Scanner Access Now Easy.  This package contains the
SANE libraries (this means backends and network scanning parts) and
the command line frontend scanimage. You always find the most
recent version of SANE on:

  $homepage
"

license=GPLv2+

# Source documentation
docs="";	# The build system already installs the documentation.
docsdir="${docdir}/${program}-${version}"

build()
{
    unpack "${tardir}/$tarname"

    cd "$srcdir"

    # Set sane permissions
    chmod -R u+w,go-w,a+rX-s .

    ./configure CPPFLAGS="$QICPPFLAGS" \
    CFLAGS="$QICFLAGS" CXXFLAGS="$QICXXFLAGS" LDFLAGS="$QILDFLAGS" \
     $configure_args \
     --libdir=/usr/lib${libSuffix} \
     --mandir=$mandir \
     --docdir=$docsdir \
     --enable-shared=yes \
     --enable-static=no \
     --with-group=scanner \
     --with-lockdir=/var/lock \
     --with-usb \
     --with-libcurl \
     --with-poppler-glib \
     --with-snmp \
     --build="$(gcc -dumpmachine)"

    make -j${jobs} V=1
    make -j${jobs} DESTDIR="$destdir" install

    # Install rules for udev

    install -p -m 644 tools/udev/libsane.rules -D \
     "${destdir}/etc/udev/rules.d/65-scanner.rules"

    # To handle (dot) .new files via graft(1)

    touch "${destdir}/etc/sane.d/.graft-config"

    # Compress and link man pages (if needed)
    if test -d "${destdir}/$mandir"
    then
        (
            cd "${destdir}/$mandir"
            find . -type f -exec lzip -9 {} +
            find . -type l | while read -r file
            do
                ln -sf "$(readlink -- "$file").lz" "${file}.lz"
                rm -- "$file"
            done
        )
    fi

    # Clean up some unnecessary documentation to reduce package size
    (
        cd "${destdir}/$docsdir"

        for extension in freebsd unixware7 windows solaris hp-ux aix netbsd \
                         darwin os2 unixware2 openbsd beos zeta ; \
        do
            rm -f README.${extension}
        done

        # Re-create ChangeLogs directory to match only the current version

        rm -rf ChangeLogs
        mkdir -p ChangeLogs
        ln -sf ../ChangeLog ChangeLogs/ChangeLog-${version}
    )
}

