%define build_compat32 %{?_with_compat32:1}%{!?_with_compat32:0}
%define _unpackaged_files_terminate_build 1

# Support for documentation installation As the %%doc macro erases the
# target directory ($RPM_BUILD_ROOT%%{_docdir}/%%{name}), manually
# installed documentation must be saved into a temporary dedicated
# directory.
# XXX note that as of rpm 4.9.1, this shouldn't be necessary anymore.
# We should be able to install directly.
%global boost_docdir __tmp_docdir
%global boost_examplesdir __tmp_examplesdir

%bcond_without context
%bcond_without python3
%bcond_with mpich
%bcond_with openmpi

%ifnarch %{ix86} x86_64
  # Avoid using Boost.Context on non-x86 arches.  s390 is not
  # supported at all and there were _syntax errors_ in PPC code.  This
  # should be enabled on a case-by-case basis as the arches are tested
  # and fixed.
  %bcond_with context
%else
  %bcond_without context
%endif

Summary: Portable C++ source libraries
Summary(ja): ポータブルな C++ ソースライブラリ
Name: libboost
Version: 1.83.0
Release: 1%{?_dist_release}
Group: system
Vendor: Project Vine
Distribution: Vine Linux

License: Boost and MIT and Python
URL: https://www.boost.org/
%global tarver %(echo %{version} | tr '.' '_')
%global shortver %(echo %{version} | sed -e 's/\.[0-9]*$//' | tr '.' '_')
Source0: https://boostorg.jfrog.io/artifactory/main/release/%{version}/source/boost_%{tarver}.tar.bz2
Source1: ver.py
Source2: libboost_thread.so

BuildRequires: bzip2-devel zlib-devel xz-devel
BuildRequires: libzstd-devel
BuildRequires: libicu-devel
BuildRequires: libquadmath-devel
%if %{with python3}
BuildRequires: python3-devel
BuildRequires: python3-numpy
%endif
BuildRoot: %{_tmppath}/%{name}-%{version}-root

# https://bugzilla.redhat.com/show_bug.cgi?id=1541035
Patch0: boost-1.83.0-build-optflags.patch

# https://bugzilla.redhat.com/show_bug.cgi?id=1318383
Patch1: boost-1.83.0-no-rpath.patch

# https://lists.boost.org/Archives/boost/2020/04/248812.php
Patch2: boost-1.73.0-cmakedir.patch

# https://bugzilla.redhat.com/show_bug.cgi?id=1541035
Patch3: boost-1.78.0-b2-build-flags.patch

# https://github.com/boostorg/random/issues/82
Patch4: boost-1.76.0-random-test.patch

# PR https://github.com/boostorg/interval/pull/30
# Fixes narrowing conversions for ppc -
#   https://github.com/boostorg/interval/issues/29
Patch5: boost-1.76.0-fix-narrowing-conversions-for-ppc.patch

# https://bugzilla.redhat.com/show_bug.cgi?id=2178210
# https://github.com/boostorg/phoenix/issues/111
# https://github.com/boostorg/phoenix/issues/115
Patch6: boost-1.81-phoenix-multiple-defn.patch

# https://github.com/boostorg/random/commit/7561690135c67ecf88c2133bad7680ebd2665c36
# https://github.com/boostorg/random/commit/4239d93dad32a11e4c3829050f8070d456266133
Patch8: boost-1.81.0-random-test-fixes.patch

Obsoletes: %{name}-date-time-devel < %{version}
Obsoletes: %{name}-filesystem-devel < %{version}
Obsoletes: %{name}-graph-devel < %{version}
Obsoletes: %{name}-iostreams-devel < %{version}
Obsoletes: %{name}-program-options-devel < %{version}
Obsoletes: %{name}-python-devel < %{version}
Obsoletes: %{name}-regex-devel < %{version}
Obsoletes: %{name}-serialization-devel < %{version}
Obsoletes: %{name}-signals-devel < %{version}
Obsoletes: %{name}-test-devel < %{version}
Obsoletes: %{name}-thread-devel < %{version}
Obsoletes: %{name}-wave-devel < %{version}

%description
Boost provides free peer-reviewed portable C++ source libraries.  The emphasis
is on libraries which work well with the C++ Standard Library.  The libraries
are intended to be widely useful, and are in regular use by thousands of
programmers across a broad spectrum of applications.

A further goal is to establish "existing practice" and provide reference
implementations so that Boost libraries are suitable for eventual
standardization. Ten Boost libraries will be included in the C++ Standards
Committee's upcoming C++ Standard Library Technical Report as a step toward
becoming part of a future C++ Standard.

%description -l ja
Boost は公開レビューされたフリーのC++ライブラリ群です。 C++ の標準ライブラリに
準拠することに重点を置いて開発されています。使いやすく、広い分野のアプリ
ケーションにおいて日常的に多くの開発者に用いられることを目指しています。

さらなる目標は、最終的な標準化に適合した「存在する実例」としてリファレンス実装
を提供することです。10 の Boost ライブラリが、将来の C++ 標準になるための一歩
として、C++ 標準化委員会が策定中の C++ 標準ライブラリテクニカルレポートに
含まれる予定です。


%package atomic
Summary: Run-Time component of boost atomic library
Group: system

%description atomic
Run-Time support for Boost.Atomic, a library that provides atomic data
types and operations on these data types, as well as memory ordering
constraints required for coordinating multiple threads through atomic
variables.


%package chrono
Summary: Run-Time component of boost chrono library
Group: system
Requires: %{name}-system = %{version}-%{release}

%description chrono
Run-Time support for Boost.Chrono, a set of useful time utilities.


%package container
Summary: Run-Time component of boost container library
Group: system
Requires: %{name} = %{version}-%{release}

%description container
Boost.Container library implements several well-known containers,
including STL containers. The aim of the library is to offers advanced
features not present in standard containers or to offer the latest
standard draft features for compilers that comply with C++03.


%if %{with context}
%package context
Summary: Run-Time component of boost context switching library
Group: system
Requires: %{name} = %{version}-%{release}

%description context
Run-Time support for Boost.Context, a foundational library that
provides a sort of cooperative multitasking on a single thread.


%package coroutine
Summary: Run-Time component of boost coroutine library
Group: system
Requires: %{name} = %{version}-%{release}

%description coroutine
Run-Time support for Boost.Coroutine, a library that provides
generalized subroutines which allow multiple entry points for
suspending and resuming execution.
%endif


%package contract
Summary: Run-time component of boost contract library
Group: system
Requires: %{name} = %{version}-%{release}

%description contract
Run-time support for boost contract library.
Contract programming for C++. All contract programming features are supported:
Subcontracting, class invariants, postconditions (with old and return values),
preconditions, customizable actions on assertion failure (e.g., terminate
or throw), optional compilation and checking of assertions, etc,
from Lorenzo Caminiti.


%package date-time
Summary: Set of data-time libralies in %{name}
Group: system
Requires: %{name} = %{version}-%{release}

%description date-time
Set of data-time libralies in %{name}


%package fiber
Summary: Set of fiber libralies in %{name}
Group: system
Requires: %{name} = %{version}-%{release}

%description fiber
Set of fiber libralies in %{name}


%package filesystem
Summary: Set of filesystem operation libralies in %{name}
Group: system
Requires: %{name} = %{version}-%{release}

%description filesystem
Set of filesystem operation libralies in %{name}


%package graph
Summary: Set of Graphviz libralies in %{name}
Group: system
Requires: %{name} = %{version}-%{release}

