File Botan.spec of Package Botan

#
# spec file for package Botan (Version 1.6.4)
#
# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
# package are under the same license as the package itself.
#
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#

# norootforbuild

%define lib_pkg_name libbotan-1_6_4

Name:           Botan
Version:        1.6.4
Release:        2
%define ONLY_BASE_MODS 0
##################################################
# Hardware restrictions on various modules       #
##################################################
%define USE_TM_HARD i586 i686 athlon x86_64 ppc ppc64 alpha sparcv9 sparc64
%define MP64_ARCH   alpha ppc64 ia64 sparc64
##################################################
# Module settings                                #
##################################################
%define BASE_MODS alloc_mmap,ml_unix,es_egd,es_ftw,es_unix,fd_unix,tm_unix
%define EXTRA_MODS comp_bzip2,comp_zlib,mux_pthr,tm_posix,eng_gmp
%ifarch %{USE_TM_HARD}
  %{expand: %%define EXTRA_MODS %{EXTRA_MODS},tm_hard}
%endif
%ifarch %{USE_MP64}
  %{expand: %%define EXTRA_MODS %{EXTRA_MODS},mp_asm64}
%endif
%ifarch x86
  %{expand: %%define EXTRA_MODS %{EXTRA_MODS},mp_ia32,alg_ia32}
%endif
%ifarch x86_64
  %{expand: %%define EXTRA_MODS %{EXTRA_MODS},mp_amd64,alg_amd64}
%endif
%if %{ONLY_BASE_MODS}
  %define MODULES %{BASE_MODS}
%else
  %define MODULES %{BASE_MODS},%{EXTRA_MODS}
%endif
Url:            http://botan.randombit.net
Summary:        A C++ Crypto Library
License:        BSD 3-Clause
AutoReqProv:    on
Prefix:         /usr
Group:          Development/Libraries/C and C++
Source:         %{name}-%{version}.tar.bz2
Patch0:         Botan-inttypes.patch
Patch1:         Botan-ull_constants.patch.bz2
Patch2:         Botan-no_fpermissive.patch
Patch3:         Botan-no_cpu_tuning.patch
Patch4:         Botan-no_executable_stack.patch
Patch5:         Botan-missing_sentinel.patch
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
%if ! %{ONLY_BASE_MODS}
Requires:       zlib, bzip2 >= 1.0.2, gmp >= 4.1
BuildRequires:  bzip2 >= 1.0.2 gmp-devel >= 4.1 zlib-devel
BuildRequires:  gcc-c++ gmp-devel libbz2-devel
%endif

%description
Botan is a C++ library that provides support for many common
cryptographic operations, including encryption, authentication, and
X.509v3 certificates and CRLs. A wide variety of algorithms is
supported, including RSA, DSA, DES, AES, MD5, and SHA-1.



Authors:
--------
    Jack Lloyd <lloyd@randombit.net>

%package  -n    libbotan-1_6_4
License:        BSD 3-Clause
Summary:        A C++ Crypto Library
Group:          Development/Libraries/C and C++
#Rename done for openSUSE 11.0
Provides:       Botan = %{version}
Obsoletes:      Botan < %{version}

%description -n libbotan-1_6_4
Botan is a C++ library that provides support for many common
cryptographic operations, including encryption, authentication, and
X.509v3 certificates and CRLs. A wide variety of algorithms is
supported, including RSA, DSA, DES, AES, MD5, and SHA-1.



Authors:
--------
    Jack Lloyd <lloyd@randombit.net>

%package  -n    libbotan-devel
License:        BSD 3-Clause
Summary:        Development files for Botan
Group:          Development/Libraries/C and C++
Requires:       libbotan-1_6_4 = %{version}
Requires:       gmp-devel libbz2-devel
Provides:       Botan-devel = %{version}
Obsoletes:      Botan-devel < %{version}

%description -n libbotan-devel
This package contains the header files and libraries needed to develop
programs that use the Botan library.



Authors:
--------
    Name: Jack Lloyd <lloyd@randombit.net>

%prep
%setup -q
%patch0
%patch1
%patch2
%patch3
%patch4
%patch5

%build
%define botan_docdir %{_defaultdocdir}/%{name}
%define common_config_flags --libdir=%{_lib} --noauto --modules=%{MODULES}
%ifarch %arm
./configure.pl %{common_config_flags} gcc-%{_target_os}-arm3
%else
./configure.pl %{common_config_flags} gcc-%{_target_os}-%{_target_cpu}
%endif
make LANG_FLAGS+="%{optflags}" DOCDIR=%{_defaultdocdir}/%{name} shared static

%install
make DOCDIR=%{buildroot}/%{botan_docdir} OWNER=$(id -u) GROUP=$(id -g) INSTALLROOT="%{buildroot}%{prefix}" install
rm -rf %{buildroot}/usr/share/doc/Botan-1.6.1
rm -f %{buildroot}/%{botan_docdir}/fips140.tex

