Gentoo Archives: gentoo-commits

From: David Seifert <soap@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: app-emulation/libcacard/files/, app-emulation/libcacard/
Date: Sun, 21 Feb 2016 22:38:34
Message-Id: 1456094266.53e73ee4e31a603d3b067a7090ef73f683c70626.soap@gentoo
1 commit: 53e73ee4e31a603d3b067a7090ef73f683c70626
2 Author: David Seifert <soap <AT> gentoo <DOT> org>
3 AuthorDate: Sun Feb 21 22:37:29 2016 +0000
4 Commit: David Seifert <soap <AT> gentoo <DOT> org>
5 CommitDate: Sun Feb 21 22:37:46 2016 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=53e73ee4
7
8 app-emulation/libcacard: Detect libpthread flags properly
9
10 Gentoo-Bug: 494450
11 * EAPI=6
12 * Unconditionally delete .la files, due to provided
13 pkg-config file
14
15 Package-Manager: portage-2.2.27
16
17 .../files/libcacard-0.1.2-underlinking.patch | 354 +++++++++++++++++++++
18 app-emulation/libcacard/libcacard-0.1.2.ebuild | 16 +-
19 2 files changed, 367 insertions(+), 3 deletions(-)
20
21 diff --git a/app-emulation/libcacard/files/libcacard-0.1.2-underlinking.patch b/app-emulation/libcacard/files/libcacard-0.1.2-underlinking.patch
22 new file mode 100644
23 index 0000000..086508f
24 --- /dev/null
25 +++ b/app-emulation/libcacard/files/libcacard-0.1.2-underlinking.patch
26 @@ -0,0 +1,354 @@
27 +Fix underlinking issues caused by missing -pthread flag:
28 +* libtool: link: x86_64-pc-linux-gnu-gcc -O2 -pipe -march=sandybridge --param l1-cache-line-size=64 --param l1-cache-size=32 --param l2-cache-size=4096 -Wl,-O1 -Wl,--as-needed -o .libs/vscclient vscclient.o ./.libs/libcacard.so -lssl3 -lsmime3 -lnss3 -lnssutil3 -lplds4 -lplc4 -lnspr4
29 +* vscclient.o:vscclient.c:function main: error: undefined reference to 'pthread_create'
30 +See also: https://bugs.gentoo.org/show_bug.cgi?id=494450
31 +
32 +--- libcacard-0.1.2/configure.ac
33 ++++ libcacard-0.1.2/configure.ac
34 +@@ -69,6 +69,11 @@
35 + fi
36 + ])
37 +
38 ++dnl Pthread handling
39 ++AX_PTHREAD
40 ++CFLAGS="${CFLAGS} ${PTHREAD_CFLAGS}"
41 ++LIBS="${LIBS} ${PTHREAD_CFLAGS} ${PTHREAD_LIBS}"
42 ++
43 + dnl handle the passthru option. passthru allows you to access the cards directly
44 + AC_ARG_ENABLE(passthru,
45 + AC_HELP_STRING([--enable-passthru], [allow passthru mode]),
46 +--- libcacard-0.1.2/m4/ax_pthread.m4
47 ++++ libcacard-0.1.2/m4/ax_pthread.m4
48 +@@ -0,0 +1,332 @@
49 ++# ===========================================================================
50 ++# http://www.gnu.org/software/autoconf-archive/ax_pthread.html
51 ++# ===========================================================================
52 ++#
53 ++# SYNOPSIS
54 ++#
55 ++# AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
56 ++#
57 ++# DESCRIPTION
58 ++#
59 ++# This macro figures out how to build C programs using POSIX threads. It
60 ++# sets the PTHREAD_LIBS output variable to the threads library and linker
61 ++# flags, and the PTHREAD_CFLAGS output variable to any special C compiler
62 ++# flags that are needed. (The user can also force certain compiler
63 ++# flags/libs to be tested by setting these environment variables.)
64 ++#
65 ++# Also sets PTHREAD_CC to any special C compiler that is needed for
66 ++# multi-threaded programs (defaults to the value of CC otherwise). (This
67 ++# is necessary on AIX to use the special cc_r compiler alias.)
68 ++#
69 ++# NOTE: You are assumed to not only compile your program with these flags,
70 ++# but also link it with them as well. e.g. you should link with
71 ++# $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS
72 ++#
73 ++# If you are only building threads programs, you may wish to use these
74 ++# variables in your default LIBS, CFLAGS, and CC:
75 ++#
76 ++# LIBS="$PTHREAD_LIBS $LIBS"
77 ++# CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
78 ++# CC="$PTHREAD_CC"
79 ++#
80 ++# In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant
81 ++# has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to that name
82 ++# (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
83 ++#
84 ++# Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the
85 ++# PTHREAD_PRIO_INHERIT symbol is defined when compiling with
86 ++# PTHREAD_CFLAGS.
87 ++#
88 ++# ACTION-IF-FOUND is a list of shell commands to run if a threads library
89 ++# is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it
90 ++# is not found. If ACTION-IF-FOUND is not specified, the default action
91 ++# will define HAVE_PTHREAD.
92 ++#
93 ++# Please let the authors know if this macro fails on any platform, or if
94 ++# you have any other suggestions or comments. This macro was based on work
95 ++# by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help
96 ++# from M. Frigo), as well as ac_pthread and hb_pthread macros posted by
97 ++# Alejandro Forero Cuervo to the autoconf macro repository. We are also
98 ++# grateful for the helpful feedback of numerous users.
99 ++#
100 ++# Updated for Autoconf 2.68 by Daniel Richard G.
101 ++#
102 ++# LICENSE
103 ++#
104 ++# Copyright (c) 2008 Steven G. Johnson <stevenj@××××××××.edu>
105 ++# Copyright (c) 2011 Daniel Richard G. <skunk@××××××.ORG>
106 ++#
107 ++# This program is free software: you can redistribute it and/or modify it
108 ++# under the terms of the GNU General Public License as published by the
109 ++# Free Software Foundation, either version 3 of the License, or (at your
110 ++# option) any later version.
111 ++#
112 ++# This program is distributed in the hope that it will be useful, but
113 ++# WITHOUT ANY WARRANTY; without even the implied warranty of
114 ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
115 ++# Public License for more details.
116 ++#
117 ++# You should have received a copy of the GNU General Public License along
118 ++# with this program. If not, see <http://www.gnu.org/licenses/>.
119 ++#
120 ++# As a special exception, the respective Autoconf Macro's copyright owner
121 ++# gives unlimited permission to copy, distribute and modify the configure
122 ++# scripts that are the output of Autoconf when processing the Macro. You
123 ++# need not follow the terms of the GNU General Public License when using
124 ++# or distributing such scripts, even though portions of the text of the
125 ++# Macro appear in them. The GNU General Public License (GPL) does govern
126 ++# all other use of the material that constitutes the Autoconf Macro.
127 ++#
128 ++# This special exception to the GPL applies to versions of the Autoconf
129 ++# Macro released by the Autoconf Archive. When you make and distribute a
130 ++# modified version of the Autoconf Macro, you may extend this special
131 ++# exception to the GPL to apply to your modified version as well.
132 ++
133 ++#serial 21
134 ++
135 ++AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])
136 ++AC_DEFUN([AX_PTHREAD], [
137 ++AC_REQUIRE([AC_CANONICAL_HOST])
138 ++AC_LANG_PUSH([C])
139 ++ax_pthread_ok=no
140 ++
141 ++# We used to check for pthread.h first, but this fails if pthread.h
142 ++# requires special compiler flags (e.g. on True64 or Sequent).
143 ++# It gets checked for in the link test anyway.
144 ++
145 ++# First of all, check if the user has set any of the PTHREAD_LIBS,
146 ++# etcetera environment variables, and if threads linking works using
147 ++# them:
148 ++if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
149 ++ save_CFLAGS="$CFLAGS"
150 ++ CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
151 ++ save_LIBS="$LIBS"
152 ++ LIBS="$PTHREAD_LIBS $LIBS"
153 ++ AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
154 ++ AC_TRY_LINK_FUNC([pthread_join], [ax_pthread_ok=yes])
155 ++ AC_MSG_RESULT([$ax_pthread_ok])
156 ++ if test x"$ax_pthread_ok" = xno; then
157 ++ PTHREAD_LIBS=""
158 ++ PTHREAD_CFLAGS=""
159 ++ fi
160 ++ LIBS="$save_LIBS"
161 ++ CFLAGS="$save_CFLAGS"
162 ++fi
163 ++
164 ++# We must check for the threads library under a number of different
165 ++# names; the ordering is very important because some systems
166 ++# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
167 ++# libraries is broken (non-POSIX).
168 ++
169 ++# Create a list of thread flags to try. Items starting with a "-" are
170 ++# C compiler flags, and other items are library names, except for "none"
171 ++# which indicates that we try without any flags at all, and "pthread-config"
172 ++# which is a program returning the flags for the Pth emulation library.
173 ++
174 ++ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
175 ++
176 ++# The ordering *is* (sometimes) important. Some notes on the
177 ++# individual items follow:
178 ++
179 ++# pthreads: AIX (must check this before -lpthread)
180 ++# none: in case threads are in libc; should be tried before -Kthread and
181 ++# other compiler flags to prevent continual compiler warnings
182 ++# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
183 ++# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
184 ++# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
185 ++# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
186 ++# -pthreads: Solaris/gcc
187 ++# -mthreads: Mingw32/gcc, Lynx/gcc
188 ++# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
189 ++# doesn't hurt to check since this sometimes defines pthreads too;
190 ++# also defines -D_REENTRANT)
191 ++# ... -mt is also the pthreads flag for HP/aCC
192 ++# pthread: Linux, etcetera
193 ++# --thread-safe: KAI C++
194 ++# pthread-config: use pthread-config program (for GNU Pth library)
195 ++
196 ++case ${host_os} in
197 ++ solaris*)
198 ++
199 ++ # On Solaris (at least, for some versions), libc contains stubbed
200 ++ # (non-functional) versions of the pthreads routines, so link-based
201 ++ # tests will erroneously succeed. (We need to link with -pthreads/-mt/
202 ++ # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather
203 ++ # a function called by this macro, so we could check for that, but
204 ++ # who knows whether they'll stub that too in a future libc.) So,
205 ++ # we'll just look for -pthreads and -lpthread first:
206 ++
207 ++ ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags"
208 ++ ;;
209 ++
210 ++ darwin*)
211 ++ ax_pthread_flags="-pthread $ax_pthread_flags"
212 ++ ;;
213 ++esac
214 ++
215 ++# Clang doesn't consider unrecognized options an error unless we specify
216 ++# -Werror. We throw in some extra Clang-specific options to ensure that
217 ++# this doesn't happen for GCC, which also accepts -Werror.
218 ++
219 ++AC_MSG_CHECKING([if compiler needs -Werror to reject unknown flags])
220 ++save_CFLAGS="$CFLAGS"
221 ++ax_pthread_extra_flags="-Werror"
222 ++CFLAGS="$CFLAGS $ax_pthread_extra_flags -Wunknown-warning-option -Wsizeof-array-argument"
223 ++AC_COMPILE_IFELSE([AC_LANG_PROGRAM([int foo(void);],[foo()])],
224 ++ [AC_MSG_RESULT([yes])],
225 ++ [ax_pthread_extra_flags=
226 ++ AC_MSG_RESULT([no])])
227 ++CFLAGS="$save_CFLAGS"
228 ++
229 ++if test x"$ax_pthread_ok" = xno; then
230 ++for flag in $ax_pthread_flags; do
231 ++
232 ++ case $flag in
233 ++ none)
234 ++ AC_MSG_CHECKING([whether pthreads work without any flags])
235 ++ ;;
236 ++
237 ++ -*)
238 ++ AC_MSG_CHECKING([whether pthreads work with $flag])
239 ++ PTHREAD_CFLAGS="$flag"
240 ++ ;;
241 ++
242 ++ pthread-config)
243 ++ AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no])
244 ++ if test x"$ax_pthread_config" = xno; then continue; fi
245 ++ PTHREAD_CFLAGS="`pthread-config --cflags`"
246 ++ PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
247 ++ ;;
248 ++
249 ++ *)
250 ++ AC_MSG_CHECKING([for the pthreads library -l$flag])
251 ++ PTHREAD_LIBS="-l$flag"
252 ++ ;;
253 ++ esac
254 ++
255 ++ save_LIBS="$LIBS"
256 ++ save_CFLAGS="$CFLAGS"
257 ++ LIBS="$PTHREAD_LIBS $LIBS"
258 ++ CFLAGS="$CFLAGS $PTHREAD_CFLAGS $ax_pthread_extra_flags"
259 ++
260 ++ # Check for various functions. We must include pthread.h,
261 ++ # since some functions may be macros. (On the Sequent, we
262 ++ # need a special flag -Kthread to make this header compile.)
263 ++ # We check for pthread_join because it is in -lpthread on IRIX
264 ++ # while pthread_create is in libc. We check for pthread_attr_init
265 ++ # due to DEC craziness with -lpthreads. We check for
266 ++ # pthread_cleanup_push because it is one of the few pthread
267 ++ # functions on Solaris that doesn't have a non-functional libc stub.
268 ++ # We try pthread_create on general principles.
269 ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>
270 ++ static void routine(void *a) { a = 0; }
271 ++ static void *start_routine(void *a) { return a; }],
272 ++ [pthread_t th; pthread_attr_t attr;
273 ++ pthread_create(&th, 0, start_routine, 0);
274 ++ pthread_join(th, 0);
275 ++ pthread_attr_init(&attr);
276 ++ pthread_cleanup_push(routine, 0);
277 ++ pthread_cleanup_pop(0) /* ; */])],
278 ++ [ax_pthread_ok=yes],
279 ++ [])
280 ++
281 ++ LIBS="$save_LIBS"
282 ++ CFLAGS="$save_CFLAGS"
283 ++
284 ++ AC_MSG_RESULT([$ax_pthread_ok])
285 ++ if test "x$ax_pthread_ok" = xyes; then
286 ++ break;
287 ++ fi
288 ++
289 ++ PTHREAD_LIBS=""
290 ++ PTHREAD_CFLAGS=""
291 ++done
292 ++fi
293 ++
294 ++# Various other checks:
295 ++if test "x$ax_pthread_ok" = xyes; then
296 ++ save_LIBS="$LIBS"
297 ++ LIBS="$PTHREAD_LIBS $LIBS"
298 ++ save_CFLAGS="$CFLAGS"
299 ++ CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
300 ++
301 ++ # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
302 ++ AC_MSG_CHECKING([for joinable pthread attribute])
303 ++ attr_name=unknown
304 ++ for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
305 ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
306 ++ [int attr = $attr; return attr /* ; */])],
307 ++ [attr_name=$attr; break],
308 ++ [])
309 ++ done
310 ++ AC_MSG_RESULT([$attr_name])
311 ++ if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
312 ++ AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], [$attr_name],
313 ++ [Define to necessary symbol if this constant
314 ++ uses a non-standard name on your system.])
315 ++ fi
316 ++
317 ++ AC_MSG_CHECKING([if more special flags are required for pthreads])
318 ++ flag=no
319 ++ case ${host_os} in
320 ++ aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";;
321 ++ osf* | hpux*) flag="-D_REENTRANT";;
322 ++ solaris*)
323 ++ if test "$GCC" = "yes"; then
324 ++ flag="-D_REENTRANT"
325 ++ else
326 ++ # TODO: What about Clang on Solaris?
327 ++ flag="-mt -D_REENTRANT"
328 ++ fi
329 ++ ;;
330 ++ esac
331 ++ AC_MSG_RESULT([$flag])
332 ++ if test "x$flag" != xno; then
333 ++ PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
334 ++ fi
335 ++
336 ++ AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],
337 ++ [ax_cv_PTHREAD_PRIO_INHERIT], [
338 ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]],
339 ++ [[int i = PTHREAD_PRIO_INHERIT;]])],
340 ++ [ax_cv_PTHREAD_PRIO_INHERIT=yes],
341 ++ [ax_cv_PTHREAD_PRIO_INHERIT=no])
342 ++ ])
343 ++ AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"],
344 ++ [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])])
345 ++
346 ++ LIBS="$save_LIBS"
347 ++ CFLAGS="$save_CFLAGS"
348 ++
349 ++ # More AIX lossage: compile with *_r variant
350 ++ if test "x$GCC" != xyes; then
351 ++ case $host_os in
352 ++ aix*)
353 ++ AS_CASE(["x/$CC"],
354 ++ [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6],
355 ++ [#handle absolute path differently from PATH based program lookup
356 ++ AS_CASE(["x$CC"],
357 ++ [x/*],
358 ++ [AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])],
359 ++ [AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])])
360 ++ ;;
361 ++ esac
362 ++ fi
363 ++fi
364 ++
365 ++test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
366 ++
367 ++AC_SUBST([PTHREAD_LIBS])
368 ++AC_SUBST([PTHREAD_CFLAGS])
369 ++AC_SUBST([PTHREAD_CC])
370 ++
371 ++# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
372 ++if test x"$ax_pthread_ok" = xyes; then
373 ++ ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1])
374 ++ :
375 ++else
376 ++ ax_pthread_ok=no
377 ++ $2
378 ++fi
379 ++AC_LANG_POP
380 ++])dnl AX_PTHREAD
381
382 diff --git a/app-emulation/libcacard/libcacard-0.1.2.ebuild b/app-emulation/libcacard/libcacard-0.1.2.ebuild
383 index 78a3c4b..065ba5d 100644
384 --- a/app-emulation/libcacard/libcacard-0.1.2.ebuild
385 +++ b/app-emulation/libcacard/libcacard-0.1.2.ebuild
386 @@ -1,8 +1,10 @@
387 -# Copyright 1999-2014 Gentoo Foundation
388 +# Copyright 1999-2016 Gentoo Foundation
389 # Distributed under the terms of the GNU General Public License v2
390 # $Id$
391
392 -EAPI=4
393 +EAPI=6
394 +
395 +inherit autotools eutils
396
397 DESCRIPTION="Library for emulating CAC cards"
398 HOMEPAGE="http://spice-space.org/"
399 @@ -17,6 +19,14 @@ RDEPEND=">=dev-libs/nss-3.13
400 >=sys-apps/pcsc-lite-1.8"
401 DEPEND="${RDEPEND}
402 virtual/pkgconfig"
403 +PATCHES=(
404 + "${FILESDIR}/${P}-underlinking.patch"
405 +)
406 +
407 +src_prepare() {
408 + default
409 + eautoreconf
410 +}
411
412 src_configure() {
413 # --enable-passthru works only on W$
414 @@ -26,5 +36,5 @@ src_configure() {
415
416 src_install() {
417 default
418 - use static-libs || rm "${D}"/usr/lib*/*.la
419 + prune_libtool_files --all
420 }