%description graph
Set of Graphviz libralies in %{name}


%package iostreams
Summary: Set of streams and i/o filters libralies in %{name}
Group: system
Requires: %{name} = %{version}-%{release}

%description iostreams
Set of streams and i/o filters libralies in %{name}


%package json
Summary: Run-time component of boost json library
Group: system

%description json
Run-time support for Boost.Json, a portable C++ library which provides
containers and algorithms that implement JavaScript Object Notation, or
simply "JSON"


%package locale
Summary: Run-Time component of boost locale library
Group: system
Requires: %{name}-chrono = %{version}-%{release}
Requires: %{name}-system = %{version}-%{release}
Requires: %{name}-thread = %{version}-%{release}

%description locale
Run-Time support for Boost.Locale, a set of localization and Unicode
handling tools.


%package log
Summary: Run-Time component of boost logging library
Group: system

%description log
Boost.Log library aims to make logging significantly easier for the
application developer.  It provides a wide range of out-of-the-box
tools along with public interfaces for extending the library.


%package math
Summary: Set of math libralies in %{name}
Group: system
Requires: %{name} = %{version}-%{release}

%description math
Set of math libralies in %{name}


%package nowide
Summary: Standard library functions with UTF-8 API on Windows
Group: system

%description nowide
Run-time support for Boost.Nowide.


%if %{with python3}
%package numpy3
Summary: Run-time component of boost numpy library for Python 3
Group: system
Requires: %{name}-python3%{?_isa} = %{version}-%{release}
Requires: python3-numpy

%description numpy3
The Boost Python Library is a framework for interfacing Python and
C++. It allows you to quickly and seamlessly expose C++ classes,
functions and objects to Python, and vice versa, using no special
tools -- just your C++ compiler.  This package contains run-time
support for the NumPy extension of the Boost Python Library for Python 3.
%endif


%package program-options
Summary: Set of program options libralies in %{name}
Group: system
Requires: %{name} = %{version}-%{release}

%description program-options
Set of program options libralies in %{name}


%package python
Summary: Set of Python libralies in %{name}
Group: programming
Requires: %{name} = %{version}-%{release}

%description python
Set of Python libralies in %{name}


%if %{with python3}
%package python3
Summary: Run-Time component of boost python library for Python 3
Group: programming

%description python3
The Boost Python Library is a framework for interfacing Python and
C++. It allows you to quickly and seamlessly expose C++ classes,
functions and objects to Python, and vice versa, using no special
tools -- just your C++ compiler.  This package contains run-time
support for Boost Python Library compiled for Python 3.


%package python3-devel
Summary: Shared object symbolic links for Boost.Python 3
Group: programming
Requires: %{name}-python3 = %{version}-%{release}
Requires: %{name}-devel = %{version}-%{release}

%description python3-devel
Shared object symbolic links for Python 3 variant of Boost.Python.
%endif


%package random
Summary: Set of random number generation libralies in %{name}
Group: system
Requires: %{name} = %{version}-%{release}

%description random
Set of random number generation libralies in %{name}


%package regex
Summary: Set of regular expression libralies in %{name}
Group: system
Requires: %{name} = %{version}-%{release}

%description regex
Set of regular expression libralies in %{name}


%package serialization
Summary: Set of serialization libralies in %{name}
Group: system
Requires: %{name} = %{version}-%{release}

%description serialization
Set of serialization libralies in %{name}


%package stacktrace
Summary: Call-stack libraries in %{name}
Group: system
Requires: %{name} = %{version}-%{release}

%description stacktrace
simple C++03 library that provides information about call sequence in a
human-readable form


%package system
Summary: Operating system support
Requires: %{name} = %{version}-%{release}

%description system
Operating system support, including the diagnostics support
that will be part of the C++0x standard library


%package test
Summary: Set of libraries for writing and executing tests in %{name}
Group: system
Requires: %{name} = %{version}-%{release}

%description test
Set of libraries for writing and executing tests in %{name}


%package thread
Summary: Set of multi-thread libraries in %{name}
Group: system
Requires: %{name} = %{version}-%{release}

%description thread
Set of multi-thread libraries in %{name}


%package timer
Summary: Run-Time component of boost timer library
Group: system
Requires: %{name}-chrono = %{version}-%{release}
Requires: %{name}-system = %{version}-%{release}

%description timer
"How long does my C++ code take to run?"
The Boost Timer library answers that question and does so portably,
with as little as one #include and one additional line of code.


%package type_erasure
Summary: Run-Time component of boost type erasure library
Group: system
Requires: %{name}-chrono = %{version}-%{release}
Requires: %{name}-system = %{version}-%{release}

%description type_erasure
The Boost.TypeErasure library provides runtime polymorphism in C++
that is more flexible than that provided by the core language.


%package url
Summary: Runtime component of boost URL library

%description url
Run-time support for the Boost.URL library, a Standards conforming
library for parsing Uniform Resource Locators.


%package wave
Summary: Set of wave libraries in %{name}
Group: system
Requires: %{name} = %{version}-%{release}

%description wave
Set of wave libraries in %{name}


%package devel
Summary: Header files and libraries for developing apps which will use %{name}
Summary(ja): %{name}の開発に必要なヘッダファイル及びライブラリ
Group: programming
Requires: %{name} = %{version}-%{release}
Requires: libicu-devel
Requires: libquadmath-devel

%description devel
The %{name}-devel package contains the header files and libraries needed
to develop programs that use the Boost library.

%description devel -l ja
%{name}-devel パッケージは Boost ライブラリを使うプログラムの開発に必要な
ヘッダファイルやライブラリを含んでいます。


%package doc
Summary: Documents of %{name}
Summary(ja): %{name}のドキュメント
Group: documentation
Requires: %{name} = %{version}-%{release}

%description doc
The %{name}-doc package contains the documents about the boost library.

%description doc -l ja
%{name}-doc パッケージは Boost ライブラリについてのドキュメントを含んでいます。


%package build
Summary: Cross platform build system for C++ projects
Group: programming
Requires: %{name}-b2
BuildArch: noarch

%description build
Boost.Build is an easy way to build C++ projects, everywhere. You name
your pieces of executable and libraries and list their sources.  Boost.Build
takes care about compiling your sources with the right options,
creating static and shared libraries, making pieces of executable, and other
chores -- whether you're using GCC, MSVC, or a dozen more supported
C++ compilers -- on Windows, OSX, Linux and commercial UNIX systems.


%package doctools
Summary: Tools for working with Boost documentation
Group: publishing
Requires: docbook-dtds
Requires: docbook-style-xsl

%description doctools
Tools for working with Boost documentation in BoostBook or QuickBook format.


%if %{with openmpi}
%package openmpi
Summary: Run-Time component of Boost.MPI library
Group: system
BuildRequires: openmpi-devel
Requires: %{name}-serialization = %{version}-%{release}

%description openmpi
Run-Time support for Boost.MPI-OpenMPI, a library providing a clean C++
API over the OpenMPI implementation of MPI.


%package openmpi-python
Summary: Python run-time component of Boost.MPI library
Group: programming
Requires: %{name}-openmpi%{?_isa} = %{version}-%{release}
Requires: %{name}-python%{?_isa} = %{version}-%{release}
Requires: %{name}-serialization%{?_isa} = %{version}-%{release}

%description openmpi-python
Python support for Boost.MPI-OpenMPI, a library providing a clean C++
API over the OpenMPI implementation of MPI.