%clean
rm -rf %{buildroot}

%post -n libbotan-1_6_4 -p /sbin/ldconfig

%postun -n libbotan-1_6_4 -p /sbin/ldconfig

%files -n libbotan-1_6_4
%defattr(-,root,root)
%docdir %{botan_docdir}
%{botan_docdir}/license.txt
%{botan_docdir}/readme.txt
%{botan_docdir}/log.txt
%{botan_docdir}/thanks.txt
%{botan_docdir}/credits.txt
%{botan_docdir}/pgpkeys.asc
%{botan_docdir}/info.txt
%{_libdir}/libbotan-*.so

%files -n libbotan-devel
%defattr(-,root,root)
%docdir %{botan_docdir}
%dir %{botan_docdir}
%{botan_docdir}/api.pdf
%{botan_docdir}/api.tex
%{botan_docdir}/tutorial.pdf
%{botan_docdir}/tutorial.tex
%{botan_docdir}/todo.txt
%{_libdir}/libbotan.so
%{_libdir}/libbotan.a
%{_includedir}/botan/
%{_bindir}/botan-config

%changelog
* Mon Apr 07 2008 pth@suse.de
- No macros for package name.
* Thu Apr 03 2008 pth@suse.de
- Update to 1.6.4. While the included fix is uninteresting for
  Linux, it makes it easier to rename the package once again to
  its old name:
  * Fix a compilation problem with Visual Studio C++ 2003
* Fri Aug 03 2007 dmueller@suse.de
- update to 1.6.3:
  * fixes various multithreading issues
* Thu Jun 21 2007 dmueller@suse.de
- update to 1.6.2:
  * Remove a call to abort() that crept into production
