Hello community, here is the log from the commit of package fontconfig for openSUSE:Factory checked in at 2011-11-08 09:23:52 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/fontconfig (Old) and /work/SRC/openSUSE:Factory/.fontconfig.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "fontconfig", Maintainer is "PGajdos@suse.com" Changes: -------- --- /work/SRC/openSUSE:Factory/fontconfig/fontconfig.changes 2011-10-25 15:53:21.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.fontconfig.new/fontconfig.changes 2011-11-08 09:25:55.000000000 +0100 @@ -1,0 +2,7 @@ +Sun Nov 6 16:00:40 UTC 2011 - crrodriguez@opensuse.org + +- Support symbol visibility features +- Use O_CLOEXEC where needed in libfontconfig, callers may fork() + and we end up leaking library internal fds to their child processes. + +------------------------------------------------------------------- New: ---- fontconfig-ocloexec.patch fontconfig-visibility.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ fontconfig.spec ++++++ --- /var/tmp/diff_new_pack.E5VoDJ/_old 2011-11-08 09:25:56.000000000 +0100 +++ /var/tmp/diff_new_pack.E5VoDJ/_new 2011-11-08 09:25:56.000000000 +0100 @@ -69,6 +69,8 @@ Patch32: usr-share-doc-packages.patch Patch33: bnc438855-make-FcInitReinitialize-work-again.patch Patch34: urw-aliases-whitespaces.patch +Patch35: fontconfig-ocloexec.patch +Patch36: fontconfig-visibility.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build %description @@ -115,8 +117,11 @@ %patch32 -p1 %patch33 -p1 %patch34 -p1 +%patch35 +%patch36 %build +autoreconf -fiv %configure --with-pic --with-arch=%_host_cpu \ %if %suse_version > 1100 --disable-static \ @@ -132,7 +137,7 @@ %else # %endif -make %{?_smp_mflags} +make %{?_smp_mflags} V=1 %check export MALLOC_CHECK_=2 ++++++ fontconfig-ocloexec.patch ++++++ --- configure.in.orig +++ configure.in @@ -58,7 +58,9 @@ dnl ==================================== AM_CONFIG_HEADER(config.h) -AC_PROG_CC +AC_PROG_CC_STDC +AC_USE_SYSTEM_EXTENSIONS +AC_SYS_LARGEFILE AC_PROG_INSTALL AC_PROG_LN_S AC_LIBTOOL_WIN32_DLL @@ -168,7 +170,7 @@ AC_TYPE_PID_T # Checks for library functions. AC_FUNC_VPRINTF AC_FUNC_MMAP -AC_CHECK_FUNCS([geteuid getuid link memmove memset mkstemp strchr strrchr strtol getopt getopt_long sysconf ftruncate chsize rand random lrand48]) +AC_CHECK_FUNCS([geteuid getuid link memmove memset mkstemp mkostemp strchr strrchr strtol getopt getopt_long sysconf ftruncate chsize rand random lrand48]) # # Checks for iconv --- src/fcatomic.c.orig +++ src/fcatomic.c @@ -107,10 +107,14 @@ FcAtomicLock (FcAtomic *atomic) #ifdef HAVE_LINK strcpy ((char *) atomic->tmp, (char *) atomic->file); strcat ((char *) atomic->tmp, TMP_NAME); +#ifdef HAVE_MKOSTEMP + fd = mkostemp ((char *) atomic->tmp, O_CLOEXEC); +#else fd = mkstemp ((char *) atomic->tmp); +#endif if (fd < 0) return FcFalse; - f = fdopen (fd, "w"); + f = fdopen (fd, "we"); if (!f) { close (fd); --- src/fccache.c.orig +++ src/fccache.c @@ -202,7 +202,7 @@ FcDirCacheOpenFile (const FcChar8 *cache if (FcStat (cache_file, file_stat) < 0) return -1; #endif - fd = open((char *) cache_file, O_RDONLY | O_BINARY); + fd = open((char *) cache_file, O_RDONLY | O_BINARY | O_CLOEXEC); if (fd < 0) return fd; #ifndef _WIN32 @@ -909,7 +909,7 @@ FcDirCacheWrite (FcCache *cache, FcConfi if (!FcAtomicLock (atomic)) goto bail3; - fd = open((char *)FcAtomicNewFile (atomic), O_RDWR | O_CREAT | O_BINARY, 0666); + fd = open((char *)FcAtomicNewFile (atomic), O_RDWR | O_CREAT | O_BINARY | O_CLOEXEC, 0666); if (fd == -1) goto bail4; ++++++ fontconfig-visibility.patch ++++++ --- configure.in.orig +++ configure.in @@ -36,7 +36,7 @@ dnl not possible to extract the version AM_INIT_AUTOMAKE(fontconfig, 2.8.0) m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) AM_MAINTAINER_MODE - +AC_CONFIG_MACRO_DIR([m4]) dnl libtool versioning dnl bump revision when fixing bugs @@ -67,7 +67,7 @@ AC_LIBTOOL_WIN32_DLL AM_PROG_LIBTOOL DOLT AC_PROG_MAKE_SET - +gl_VISIBILITY dnl ========================================================================== case "$host" in --- /dev/null +++ m4/visibility.m4 @@ -0,0 +1,78 @@ +# visibility.m4 serial 4 (gettext-0.18.2) +dnl Copyright (C) 2005, 2008, 2010-2011 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +dnl Tests whether the compiler supports the command-line option +dnl -fvisibility=hidden and the function and variable attributes +dnl __attribute__((__visibility__("hidden"))) and +dnl __attribute__((__visibility__("default"))). +dnl Does *not* test for __visibility__("protected") - which has tricky +dnl semantics (see the 'vismain' test in glibc) and does not exist e.g. on +dnl MacOS X. +dnl Does *not* test for __visibility__("internal") - which has processor +dnl dependent semantics. +dnl Does *not* test for #pragma GCC visibility push(hidden) - which is +dnl "really only recommended for legacy code". +dnl Set the variable CFLAG_VISIBILITY. +dnl Defines and sets the variable HAVE_VISIBILITY. + +AC_DEFUN([gl_VISIBILITY], +[ + AC_REQUIRE([AC_PROG_CC]) + CFLAG_VISIBILITY= + HAVE_VISIBILITY=0 + if test -n "$GCC"; then + dnl First, check whether -Werror can be added to the command line, or + dnl whether it leads to an error because of some other option that the + dnl user has put into $CC $CFLAGS $CPPFLAGS. + AC_MSG_CHECKING([whether the -Werror option is usable]) + AC_CACHE_VAL([gl_cv_cc_vis_werror], [ + gl_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -Werror" + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[]], [[]])], + [gl_cv_cc_vis_werror=yes], + [gl_cv_cc_vis_werror=no]) + CFLAGS="$gl_save_CFLAGS"]) + AC_MSG_RESULT([$gl_cv_cc_vis_werror]) + dnl Now check whether visibility declarations are supported. + AC_MSG_CHECKING([for simple visibility declarations]) + AC_CACHE_VAL([gl_cv_cc_visibility], [ + gl_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fvisibility=hidden" + dnl We use the option -Werror and a function dummyfunc, because on some + dnl platforms (Cygwin 1.7) the use of -fvisibility triggers a warning + dnl "visibility attribute not supported in this configuration; ignored" + dnl at the first function definition in every compilation unit, and we + dnl don't want to use the option in this case. + if test $gl_cv_cc_vis_werror = yes; then + CFLAGS="$CFLAGS -Werror" + fi + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[extern __attribute__((__visibility__("hidden"))) int hiddenvar; + extern __attribute__((__visibility__("default"))) int exportedvar; + extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void); + extern __attribute__((__visibility__("default"))) int exportedfunc (void); + void dummyfunc (void) {} + ]], + [[]])], + [gl_cv_cc_visibility=yes], + [gl_cv_cc_visibility=no]) + CFLAGS="$gl_save_CFLAGS"]) + AC_MSG_RESULT([$gl_cv_cc_visibility]) + if test $gl_cv_cc_visibility = yes; then + CFLAG_VISIBILITY="-fvisibility=hidden" + HAVE_VISIBILITY=1 + AC_DEFINE([FcPublic], [__attribute__((__visibility__("default")))], [Makes symbol visible]) + fi + fi + AC_SUBST([CFLAG_VISIBILITY]) + AC_SUBST([HAVE_VISIBILITY]) + AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY], + [Define to 1 or 0, depending whether the compiler supports simple visibility declarations.]) +]) --- src/Makefile.am.orig +++ src/Makefile.am @@ -125,6 +125,7 @@ libfontconfig_la_SOURCES = \ lib_LTLIBRARIES = libfontconfig.la +libfontconfig_la_CFLAGS = $(CFLAG_VISIBILITY) libfontconfig_la_LDFLAGS = \ -version-info @LIBT_VERSION_INFO@ -no-undefined $(export_symbols) --- Makefile.am.orig +++ Makefile.am @@ -21,6 +21,7 @@ # TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. +ACLOCAL_AMFLAGS = -I m4 DOCSRC=@DOCSRC@ SUBDIRS=fontconfig fc-case fc-lang fc-glyphname fc-arch src \ fc-cache fc-cat fc-list fc-match fc-query fc-scan conf.d $(DOCSRC) test -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org