%package graph-openmpi
Summary: Run-Time component of parallel boost graph library
Group: system
Requires: %{name}-openmpi%{?_isa} = %{version}-%{release}
Requires: %{name}-serialization%{?_isa} = %{version}-%{release}

%description graph-openmpi

Run-Time support for the Parallel BGL graph library.  The interface and
graph components are generic, in the same sense as the the Standard
Template Library (STL).  This libraries in this package use OpenMPI
back-end to do the parallel work.
%endif


%if %{with mpich}
%package mpich
Summary: Run-Time component of Boost.MPI library
Group: system
BuildRequires: mpich-devel
Requires: %{name}-serialization%{?_isa} = %{version}-%{release}
Provides: boost-mpich2 = %{version}-%{release}
Obsoletes: boost-mpich2 < 1.53.0-9

%description mpich
Run-Time support for Boost.MPI-MPICH, a library providing a clean C++
API over the MPICH implementation of MPI.


%package mpich-python
Summary: Python run-time component of Boost.MPI library
Group: programming
Requires: %{name}-mpich%{?_isa} = %{version}-%{release}
Requires: %{name}-python%{?_isa} = %{version}-%{release}
Requires: %{name}-serialization%{?_isa} = %{version}-%{release}
Provides: boost-mpich2-python = %{version}-%{release}
Obsoletes: boost-mpich2-python < 1.53.0-9

%description mpich-python
Python support for Boost.MPI-MPICH, a library providing a clean C++
API over the MPICH implementation of MPI.


%package graph-mpich
Summary: Run-Time component of parallel boost graph library
Group: system
Requires: %{name}-mpich%{?_isa} = %{version}-%{release}
Requires: %{name}-serialization%{?_isa} = %{version}-%{release}
Provides: boost-graph-mpich2 = %{version}-%{release}
Obsoletes: boost-graph-mpich2 < 1.53.0-9

%description graph-mpich
Run-Time support for the Parallel BGL graph library.  The interface and
graph components are generic, in the same sense as the the Standard
Template Library (STL).  This libraries in this package use MPICH
back-end to do the parallel work.
%endif


%package b2
Summary: A low-level build tool
Group: programming
# Added for F33, remove for F35:
Obsoletes: libboost-jam < 1.75.0
Provides: libboost-jam = %{version}
Provides: libboost-jam%{?_isa} = %{version}

%description b2
B2 (formerly Boost.Jam) is the low-level build engine tool for Boost.Build.
Historically, B2 was based on on FTJam and on Perforce Jam but has grown
a number of significant features and is now developed independently.


#### compat32 packages ####
%package -n compat32-%{name}-atomic
Summary: Run-Time component of boost atomic library
Group: system

%description -n compat32-%{name}-atomic
Run-Time support for Boost.Atomic, a library that provides atomic data
types and operations on these data types, as well as memory ordering
constraints required for coordinating multiple threads through atomic
variables.


%package -n compat32-%{name}-chrono
Summary: Run-Time component of boost chrono library
Group: system
Requires: compat32-%{name}-system = %{version}-%{release}

%description -n compat32-%{name}-chrono
Run-Time support for Boost.Chrono, a set of useful time utilities.


%package -n compat32-%{name}-container
Summary: Run-Time component of boost container library
Group: system

%description -n compat32-%{name}-container
Boost.Container library implements several well-known containers,
including STL containers. The aim of the library is to offers advanced
features not present in standard containers or to offer the latest
standard draft features for compilers that comply with C++03.


%if %{with context}
%package -n compat32-%{name}-context
Summary: Run-Time component of boost context switching library
Group: system

%description -n compat32-%{name}-context
Run-Time support for Boost.Context, a foundational library that
provides a sort of cooperative multitasking on a single thread.


%package -n compat32-%{name}-coroutine
Summary: Run-Time component of boost coroutine library
Group: system

%description -n compat32-%{name}-coroutine
Run-Time support for Boost.Coroutine, a library that provides
generalized subroutines which allow multiple entry points for
suspending and resuming execution.
%endif


%package -n compat32-%{name}-contract
Summary: Run-time component of boost contract library
Group: system
Requires: %{name} = %{version}-%{release}

%description -n compat32-%{name}-contract
Run-time support for boost contract library.
Contract programming for C++. All contract programming features are supported:
Subcontracting, class invariants, postconditions (with old and return values),
preconditions, customizable actions on assertion failure (e.g., terminate
or throw), optional compilation and checking of assertions, etc,
from Lorenzo Caminiti.


%package -n compat32-%{name}-date-time
Summary: Set of data-time libralies in %{name}
Group: system

%description -n compat32-%{name}-date-time
Set of data-time libralies in %{name}


%package -n compat32-%{name}-fiber
Summary: Set of fiber libralies in %{name}
Group: system

%description -n compat32-%{name}-fiber
Set of filesystem operation libralies in %{name}


%package -n compat32-%{name}-filesystem
Summary: Set of filesystem operation libralies in %{name}
Group: system

%description -n compat32-%{name}-filesystem
Set of filesystem operation libralies in %{name}


%if 0
%package -n compat32-%{name}-graph
Summary: Set of Graphviz libralies in %{name}
Group: system

%description -n compat32-%{name}-graph
Set of Graphviz libralies in %{name}
%endif


%package -n compat32-%{name}-iostreams
Summary: Set of streams and i/o filters libralies in %{name}
Group: system

%description -n compat32-%{name}-iostreams
Set of streams and i/o filters libralies in %{name}


%package -n compat32-%{name}-json
Summary: Run-time component of boost json library
Group: system

%description -n compat32-%{name}-json
Run-time support for Boost.Json, a portable C++ library which provides
containers and algorithms that implement JavaScript Object Notation, or
simply "JSON"


%if 0
%package -n compat32-%{name}-locale
Summary: Run-Time component of boost locale library
Group: system
Requires: compat32-%{name}-chrono = %{version}-%{release}
Requires: compat32-%{name}-system = %{version}-%{release}
Requires: compat32-%{name}-thread = %{version}-%{release}

%description -n compat32-%{name}-locale

Run-Time support for Boost.Locale, a set of localization and Unicode
handling tools.
%endif


%if 0
%package -n compat32-%{name}-log
Summary: Run-Time component of boost logging library
Group: system

%description -n compat32-%{name}-log

Boost.Log library aims to make logging significantly easier for the
application developer.  It provides a wide range of out-of-the-box
tools along with public interfaces for extending the library.
%endif


%package -n compat32-%{name}-math
Summary: Set of math libralies in %{name}
Group: system

%description -n compat32-%{name}-math
Set of math libralies in %{name}


%package -n compat32-%{name}-nowide
Summary: Standard library functions with UTF-8 API on Windows
Group: system

%description -n compat32-%{name}-nowide
Run-time support for Boost.Nowide.


%if %{with python3}
%package -n compat32-%{name}-numpy3
Summary: Run-time component of boost numpy library for Python 3
Group: system
Requires: %{name}-python3%{?_isa} = %{version}-%{release}
Requires: python3-numpy

%description -n compat32-%{name}-numpy3
The Boost Python Library is a framework for interfacing Python and
C++. It allows you to quickly and seamlessly expose C++ classes,
functions and objects to Python, and vice versa, using no special
tools -- just your C++ compiler.  This package contains run-time
support for the NumPy extension of the Boost Python Library for Python 3.
%endif


%package -n compat32-%{name}-program-options
Summary: Set of program options libralies in %{name}
Group: system

