diff --git a/.cvsignore b/.cvsignore index 0f28482..9b0169e 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -boost_1_37_0.tar.bz2 +boost_1_39_0.tar.bz2 diff --git a/boost-1_37_0-smp.patch b/boost-1_37_0-smp.patch deleted file mode 100644 index b753bea..0000000 --- a/boost-1_37_0-smp.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up boost_1_37_0/configure.smp boost_1_37_0/configure ---- boost_1_37_0/configure.smp 2009-02-05 18:49:01.000000000 +0100 -+++ boost_1_37_0/configure 2009-02-05 18:53:55.000000000 +0100 -@@ -347,7 +347,7 @@ LIBS=$LIBS - - all: .dummy - @echo "\$(BJAM) \$(BJAM_CONFIG) --user-config=user-config.jam \$(LIBS) stage" -- @\$(BJAM) \$(BJAM_CONFIG) --user-config=user-config.jam \$(LIBS) stage || \\ -+ @\$(BJAM) \$(BJAM_CONFIG) --user-config=user-config.jam \$(LIBS) !!!SMP_FLAGS!!! stage || \\ - echo "Not all Boost libraries built properly." - - clean: .dummy diff --git a/boost-bitset.patch b/boost-bitset.patch index 1d354aa..66ef16f 100644 --- a/boost-bitset.patch +++ b/boost-bitset.patch @@ -1,5 +1,5 @@ ---- boost_1_37_0/boost/dynamic_bitset/dynamic_bitset.hpp.debug 2008-10-22 03:13:59.000000000 +0900 -+++ boost_1_37_0/boost/dynamic_bitset/dynamic_bitset.hpp 2009-03-23 03:36:40.000000000 +0900 +--- boost/dynamic_bitset/dynamic_bitset.hpp.debug 2008-10-22 03:13:59.000000000 +0900 ++++ boost/dynamic_bitset/dynamic_bitset.hpp 2009-03-23 03:36:40.000000000 +0900 @@ -1017,8 +1017,11 @@ ? access_by_bytes : access_by_blocks; diff --git a/boost-configure.patch b/boost-configure.patch deleted file mode 100644 index 91e8508..0000000 --- a/boost-configure.patch +++ /dev/null @@ -1,38 +0,0 @@ -*** configure.orig 2007-01-16 01:39:00.000000000 +0100 ---- configure 2007-01-19 03:53:08.000000000 +0100 -*************** -*** 9,15 **** - - BJAM="" - TOOLSET="" -! BJAM_CONFIG="" - BUILD="" - PREFIX=/usr/local - EPREFIX= ---- 9,15 ---- - - BJAM="" - TOOLSET="" -! BJAM_CONFIG="-d2 --layout=system variant=release threading=single,multi debug-symbols=on" - BUILD="" - PREFIX=/usr/local - EPREFIX= -*************** INCLUDEDIR=$INCLUDEDIR -*** 325,332 **** - LIBS=$LIBS - - all: .dummy -! @echo "\$(BJAM) \$(BJAM_CONFIG) --user-config=user-config.jam \$(LIBS)" -! @\$(BJAM) \$(BJAM_CONFIG) --user-config=user-config.jam \$(LIBS) || \\ - echo "Not all Boost libraries built properly." - - clean: .dummy ---- 325,332 ---- - LIBS=$LIBS - - all: .dummy -! @echo "\$(BJAM) \$(BJAM_CONFIG) --user-config=user-config.jam \$(LIBS) stage" -! @\$(BJAM) \$(BJAM_CONFIG) --user-config=user-config.jam \$(LIBS) stage || \\ - echo "Not all Boost libraries built properly." - - clean: .dummy diff --git a/boost-function_template.patch b/boost-function_template.patch index fa57836..c8178ea 100644 --- a/boost-function_template.patch +++ b/boost-function_template.patch @@ -1,5 +1,6 @@ ---- boost/function/function_template.hpp.orig 2008-12-19 10:32:27.000000000 +0000 -+++ boost/function/function_template.hpp 2008-12-19 10:33:27.000000000 +0000 +diff -ru boost/function/function_template.hpp boost/function/function_template.hpp +--- boost/function/function_template.hpp 2009-05-10 10:31:29.000000000 +0100 ++++ boost/function/function_template.hpp 2009-05-10 10:49:46.000000000 +0100 @@ -950,10 +950,10 @@ f.vtable->manager(f.functor, this->functor, boost::detail::function::move_functor_tag); diff --git a/boost-gcc-implib.patch b/boost-gcc-implib.patch deleted file mode 100644 index ff2f383..0000000 --- a/boost-gcc-implib.patch +++ /dev/null @@ -1,48 +0,0 @@ ---- ./tools/build/v2/tools/gcc.jam.x 2009-05-28 09:26:23.000000000 +0200 -+++ ./tools/build/v2/tools/gcc.jam 2009-05-28 09:28:46.000000000 +0200 -@@ -501,34 +501,17 @@ - } - } - --.IMPLIB-COMMAND = ; --if [ os.on-windows ] --{ -- .IMPLIB-COMMAND = "-Wl,--out-implib," ; -- generators.register -- [ new gcc-linking-generator gcc.link -- : OBJ SEARCHED_LIB STATIC_LIB IMPORT_LIB -- : EXE -- : gcc ] ; -- generators.register -- [ new gcc-linking-generator gcc.link.dll -- : OBJ SEARCHED_LIB STATIC_LIB IMPORT_LIB -- : IMPORT_LIB SHARED_LIB -- : gcc ] ; --} --else --{ -- generators.register -- [ new gcc-linking-generator gcc.link -- : LIB OBJ -- : EXE -- : gcc ] ; -- generators.register -- [ new gcc-linking-generator gcc.link.dll -- : LIB OBJ -- : SHARED_LIB -- : gcc ] ; --} -+.IMPLIB-COMMAND = "-Wl,--out-implib," ; -+generators.register -+ [ new gcc-linking-generator gcc.link -+ : OBJ SEARCHED_LIB STATIC_LIB IMPORT_LIB -+ : EXE -+ : gcc ] ; -+generators.register -+ [ new gcc-linking-generator gcc.link.dll -+ : OBJ SEARCHED_LIB STATIC_LIB IMPORT_LIB -+ : IMPORT_LIB SHARED_LIB -+ : gcc ] ; - - # Declare flags for linking. - # First, the common flags. diff --git a/boost-gcc43.patch b/boost-gcc43.patch deleted file mode 100644 index 7b1f999..0000000 --- a/boost-gcc43.patch +++ /dev/null @@ -1,157 +0,0 @@ -diff -urp boost_1_36_0_beta1-orig/boost/archive/polymorphic_iarchive.hpp boost_1_36_0_beta1/boost/archive/polymorphic_iarchive.hpp ---- boost_1_36_0_beta1-orig/boost/archive/polymorphic_iarchive.hpp 2008-08-11 23:49:44.000000000 +0200 -+++ boost_1_36_0_beta1/boost/archive/polymorphic_iarchive.hpp 2008-08-11 23:50:38.000000000 +0200 -@@ -35,6 +35,8 @@ namespace std{ - #include - #include - -+#include -+ - // determine if its necessary to handle (u)int64_t specifically - // i.e. that its not a synonym for (unsigned) long - // if there is no 64 bit int or if its the same as a long -Only in boost_1_36_0_beta1/boost/archive: polymorphic_iarchive.hpp.orig -diff -urp boost_1_36_0_beta1-orig/boost/archive/polymorphic_oarchive.hpp boost_1_36_0_beta1/boost/archive/polymorphic_oarchive.hpp ---- boost_1_36_0_beta1-orig/boost/archive/polymorphic_oarchive.hpp 2008-08-11 23:49:44.000000000 +0200 -+++ boost_1_36_0_beta1/boost/archive/polymorphic_oarchive.hpp 2008-08-11 23:50:38.000000000 +0200 -@@ -34,6 +34,8 @@ namespace std{ - #include - #include - -+#include -+ - // determine if its necessary to handle (u)int64_t specifically - // i.e. that its not a synonym for (unsigned) long - // if there is no 64 bit int or if its the same as a long -Only in boost_1_36_0_beta1/boost/archive: polymorphic_oarchive.hpp.orig -diff -urp boost_1_36_0_beta1-orig/boost/date_time/tz_db_base.hpp boost_1_36_0_beta1/boost/date_time/tz_db_base.hpp ---- boost_1_36_0_beta1-orig/boost/date_time/tz_db_base.hpp 2008-08-11 23:49:45.000000000 +0200 -+++ boost_1_36_0_beta1/boost/date_time/tz_db_base.hpp 2008-08-11 23:50:38.000000000 +0200 -@@ -158,7 +158,7 @@ namespace boost { - typedef typename time_zone_type::base_type time_zone_base_type; - typedef typename time_zone_type::time_duration_type time_duration_type; - typedef time_zone_names_base time_zone_names; -- typedef dst_adjustment_offsets dst_adjustment_offsets; -+ typedef dst_adjustment_offsets dst_adjustment_offsets_t; - typedef std::basic_string string_type; - - //! Constructs an empty database -@@ -346,18 +346,18 @@ namespace boost { - time_duration_type utc_offset = - str_from_delimited_time_duration(result[GMTOFFSET]); - -- dst_adjustment_offsets adjust(time_duration_type(0,0,0), -- time_duration_type(0,0,0), -- time_duration_type(0,0,0)); -+ dst_adjustment_offsets_t adjust(time_duration_type(0,0,0), -+ time_duration_type(0,0,0), -+ time_duration_type(0,0,0)); - - boost::shared_ptr rules; - - if(has_dst){ -- adjust = dst_adjustment_offsets( -- str_from_delimited_time_duration(result[DSTADJUST]), -- str_from_delimited_time_duration(result[START_TIME]), -- str_from_delimited_time_duration(result[END_TIME]) -- ); -+ adjust = dst_adjustment_offsets_t( -+ str_from_delimited_time_duration(result[DSTADJUST]), -+ str_from_delimited_time_duration(result[START_TIME]), -+ str_from_delimited_time_duration(result[END_TIME]) -+ ); - - rules = - boost::shared_ptr(parse_rules(result[START_DATE_RULE], -Only in boost_1_36_0_beta1/boost/date_time: tz_db_base.hpp.orig -diff -urp boost_1_36_0_beta1-orig/boost/regex/v4/basic_regex_creator.hpp boost_1_36_0_beta1/boost/regex/v4/basic_regex_creator.hpp ---- boost_1_36_0_beta1-orig/boost/regex/v4/basic_regex_creator.hpp 2008-08-11 23:49:48.000000000 +0200 -+++ boost_1_36_0_beta1/boost/regex/v4/basic_regex_creator.hpp 2008-08-11 23:50:38.000000000 +0200 -@@ -36,6 +36,8 @@ - # pragma warning(disable: 4800) - #endif - -+#include -+ - namespace boost{ - - namespace re_detail{ -Only in boost_1_36_0_beta1/boost/regex/v4: basic_regex_creator.hpp.orig -diff -urp boost_1_36_0_beta1-orig/boost/regex/v4/basic_regex.hpp boost_1_36_0_beta1/boost/regex/v4/basic_regex.hpp ---- boost_1_36_0_beta1-orig/boost/regex/v4/basic_regex.hpp 2008-08-11 23:49:48.000000000 +0200 -+++ boost_1_36_0_beta1/boost/regex/v4/basic_regex.hpp 2008-08-11 23:50:38.000000000 +0200 -@@ -30,6 +30,8 @@ - #pragma warning(pop) - #endif - -+#include -+ - namespace boost{ - #ifdef BOOST_MSVC - #pragma warning(push) -Only in boost_1_36_0_beta1/boost/regex/v4: basic_regex.hpp.orig -diff -urp boost_1_36_0_beta1-orig/boost/regex/v4/basic_regex_parser.hpp boost_1_36_0_beta1/boost/regex/v4/basic_regex_parser.hpp ---- boost_1_36_0_beta1-orig/boost/regex/v4/basic_regex_parser.hpp 2008-08-11 23:49:48.000000000 +0200 -+++ boost_1_36_0_beta1/boost/regex/v4/basic_regex_parser.hpp 2008-08-11 23:50:38.000000000 +0200 -@@ -30,6 +30,8 @@ - #pragma warning(pop) - #endif - -+#include -+ - namespace boost{ - namespace re_detail{ - -Only in boost_1_36_0_beta1/boost/regex/v4: basic_regex_parser.hpp.orig -diff -urp boost_1_36_0_beta1-orig/boost/regex/v4/perl_matcher.hpp boost_1_36_0_beta1/boost/regex/v4/perl_matcher.hpp ---- boost_1_36_0_beta1-orig/boost/regex/v4/perl_matcher.hpp 2008-08-11 23:49:48.000000000 +0200 -+++ boost_1_36_0_beta1/boost/regex/v4/perl_matcher.hpp 2008-08-11 23:50:38.000000000 +0200 -@@ -30,6 +30,8 @@ - # pragma warning(disable: 4800) - #endif - -+#include -+ - namespace boost{ - namespace re_detail{ - -Only in boost_1_36_0_beta1/boost/regex/v4: perl_matcher.hpp.orig -diff -urp boost_1_36_0_beta1-orig/boost/regex/v4/regex_split.hpp boost_1_36_0_beta1/boost/regex/v4/regex_split.hpp ---- boost_1_36_0_beta1-orig/boost/regex/v4/regex_split.hpp 2008-08-11 23:49:48.000000000 +0200 -+++ boost_1_36_0_beta1/boost/regex/v4/regex_split.hpp 2008-08-11 23:50:38.000000000 +0200 -@@ -21,6 +21,8 @@ - #ifndef BOOST_REGEX_SPLIT_HPP - #define BOOST_REGEX_SPLIT_HPP - -+#include -+ - namespace boost{ - - #ifdef BOOST_MSVC -Only in boost_1_36_0_beta1/boost/regex/v4: regex_split.hpp.orig -diff -urp boost_1_36_0_beta1-orig/boost/regex/v4/states.hpp boost_1_36_0_beta1/boost/regex/v4/states.hpp ---- boost_1_36_0_beta1-orig/boost/regex/v4/states.hpp 2008-08-11 23:49:48.000000000 +0200 -+++ boost_1_36_0_beta1/boost/regex/v4/states.hpp 2008-08-11 23:50:38.000000000 +0200 -@@ -30,6 +30,8 @@ - #pragma warning(pop) - #endif - -+#include -+ - namespace boost{ - namespace re_detail{ - -Only in boost_1_36_0_beta1/boost/regex/v4: states.hpp.orig -diff -urp boost_1_36_0_beta1-orig/boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp boost_1_36_0_beta1/boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp ---- boost_1_36_0_beta1-orig/boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp 2008-08-11 23:49:45.000000000 +0200 -+++ boost_1_36_0_beta1/boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp 2008-08-11 23:50:38.000000000 +0200 -@@ -16,6 +16,8 @@ - #include - #include - #include -+#include -+ - #if defined(BOOST_SPIRIT_DEBUG) - #include - #endif // defined(BOOST_SPIRIT_DEBUG) -Only in boost_1_36_0_beta1/boost/wave/cpplexer/re2clex: cpp_re2c_lexer.hpp.orig diff --git a/boost-soname.patch b/boost-soname.patch new file mode 100644 index 0000000..52a2e33 --- /dev/null +++ b/boost-soname.patch @@ -0,0 +1,37 @@ +*** tools/build/v2/tools/gcc.jam.orig 2009-05-05 12:45:31.000000000 -0700 +--- tools/build/v2/tools/gcc.jam 2009-05-05 12:48:23.000000000 -0700 +*************** if [ os.name ] != NT && [ os.name ] != O +*** 355,361 **** + # OSF does have an option called -soname but it does not seem to work as + # expected, therefore it has been disabled. + HAVE_SONAME = "" ; +! SONAME_OPTION = -h ; + } + + +--- 355,362 ---- + # OSF does have an option called -soname but it does not seem to work as + # expected, therefore it has been disabled. + HAVE_SONAME = "" ; +! SONAME_OPTION = -soname ; +! SONAME_VERSION = _FEDORA_SONAME ; + } + + +*************** rule link.dll ( targets * : sources * : +*** 793,799 **** + # Differs from 'link' above only by -shared. + actions link.dll bind LIBRARIES + { +! "$(CONFIG_COMMAND)" -L"$(LINKPATH)" -Wl,$(RPATH_OPTION:E=-R)$(SPACE)-Wl,"$(RPATH)" "$(.IMPLIB-COMMAND)$(<[1])" -o "$(<[-1])" $(HAVE_SONAME)-Wl,$(SONAME_OPTION)$(SPACE)-Wl,$(<[-1]:D=) -shared $(START-GROUP) "$(>)" "$(LIBRARIES)" $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS) + } + + rule setup-threading ( targets * : sources * : properties * ) +--- 794,800 ---- + # Differs from 'link' above only by -shared. + actions link.dll bind LIBRARIES + { +! "$(CONFIG_COMMAND)" -L"$(LINKPATH)" -Wl,$(RPATH_OPTION:E=-R)$(SPACE)-Wl,"$(RPATH)" "$(.IMPLIB-COMMAND)$(<[1])" -o "$(<[-1])" $(HAVE_SONAME)-Wl,$(SONAME_OPTION)$(SPACE)-Wl,$(<[-1]:D=).$(SONAME_VERSION) -shared $(START-GROUP) "$(>)" "$(LIBRARIES)" $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS) + } + + rule setup-threading ( targets * : sources * : properties * ) diff --git a/boost-unneccessary_iostreams.patch b/boost-unneccessary_iostreams.patch index a2d3f4b..5c78a2c 100644 --- a/boost-unneccessary_iostreams.patch +++ b/boost-unneccessary_iostreams.patch @@ -1,4 +1,4 @@ -diff -ru boost_1_37_0.orig/boost/spirit/home/classic/iterator/multi_pass.hpp boost_1_37_0/boost/spirit/home/classic/iterator/multi_pass.hpp +diff -ru boost/spirit/home/classic/iterator/multi_pass.hpp boost/spirit/home/classic/iterator/multi_pass.hpp --- boost/spirit/home/classic/iterator/multi_pass.hpp 2009-01-09 10:38:36.000000000 +0000 +++ boost/spirit/home/classic/iterator/multi_pass.hpp 2009-01-09 10:39:41.000000000 +0000 @@ -12,7 +12,6 @@ diff --git a/boost-version-override.patch b/boost-version-override.patch new file mode 100644 index 0000000..83453d5 --- /dev/null +++ b/boost-version-override.patch @@ -0,0 +1,36 @@ +*** Jamroot.orig 2009-05-06 12:46:31.000000000 -0700 +--- Jamroot 2009-05-06 18:18:17.000000000 -0700 +*************** rule tag ( name : type ? : property-set +*** 344,350 **** + else + { + local result = [ common.format-name +! + -$(BUILD_ID) + : $(name) : $(type) : $(property-set) ] ; + +--- 344,350 ---- + else + { + local result = [ common.format-name +! + -$(BUILD_ID) + : $(name) : $(type) : $(property-set) ] ; + +*************** rule tag ( name : type ? : property-set +*** 356,362 **** + # suffixes either. Pgi compilers can not accept library with version + # suffix. + if $(type) = SHARED_LIB && +! ( ! ( [ $(property-set).get ] in windows cygwin darwin aix ) && + ! ( [ $(property-set).get ] in pgi ) ) + { + result = $(result).$(BOOST_VERSION) ; +--- 356,362 ---- + # suffixes either. Pgi compilers can not accept library with version + # suffix. + if $(type) = SHARED_LIB && +! ( ! ( [ $(property-set).get ] in windows cygwin darwin aix linux ) && + ! ( [ $(property-set).get ] in pgi ) ) + { + result = $(result).$(BOOST_VERSION) ; diff --git a/mingw32-boost.spec b/mingw32-boost.spec index 77de2c7..d659e79 100644 --- a/mingw32-boost.spec +++ b/mingw32-boost.spec @@ -4,11 +4,11 @@ %global __find_requires %{_mingw32_findrequires} %global __find_provides %{_mingw32_findprovides} -%global sonamever 4 +%global sonamever 5 %global name1 boost %global vermajor 1 -%global verminor 37 +%global verminor 39 %global verrelease 0 %global verdot %{vermajor}.%{verminor}.%{verrelease} @@ -16,23 +16,21 @@ Name: mingw32-%{name1} Version: %{verdot} -Release: 4%{?dist} +Release: 1%{?dist} Summary: MinGW Windows port of Boost C++ Libraries License: Boost Group: Development/Libraries URL: http://www.boost.org/ -Source0: http://downloads.sourceforge.net/boost/%{name1}_%{verunderscore}.tar.bz2 +Source0: http://surfnet.dl.sourceforge.net/sourceforge/%{name1}/%{name1}_%{verunderscore}.tar.bz2 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) -Patch0: boost-configure.patch -Patch2: boost-run-tests.patch -Patch3: boost-gcc43.patch -Patch5: boost-function_template.patch -Patch6: boost-unneccessary_iostreams.patch -Patch7: boost-1_37_0-smp.patch -Patch8: boost-bitset.patch -Patch9: boost-gcc-implib.patch +Patch0: boost-version-override.patch +Patch2: boost-run-tests.patch +Patch3: boost-soname.patch +Patch4: boost-unneccessary_iostreams.patch +Patch5: boost-bitset.patch +Patch6: boost-function_template.patch Patch10: boost-regexdll.patch BuildArch: noarch @@ -75,12 +73,10 @@ Static version of the MinGW Windows Boost C++ library. %setup -q -n %{name1}_%{verunderscore} %patch0 -p0 %patch2 -p0 -%patch3 -p1 +sed 's/_FEDORA_SONAME/%{sonamever}/' %{PATCH3} | %{__patch} -p0 --fuzz=0 +%patch4 -p0 %patch5 -p0 %patch6 -p0 -sed 's/!!!SMP_FLAGS!!!/%{?_smp_mflags}/' %{PATCH7} | %{__patch} -p1 --fuzz=0 -%patch8 -p1 -%patch9 -p0 %patch10 -p0 %build @@ -105,19 +101,18 @@ PTW32_INCLUDE=/usr/i686-pc-mingw32/sys-root/mingw/include PTW32_LIB=/usr/i686-pc-mingw32/sys-root/mingw/lib export EXPAT_INCLUDE EXPAT_LIBPATH PTW32_INCLUDE PTW32_LIB -./configure $BUILD_FLAGS $PYTHON_FLAGS $REGEX_FLAGS +./bootstrap.sh $BUILD_FLAGS $PYTHON_FLAGS $REGEX_FLAGS # Make it use the cross-compiler instead of gcc. -rm user-config.jam echo "using gcc : : %{_mingw32_cxx}" > user-config.jam echo " : # options" >> user-config.jam echo " %{_mingw32_windres}" >> user-config.jam echo " %{_mingw32_ar}" >> user-config.jam echo " ;" >> user-config.jam -perl -i -pe 's/^BJAM_CONFIG=(.*)$/BJAM_CONFIG=\1 link=static,shared target-os=windows/' Makefile - -make %{?_smp_mflags} all +BUILD_VARIANTS="variant=release threading=single,multi debug-symbols=on link=static,shared target-os=windows" +BUILD_FLAGS="-d2 --layout=system --user-config=user-config.jam $BUILD_VARIANTS" +$BJAM $BUILD_FLAGS %{?_smp_mflags} stage %install @@ -284,6 +279,9 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Thu Jun 18 2009 Thomas Sailer - 1.39.0-1 +- update to 1.39.0 + * Thu May 28 2009 Thomas Sailer - 1.37.0-4 - use boost buildsystem to build DLLs diff --git a/sources b/sources index ce35129..2bcf3a9 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -8d9f990bfb7e83769fa5f1d6f065bc92 boost_1_37_0.tar.bz2 +a17281fd88c48e0d866e1a12deecbcc0 boost_1_39_0.tar.bz2