Accepting request 99532 from home:elvigia:branches:graphics

- remove libjpeg-devel and zlib-devel from libtiff-devel
  requires as they are _not_ required to use the library.
  Now, this _will_ break packages with wrong buildrequires
  for good.

- Hide private symbols using gcc visibility, this has been
  applied only to functions that the source code clearly states
  that are internal to the library.
- Run spec cleaner

OBS-URL: https://build.opensuse.org/request/show/99532
OBS-URL: https://build.opensuse.org/package/show/graphics/tiff?expand=0&rev=35
This commit is contained in:
OBS User mrdocs 2012-01-10 04:08:48 +00:00 committed by Git OBS Bridge
parent aaadf64353
commit 0c5e91f27a
3 changed files with 161 additions and 31 deletions

119
tiff-visibility.patch Normal file
View File

@ -0,0 +1,119 @@
--- libtiff/tiffiop.h.orig
+++ libtiff/tiffiop.h
@@ -70,6 +70,8 @@ typedef TIFF_UINT64_T uint64;
#include "tiffio.h"
#include "tif_dir.h"
+#pragma GCC visibility push(hidden)
+
#ifndef STRIP_SIZE_DEFAULT
# define STRIP_SIZE_DEFAULT 8192
#endif
@@ -341,6 +343,7 @@ extern TIFFCodec _TIFFBuiltinCODECS[];
#if defined(__cplusplus)
}
#endif
+#pragma GCC visibility pop
#endif /* _TIFFIOP_ */
/* vim: set ts=8 sts=8 sw=8 noet: */
--- libtiff/tif_predict.h.orig
+++ libtiff/tif_predict.h
@@ -30,6 +30,8 @@
* ``Library-private'' Support for the Predictor Tag
*/
+#pragma GCC visibility push(hidden)
+
/*
* Codecs that want to support the Predictor tag must place
* this structure first in their private state block so that
@@ -65,6 +67,7 @@ extern int TIFFPredictorCleanup(TIFF*);
#if defined(__cplusplus)
}
#endif
+#pragma GCC visibility pop
#endif /* _TIFFPREDICT_ */
/* vim: set ts=8 sts=8 sw=8 noet: */
--- libtiff/tif_dir.h.orig
+++ libtiff/tif_dir.h
@@ -29,7 +29,7 @@
/*
* ``Library-private'' Directory-related Definitions.
*/
-
+#pragma GCC visibility push(hidden)
/*
* Internal format of a TIFF directory entry.
*/
@@ -199,6 +199,7 @@ extern TIFFFieldInfo* _TIFFCreateAnonFi
#if defined(__cplusplus)
}
#endif
+#pragma GCC visibility pop
#endif /* _TIFFDIR_ */
/* vim: set ts=8 sts=8 sw=8 noet: */
--- tools/Makefile.am.orig
+++ tools/Makefile.am
@@ -62,6 +62,8 @@ if HAVE_RPATH
AM_LDFLAGS = $(LIBDIR)
endif
+AM_CFLAGS = -fwhole-program
+
bmp2tiff_SOURCES = bmp2tiff.c
bmp2tiff_LDADD = $(LIBTIFF) $(LIBPORT)
@@ -86,7 +88,9 @@ ras2tiff_LDADD = $(LIBTIFF) $(LIBPORT)
raw2tiff_SOURCES = raw2tiff.c
raw2tiff_LDADD = $(LIBTIFF) $(LIBPORT)
-rgb2ycbcr_SOURCES = rgb2ycbcr.c
+#uses private functions.
+rgb2ycbcr_CFLAGS = -fno-whole-program
+rgb2ycbcr_SOURCES = rgb2ycbcr.c $(top_srcdir)/libtiff/tif_aux.c
rgb2ycbcr_LDADD = $(LIBTIFF) $(LIBPORT)
thumbnail_SOURCES = thumbnail.c
@@ -100,8 +104,9 @@ tiff2pdf_LDADD = $(LIBTIFF) $(LIBPORT)
tiff2ps_SOURCES = tiff2ps.c
tiff2ps_LDADD = $(LIBTIFF) $(LIBPORT)
-
-tiff2rgba_SOURCES = tiff2rgba.c
+# Uses private functions
+tiff2rgba_CFLAGS = -fno-whole-program
+tiff2rgba_SOURCES = tiff2rgba.c $(top_srcdir)/libtiff/tif_aux.c
tiff2rgba_LDADD = $(LIBTIFF) $(LIBPORT)
tiffcmp_SOURCES = tiffcmp.c
--- port/dummy.c.orig
+++ port/dummy.c
@@ -4,6 +4,7 @@
* Dummy function, just to be ensure that the library always will be created.
*/
+__attribute__ ((visibility ("hidden")))
void
libport_dummy_function()
{
--- port/libport.h.orig
+++ port/libport.h
@@ -25,13 +25,13 @@
#ifndef _LIBPORT_
#define _LIBPORT_
-
+__attribute__ ((visibility ("hidden")))
int getopt(int argc, char * const argv[], const char *optstring);
extern char *optarg;
extern int opterr;
extern int optind;
extern int optopt;
-
+__attribute__ ((visibility ("hidden")))
int strcasecmp(const char *s1, const char *s2);
#ifndef HAVE_GETOPT

View File

@ -1,3 +1,19 @@
-------------------------------------------------------------------
Tue Jan 10 01:21:45 UTC 2012 - crrodriguez@opensuse.org
- remove libjpeg-devel and zlib-devel from libtiff-devel
requires as they are _not_ required to use the library.
Now, this _will_ break packages with wrong buildrequires
for good.
-------------------------------------------------------------------
Tue Jan 10 00:55:53 UTC 2012 - crrodriguez@opensuse.org
- Hide private symbols using gcc visibility, this has been
applied only to functions that the source code clearly states
that are internal to the library.
- Run spec cleaner
------------------------------------------------------------------- -------------------------------------------------------------------
Wed Nov 23 09:31:16 UTC 2011 - coolo@suse.com Wed Nov 23 09:31:16 UTC 2011 - coolo@suse.com

View File

@ -1,7 +1,7 @@
# #
# spec file for package tiff # spec file for package tiff
# #
# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany. # Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
# #
# All modifications and additions to the file contributed by third parties # All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed # remain the property of their copyright owners, unless otherwise agreed
@ -18,25 +18,32 @@
Name: tiff Name: tiff
BuildRequires: gcc-c++ libjpeg-devel libtool zlib-devel
License: PERMISSIVE-OSI-COMPLIANT ; MIT License (or similar) License: PERMISSIVE-OSI-COMPLIANT ; MIT License (or similar)
Group: Productivity/Graphics/Convertors Group: Productivity/Graphics/Convertors
AutoReqProv: on BuildRequires: gcc-c++
BuildRequires: libjpeg-devel
BuildRequires: libtool
BuildRequires: zlib-devel
# bug437293 # bug437293
%ifarch ppc64 %ifarch ppc64
Obsoletes: tiff-64bit Obsoletes: tiff-64bit
%endif %endif
#
Url: http://www.remotesensing.org/libtiff/
Version: 3.9.5 Version: 3.9.5
Release: 6 Release: 6
Summary: Tools for Converting from and to the Tiff Format Summary: Tools for Converting from and to the Tiff Format
#
Url: http://www.remotesensing.org/libtiff/
Source: tiff-%{version}.tar.bz2 Source: tiff-%{version}.tar.bz2
Source2: README.SUSE Source2: README.SUSE
Source3: baselibs.conf Source3: baselibs.conf
# PATCH-MISSING-TAG -- See http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch2: tiff-%{version}-seek.patch Patch2: tiff-%{version}-seek.patch
# PATCH-MISSING-TAG -- See http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch3: tiff-%{version}-tiff2pdf-colors.patch Patch3: tiff-%{version}-tiff2pdf-colors.patch
# PATCH-MISSING-TAG -- See http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch9: tiff-%{version}-dont-fancy-upsampling.patch Patch9: tiff-%{version}-dont-fancy-upsampling.patch
# PATCH-MISSING-TAG -- See http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
Patch10: tiff-visibility.patch
# FYI: this issue is solved another way # FYI: this issue is solved another way
# http://bugzilla.maptools.org/show_bug.cgi?id=1985#c1 # http://bugzilla.maptools.org/show_bug.cgi?id=1985#c1
# Patch9: tiff-%{version}-lzw-CVE-2009-2285.patch # Patch9: tiff-%{version}-lzw-CVE-2009-2285.patch
@ -46,19 +53,12 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-build
This package contains the library and support programs for the TIFF This package contains the library and support programs for the TIFF
image format. image format.
Authors:
--------
Sam Leffler <sam@engr.sgi.com>
%package -n libtiff3 %package -n libtiff3
License: PERMISSIVE-OSI-COMPLIANT ; MIT License (or similar) License: PERMISSIVE-OSI-COMPLIANT ; MIT License (or similar)
Summary: The Tiff Library (with JPEG and compression support) Summary: The Tiff Library (with JPEG and compression support)
Group: System/Libraries Group: System/Libraries
Provides: libtiff = %{version} Provides: libtiff = %{version}
Obsoletes: libtiff < %{version} Obsoletes: libtiff < %{version}
AutoReqProv: on
# bug437293 # bug437293
%ifarch ppc64 %ifarch ppc64
Obsoletes: libtiff-64bit Obsoletes: libtiff-64bit
@ -70,17 +70,13 @@ This package includes the tiff libraries. To link a program with
libtiff, you will have to add -ljpeg and -lz to include the necessary libtiff, you will have to add -ljpeg and -lz to include the necessary
libjpeg and libz in the linking process. libjpeg and libz in the linking process.
Authors:
--------
Sam Leffler <sam@engr.sgi.com>
%package -n libtiff-devel %package -n libtiff-devel
License: PERMISSIVE-OSI-COMPLIANT License: PERMISSIVE-OSI-COMPLIANT
Summary: Development Tools for Programs which will use the libtiff Library Summary: Development Tools for Programs which will use the libtiff Library
Group: Development/Libraries/C and C++ Group: Development/Libraries/C and C++
Requires: libtiff3 = %{version} libjpeg-devel zlib-devel libstdc++-devel glibc-devel Requires: glibc-devel
Requires: libstdc++-devel
Requires: libtiff3 = %{version}
# bug437293 # bug437293
%ifarch ppc64 %ifarch ppc64
Obsoletes: tiff-devel-64bit Obsoletes: tiff-devel-64bit
@ -92,13 +88,12 @@ This package contains the header files and static libraries for
developing programs which will manipulate TIFF format image files using developing programs which will manipulate TIFF format image files using
the libtiff library. the libtiff library.
%prep %prep
%setup -q %setup -q
%patch2 %patch2
%patch3 -p1 %patch3 -p1
%patch9 -p1 %patch9 -p1
%patch10
find -type d -name "CVS" | xargs rm -rfv find -type d -name "CVS" | xargs rm -rfv
find -type d | xargs chmod 755 find -type d | xargs chmod 755
@ -109,17 +104,17 @@ autoreconf --force --install -v
make %{?_smp_mflags} make %{?_smp_mflags}
%install %install
mkdir -p $RPM_BUILD_ROOT/{%{_mandir}/{man1,man3},usr/{bin,lib,include}} mkdir -p %{buildroot}/{%{_mandir}/{man1,man3},usr/{bin,lib,include}}
make install DESTDIR=$RPM_BUILD_ROOT %make_install
for f in `find $RPM_BUILD_ROOT/%{_mandir} -type f -print ` ; do for f in `find %{buildroot}/%{_mandir} -type f -print ` ; do
if [ `wc -l <$f` -eq 1 ] && grep -q "^\.so " $f ; then if [ `wc -l <$f` -eq 1 ] && grep -q "^\.so " $f ; then
linkto=`sed -e "s|^\.so ||" $f` linkto=`sed -e "s|^\.so ||" $f`
[ -f "`dirname $f`/$linkto" ] && ln -sf "$linkto" $f [ -f "`dirname $f`/$linkto" ] && ln -sf "$linkto" $f
fi fi
done done
cp %{S:2} . cp %{SOURCE2} .
rm -rf $RPM_BUILD_ROOT/usr/share/doc/tiff* rm -rf %{buildroot}%{_datadir}/doc/tiff*
rm -f $RPM_BUILD_ROOT/%{_libdir}/*.la rm -f %{buildroot}/%{_libdir}/*.la
find html -name "Makefile*" | xargs rm find html -name "Makefile*" | xargs rm
%post -n libtiff3 -p /sbin/ldconfig %post -n libtiff3 -p /sbin/ldconfig
@ -127,11 +122,11 @@ find html -name "Makefile*" | xargs rm
%postun -n libtiff3 -p /sbin/ldconfig %postun -n libtiff3 -p /sbin/ldconfig
%clean %clean
rm -rf $RPM_BUILD_ROOT rm -rf %{buildroot}
%files %files
%defattr(-,root,root) %defattr(-,root,root)
/usr/bin/* %{_bindir}/*
%doc html %doc html
%doc README COPYRIGHT VERSION ChangeLog TODO RELEASE-DATE %doc README COPYRIGHT VERSION ChangeLog TODO RELEASE-DATE
%doc %{_mandir}/man1/* %doc %{_mandir}/man1/*
@ -143,7 +138,7 @@ rm -rf $RPM_BUILD_ROOT
%files -n libtiff-devel %files -n libtiff-devel
%defattr(-,root,root) %defattr(-,root,root)
/usr/include/* %{_includedir}/*
%{_libdir}/*.so %{_libdir}/*.so
%doc %{_mandir}/man3/* %doc %{_mandir}/man3/*