%description -n compat32-%{name}-program-options
Set of program options libralies in %{name}


%if 0
%package -n compat32-%{name}-python
Summary: Set of Python libralies in %{name}
Group: programming

%description -n compat32-%{name}-python
Set of Python libralies in %{name}
%endif


%if 0
%if %{with python3}
%package -n compat32-%{name}-python3
Summary: Run-Time component of boost python library for Python 3
Group: programming

%description -n compat32-%{name}-python3
The Boost Python Library is a framework for interfacing Python and
C++. It allows you to quickly and seamlessly expose C++ classes,
functions and objects to Python, and vice versa, using no special
tools -- just your C++ compiler.  This package contains run-time
support for Boost Python Library compiled for Python 3.
%endif
%endif


%package -n compat32-%{name}-random
Summary: Set of random number generation libralies in %{name}
Group: system

%description -n compat32-%{name}-random
Set of random number generation libralies in %{name}


%if 0
%package -n compat32-%{name}-regex
Summary: Set of regular expression libralies in %{name}
Group: system

%description -n compat32-%{name}-regex
Set of regular expression libralies in %{name}
%endif


%package -n compat32-%{name}-serialization
Summary: Set of serialization libralies in %{name}
Group: system

%description -n compat32-%{name}-serialization
Set of serialization libralies in %{name}


%package -n compat32-%{name}-stacktrace
Summary: Call-stack libraries in %{name}
Group: system
Requires: %{name} = %{version}-%{release}

%description -n compat32-%{name}-stacktrace
simple C++03 library that provides information about call sequence in a
human-readable form


%package -n compat32-%{name}-system
Summary: Operating system support
Group: system

%description -n compat32-%{name}-system
Operating system support, including the diagnostics support
that will be part of the C++0x standard library


%package -n compat32-%{name}-test
Summary: Set of libraries for writing and executing tests in %{name}
Group: system

%description -n compat32-%{name}-test
Set of libraries for writing and executing tests in %{name}


%package -n compat32-%{name}-thread
Summary: Set of multi-thread libraries in %{name}
Group: system

%description -n compat32-%{name}-thread
Set of multi-thread libraries in %{name}


%package -n compat32-%{name}-timer
Summary: Run-Time component of boost timer library
Group: system
Requires: compat32-%{name}-chrono = %{version}-%{release}
Requires: compat32-%{name}-system = %{version}-%{release}

%description -n compat32-%{name}-timer
"How long does my C++ code take to run?"
The Boost Timer library answers that question and does so portably,
with as little as one #include and one additional line of code.


%package -n compat32-%{name}-type_erasure
Summary: Run-Time component of boost type erasure library
Group: system
Requires: compat32-%{name}-chrono = %{version}-%{release}
Requires: compat32-%{name}-system = %{version}-%{release}

%description -n compat32-%{name}-type_erasure
The Boost.TypeErasure library provides runtime polymorphism in C++
that is more flexible than that provided by the core language.


%package -n compat32-%{name}-url
Summary: Runtime component of boost URL library

%description -n compat32-%{name}-url
Run-time support for the Boost.URL library, a Standards conforming
library for parsing Uniform Resource Locators.


%package -n compat32-%{name}-wave
Summary: Set of wave libraries in %{name}
Group: system

%description -n compat32-%{name}-wave
Set of wave libraries in %{name}


%debug_package


%prep
%autosetup -p1 -n boost_%{tarver}
find ./boost -name '*.hpp' -perm /111 | xargs --no-run-if-empty chmod a-x

# At least python2_version needs to be a macro so that it's visible in
# %%install as well.
%global python2_version %(/usr/bin/python %{SOURCE1})
%if %{with python3}
%global python3_version %(/usr/bin/python3 %{SOURCE1})
%global python3_abiflags %(/usr/bin/python3-config --abiflags)
%endif

%build
: PYTHON2_VERSION=%{python2_version}
%if %{with python3}
: PYTHON3_VERSION=%{python3_version}
: PYTHON3_ABIFLAGS=%{python3_abiflags}
%endif

# There are many strict aliasing warnings, and it's not feasible to go
# through them all at this time.
# There are also lots of noisy but harmless unused local typedef warnings.
export RPM_OPT_FLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing -Wno-unused-local-typedefs -Wno-deprecated-declarations"
export RPM_LD_FLAGS

cat > ./tools/build/src/user-config.jam << "EOF"
import os ;
local RPM_OPT_FLAGS = [ os.environ RPM_OPT_FLAGS ] ;
local RPM_LD_FLAGS = [ os.environ RPM_LD_FLAGS ] ;

using gcc : : : <compileflags>$(RPM_OPT_FLAGS) <linkflags>$(RPM_LD_FLAGS) ;
%if %{with openmpi} || %{with mpich}
using mpi ;
%endif
EOF

%if %{with python3}
cat >> ./tools/build/src/user-config.jam << EOF
using python : %{python3_version} : /usr/bin/python3 : /usr/include/python%{python3_version}${PYTHON3_ABIFLAGS} : : : ;
EOF
%endif

./bootstrap.sh --with-toolset=gcc --with-icu

# N.B. When we build the following with PCH, parts of boost (math
# library in particular) end up being built second time during
# installation.  Unsure why that is, but all sub-builds need to be
# built with pch=off to avoid this.

echo ============================= build serial ==================
./b2 -d+2 -q %{?_smp_mflags} \
	--without-mpi --without-graph_parallel --build-dir=serial \
%if !%{with context}
	--without-context --without-coroutine \
	--without-fiber \
%endif
	variant=release threading=multi debug-symbols=on pch=off \
%if %{with python3}
	python=%{python3_version} \
%endif
	stage

# See libs/thread/build/Jamfile.v2 for where this file comes from.
if [ $(find serial -type f -name has_atomic_flag_lockfree \
		-print -quit | wc -l) -ne 0 ]; then
	DEF=D
else
	DEF=U
fi

m4 -${DEF}HAS_ATOMIC_FLAG_LOCKFREE -DVERSION=%{version} \
	%{SOURCE2} > $(basename %{SOURCE2})

# Build MPI parts of Boost with OpenMPI support

%if %{with openmpi} || %{with mpich}
# First, purge all modules so that user environment doesn't conflict
# with the build.
module purge ||:
%endif

%if %{with openmpi}
%{_openmpi_load}
%if %{with python3}
echo ============================= build $MPI_COMPILER ==================
./b2 -d+2 -q %{?_smp_mflags} \
	--user-config=./python3-config.jam \
	--with-mpi --with-graph_parallel --build-dir=$MPI_COMPILER \
	variant=release threading=multi debug-symbols=on pch=off \
	python=%{python3_version} stage
%endif

%{_openmpi_unload}
export PATH=/bin${PATH:+:}$PATH
%endif

# Build MPI parts of Boost with MPICH support
%if %{with mpich}
%{_mpich_load}
%if %{with python3}
echo ============================= build $MPI_COMPILER ==================
./b2 -d+2 -q %{?_smp_mflags} \
	--user-config=./python3-config.jam \
	--with-mpi --with-graph_parallel --build-dir=$MPI_COMPILER \
	variant=release threading=multi debug-symbols=on pch=off \
	python=%{python3_version} stage
%endif

%{_mpich_unload}
export PATH=/bin${PATH:+:}$PATH
%endif

echo ============================= build Boost.Build ==================
(cd tools/build
 ./bootstrap.sh --with-toolset=gcc)


%check
:


