slackware-current/source/l/opencv/opencv.SlackBuild
Patrick J Volkerding 7b9b973e94 Tue Jan 30 22:01:28 UTC 2024
a/lzip-1.24-x86_64-1.txz:  Upgraded.
a/openssl-solibs-3.2.1-x86_64-1.txz:  Upgraded.
ap/alsa-utils-1.2.11-x86_64-1.txz:  Upgraded.
ap/sqlite-3.45.1-x86_64-1.txz:  Upgraded.
d/binutils-2.42-x86_64-1.txz:  Upgraded.
  Shared library .so-version bump.
d/cmake-3.28.2-x86_64-1.txz:  Upgraded.
d/oprofile-1.4.0-x86_64-13.txz:  Rebuilt.
  Recompiled against binutils-2.42.
d/strace-6.7-x86_64-1.txz:  Upgraded.
kde/digikam-8.2.0-x86_64-5.txz:  Rebuilt.
  Recompiled against libpng-1.6.42.
l/alsa-lib-1.2.11-x86_64-1.txz:  Upgraded.
l/libpng-1.6.42-x86_64-1.txz:  Upgraded.
  Fixed the implementation of the macro function png_check_sig().
  This was an API regression, introduced in libpng-1.6.41.
  Reported by Matthieu Darbois.
l/lmdb-0.9.32-x86_64-1.txz:  Upgraded.
l/neon-0.33.0-x86_64-1.txz:  Upgraded.
l/opencv-4.9.0-x86_64-3.txz:  Rebuilt.
  Recompiled against libpng-1.6.42.
l/qt5-5.15.12_20240103_b8fd1448-x86_64-4.txz:  Rebuilt.
  Recompiled against libpng-1.6.42.
l/talloc-2.4.2-x86_64-1.txz:  Upgraded.
l/tdb-1.4.10-x86_64-1.txz:  Upgraded.
l/tevent-0.16.1-x86_64-1.txz:  Upgraded.
n/openldap-2.6.7-x86_64-1.txz:  Upgraded.
n/openssl-3.2.1-x86_64-1.txz:  Upgraded.
  This update fixes possible denial-of-service security issues:
  A file in PKCS12 format can contain certificates and keys and may come from
  an untrusted source. The PKCS12 specification allows certain fields to be
  NULL, but OpenSSL did not correctly check for this case. A fix has been
  applied to prevent a NULL pointer dereference that results in OpenSSL
  crashing. If an application processes PKCS12 files from an untrusted source
  using the OpenSSL APIs then that application will be vulnerable to this
  issue prior to this fix.
  OpenSSL APIs that were vulnerable to this are: PKCS12_parse(),
  PKCS12_unpack_p7data(), PKCS12_unpack_p7encdata(), PKCS12_unpack_authsafes()
  and PKCS12_newpass().
  When function EVP_PKEY_public_check() is called on RSA public keys,
  a computation is done to confirm that the RSA modulus, n, is composite.
  For valid RSA keys, n is a product of two or more large primes and this
  computation completes quickly. However, if n is an overly large prime,
  then this computation would take a long time.
  An application that calls EVP_PKEY_public_check() and supplies an RSA key
  obtained from an untrusted source could be vulnerable to a Denial of Service
  attack.
  The function EVP_PKEY_public_check() is not called from other OpenSSL
  functions however it is called from the OpenSSL pkey command line
  application. For that reason that application is also vulnerable if used
  with the "-pubin" and "-check" options on untrusted data.
  To resolve this issue RSA keys larger than OPENSSL_RSA_MAX_MODULUS_BITS will
  now fail the check immediately with an RSA_R_MODULUS_TOO_LARGE error reason.
  Fix excessive time spent in DH check / generation with large Q parameter
  value.
  Applications that use the functions DH_generate_key() to generate an
  X9.42 DH key may experience long delays. Likewise, applications that use
  DH_check_pub_key(), DH_check_pub_key_ex() or EVP_PKEY_public_check()
  to check an X9.42 DH key or X9.42 DH parameters may experience long delays.
  Where the key or parameters that are being checked have been obtained from
  an untrusted source this may lead to a Denial of Service.
  For more information, see:
    https://www.cve.org/CVERecord?id=CVE-2024-0727
    https://www.cve.org/CVERecord?id=CVE-2023-6237
    https://www.cve.org/CVERecord?id=CVE-2023-5678
  (* Security fix *)
