--- /dev/null
+--- STLport-5.1.0/stlport/ext/type_traits.h.orig 1970-01-01 00:00:00.000000000 +0000
++++ STLport-5.1.0/stlport/ext/type_traits.h 2006-12-18 12:56:32.000000000 +0000
+@@ -0,0 +1,200 @@
++// -*- C++ -*-
++
++// Copyright (C) 2005, 2006 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library is free
++// software; you can redistribute it and/or modify it under the terms
++// of the GNU General Public License as published by the Free Software
++// Foundation; either version 2, or (at your option) any later
++// version.
++
++// This library is distributed in the hope that it will be useful, but
++// WITHOUT ANY WARRANTY; without even the implied warranty of
++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++// General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING. If not, write to the Free
++// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
++// USA.
++
++// As a special exception, you may use this file as part of a free
++// software library without restriction. Specifically, if other files
++// instantiate templates or use macros or inline functions from this
++// file, or you compile this file and link it with other files to
++// produce an executable, this file does not by itself cause the
++// resulting executable to be covered by the GNU General Public
++// License. This exception does not however invalidate any other
++// reasons why the executable file might be covered by the GNU General
++// Public License.
++
++/** @file ext/type_traits.h
++ * This file is a GNU extension to the Standard C++ Library.
++ */
++
++#ifndef _EXT_TYPE_TRAITS
++#define _EXT_TYPE_TRAITS 1
++
++#pragma GCC system_header
++
++#include <cstddef>
++#include <utility>
++#include <limits>
++#include <iosfwd> // std::streamsize
++#include <bits/cpp_type_traits.h>
++
++_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
++
++ // Define a nested type if some predicate holds.
++ template<bool, typename>
++ struct __enable_if
++ { };
++
++ template<typename _Tp>
++ struct __enable_if<true, _Tp>
++ { typedef _Tp __type; };
++
++
++ // Conditional expression for types. If true, first, if false, second.
++ template<bool _Cond, typename _Iftrue, typename _Iffalse>
++ struct __conditional_type
++ { typedef _Iftrue __type; };
++
++ template<typename _Iftrue, typename _Iffalse>
++ struct __conditional_type<false, _Iftrue, _Iffalse>
++ { typedef _Iffalse __type; };
++
++
++ // Given an integral builtin type, return the corresponding unsigned type.
++ template<typename _Tp>
++ struct __add_unsigned
++ {
++ private:
++ typedef __enable_if<std::__is_integer<_Tp>::__value, _Tp> __if_type;
++
++ public:
++ typedef typename __if_type::__type __type;
++ };
++
++ template<>
++ struct __add_unsigned<char>
++ { typedef unsigned char __type; };
++
++ template<>
++ struct __add_unsigned<signed char>
++ { typedef unsigned char __type; };
++
++ template<>
++ struct __add_unsigned<short>
++ { typedef unsigned short __type; };
++
++ template<>
++ struct __add_unsigned<int>
++ { typedef unsigned int __type; };
++
++ template<>
++ struct __add_unsigned<long>
++ { typedef unsigned long __type; };
++
++ template<>
++ struct __add_unsigned<long long>
++ { typedef unsigned long long __type; };
++
++ // Declare but don't define.
++ template<>
++ struct __add_unsigned<bool>;
++
++ template<>
++ struct __add_unsigned<wchar_t>;
++
++
++ // Given an integral builtin type, return the corresponding signed type.
++ template<typename _Tp>
++ struct __remove_unsigned
++ {
++ private:
++ typedef __enable_if<std::__is_integer<_Tp>::__value, _Tp> __if_type;
++
++ public:
++ typedef typename __if_type::__type __type;
++ };
++
++ template<>
++ struct __remove_unsigned<char>
++ { typedef signed char __type; };
++
++ template<>
++ struct __remove_unsigned<unsigned char>
++ { typedef signed char __type; };
++
++ template<>
++ struct __remove_unsigned<unsigned short>
++ { typedef short __type; };
++
++ template<>
++ struct __remove_unsigned<unsigned int>
++ { typedef int __type; };
++
++ template<>
++ struct __remove_unsigned<unsigned long>
++ { typedef long __type; };
++
++ template<>
++ struct __remove_unsigned<unsigned long long>
++ { typedef long long __type; };
++
++ // Declare but don't define.
++ template<>
++ struct __remove_unsigned<bool>;
++
++ template<>
++ struct __remove_unsigned<wchar_t>;
++
++
++ // Compile time constants for builtin types.
++ // Sadly std::numeric_limits member functions cannot be used for this.
++#define __glibcxx_signed(_Tp) ((_Tp)(-1) < 0)
++#define __glibcxx_digits(_Tp) \
++ (sizeof(_Tp) * __CHAR_BIT__ - __glibcxx_signed(_Tp))
++
++#define __glibcxx_min(_Tp) \
++ (__glibcxx_signed(_Tp) ? (_Tp)1 << __glibcxx_digits(_Tp) : (_Tp)0)
++
++#define __glibcxx_max(_Tp) \
++ (__glibcxx_signed(_Tp) ? ((_Tp)1 << __glibcxx_digits(_Tp)) - 1 : ~(_Tp)0)
++
++ template<typename _Value>
++ struct __numeric_traits_integer
++ {
++ // Only integers for initialization of member constant.
++ static const _Value __min = __glibcxx_min(_Value);
++ static const _Value __max = __glibcxx_max(_Value);
++ };
++
++ template<typename _Value>
++ const _Value __numeric_traits_integer<_Value>::__min;
++
++ template<typename _Value>
++ const _Value __numeric_traits_integer<_Value>::__max;
++
++ template<typename _Value>
++ struct __numeric_traits_floating
++ {
++ // Only floating point types. See N1822.
++ static const _STLP_STD::streamsize __max_digits10 =
++ 2 + _STLP_STD::numeric_limits<_Value>::digits * 3010/10000;
++ };
++
++ template<typename _Value>
++ const _STLP_STD::streamsize __numeric_traits_floating<_Value>::__max_digits10;
++
++ template<typename _Value>
++ struct __numeric_traits
++ : public __conditional_type<std::__is_integer<_Value>::__value,
++ __numeric_traits_integer<_Value>,
++ __numeric_traits_floating<_Value> >::__type
++ { };
++
++_GLIBCXX_END_NAMESPACE
++
++#endif
--- /dev/null
+Summary: C++ standard library
+Summary(pl): Biblioteki standardowe C++
+Name: STLport
+Version: 5.1.0
+Release: 2
+Epoch: 2
+License: distributable (see README.gz)
+Group: Libraries
+Source0: http://dl.sourceforge.net/stlport/%{name}-%{version}.tar.bz2
+# Source0-md5: dcf079313e7e0d7870307b74b658bb81
+Patch0: %{name}-endianness.patch
+Patch1: %{name}-gcc420_dirty_hack.patch
+Patch2: %{name}-gcc420.patch
+URL: http://stlport.sourceforge.net/
+BuildRequires: libstdc++-devel >= 5:3.3.2
+BuildRequires: sed >= 4.0
+%requires_eq libstdc++
+BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
+
+%description
+STLport is a multiplatform implementation of C++ Standard Template
+Library based on SGI STL. It's used by e.g. OpenOffice.
+
+%description -l pl
+STLport to wieloplatformowa implementacja standardowej biblioteki
+szablonów (Standard Template Library) C++ oparta na SGI STL. Jest
+u¿ywana m.in. przez OpenOffice.
+
+%package devel
+Summary: STLport heades files, documentation
+Summary(pl): Pliki nag³ówkowe i dokumentacja do STLport
+Group: Development/Libraries
+Requires: %{name} = %{epoch}:%{version}-%{release}
+
+%description devel
+Header files and development documentation for STLport.
+
+%description devel -l pl
+Pliki nag³ówkowe i dokumentacja dla STLport.
+
+%package static
+Summary: Static STLport libraries
+Summary(pl): Biblioteki statyczne do STLport
+Group: Development/Libraries
+Requires: %{name}-devel = %{epoch}:%{version}-%{release}
+
+%description static
+Static STLport libraries.
+
+%description static -l pl
+Biblioteki statyczne do STLport.
+
+%prep
+%setup -q
+%patch0 -p1
+%patch1 -p1
+%patch2 -p1
+
+sed -i -e 's/= -O2$/= %{rpmcflags}/' build/Makefiles/gmake/gcc.mak
+
+%build
+%{__make} -C build/lib -f gcc.mak \
+ release-shared \
+ release-static \
+ CC="%{__cc}" \
+ CXX="%{__cxx}"
+
+%install
+rm -rf $RPM_BUILD_ROOT
+install -d $RPM_BUILD_ROOT%{_includedir}
+
+%{__make} -C build/lib -f gcc.mak \
+ install-release-shared \
+ install-release-static \
+ INSTALL_BIN_DIR=$RPM_BUILD_ROOT%{_bindir} \
+ INSTALL_LIB_DIR=$RPM_BUILD_ROOT%{_libdir}
+
+cp -a stlport $RPM_BUILD_ROOT%{_includedir}
+rm -rf $RPM_BUILD_ROOT%{_includedir}/stlport/BC50
+
+# libstlport.so.5 is removed by ldconfig or *something*, so make .so point to real soname
+ln -sf $(cd $RPM_BUILD_ROOT%{_libdir}; echo libstlport.so.*.*.*) \
+ $RPM_BUILD_ROOT%{_libdir}/libstlport.so
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post -p /sbin/ldconfig
+%postun -p /sbin/ldconfig
+
+%files
+%defattr(644,root,root,755)
+%doc README
+%attr(755,root,root) %{_libdir}/libstlport.so.*.*
+# libstlport.so points to this one instead of soname or real lib name
+# to be fixed if nothing tries to dlopen this one (nothing should!)
+%attr(755,root,root) %{_libdir}/libstlport.so.?
+
+%files devel
+%defattr(644,root,root,755)
+%doc doc/{FAQ,*.txt}
+%attr(755,root,root) %{_libdir}/libstlport.so
+%{_includedir}/stlport
+
+%files static
+%defattr(644,root,root,755)
+%{_libdir}/libstlport.a