%install
rm -rf $RPM_BUILD_ROOT
#cd %{_builddir}/%{name}_%{tarver}

%if %{with openmpi} || %{with mpich}
# First, purge all modules so that user environment doesn't conflict
# with the build.
module purge ||:
%endif

%if %{with openmpi}
%{_openmpi_load}
# XXX We want to extract this from RPM flags
# b2 instruction-set=i686 etc.
%if %{with python3}
echo ============================= install $MPI_COMPILER ==================
./b2 -q %{?_smp_mflags} \
	--user-config=./python3-config.jam \
	--with-mpi --with-graph_parallel --build-dir=$MPI_COMPILER \
	--stagedir=${RPM_BUILD_ROOT}${MPI_HOME} \
	variant=release threading=multi debug-symbols=on pch=off \
	python=%{python3_version} stage

# Move Python module to proper location for automatic loading
mkdir -p ${RPM_BUILD_ROOT}%{python3_sitearch}/openmpi/boost
touch ${RPM_BUILD_ROOT}%{python3_sitearch}/openmpi/boost/__init__.py
mv ${RPM_BUILD_ROOT}${MPI_HOME}/lib/boost-python%{python3_version}/mpi.so \
   ${RPM_BUILD_ROOT}%{python3_sitearch}/openmpi/boost/
%endif

# Remove generic parts of boost that were built for dependencies.
rm -f ${RPM_BUILD_ROOT}${MPI_HOME}/lib/libboost_{python,{w,}serialization}*
rm -f ${RPM_BUILD_ROOT}${MPI_HOME}/lib/libboost_numpy*

%{_openmpi_unload}
export PATH=/bin${PATH:+:}$PATH
%endif

%if %{with mpich}
%{_mpich_load}
%if %{with python3}
echo ============================= install $MPI_COMPILER ==================
./b2 -q %{?_smp_mflags} \
	--user-config=./python3-config.jam \
	--with-mpi --with-graph_parallel --build-dir=$MPI_COMPILER \
	--stagedir=${RPM_BUILD_ROOT}${MPI_HOME} \
	variant=release threading=multi debug-symbols=on pch=off \
	python=%{python3_version} stage

# Move Python module to proper location for automatic loading
mkdir -p ${RPM_BUILD_ROOT}%{python3_sitearch}/mpich/boost
touch ${RPM_BUILD_ROOT}%{python3_sitearch}/mpich/boost/__init__.py
mv ${RPM_BUILD_ROOT}${MPI_HOME}/lib/boost-python%{python3_version}/mpi.so \
   ${RPM_BUILD_ROOT}%{python3_sitearch}/mpich/boost/
%endif

# Remove generic parts of boost that were built for dependencies.
rm -f ${RPM_BUILD_ROOT}${MPI_HOME}/lib/libboost_{python,{w,}serialization}*
rm -f ${RPM_BUILD_ROOT}${MPI_HOME}/lib/libboost_numpy*

%{_mpich_unload}
export PATH=/bin${PATH:+:}$PATH
%endif

echo ============================= install serial ==================
./b2 -d+2 -q %{?_smp_mflags} \
	--without-mpi --without-graph_parallel --build-dir=serial \
%if !%{with context}
	--without-context --without-coroutine \
	--without-fiber \
%endif
	--prefix=$RPM_BUILD_ROOT%{_prefix} \
	--libdir=$RPM_BUILD_ROOT%{_libdir} \
	variant=release threading=multi debug-symbols=on pch=off \
%if %{with python3}
	python=%{python3_version} \
%endif
	install

# Override DSO symlink with a linker script.  See the linker script
# itself for details of why we need to do this.
[ -f $RPM_BUILD_ROOT%{_libdir}/libboost_thread.so ] # Must be present
rm -f $RPM_BUILD_ROOT%{_libdir}/libboost_thread.so
install -p -m 644 $(basename %{SOURCE2}) $RPM_BUILD_ROOT%{_libdir}/

# Remove cmake files until we know somebody wants them.
#rm -r $RPM_BUILD_ROOT/%{_libdir}/cmake

echo ============================= install Boost.Build ==================
(cd tools/build
 ./b2 --prefix=$RPM_BUILD_ROOT%{_prefix} install
 # Fix some permissions
 chmod +x $RPM_BUILD_ROOT%{_datadir}/b2/src/tools/doxproc.py
  # Fix shebang using unversioned python
 sed -i '1s@^#!/usr/bin.python$@&3@' $RPM_BUILD_ROOT%{_datadir}/b2/src/tools/doxproc.py
 # Empty file
 rm -f $RPM_BUILD_ROOT%{_datadir}/b2/src/tools/doxygen/windows-paths-check.hpp
 # Install the manual page
 %{__install} -p -m 644 %{SOURCE2} -D $RPM_BUILD_ROOT%{_mandir}/man1/b2.1
)

echo ============================= install Boost.QuickBook ==================
(cd tools/quickbook
 ../build/b2 --prefix=$RPM_BUILD_ROOT%{_prefix}
 %{__install} -p -m 755 ../../dist/bin/quickbook $RPM_BUILD_ROOT%{_bindir}/
 cd ../boostbook
 find dtd -type f -name '*.dtd' | while read tobeinstalledfiles; do
   install -p -m 644 $tobeinstalledfiles -D $RPM_BUILD_ROOT%{_datadir}/boostbook/$tobeinstalledfiles
 done
 find xsl -type f | while read tobeinstalledfiles; do
   install -p -m 644 $tobeinstalledfiles -D $RPM_BUILD_ROOT%{_datadir}/boostbook/$tobeinstalledfiles
 done
)

# Install documentation files (HTML pages) within the temporary place
echo ============================= install documentation ==================
# Prepare the place to temporarily store the generated documentation
rm -rf %{boost_docdir} && %{__mkdir_p} %{boost_docdir}/html
DOCPATH=%{boost_docdir}
DOCREGEX='.*\.\(html?\|css\|png\|gif\)'

find libs doc more -type f -regex $DOCREGEX \
    | sed -n '/\//{s,/[^/]*$,,;p}' \
    | sort -u > tmp-doc-directories

sed "s:^:$DOCPATH/:" tmp-doc-directories \
    | xargs -P 0 --no-run-if-empty %{__install} -d

cat tmp-doc-directories | while read tobeinstalleddocdir; do
    find $tobeinstalleddocdir -mindepth 1 -maxdepth 1 -regex $DOCREGEX -print0 \
    | xargs -P 0 -0 %{__install} -p -m 644 -t $DOCPATH/$tobeinstalleddocdir
done
rm -f tmp-doc-directories
%{__install} -p -m 644 -t $DOCPATH LICENSE_1_0.txt index.htm index.html boost.png rst.css boost.css

echo ============================= install examples ==================
# Fix a few non-standard issues (DOS and/or non-UTF8 files)
sed -i -e 's/\r//g' libs/geometry/example/ml02_distance_strategy.cpp
for tmp_doc_file in flyweight/example/Jamfile.v2 \
 format/example/sample_new_features.cpp multi_index/example/Jamfile.v2 \
 multi_index/example/hashed.cpp serialization/example/demo_output.txt
do
  mv libs/${tmp_doc_file} libs/${tmp_doc_file}.iso8859
  iconv -f ISO8859-1 -t UTF8 < libs/${tmp_doc_file}.iso8859 > libs/${tmp_doc_file}
  touch -r libs/${tmp_doc_file}.iso8859 libs/${tmp_doc_file}
  rm -f libs/${tmp_doc_file}.iso8859