xap/MPlayer-20240130-x86_64-1.txz:  Upgraded.
  Fixed build script to exit on errors.
  Patched to build against gettext-0.22.4.
  Thanks to Matteo Bernardini.
xap/xine-lib-1.2.13-x86_64-7.txz:  Rebuilt.
  Recompiled against libpng-1.6.42.
2024-01-30 23:34:34 +01:00

148 lines
4.7 KiB
Bash
Executable file

#!/bin/bash
# Copyright 2015, 2017, 2019 Eric Hameleers, Eindhoven, NL
# Copyright 2020, 2023 Patrick J. Volkerding, Sebeka, Minnesota, USA
# 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)
PKGNAM=opencv
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-3}
# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
case "$(uname -m)" in
i?86) ARCH=i586 ;;
arm*) readelf /usr/bin/file -A | grep -E -q "Tag_CPU.*[4,5]" && ARCH=arm || ARCH=armv7hl ;;
# Unless $ARCH is already set, use uname -m for all other archs:
*) ARCH=$(uname -m) ;;
esac
export ARCH
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
echo "$PKGNAM-$VERSION-$ARCH-$BUILD.txz"
exit 0
fi
NUMJOBS=${NUMJOBS:-" -j $(expr $(nproc) + 1) "}
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
elif [ "$ARCH" = "armv7hl" ]; then
SLKCFLAGS="-O3 -march=armv7-a -mfpu=vfpv3-d16"
LIBDIRSUFFIX=""
else
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
fi
TMP=${TMP:-/tmp}
PKG=$TMP/package-$PKGNAM
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
rm -rf $PKGNAM-$VERSION
tar xvf $CWD/$PKGNAM-$VERSION.tar.?z || exit 1
cd $PKGNAM-$VERSION || exit 1
tar xvf $CWD/${PKGNAM}_contrib-${VERSION}.tar.?z || exit 1
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
-exec chmod 755 {} \+ -o \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \+
# Configure, build, and install:
mkdir cmake-build
cd cmake-build
cmake \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_C_FLAGS_RELEASE:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS_RELEASE:STRING="$SLKCFLAGS" \
-DCMAKE_BUILD_TYPE="Release" \
-DCMAKE_INSTALL_PREFIX=/usr \
-DINSTALL_MAN_DIR=man \
-DINSTALL_DOC_DIR=doc/$PKGNAM-$VERSION \
-DSYSCONF_INSTALL_DIR=/etc \
-DLIB_SUFFIX=${LIBDIRSUFFIX} \
-DLIB_INSTALL_DIR=/usr/lib${LIBDIRSUFFIX} \
-DBUILD_CUDA_STUBS=OFF \
-DBUILD_PACKAGE=OFF \
-DBUILD_PERF_TESTS=OFF \
-DBUILD_SHARED_LIBS=ON \
-DBUILD_TESTS=OFF \
-DBUILD_WITH_DEBUG_INFO=OFF \
-DENABLE_PRECOMPILED_HEADERS=OFF \
-DWITH_CUDA=OFF \
-DWITH_FFMPEG=ON \
-DWITH_GDAL=OFF \
-DWITH_IPP=OFF \
-DWITH_OPENGL=ON \
-DWITH_OPENMP=ON \
-DWITH_QT=ON \
-DWITH_XINE=ON \
-DOPENCV_ENABLE_NONFREE=ON \
-DOPENCV_EXTRA_MODULES_PATH=../${PKGNAM}_contrib-$VERSION/modules \
-DOPENCV_GENERATE_PKGCONFIG=ON \
-DOPENCV_JNI_INSTALL_PATH=lib${LIBDIRSUFFIX} \
.. || exit 1
make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
cd ..
# COMMENTED OUT as mlt finds opencv4.pc just fine.
# Add a symlink to opencv.pc to make eg. mlt find it:
#( cd $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig ; ln -sf opencv4.pc opencv.pc )
# Strip binaries:
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
# Add a documentation directory:
mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
cp -a \
COPYING* README* \
$PKG/usr/doc/${PKGNAM}-$VERSION
mv $PKG/usr/share/licenses $PKG/usr/doc/${PKGNAM}-$VERSION
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz