commit:     032c84c9d3b226b882e5f4f13552754fe8e38804
Author:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Sun Sep 17 10:22:37 2017 +0000
Commit:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Sun Sep 17 10:24:10 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=032c84c9

dev-libs/libfilezilla: backported pkg-config cppunit detection, bug #630094

libfilezilla-0.9.2/m4/cppunit.m4 relies on cppunit-config tool presence.
In 1.14.0 cppunit-config was removed and the only way to setup cppunit
environment is to use pkg-config.

Upstream fixed it in revision 8441. I've applied extracted patch as-is:
    svn diff -r 8440:8441
And not tests link and pass fine against both cppunit 1.13 and 1.14

Reported-by: Toralf Förster
Closes: https://bugs.gentoo.org/630094
Package-Manager: Portage-2.3.8, Repoman-2.3.3

 .../libfilezilla-0.9.2-cppunit-pkgconfig.patch     | 428 +++++++++++++++++++++
 dev-libs/libfilezilla/libfilezilla-0.9.2.ebuild    |  11 +-
 2 files changed, 438 insertions(+), 1 deletion(-)

diff --git 
a/dev-libs/libfilezilla/files/libfilezilla-0.9.2-cppunit-pkgconfig.patch 
b/dev-libs/libfilezilla/files/libfilezilla-0.9.2-cppunit-pkgconfig.patch
new file mode 100644
index 00000000000..7c33fdbbe4a
--- /dev/null
+++ b/dev-libs/libfilezilla/files/libfilezilla-0.9.2-cppunit-pkgconfig.patch
@@ -0,0 +1,428 @@
+https://bugs.gentoo.org/630094
+Extrtacted as:
+    svn diff -r 8440:8441
+
+Index: m4/cppunit.m4
+===================================================================
+--- a/m4/cppunit.m4    (revision 8440)
++++ b/m4/cppunit.m4    (nonexistent)
+@@ -1,89 +0,0 @@
+-dnl
+-dnl AM_PATH_CPPUNIT(MINIMUM-VERSION, [ACTION-IF-FOUND [, 
ACTION-IF-NOT-FOUND]])
+-dnl
+-AC_DEFUN([AM_PATH_CPPUNIT],
+-[
+-
+-AC_ARG_WITH(cppunit-prefix,[  --with-cppunit-prefix=PFX   Prefix where 
CppUnit is installed (optional)],
+-            cppunit_config_prefix="$withval", cppunit_config_prefix="")
+-AC_ARG_WITH(cppunit-exec-prefix,[  --with-cppunit-exec-prefix=PFX  Exec 
prefix where CppUnit is installed (optional)],
+-            cppunit_config_exec_prefix="$withval", 
cppunit_config_exec_prefix="")
+-
+-  if test x$cppunit_config_exec_prefix != x ; then
+-     cppunit_config_args="$cppunit_config_args 
--exec-prefix=$cppunit_config_exec_prefix"
+-     if test x${CPPUNIT_CONFIG+set} != xset ; then
+-        CPPUNIT_CONFIG=$cppunit_config_exec_prefix/bin/cppunit-config
+-     fi
+-  fi
+-  if test x$cppunit_config_prefix != x ; then
+-     cppunit_config_args="$cppunit_config_args 
--prefix=$cppunit_config_prefix"
+-     if test x${CPPUNIT_CONFIG+set} != xset ; then
+-        CPPUNIT_CONFIG=$cppunit_config_prefix/bin/cppunit-config
+-     fi
+-  fi
+-
+-  AC_PATH_PROG(CPPUNIT_CONFIG, cppunit-config, no)
+-  cppunit_version_min=$1
+-
+-  AC_MSG_CHECKING(for Cppunit - version >= $cppunit_version_min)
+-  no_cppunit=""
+-  if test "$CPPUNIT_CONFIG" = "no" ; then
+-    AC_MSG_RESULT(no)
+-    no_cppunit=yes
+-  else
+-    CPPUNIT_CFLAGS=`$CPPUNIT_CONFIG --cflags`
+-    CPPUNIT_LIBS=`$CPPUNIT_CONFIG --libs`
+-    cppunit_version=`$CPPUNIT_CONFIG --version`
+-
+-    cppunit_major_version=`echo $cppunit_version | \
+-           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+-    cppunit_minor_version=`echo $cppunit_version | \
+-           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+-    cppunit_micro_version=`echo $cppunit_version | \
+-           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+-
+-    cppunit_major_min=`echo $cppunit_version_min | \
+-           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+-    if test "x${cppunit_major_min}" = "x" ; then
+-       cppunit_major_min=0
+-    fi
+-
+-    cppunit_minor_min=`echo $cppunit_version_min | \
+-           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+-    if test "x${cppunit_minor_min}" = "x" ; then
+-       cppunit_minor_min=0
+-    fi
+-
+-    cppunit_micro_min=`echo $cppunit_version_min | \
+-           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+-    if test "x${cppunit_micro_min}" = "x" ; then
+-       cppunit_micro_min=0
+-    fi
+-
+-    cppunit_version_proper=`expr \
+-        $cppunit_major_version \> $cppunit_major_min \| \
+-        $cppunit_major_version \= $cppunit_major_min \& \
+-        $cppunit_minor_version \> $cppunit_minor_min \| \
+-        $cppunit_major_version \= $cppunit_major_min \& \
+-        $cppunit_minor_version \= $cppunit_minor_min \& \
+-        $cppunit_micro_version \>= $cppunit_micro_min `
+-
+-    if test "$cppunit_version_proper" = "1" ; then
+-      
AC_MSG_RESULT([$cppunit_major_version.$cppunit_minor_version.$cppunit_micro_version])
+-    else
+-      AC_MSG_RESULT(no)
+-      no_cppunit=yes
+-    fi
+-  fi
+-
+-  if test "x$no_cppunit" = x ; then
+-     ifelse([$2], , :, [$2])
+-  else
+-     CPPUNIT_CFLAGS=""
+-     CPPUNIT_LIBS=""
+-     ifelse([$3], , :, [$3])
+-  fi
+-
+-  AC_SUBST(CPPUNIT_CFLAGS)
+-  AC_SUBST(CPPUNIT_LIBS)
+-])
+
+Property changes on: m4/cppunit.m4
+___________________________________________________________________
+Deleted: svn:eol-style
+## -1 +0,0 ##
+-native
+\ No newline at end of property
+Index: m4/pkg.m4
+===================================================================
+--- a/m4/pkg.m4        (nonexistent)
++++ b/m4/pkg.m4        (revision 8441)
+@@ -0,0 +1,275 @@
++# pkg.m4 - Macros to locate and utilise pkg-config.   -*- Autoconf -*-
++# serial 12 (pkg-config-0.29.2)
++
++dnl Copyright © 2004 Scott James Remnant <sc...@netsplit.com>.
++dnl Copyright © 2012-2015 Dan Nicholson <dbn.li...@gmail.com>
++dnl
++dnl This program is free software; you can redistribute it and/or modify
++dnl it under the terms of the GNU General Public License as published by
++dnl the Free Software Foundation; either version 2 of the License, or
++dnl (at your option) any later version.
++dnl
++dnl This program is distributed in the hope that it will be useful, but
++dnl WITHOUT ANY WARRANTY; without even the implied warranty of
++dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++dnl General Public License for more details.
++dnl
++dnl You should have received a copy of the GNU General Public License
++dnl along with this program; if not, write to the Free Software
++dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++dnl 02111-1307, USA.
++dnl
++dnl As a special exception to the GNU General Public License, if you
++dnl distribute this file as part of a program that contains a
++dnl configuration script generated by Autoconf, you may include it under
++dnl the same distribution terms that you use for the rest of that
++dnl program.
++
++dnl PKG_PREREQ(MIN-VERSION)
++dnl -----------------------
++dnl Since: 0.29
++dnl
++dnl Verify that the version of the pkg-config macros are at least
++dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's
++dnl installed version of pkg-config, this checks the developer's version
++dnl of pkg.m4 when generating configure.
++dnl
++dnl To ensure that this macro is defined, also add:
++dnl m4_ifndef([PKG_PREREQ],
++dnl     [m4_fatal([must install pkg-config 0.29 or later before running 
autoconf/autogen])])
++dnl
++dnl See the "Since" comment for each macro you use to see what version
++dnl of the macros you require.
++m4_defun([PKG_PREREQ],
++[m4_define([PKG_MACROS_VERSION], [0.29.2])
++m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,
++    [m4_fatal([pkg.m4 version $1 or higher is required but 
]PKG_MACROS_VERSION[ found])])
++])dnl PKG_PREREQ
++
++dnl PKG_PROG_PKG_CONFIG([MIN-VERSION])
++dnl ----------------------------------
++dnl Since: 0.16
++dnl
++dnl Search for the pkg-config tool and set the PKG_CONFIG variable to
++dnl first found in the path. Checks that the version of pkg-config found
++dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is
++dnl used since that's the first version where most current features of
++dnl pkg-config existed.
++AC_DEFUN([PKG_PROG_PKG_CONFIG],
++[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
++m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
++m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])
++AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
++AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search 
path])
++AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search 
path])
++
++if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
++      AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
++fi
++if test -n "$PKG_CONFIG"; then
++      _pkg_min_version=m4_default([$1], [0.9.0])
++      AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
++      if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
++              AC_MSG_RESULT([yes])
++      else
++              AC_MSG_RESULT([no])
++              PKG_CONFIG=""
++      fi
++fi[]dnl
++])dnl PKG_PROG_PKG_CONFIG
++
++dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
++dnl -------------------------------------------------------------------
++dnl Since: 0.18
++dnl
++dnl Check to see whether a particular set of modules exists. Similar to
++dnl PKG_CHECK_MODULES(), but does not set variables or print errors.
++dnl
++dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
++dnl only at the first occurence in configure.ac, so if the first place
++dnl it's called might be skipped (such as if it is within an "if", you
++dnl have to call PKG_CHECK_EXISTS manually
++AC_DEFUN([PKG_CHECK_EXISTS],
++[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
++if test -n "$PKG_CONFIG" && \
++    AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
++  m4_default([$2], [:])
++m4_ifvaln([$3], [else
++  $3])dnl
++fi])
++
++dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
++dnl ---------------------------------------------
++dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting
++dnl pkg_failed based on the result.
++m4_define([_PKG_CONFIG],
++[if test -n "$$1"; then
++    pkg_cv_[]$1="$$1"
++ elif test -n "$PKG_CONFIG"; then
++    PKG_CHECK_EXISTS([$3],
++                     [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`
++                    test "x$?" != "x0" && pkg_failed=yes ],
++                   [pkg_failed=yes])
++ else
++    pkg_failed=untried
++fi[]dnl
++])dnl _PKG_CONFIG
++
++dnl _PKG_SHORT_ERRORS_SUPPORTED
++dnl ---------------------------
++dnl Internal check to see if pkg-config supports short errors.
++AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
++[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
++if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
++        _pkg_short_errors_supported=yes
++else
++        _pkg_short_errors_supported=no
++fi[]dnl
++])dnl _PKG_SHORT_ERRORS_SUPPORTED
++
++
++dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
++dnl   [ACTION-IF-NOT-FOUND])
++dnl --------------------------------------------------------------
++dnl Since: 0.4.0
++dnl
++dnl Note that if there is a possibility the first call to
++dnl PKG_CHECK_MODULES might not happen, you should be sure to include an
++dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
++AC_DEFUN([PKG_CHECK_MODULES],
++[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
++AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
++AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
++
++pkg_failed=no
++AC_MSG_CHECKING([for $2])
++
++_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
++_PKG_CONFIG([$1][_LIBS], [libs], [$2])
++
++m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables 
$1[]_CFLAGS
++and $1[]_LIBS to avoid the need to call pkg-config.
++See the pkg-config man page for more details.])
++
++if test $pkg_failed = yes; then
++        AC_MSG_RESULT([no])
++        _PKG_SHORT_ERRORS_SUPPORTED
++        if test $_pkg_short_errors_supported = yes; then
++              $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors 
--cflags --libs "$2" 2>&1`
++        else
++              $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs 
"$2" 2>&1`
++        fi
++      # Put the nasty error message in config.log where it belongs
++      echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
++
++      m4_default([$4], [AC_MSG_ERROR(
++[Package requirements ($2) were not met:
++
++$$1_PKG_ERRORS
++
++Consider adjusting the PKG_CONFIG_PATH environment variable if you
++installed software in a non-standard prefix.
++
++_PKG_TEXT])[]dnl
++        ])
++elif test $pkg_failed = untried; then
++        AC_MSG_RESULT([no])
++      m4_default([$4], [AC_MSG_FAILURE(
++[The pkg-config script could not be found or is too old.  Make sure it
++is in your PATH or set the PKG_CONFIG environment variable to the full
++path to pkg-config.
++
++_PKG_TEXT
++
++To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
++        ])
++else
++      $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
++      $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
++        AC_MSG_RESULT([yes])
++      $3
++fi[]dnl
++])dnl PKG_CHECK_MODULES
++
++
++dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
++dnl   [ACTION-IF-NOT-FOUND])
++dnl ---------------------------------------------------------------------
++dnl Since: 0.29
++dnl
++dnl Checks for existence of MODULES and gathers its build flags with
++dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags
++dnl and VARIABLE-PREFIX_LIBS from --libs.
++dnl
++dnl Note that if there is a possibility the first call to
++dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to
++dnl include an explicit call to PKG_PROG_PKG_CONFIG in your
++dnl configure.ac.
++AC_DEFUN([PKG_CHECK_MODULES_STATIC],
++[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
++_save_PKG_CONFIG=$PKG_CONFIG
++PKG_CONFIG="$PKG_CONFIG --static"
++PKG_CHECK_MODULES($@)
++PKG_CONFIG=$_save_PKG_CONFIG[]dnl
++])dnl PKG_CHECK_MODULES_STATIC
++
++
++dnl PKG_INSTALLDIR([DIRECTORY])
++dnl -------------------------
++dnl Since: 0.27
++dnl
++dnl Substitutes the variable pkgconfigdir as the location where a module
++dnl should install pkg-config .pc files. By default the directory is
++dnl $libdir/pkgconfig, but the default can be changed by passing
++dnl DIRECTORY. The user can override through the --with-pkgconfigdir
++dnl parameter.
++AC_DEFUN([PKG_INSTALLDIR],
++[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])])
++m4_pushdef([pkg_description],
++    [pkg-config installation directory @<:@]pkg_default[@:>@])
++AC_ARG_WITH([pkgconfigdir],
++    [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],,
++    [with_pkgconfigdir=]pkg_default)
++AC_SUBST([pkgconfigdir], [$with_pkgconfigdir])
++m4_popdef([pkg_default])
++m4_popdef([pkg_description])
++])dnl PKG_INSTALLDIR
++
++
++dnl PKG_NOARCH_INSTALLDIR([DIRECTORY])
++dnl --------------------------------
++dnl Since: 0.27
++dnl
++dnl Substitutes the variable noarch_pkgconfigdir as the location where a
++dnl module should install arch-independent pkg-config .pc files. By
++dnl default the directory is $datadir/pkgconfig, but the default can be
++dnl changed by passing DIRECTORY. The user can override through the
++dnl --with-noarch-pkgconfigdir parameter.
++AC_DEFUN([PKG_NOARCH_INSTALLDIR],
++[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])])
++m4_pushdef([pkg_description],
++    [pkg-config arch-independent installation directory 
@<:@]pkg_default[@:>@])
++AC_ARG_WITH([noarch-pkgconfigdir],
++    [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],,
++    [with_noarch_pkgconfigdir=]pkg_default)
++AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir])
++m4_popdef([pkg_default])
++m4_popdef([pkg_description])
++])dnl PKG_NOARCH_INSTALLDIR
++
++
++dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
++dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
++dnl -------------------------------------------
++dnl Since: 0.28
++dnl
++dnl Retrieves the value of the pkg-config variable for the given module.
++AC_DEFUN([PKG_CHECK_VAR],
++[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
++AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl
++
++_PKG_CONFIG([$1], [variable="][$3]["], [$2])
++AS_VAR_COPY([$1], [pkg_cv_][$1])
++
++AS_VAR_IF([$1], [""], [$5], [$4])dnl
++])dnl PKG_CHECK_VAR
+
+Property changes on: m4/pkg.m4
+___________________________________________________________________
+Added: svn:eol-style
+## -0,0 +1 ##
++native
+\ No newline at end of property
+Index: configure.ac
+===================================================================
+--- a/configure.ac     (revision 8440)
++++ b/configure.ac     (revision 8441)
+@@ -178,13 +178,21 @@
+   fi
+ fi
+ 
++# Require pkg-config
++# ------------------
++PKG_PROG_PKG_CONFIG
+ 
++# Do not abort while not having runtime dependency
++#if test -z "$PKG_CONFIG"; then
++#  AC_MSG_ERROR([pkg-config not found. pkg-config is required to check for 
some dependencies.])
++#fi
++
++
+ # CppUnit tests
+ # -------------
+ 
+-AM_PATH_CPPUNIT([1.10.2], [has_cppunit="yes"])
++PKG_CHECK_MODULES(CPPUNIT, [cppunit >= 1.13.0], [has_cppunit=yes],[:])
+ 
+-
+ # Doxygen
+ # -------
+ 
+@@ -195,7 +203,6 @@
+ # ----------------------------
+ 
+ AM_CONDITIONAL(USE_RESOURCEFILE, test "$use_resourcefile" = "true")
+-AM_CONDITIONAL(HAS_CPPUNIT, [test "$has_cppunit" = "yes"])
+ 
+ AC_CONFIG_FILES(
+   Makefile

diff --git a/dev-libs/libfilezilla/libfilezilla-0.9.2.ebuild 
b/dev-libs/libfilezilla/libfilezilla-0.9.2.ebuild
index 221991c1845..902b8f0163b 100644
--- a/dev-libs/libfilezilla/libfilezilla-0.9.2.ebuild
+++ b/dev-libs/libfilezilla/libfilezilla-0.9.2.ebuild
@@ -2,7 +2,7 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=6
-inherit flag-o-matic
+inherit autotools flag-o-matic
 
 DESCRIPTION="C++ library offering some basic functionality for 
platform-independent programs"
 HOMEPAGE="https://lib.filezilla-project.org/";
@@ -18,6 +18,8 @@ RDEPEND=""
 DEPEND="${RDEPEND}
        test? ( dev-util/cppunit )"
 
+PATCHES=("${FILESDIR}"/${PN}-0.9.2-cppunit-pkgconfig.patch)
+
 pkg_pretend() {
        if [[ ${MERGE_TYPE} != binary ]]; then
                if ! test-flag-CXX -std=c++14; then
@@ -28,3 +30,10 @@ pkg_pretend() {
                fi
        fi
 }
+
+src_prepare() {
+       default
+
+       # cppunit patch changes .m4
+       eautoreconf
+}

Reply via email to