done

# Prepare the place to temporarily store the examples
rm -rf %{boost_examplesdir} && mkdir -p %{boost_examplesdir}/html
EXAMPLESPATH=%{boost_examplesdir}
find libs -type d -name example -exec find {} -type f \; \
    | sed -n '/\//{s,/[^/]*$,,;p}' \
    | sort -u > tmp-doc-directories
sed "s:^:$EXAMPLESPATH/:" tmp-doc-directories \
    | xargs -P 0 --no-run-if-empty %{__install} -d
rm -f tmp-doc-files-to-be-installed && touch tmp-doc-files-to-be-installed
cat tmp-doc-directories | while read tobeinstalleddocdir
do
  find $tobeinstalleddocdir -mindepth 1 -maxdepth 1 -type f \
    >> tmp-doc-files-to-be-installed
done
cat tmp-doc-files-to-be-installed | while read tobeinstalledfiles
do
  if test -s $tobeinstalledfiles
  then
    tobeinstalleddocdir=`dirname $tobeinstalledfiles`
    %{__install} -p -m 644 -t $EXAMPLESPATH/$tobeinstalleddocdir $tobeinstalledfiles
  fi
done
rm -f tmp-doc-files-to-be-installed
rm -f tmp-doc-directories
%{__install} -p -m 644 -t $EXAMPLESPATH LICENSE_1_0.txt

# remove unuse files
rm -f ${RPM_BUILD_ROOT}/%{_libdir}/%{name}_*.a


%clean
rm -rf $RPM_BUILD_ROOT


# MPI subpackages don't need the ldconfig magic.  They are hidden by
# default, in MPI back-end-specific directory, and only show to the
# user after the relevant environment module has been loaded.
# rpmlint will report that as errors, but it is fine.

%if 0
%post atomic -p /sbin/ldconfig
%post chrono -p /sbin/ldconfig
%post container -p /sbin/ldconfig
%if %{with context}
%post context -p /sbin/ldconfig
%post coroutine -p /sbin/ldconfig
%endif
%post contract -p /sbin/ldconfig
%post date-time -p /sbin/ldconfig
%post filesystem -p /sbin/ldconfig
%post graph -p /sbin/ldconfig
%post iostreams -p /sbin/ldconfig
%post json -p /sbin/ldconfig
%post locale -p /sbin/ldconfig
%post log -p /sbin/ldconfig
%post math -p /sbin/ldconfig
%post nowide -p /sbin/ldconfig
%post program-options -p /sbin/ldconfig
%post random -p /sbin/ldconfig
%post regex -p /sbin/ldconfig
%post serialization -p /sbin/ldconfig
%post system -p /sbin/ldconfig
%post test -p /sbin/ldconfig
%post thread -p /sbin/ldconfig
%post timer -p /sbin/ldconfig
%post type_erasure -p /sbin/ldconfig
%post wave -p /sbin/ldconfig

%postun atomic -p /sbin/ldconfig
%postun chrono -p /sbin/ldconfig
%postun container -p /sbin/ldconfig
%if %{with context}
%postun context -p /sbin/ldconfig
%postun coroutine -p /sbin/ldconfig
%endif
%postun contract -p /sbin/ldconfig
%postun date-time -p /sbin/ldconfig
%postun filesystem -p /sbin/ldconfig
%postun graph -p /sbin/ldconfig
%postun iostreams -p /sbin/ldconfig
%postun json -p /sbin/ldconfig
%postun locale -p /sbin/ldconfig
%postun log -p /sbin/ldconfig
%postun math -p /sbin/ldconfig
%postun nowide -p /sbin/ldconfig
%postun program-options -p /sbin/ldconfig
%postun random -p /sbin/ldconfig
%postun regex -p /sbin/ldconfig
%postun serialization -p /sbin/ldconfig
%postun system -p /sbin/ldconfig
%postun test -p /sbin/ldconfig
%postun thread -p /sbin/ldconfig
%postun timer -p /sbin/ldconfig
%postun type_erasure -p /sbin/ldconfig
%postun wave -p /sbin/ldconfig
%endif


%files
%defattr(-,root,root)
%license LICENSE_1_0.txt

%files atomic
%defattr(-, root, root, -)
%license LICENSE_1_0.txt
%{_libdir}/libboost_atomic.so.*

%files chrono
%defattr(-, root, root, -)
%license LICENSE_1_0.txt
%{_libdir}/libboost_chrono.so.*

%files container
%license LICENSE_1_0.txt
%{_libdir}/libboost_container.so.*

%if %{with context}
%files context
%defattr(-, root, root, -)
%license LICENSE_1_0.txt
%{_libdir}/libboost_context.so.*

%files coroutine
%license LICENSE_1_0.txt
%{_libdir}/libboost_coroutine.so.*
%endif

%files contract
%defattr(-, root, root, -)
%license LICENSE_1_0.txt
%{_libdir}/libboost_contract.so.*

%files date-time
%license LICENSE_1_0.txt
%{_libdir}/%{name}_date_time*.so.*

%files filesystem
%license LICENSE_1_0.txt
%{_libdir}/%{name}_filesystem*.so.*

%files fiber
%license LICENSE_1_0.txt
%{_libdir}/%{name}_fiber*.so.*

%files graph
%license LICENSE_1_0.txt
%{_libdir}/%{name}_graph*.so.*

%files iostreams
%license LICENSE_1_0.txt
%{_libdir}/%{name}_iostreams*.so.*

%files json
%license LICENSE_1_0.txt
%{_libdir}/libboost_json.so.*

%files locale
%defattr(-, root, root, -)
%license LICENSE_1_0.txt
%{_libdir}/libboost_locale.so.*

%files log
%defattr(-, root, root, -)
%license LICENSE_1_0.txt
%{_libdir}/libboost_log.so.*
%{_libdir}/libboost_log_setup.so.*

%files math
%license LICENSE_1_0.txt
%{_libdir}/%{name}_math_*.so.*

%files nowide
%license LICENSE_1_0.txt
%{_libdir}/libboost_nowide.so.*

%if %{with python3}
%files numpy3
%license LICENSE_1_0.txt
%{_libdir}/libboost_numpy3*.so.*
%endif

%files program-options
%license LICENSE_1_0.txt
%{_libdir}/%{name}_program_options*.so.*

%if %{with python3}
%files python3
%license LICENSE_1_0.txt
%{_libdir}/libboost_python3*.so.*

%files python3-devel
%license LICENSE_1_0.txt
%{_libdir}/libboost_python3*.so
%endif

%files random
%license LICENSE_1_0.txt
%{_libdir}/%{name}_random*.so.*

%files regex
%license LICENSE_1_0.txt
%{_libdir}/%{name}_regex*.so.*

%files serialization
%license LICENSE_1_0.txt
%{_libdir}/%{name}_serialization*.so.*
%{_libdir}/%{name}_wserialization*.so.*

%files stacktrace
%license LICENSE_1_0.txt
%{_libdir}/%{name}_stacktrace*.so.*

%files system
%license LICENSE_1_0.txt
%{_libdir}/%{name}_system*.so.*

%files test
%license LICENSE_1_0.txt
%{_libdir}/%{name}_prg_exec_monitor*.so.*
%{_libdir}/%{name}_unit_test_framework*.so.*

%files thread
%license LICENSE_1_0.txt
%{_libdir}/%{name}_thread*.so.*