* Mon Apr 23 2007 dmueller@suse.de
- fix -devel package requires
* Sat Mar 24 2007 aj@suse.de
- Add libbz2-devel to BuildRequires.
* Fri Mar 09 2007 pth@suse.de
- Update to 1.6.1. Changes since 1.4.10:
  * Compilation fixes for the bzip2, zlib, and GNU MP modules
  * Better support for Intel C++ and EKOpath C++ on x86-64
  * Cleanups in the initialization routines
  * Add some x86-64 assembly for multiply-add
  * Fix problems generating very small (below 384 bit) RSA keys
  * More improvements to the Python bindings
  * Removed the Algorithm base class
  * Various cleanups in the public key inheritance hierarchy
  * Added x86 assembler implementations of Serpent and low-level MPI code
  * Optimizations for the SHA-1 x86 assembler
  * Various improvements to the Python wrappers
  * Add x86 assembler versions of MD4, MD5, and SHA-1
  * Expand InitializerOptions' language to support on/off switches
  * Fix possible resource leaks in the mmap allocator
  * Slightly optimized buffering in MDx_HashFunction
  * Initialization failures are dealt with somewhat better
  * Add an example implementing Pollard's Rho algorithm
  * Expand the xor_ciph example to support longer keys
  * Fixed bitrot in the AEP engine
  * Fix support for marking certificate/CRL extensions as critical
  * Significant cleanups in the library state / initialization code
  * LibraryInitializer takes an explicit InitializerOptions object
  * Make Mutex_Factory an abstract class, add Default_Mutex_Factory
  * Change configuration access to using global_state()
  * Add support for global named mutexes throughout the library
  * Add some STL wrappers for the delete operator
  * Change how certificates are created to be more flexible and general
  * Many internal cleanups to the X.509 cert/CRL code
  * Allow for application code to support new X.509 extensions
  * Change the return type of X509_Certificate::{subject,issuer}_info
  * Allow for alternate character set handling mechanisms
  * Fix a bug that was slowing squaring performance somewhat
  * Fix a very hard to hit overflow bug in the C version of word3_muladd
  * Minor cleanups to the assembler modules
  * Further, major changes to the BER/DER coding system
  * Updated the Qt mutex module to use Mutex_Factory
  * Moved the library global state object into an anonymous namespace
  * The low-level DER/BER coding system was redesigned and rewritten
  * Portions of the certificate code were cleaned up internally
  * Use macros to substantially clean up the GCC assembly code
  * Some slight cleanups in X509_PublicKey::key_id
  * Fixed a potential infinite loop in the memory pool code (Matt Johnston)
  * Made Pooling_Allocator::Memory_Block an actual class of sorts
  * Some small optimizations to the division and modulo computations
  * Cleaned up the implementation of some of the BigInt operators
  * Reduced use of dynamic memory allocation in low-level BigInt functions
  * A few simplifications in the Randpool mixing function
  * Removed power(), as it was not particularly useful (or fast)
  * Fixed some annoying bugs in the benchmark code
  * Added a real credits file
  * Integrated x86 and amd64 assembly code, contributed by Luca Piccarreta
  * Fixed a memory access off-by-one in the Karatsuba code
  * Changed Pooling_Allocator's free list search to a log(N) algorithm
  * Merged ModularReducer with its only subclass, Barrett_Reducer
  * Fixed sign-handling bugs in some of the division and modulo code
  * Renamed the module description files to modinfo.txt
  * Further cleanups in the initialization code
  * Removed BigInt::add and BigInt::sub
  * Merged all the division-related functions into just divide()
  * Modified the <mp_asmi.h> functions to allow for better optimizations
  * Made the number of bits polled from an EntropySource user configurable
  * Avoid including <algorithm> in <botan/secmem.h>
  * Removed some dead code from bigint_modop
  * Fix the definition of same_mem
  * Many optimizations in the low-level multiple precision integer code
  * Added hooks for assembly implementations of the MPI code
  * Support for the X.509 issuer alternative name extension in new certs
  * Fixed a bug in the decompression modules; found and patched by Matt Johnston
  * mem_pool.cpp was using std::set iterators instead of std::multiset ones
  * Fixed a bug in X509_CA preventing users from disabling particular extensions
  * Fixed the mp_asm64 module, which was entirely broken in 1.5.2
  * Fixed an off-by-one memory read in MISTY1::key()
  * Fixed a nasty memory leak in Output_Buffers::retire()
  * Reimplemented the memory allocator from scratch
  * Improved memory caching in Montgomery exponentiation
  * Optimizations for multiple precision addition and subtraction
  * Fixed a build problem in the hardware timer module on 64-bit PowerPC
  * Changed default Karatsuba cutoff to 12 words (was 14)
  * Removed MemoryRegion::bits(), which was unused and incorrect
  * Changed maximum HMAC keylength to 1024 bits
  * Various minor Makefile and build system changes
  * Avoid using std::min in <secmem.h> to bypass Windows libc macro pollution
  * Switched checks/clock.cpp back to using clock() by default
  * Removed the Default_Mutex's unused clone() member function
  * Implemented Montgomery exponentiation
  * Implemented generalized Karatsuba multiplication and squaring
  * Implemented Comba squaring for 4, 6, and 8 word inputs
  * Added new Modular_Exponentiator and Power_Mod classes
  * Removed FixedBase_Exp and FixedExponent_Exp
  * Fixed a performance regression in get_allocator
  * Engines can now offer S2K algorithms and block cipher padding methods
  * Merged the remaining global 'algolist' code into Default_Engine
  * The low-level MPI code is linked as C again
  * Replaced BigInt's get_nibble with the more general get_substring
  * Moved all global/shared library state into a single object
  * Mutex objects are created through mutex factories instead of a global
  * Removed ::get_mutex(), ::initialize_mutex(), and Mutex::clone()
  * Removed the RNG_Quality enum entirely
  * There is now only a single global-use PRNG
  * Removed the no_aliases and no_oids options for LibraryInitializer
  * Removed the deprecated algorithms SEAL, ISAAC, and HAVAL
  * Fixed an off-by-one memory read in MISTY1::key()
  * Fixed a nasty memory leak in Output_Buffers::retire()
  * Changed maximum HMAC keylength to 1024 bits
  * Changed Whirlpool diffusion matrix to match updated algorithm spec
  * Added a constructor to DataSource_Memory taking a std::string
  * Placing the same Filter in multiple Pipes triggers an exception
  * The configure script accepts --docdir and --libdir
  * Merged doc/rngs.txt into the main API document
* Wed Jan 25 2006 mls@suse.de
- converted neededforbuild to BuildRequires
* Sat Jan 14 2006 kukuk@suse.de
- Add gmp-devel to nfb
* Mon Dec 19 2005 pth@suse.de
- Update to 1.4.10
  - Bunch of cleanups and bugfixes added
  - Add KASUMI, the block cipher used in 3G phones
  - Binary file I/O can now be used with the data sink and source classes.
  - Pipe has been refactored
  - A possible memory leak in the OpenSSL engine was also fixed.
  - Randpool has been modified to use HMAC instead of a plain hash
  as its mixing operation.
* Wed Nov 23 2005 pth@suse.de
- Update to 1.4.9
  - new algorithms including MARS, SEED, Turing, and FORK-256.
  - include optimizations for RC6 and Twofish
  - much better support for 64-bit PowerPC
  - support for high resolution hardware timers on most PowerPC systems
* Tue Nov 15 2005 uli@suse.de
- fixed to build on ARM
* Thu Sep 15 2005 pth@suse.de
- Initial package
- Use ISO C99 stdint.h to define integer types.
- Mark 64 bit hex constants as ULL to shut up the compiler.