%files timer
%defattr(-, root, root, -)
%license LICENSE_1_0.txt
%{_libdir}/libboost_timer.so.*

%files type_erasure
%license LICENSE_1_0.txt
%{_libdir}/libboost_type_erasure.so.*

%files url
%license LICENSE_1_0.txt
%{_libdir}/libboost_url.so.*

%files wave
%license LICENSE_1_0.txt
%{_libdir}/%{name}_wave*.so.*

%files devel
%defattr(-,root,root)
%{_includedir}/boost/
%{_libdir}/%{name}_*.so
%dir %{_libdir}/cmake
%{_libdir}/cmake/*

%files doc
%doc index.htm index.html boost.css boost.png rst.css doc libs more

%files build
%license LICENSE_1_0.txt
%{_datadir}/b2

%files doctools
%license LICENSE_1_0.txt
%{_bindir}/quickbook
%{_datadir}/boostbook/

# OpenMPI packages
%if %{with openmpi}

%files openmpi
%license LICENSE_1_0.txt
%{_libdir}/openmpi/lib/libboost_mpi.so.*

%files openmpi-python
%license LICENSE_1_0.txt
%{_libdir}/openmpi/lib/libboost_mpi_python.so.*
%{_libdir}/openmpi/lib/mpi.so

%files graph-openmpi
%license LICENSE_1_0.txt
%{_libdir}/openmpi/lib/libboost_graph_parallel.so.*

%endif

# MPICH packages
%if %{with mpich}
%files mpich
%license LICENSE_1_0.txt
%{_libdir}/mpich/lib/libboost_mpi.so.*

%files mpich-python
%license LICENSE_1_0.txt
%{_libdir}/mpich/lib/libboost_mpi_python.so.*
%{_libdir}/mpich/lib/mpi.so

%files graph-mpich
%license LICENSE_1_0.txt
%{_libdir}/mpich/lib/libboost_graph_parallel.so.*
%endif

%files b2
%license LICENSE_1_0.txt
%{_bindir}/b2
%{_mandir}/man1/b2.1*

%if %{build_compat32}
%files -n compat32-%{name}-atomic
%defattr(-, root, root, -)
%license LICENSE_1_0.txt
%{_libdir}/libboost_atomic.so.*

%files -n compat32-%{name}-chrono
%defattr(-, root, root, -)
%license LICENSE_1_0.txt
%{_libdir}/libboost_chrono.so.*

%files -n compat32-%{name}-container
%license LICENSE_1_0.txt
%{_libdir}/libboost_container.so.*

%if %{with context}
%files -n compat32-%{name}-context
%defattr(-, root, root, -)
%license LICENSE_1_0.txt
%{_libdir}/libboost_context.so.*

%files -n compat32-%{name}-coroutine
%license LICENSE_1_0.txt
%{_libdir}/libboost_coroutine.so.*
%endif

%files -n compat32-%{name}-contract
%defattr(-, root, root, -)
%license LICENSE_1_0.txt
%{_libdir}/libboost_contract.so.*

%files -n compat32-%{name}-date-time
%license LICENSE_1_0.txt
%{_libdir}/%{name}_date_time*.so.*

%files -n compat32-%{name}-fiber
%license LICENSE_1_0.txt
%{_libdir}/%{name}_fiber*.so.*

%files -n compat32-%{name}-filesystem
%license LICENSE_1_0.txt
%{_libdir}/%{name}_filesystem*.so.*

%if 0
%files -n compat32-%{name}-graph
%license LICENSE_1_0.txt
%{_libdir}/%{name}_graph*.so.*
%endif

%files -n compat32-%{name}-iostreams
%license LICENSE_1_0.txt
%{_libdir}/%{name}_iostreams*.so.*

%files -n compat32-%{name}-json
%license LICENSE_1_0.txt
%{_libdir}/libboost_json.so.*

%if 0
%files -n compat32-%{name}-locale
%defattr(-, root, root, -)
%license LICENSE_1_0.txt
%{_libdir}/libboost_locale.so.*
%endif

%if 0
%files -n compat32-%{name}-log
%defattr(-, root, root, -)
%license LICENSE_1_0.txt
%{_libdir}/libboost_log.so.*
%{_libdir}/libboost_log_setup.so.*
%endif

%files -n compat32-%{name}-math
%license LICENSE_1_0.txt
%{_libdir}/%{name}_math_*.so.*

%files -n compat32-%{name}-nowide
%license LICENSE_1_0.txt
%{_libdir}/libboost_nowide.so.*

%if %{with python3}
%files -n compat32-%{name}-numpy3
%license LICENSE_1_0.txt
%{_libdir}/libboost_numpy3*.so.*
%endif

%files -n compat32-%{name}-program-options
%license LICENSE_1_0.txt
%{_libdir}/%{name}_program_options*.so.*

%if 0
%if %{with python3}
%files -n compat32-%{name}-python3
%license LICENSE_1_0.txt
%{_libdir}/libboost_python3*.so.*
%endif
%endif

%files -n compat32-%{name}-random
%license LICENSE_1_0.txt
%{_libdir}/%{name}_random*.so.*

%if 0
%files -n compat32-%{name}-regex
%license LICENSE_1_0.txt
%{_libdir}/%{name}_regex*.so.*
%endif

%files -n compat32-%{name}-serialization
%license LICENSE_1_0.txt
%{_libdir}/%{name}_serialization*.so.*
%{_libdir}/%{name}_wserialization*.so.*

%files -n compat32-%{name}-stacktrace
%license LICENSE_1_0.txt
%{_libdir}/%{name}_stacktrace*.so.*

%files -n compat32-%{name}-system
%license LICENSE_1_0.txt
%{_libdir}/%{name}_system*.so.*

%files -n compat32-%{name}-test
%license LICENSE_1_0.txt
%{_libdir}/%{name}_prg_exec_monitor*.so.*
%{_libdir}/%{name}_unit_test_framework*.so.*

%files -n compat32-%{name}-thread
%license LICENSE_1_0.txt
%{_libdir}/%{name}_thread*.so.*

%files -n compat32-%{name}-timer
%defattr(-, root, root, -)
%license LICENSE_1_0.txt
%{_libdir}/libboost_timer.so.*

%files -n compat32-%{name}-type_erasure
%license LICENSE_1_0.txt
%{_libdir}/libboost_type_erasure.so.*

%files -n compat32-%{name}-url
%license LICENSE_1_0.txt
%{_libdir}/libboost_url.so.*

%files -n compat32-%{name}-wave
%license LICENSE_1_0.txt
%{_libdir}/%{name}_wave*.so.*

%endif


%changelog
* Wed Nov 01 2023 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 1.83.0-1
- new upstream release.

* Thu Oct 20 2022 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 1.80.0-1
- new upstream release.

* Thu Apr 08 2021 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 1.75.0-2
- built with icu-69.

* Fri Feb 19 2021 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 1.75.0-1
- new upstream release.
- dropped libboost-jam.
- new subpackage: json, nowide, numpy3 and b2.
- dropped python2 support.
- re-imported all patches from rawhide.

* Mon Aug 17 2020 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 1.72.0-2
- rebuilt with python-3.8.

* Fri Apr 24 2020 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 1.72.0-1
- new upstream release.
- built with icu-67.
- updated patches.
- imported Patch86 from rawhide.

* Fri Mar 20 2020 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 1.66.0-5
- rebuilt with gcc-9 and icu-66.

* Sun Oct 13 2019 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 1.66.0-4
- rebuilt with icu-65.

* Wed Sep 11 2019 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 1.66.0-3
- rebuilt with gcc-8.
- added a subpackage 'libboost-fiber'.

* Mon Jan 08 2018 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 1.66.0-2
- rebuilt with libicu-60.2.

* Sun Jan 07 2018 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 1.66.0-1
- updated to boost_1_66_0.
- dropped Patch36, 63 and 81.
- updated Patch65.
- imported Patch82 from rawhide.
- added a subpackage 'libboost-stacktrace'.

* Sat Jul 16 2016 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 1.60.0-3
- added compat32-* packages.

* Tue Jun 28 2016 Yoji TOYODA <bsyamato@sea.plala.or.jp> 1.60.0-2
- rebuild with python3-3.5.2

* Mon Jun  6 2016 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 1.60.0-1
- updated to boost_1_60_0.
- dropped all patches.
- imported patches from rawhide.
- moved *.so into libboost-devel.

* Mon Nov 25 2013 IWAI, Masaharu <iwaim.sub@gmail.com> 1.54.0-1
- update to boost_1_54_0
- all package: including license file
- drop boost_filesystem patch (Patch0)
- sync Fedora boost-1.54.0-5.fc21
 - new packages: atomic, chrono, context, locale, log, timer
 - add patches
  - Patch4, 5, 9, 15, 18..28, 31..38, 42..55

* Sun Feb 20 2011 Munehiro Yamamoto <munepi@vinelinux.org> 1.45.0-2
- fixed crashing throwing exception
  "std::runtime_error: locale::facet::_S_create_c_locale name not valid" 
  on some systems (FreeBSD and some linuxes) when current locale 
  (LANG,LC_ALL) is not "C"

* Tue Jan 18 2011 Shu KONNO <owa@bg.wakwak.com> 1.45.0-1
- updated to boost_1_45_0
- added random sub-package

* Wed Apr 14 2010 MATSUBAYASHI Kohji <shaolin@vinelinux.org> - 1.42.0-4
- rebuilt again on ppc

* Sat Apr 10 2010 Ryoichi INAGAKI <ryo1@bc.wakwak.com> 1.42.0-3
- rebuilt with libicu-4.4

* Mon Feb 08 2010 Shu KONNO <owa@bg.wakwak.com> 1.42.0-2
- added "-licui18n" to bjam
- added BR: lam

* Sun Feb 07 2010 Shu KONNO <owa@bg.wakwak.com> 1.42.0-1
- updated to boost_1_42_0
- rebuilt with new toolchain and python-2.6
- added user-config.jam to make libboost_mpi
- added BR: libaio-devel
- added %%{post,postun} -p /sbin/ldconfig
- dropt no use parameter EXPAT_INCLUDE and EXPAT_LIBPATH
- dropt %{_libdir}/%{name}_test_exec_monitor-*.a in %%files %{name}-test
- dropt %%{post,postun} devel section

* Sun Mar 22 2009 Ryoichi INAGAKI <ryo1@bc.wakwak.com> 1.36.0-2vl5
- rebuilt with libicu-4.0.1
- changed Group to System Environment/Libraries (except devel package)

* Sat Aug 16 2008 Daisuke SUZUKI <daisuke@linux.or.jp> 1.36.0-1vl5
- new upstream release
- add -math subpackage

* Fri Aug 15 2008 Daisuke SUZUKI <daisuke@linux.or.jp> 1.35.0-2vl5
- build with python-2.5
- add libboost_XXXX.so symlinks

* Thu May 8 2008 KANEKO Seiji <giraffe@m2.pbc.ne.jp> 1.35.0-1vl5
- upstream release
- applied new versioning policy
- add EXPAT_INCLUDE and EXPAT_LIBPATH to enable GraphML support
- add new package libboost-system
- Obsolete: *-devel packages

* Sat Sep  8 2007 Ryoichi INAGAKI <ryo1@bc.wakwak.com> 1.34.1-0vl3
- rebuilt with libicu-3.6
- changed doc Group to Applications/Documentation

* Sat Aug 18 2007 KANEKO Seiji <giraffe@m2.pbc.ne.jp> 1.34.1-0vl2
- upstream release

* Thu Jun 14 2007 KANEKO Seiji <giraffe@m2.pbc.ne.jp> 1.34.0-0vl3
- add --libdir=%%{_libdir} to cope with x86_64 environment

* Sun Jun 10 2007 KANEKO Seiji <giraffe@m2.pbc.ne.jp> 1.34.0-0vl2
- upstream release
- use Easy Build and Install process with ./configure
- add BuildRequires: libicu-devel
- remove %%{_libdir}/libboost_test_exec_monitor-*.so* from %%files -n libboost-test
- add new packages: libboost-graph, libboost-graph-devel, libboost-wave
- add files to doc package

* Sun May 13 2007 MATSUBAYASHI Kohji <shaolin@vinelinux.org> 1.33.1-0vl2
- rebuilt with new toolchain

* Sat Feb 4 2006 KANEKO Seiji <giraffe@m2.pbc.ne.jp> 1.33.1-0vl1
- upstream release

* Mon Dec 12 2005 Ryoichi INAGAKI <ryo1@bc.wakwak.com> 1.33.0-0vl3
- fixed typo in Groups:
- devel packages also moved to Development/Libraries group

* Mon Sep 19 2005 MATSUBAYASHI Kohji <shaolin@vinelinux.org> 1.33.0-0vl2
- spec modified to avoid errors on non-ix86 archtecture
  (previously the path linuxx86 was explicitly used)

* Sun Sep 11 2005 KANEKO Seiji <giraffe@m2.pbc.ne.jp> 1.33.0-0vl1
- initial release for Vine Linux

* Sat Sep 10 2005 KANEKO Seiji <giraffe@m2.pbc.ne.jp> 1.33.0-0vl0.3
- link /usr/include/boost_%{lnkver}/boost to /usr/include/boost

* Sat Sep 10 2005 KANEKO Seiji <giraffe@m2.pbc.ne.jp> 1.33.0-0vl0.2
- change package name from boost to libboost
- separated into sub-packages

* Fri Jun 17 2005 KANEKO Seiji <giraffe@m2.pbc.ne.jp> 1.33.0-0vl0.1
- upstream release
- add BuildRequires: bzip2-devel zlib-devel

* Fri Jun 17 2005 KANEKO Seiji <giraffe@m2.pbc.ne.jp> 1.32.0-0vl0.7
- added so.* file

* Mon Apr 25 2005 KANEKO Seiji <giraffe@m2.pbc.ne.jp> 1.32.0-0vl0.6
- moved %post, %postun script to -devel package

* Mon Apr 25 2005 KANEKO Seiji <giraffe@m2.pbc.ne.jp> 1.32.0-0vl0.5
- moved doc/html to -devel package
- make a symbolic link on %{_includedir}/boost

* Mon Apr 25 2005 KANEKO Seiji <giraffe@m2.pbc.ne.jp> 1.32.0-0vl0.4
- fixed character code to euc-jp

* Mon Apr 25 2005 KANEKO Seiji <giraffe@m2.pbc.ne.jp> 1.32.0-0vl0.3
- add %doc files

* Fri Apr 22 2005 KANEKO Seiji <giraffe@m2.pbc.ne.jp> 1.32.0-0vl0.2
- remove Requires
- split -devel package

* Fri Apr 22 2005 KANEKO Seiji <giraffe@m2.pbc.ne.jp> 1.32.0-0vl0.1
- initial build for Vine Linux
