diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..740d89f --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/asl_1.0.43.tgz diff --git a/README.fedora b/README.fedora new file mode 100644 index 0000000..9f0fe3b --- /dev/null +++ b/README.fedora @@ -0,0 +1,13 @@ +In the fedora version the any_iterator has the ability to relax some +checks as outlined in https://svn.boost.org/trac/boost/ticket/4647. + +To enable this, set the NO_ASL_AI_CONCEPT_CHECK symbol e. g., + +#ifndef __MLIB_SDK_ASL_ANY_ITER_H__ +#define __MLIB_SDK_ASL_ANY_ITER_H__ + +#define NO_ASL_AI_CONCEPT_CHECK +#include + +#endif // #ifndef __MLIB_SDK_ASL_ANY_ITER_H__ + diff --git a/adobe-source-libraries.pc b/adobe-source-libraries.pc new file mode 100644 index 0000000..1f44686 --- /dev/null +++ b/adobe-source-libraries.pc @@ -0,0 +1,8 @@ +prefix=/usr +includedir=/usr/include + +Name: adobe-source-libraries +Description: General purpose addon to STL and Boost. +Version: @version@ +Libs: -lasl_dev +Cflags: -I${includedir}/adobe diff --git a/adobe-source-libraries.spec b/adobe-source-libraries.spec new file mode 100644 index 0000000..6bcd985 --- /dev/null +++ b/adobe-source-libraries.spec @@ -0,0 +1,202 @@ +Name: adobe-source-libraries +Version: 1.0.43 +Release: 15%{?dist} + +Summary: General purpose C++ libraries +Group: System Environment/Libraries + # License breakdown: http://stlab.adobe.com/licenses.html +License: MIT +URL: http://stlab.adobe.com/ + +Source0: http://downloads.sourceforge.net/project/adobe-source/adobe-source/%{version}/asl_%{version}.tgz + # pkg-config(1) configuration file, part of packaging. +Source1: adobe-source-libraries.pc +Source2: README.fedora +# https://sourceforge.net/tracker/?func=detail&aid=3487687&group_id=132417&atid=724218 +# (pathch0, patch1) +Patch0: asl-gcc.patch +Patch1: asl-fedora-build-options.patch +# https://svn.boost.org/trac/boost/ticket/4647 +Patch2: asl-no-concept-check1043.patch +# https://svn.boost.org/trac/boost/ticket/6940 +Patch3: asl-time-utc.patch +Patch4: asl-boost-1.50.patch + +BuildRequires: boost-build +BuildRequires: boost-devel +BuildRequires: doxygen +BuildRequires: tbb-devel +BuildRequires: texlive-dvips texlive-latex + +# needs to match TBB +ExclusiveArch: %{ix86} x86_64 ia64 + +%description +ASL provides peer-reviewed and portable C++ source libraries. The +libraries are intended to be widely useful, leveraging and extending +both the C++ Standard Library and the Boost Libraries. + +%package devel +Summary: Development files for %{name} +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} +Requires: pkgconfig + +%description devel +Libraries and header files for developing applications that +use %{name}. + +%package doc +Summary: Documentation +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} + +%description doc +API and other documentation for Adobe Source Libraries (ASL). + + +%prep +%setup -qn source_release +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 + +find . \( -name *.hpp -o -name *.jpg \) -executable -exec chmod 644 {} \; +iconv -f iso8859-1 -t utf-8 release_notes.txt > release_notes.txt.conv && \ + mv -f release_notes.txt.conv release_notes.txt +chmod 644 LICENSE_1_0_0.txt + +sed -i 's/@optflags@/%{optflags}/g' jamroot.jam +sed -i 's/@version@/%{version}/g' %{SOURCE1} +mv boost-build.jam boost-build.nojam + + +%build +# Using static lib (relinked in next step) due to soname problems: +# https://svn.boost.org/trac/boost/ticket/2746. +bjam link=static toolset=gcc variant=release asl_dev + +rm -rf tmp; mkdir tmp; cd tmp +ar x ../../built_artifacts/*/*/*/*/threading-multi/libasl_dev.a +gcc -shared -g -Wl,-soname=libasl_dev.so.%{version} -Wl,-as-needed \ + *.o -o ../libasl_dev.so.%{version} \ + -lboost_thread-mt -lboost_signals -lboost_filesystem + +#bjam link=static toolset=gcc variant=release documentation/examples +cd ../documentation +./build_docs.pl + + +%install +cp %SOURCE2 . +cd documentation +rm -f build_docs.pl +find . -name *.dox -delete +rm -rf asl doxygen_support_files doxyfile performance stldoc \ + structure tutorials widget_lib +# https://sourceforge.net/projects/adobe-source/forums/forum/449268/topic/5126565 +[ -s performance/index.html ] || rm -f performance/index.html + +mkdir -p %{buildroot}%{_datadir}/doc/%{name}-%{version} +cd .. +mv documentation %{buildroot}%{_datadir}/doc/%{name}-%{version} + +mkdir -p %{buildroot}%{_libdir}/pkgconfig +cp %{SOURCE1} %{buildroot}%{_libdir}/pkgconfig +mkdir -p %{buildroot}%{_includedir} +cp -ar adobe %{buildroot}%{_includedir} + +sofile=libasl_dev.so.%{version} +mkdir -p %{buildroot}%{_libdir} +install -m 755 $sofile %{buildroot}%{_libdir} +cd %{buildroot}%{_libdir} +ln -sf $sofile ${sofile%%.*} +ln -sf $sofile ${sofile%%.*.*} +ln -sf $sofile ${sofile%%.*.*.*} + + +%post -p /sbin/ldconfig + +%postun -p /sbin/ldconfig + + +%files +%doc LICENSE_1_0_0.txt read_me.html release_notes.txt README.fedora +%{_libdir}/*.so.* +%exclude %{_datadir}/doc/%{name}-%{version}/documentation + +%files devel +%{_includedir}/* +%{_libdir}/*.so +%{_libdir}/pkgconfig/*.pc + +%files doc +%doc %{_datadir}/doc/%{name}-%{version}/documentation + + +%changelog +* Fri May 24 2013 Petr Machata 1.0.43-15 +- Rebuild for TBB memory barrier bug + +* Tue Aug 13 2012 Alec Leamas 1.0.43-14 +- Rebuilding against std F18 branch. + +* Thu Aug 3 2012 Alec Leamas 1.0.43-13 +- Updating to boost 1.50. + +* Thu Aug 3 2012 Alec Leamas 1.0.43-12 +- Handling boost bug 6940 + +* Thu Apr 5 2012 Alec Leamas 1.0.43-11 +- Fixing hard-coded version in .pc file + +* Tue Apr 3 2012 Alec Leamas 1.0.43-10 +- Adding README.fedora, typos in spec fixed. + +* Sun Apr 1 2012 Dan HorĂ¡k 1.0.43-9 +- set ExclusiveArch to match TBB + +* Wed Mar 28 2012 Alec Leamas 1.0.43-8 +- Adding Patch2: Relaxing certain tests to fit bombono-dvd + +* Tue Mar 20 2012 Alec Leamas 1.0.43-7 +- Removing remaining documentation sources, minor fixes + +* Mon Mar 19 2012 Alec Leamas 1.0.43-7 +- Removing documentation from base package (%%exclude) +- Removing .dox files from documentation + +* Mon Mar 19 2012 Alec Leamas 1.0.43-7 +- Fixing bad source URL. +- Handling empty performance/index.html +- Moving documentation. + +* Sun Mar 18 2012 Alec Leamas 1.0.43-6 +- Using boost-build, purging get-source.sh, related clean-up. +- Source0 refers directly to sourceforge. + +* Sat Mar 17 2012 Alec Leamas 1.0.43-5 +- Updating get-source.sh to exclude APL. + +* Fri Mar 16 2012 Alec Leamas 1.0.43-5.fc15 +- Updating get-source.sh (wrong version packed in v4) +- Comments update, renamed patch0. + +* Sun Feb 19 2012 Alec Leamas 1.0.43-4.fc15 +- Fixing David Timms's comment #12. +- Removing unused parts of bundled boost in get-source.sh. +- Documenting boost bundling in spec file. +- Several patches removed, not required anymore. + +* Thu Feb 16 2012 Alec Leamas 1.0.43-3.fc15 +- Even better handling of instruction set (removed it). +- Factored out fedora flags to new patch. + +* Wed Feb 15 2012 Alec Leamas 1.0.43-2.fc15 +- Fixed linkage problems in installed package. +- Better handling of instruction set in %%prep. + +* Fri Feb 10 2012 Alec Leamas 1.0.43-1.fc15 +- Initial package diff --git a/asl-boost-1.50.patch b/asl-boost-1.50.patch new file mode 100644 index 0000000..dd4eac4 --- /dev/null +++ b/asl-boost-1.50.patch @@ -0,0 +1,81 @@ +diff --git a/adobe/move.hpp b/adobe/move.hpp +index 350000d..5fe6db5 100644 +--- a/adobe/move.hpp ++++ b/adobe/move.hpp +@@ -441,7 +441,7 @@ with move semantics, for movable types, otherwise with copy semantics. + template // O models BidirectionalIterator + inline O move_backward(I& in, O out) +-{ return move_backward(boost::begin(in), boost::end(in), out); } ++{ return adobe::move_backward(boost::begin(in), boost::end(in), out); } + + /*************************************************************************************************/ + +diff --git a/adobe/once.hpp b/adobe/once.hpp +index 5f005a4..e349b92 100644 +--- a/adobe/once.hpp ++++ b/adobe/once.hpp +@@ -11,12 +11,12 @@ + + /*************************************************************************************************/ + +-#include +- + #if defined(BOOST_HAS_THREADS) + #include + #endif + ++#include ++ + /*************************************************************************************************/ + + namespace adobe { +diff --git a/adobe/vector.hpp b/adobe/vector.hpp +index 926cfa9..8968b59 100644 +--- a/adobe/vector.hpp ++++ b/adobe/vector.hpp +@@ -319,7 +319,7 @@ void vector::append_move(I f, I l, std::forward_iterator_tag) + size_type n(std::distance(f, l)); + + if (remaining() < n) reserve((adobe::max)(size() + n, 2 * size())); +- set_finish(uninitialized_move(f, l, end())); ++ set_finish(adobe::uninitialized_move(f, l, end())); + } + + template +@@ -354,7 +354,7 @@ typename vector::iterator vector::insert(iterator p, I f, I l, std:: + + if (n < after) { + append_move(last - n, last); +- move_backward(p, last - n, last); ++ adobe::move_backward(p, last - n, last); + std::copy(f, l, p); + } else { + I m = f; +@@ -387,7 +387,7 @@ typename vector::iterator vector::insert_move(iterator p, I f, I l) + + if (n < after) { + append_move(last - n, last); +- move_backward(p, last - n, last); ++ adobe::move_backward(p, last - n, last); + adobe::move(f, l, p); + } else { + I m = f; +@@ -406,7 +406,7 @@ void vector::reserve(size_type n) + if (capacity() < n) { + vector tmp; + tmp.header_m = allocate(get_allocator(), n); +- tmp.header_m->finish() = uninitialized_move(begin(), end(), tmp.end()); ++ tmp.header_m->finish() = adobe::uninitialized_move(begin(), end(), tmp.end()); + swap(tmp); + } + } +@@ -430,7 +430,7 @@ typename vector::iterator vector::insert(iterator p, size_type n, co + + if (n < after) { + append_move(last - n, last); +- move_backward(p, last - n, last); ++ adobe::move_backward(p, last - n, last); + std::fill_n(p, n, x); + } else { + std::uninitialized_fill_n(last, n - after, x); diff --git a/asl-fedora-build-options.patch b/asl-fedora-build-options.patch new file mode 100644 index 0000000..a5a534d --- /dev/null +++ b/asl-fedora-build-options.patch @@ -0,0 +1,60 @@ +asl-fedora-flags + +From: Alec Leamas + +Fix fedora compilation flags in jamroot.jam +--- + + adobe_source_libraries/jamroot.jam | 26 ++++++++++---------------- + 1 files changed, 10 insertions(+), 16 deletions(-) + + +diff --git a/jamroot.jam b/adobe_source_libraries/jamroot.jam +index 8c7b593..dfd88c8 100644 +--- a/jamroot.jam ++++ b/jamroot.jam +@@ -46,6 +46,7 @@ adobe_requirements = + msvc:_WIN32_WINNT=0x400 + darwin:"-Werror -Wall -Wno-trigraphs -Wreturn-type -Wnon-virtual-dtor -Woverloaded-virtual -Wformat -Wmissing-braces -Wparentheses -Wswitch -Wunused-function -Wunused-label -Wunused-parameter -Wunused-variable -Wunused-value -Wunknown-pragmas -Wsign-compare" + darwin:"-Xlinker -Y -Xlinker 5" ++ gcc,release:"-fPIC @optflags@ -fpermissive -Wno-long-long -Wno-strict-aliasing -Wno-trigraphs -Wnon-virtual-dtor -Woverloaded-virtual -Wunused-parameter -Wno-unused-variable -Wunknown-pragmas -Wsign-compare -Wno-parentheses" + gcc,debug:"-Werror -Wall -Wno-trigraphs -Wreturn-type -Wnon-virtual-dtor -Woverloaded-virtual -Wformat -Wmissing-braces -Wparentheses -Wswitch -Wunused-function -Wunused-label -Wunused-parameter -Wunused-variable -Wunused-value -Wunknown-pragmas -Wsign-compare -Wno-parentheses" + # gcc-4.5.0:_GLIBCXX_USE_C99_MATH_TR1 # apparent problems using this without using other tr1 libs + gcc-4.5.0:__GXX_EXPERIMENTAL_CXX0X__ +@@ -63,8 +64,6 @@ asl_requirements = + $(tbb_requirements) + . + gcc:NOMINMAX +- gcc:x86 +- gcc,multi:i486 + msvc:"-DUNICODE -D_UNICODE" + msvc-8.0:"/W3 /WX /Wp64 /Zc:wchar_t /Zc:forScope" + msvc-9.0:"/W3 /WX /Zc:wchar_t /Zc:forScope" +@@ -74,10 +73,6 @@ asl_requirements = + $(ASL_ADDITIONAL_MACROS) + BOOST_ALL_NO_LIB + darwin:"-lSystemStubs" +- multi:/boost/thread//boost_thread +- /boost/filesystem +- /boost/system +- /boost/signals + ; + + project +@@ -116,6 +111,7 @@ switch [ os.name ] + + + import os ; ++import path ; + local boost-path = [ os.environ BOOST_PATH ] ; + if $(boost-path) + { +@@ -124,8 +120,6 @@ if $(boost-path) + boost-path = [ path.make ../boost_libraries ] ; + } + +-use-project /boost : $(boost-path) ; +- + + lib asl + : #sources diff --git a/asl-gcc.patch b/asl-gcc.patch new file mode 100644 index 0000000..f1fed07 --- /dev/null +++ b/asl-gcc.patch @@ -0,0 +1,47 @@ +asl-gcc-4.6 + +From: Alec Leamas + +Fixes to for gcc 4.6 - 4.7. +--- + + adobe/cmath.hpp | 4 ++-- + source/any_regular.cpp | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + + +diff --git a/adobe/cmath.hpp b/adobe_source_libraries/adobe/cmath.hpp +index 250a3ef..733c299 100644 +--- a/adobe/cmath.hpp ++++ b/adobe/cmath.hpp +@@ -37,7 +37,7 @@ back to include math.h. This also needs to add any other C99 math.h extensions. + #define ADOBE_HAS_CPP_CMATH + + #elif __GNUC__ == 4 +-#if (__GNUC_MINOR__ < 6) || (!(defined(_GLIBCXX_USE_C99_MATH_TR1))) ++#if (__GNUC_MINOR__ <= 7) || (!(defined(_GLIBCXX_USE_C99_MATH_TR1))) + // at least Ubuntu 9.x, gcc 4.4.1, still falls into this case + /* + The currently supported version of GNUC has C99 extensions in math.h. But no TR1 extensions. +@@ -46,7 +46,7 @@ back to include math.h. This also needs to add any other C99 math.h extensions. + #include + #else + #include +-s ++ + #define ADOBE_HAS_C99_STD_MATH_H + #endif + #endif +diff --git a/source/any_regular.cpp b/adobe_source_libraries/source/any_regular.cpp +index b0826ba..2f4f3fb 100644 +--- a/source/any_regular.cpp ++++ b/source/any_regular.cpp +@@ -62,7 +62,7 @@ template + struct make_serializable { static const serializable value; }; + + template +-const serializable make_serializable::value; ++const serializable make_serializable::value = serializable(); + + /**************************************************************************************************/ + diff --git a/asl-no-concept-check1043.patch b/asl-no-concept-check1043.patch new file mode 100644 index 0000000..6bfdc89 --- /dev/null +++ b/asl-no-concept-check1043.patch @@ -0,0 +1,88 @@ +diff -Naur source_release_orig/adobe/any_iterator.hpp source_release/adobe/any_iterator.hpp +--- source_release_orig/adobe/any_iterator.hpp 2010-11-08 21:18:19.000000000 +0300 ++++ source_release/adobe/any_iterator.hpp 2012-03-28 16:59:42.000000000 +0400 +@@ -47,7 +47,10 @@ + { + typedef typename optimized_storage_type >::type base_t; + ++// this is too restrictive check; need to make appropriate one ++#ifndef NO_ASL_AI_CONCEPT_CHECK + BOOST_CLASS_REQUIRE(I, boost, ForwardIteratorConcept); ++#endif + + type(const I& x) : base_t (x) + { } +@@ -133,7 +136,9 @@ + { + typedef typename optimized_storage_type >::type base_t; + ++#ifndef NO_ASL_AI_CONCEPT_CHECK + BOOST_CLASS_REQUIRE(I, boost, BidirectionalIteratorConcept); ++#endif + + type(const I& x) + : base_t(x) {} +@@ -235,7 +240,9 @@ + { + typedef typename optimized_storage_type >::type base_t; + ++#ifndef NO_ASL_AI_CONCEPT_CHECK + BOOST_CLASS_REQUIRE(I, boost, RandomAccessIteratorConcept); ++#endif + + type(const I& x) + : base_t(x) {} +diff -Naur source_release_orig/adobe/poly.hpp source_release/adobe/poly.hpp +--- source_release_orig/adobe/poly.hpp 2010-11-08 21:18:20.000000000 +0300 ++++ source_release/adobe/poly.hpp 2012-03-28 17:01:40.000000000 +0400 +@@ -70,8 +70,10 @@ + virtual const void* cast() const = 0; + virtual const std::type_info& type_info() const = 0; + ++#ifndef NO_ASL_AI_CONCEPT_CHECK + // Precondition of assignment: this->type_info() == x.type_info() + virtual void assign(const poly_copyable_interface& x) = 0; ++#endif + + // Precondition of exchange: this->type_info() == x.type_info() + virtual void exchange(poly_copyable_interface& x) = 0; +@@ -107,9 +109,11 @@ + ~poly_state_remote() + { delete value_ptr_m; } + ++#ifndef NO_ASL_AI_CONCEPT_CHECK + // Precondition : this->type_info() == x.type_info() + void assign(const poly_copyable_interface& x) + { *value_ptr_m = *static_cast(x).value_ptr_m; } ++#endif + + const std::type_info& type_info() const + { return typeid(value_type); } +@@ -144,9 +148,11 @@ + explicit poly_state_local(value_type x) + : value_m(adobe::move(x)) { } + ++#ifndef NO_ASL_AI_CONCEPT_CHECK + // Precondition : this->type_info() == x.type_info() + void assign(const poly_copyable_interface& x) + { value_m = static_cast(x).value_m; } ++#endif + + const std::type_info& type_info() const + { return typeid(value_type); } +@@ -342,6 +348,7 @@ + return true; + } + ++#ifndef NO_ASL_AI_CONCEPT_CHECK + template poly_base& assign(const T& x) + { + if (type_info() == typeid(T)) +@@ -364,6 +371,7 @@ + interface_ref().~interface_type(); + x.interface_ref().clone(storage()); + } ++#endif + + const interface_type* operator->() const + { return &interface_ref(); } diff --git a/asl-time-utc.patch b/asl-time-utc.patch new file mode 100644 index 0000000..ee758be --- /dev/null +++ b/asl-time-utc.patch @@ -0,0 +1,57 @@ +diff --git a/adobe/timer.hpp b/adobe/timer.hpp +index 8622e66..c0ef46d 100644 +--- a/adobe/timer.hpp ++++ b/adobe/timer.hpp +@@ -182,7 +182,7 @@ public: + #if ADOBE_PLATFORM_WIN + (void)::QueryPerformanceCounter(&epoch_m); + #elif defined(BOOST_HAS_THREADS) +- boost::xtime_get(&epoch_m, boost::TIME_UTC); ++ boost::xtime_get(&epoch_m, boost::TIME_UTC_); + #elif defined(BOOST_HAS_GETTIMEOFDAY) + gettimeofday(&epoch_m, static_cast(0)); + #endif +@@ -206,7 +206,7 @@ public: + (void)::QueryPerformanceCounter(&split_m); + return (split_m.QuadPart - epoch_m.QuadPart) / static_cast(frequency_m.QuadPart) * double(1e3); + #elif defined(BOOST_HAS_THREADS) +- boost::xtime_get(&split_m, boost::TIME_UTC); ++ boost::xtime_get(&split_m, boost::TIME_UTC_); + return ((split_m.sec - epoch_m.sec) * double(1e3) + (split_m.nsec - epoch_m.nsec) / double(1e6)); + #elif defined(BOOST_HAS_GETTIMEOFDAY) + gettimeofday(&split_m, static_cast(0)); +diff --git a/documentation/html/timer_8hpp_source.html b/documentation/html/timer_8hpp_source.html +index d5fc808..79a7f62 100644 +--- a/documentation/html/timer_8hpp_source.html ++++ b/documentation/html/timer_8hpp_source.html +@@ -200,7 +200,7 @@ + 00182 #if ADOBE_PLATFORM_WIN + 00183 (void)::QueryPerformanceCounter(&epoch_m); + 00184 #elif defined(BOOST_HAS_THREADS) +-00185 boost::xtime_get(&epoch_m, boost::TIME_UTC); ++00185 boost::xtime_get(&epoch_m, boost::TIME_UTC_); + 00186 #elif defined(BOOST_HAS_GETTIMEOFDAY) + 00187 gettimeofday(&epoch_m, static_cast<struct timezone*>(0)); + 00188 #endif +@@ -215,7 +215,7 @@ + 00206 (void)::QueryPerformanceCounter(&split_m); + 00207 return (split_m.QuadPart - epoch_m.QuadPart) / static_cast<double>(frequency_m.QuadPart) * double(1e3); + 00208 #elif defined(BOOST_HAS_THREADS) +-00209 boost::xtime_get(&split_m, boost::TIME_UTC); ++00209 boost::xtime_get(&split_m, boost::TIME_UTC_); + 00210 return ((split_m.sec - epoch_m.sec) * double(1e3) + (split_m.nsec - epoch_m.nsec) / double(1e6)); + 00211 #elif defined(BOOST_HAS_GETTIMEOFDAY) + 00212 gettimeofday(&split_m, static_cast<struct timezone*>(0)); +diff --git a/source/zuid_sys_dep.cpp b/source/zuid_sys_dep.cpp +index 8930dd7..bd54770 100644 +--- a/source/zuid_sys_dep.cpp ++++ b/source/zuid_sys_dep.cpp +@@ -128,7 +128,7 @@ adobe::md5_t::digest_t get_generic_random_info() + #endif + { + #if defined(BOOST_HAS_THREADS) +- boost::xtime_get(&time_m, boost::TIME_UTC); ++ boost::xtime_get(&time_m, boost::TIME_UTC_); + #endif + #if defined(BOOST_HAS_UNISTD_H) + gethostname(hostname_m, 256); diff --git a/dead.package b/dead.package deleted file mode 100644 index 6601704..0000000 --- a/dead.package +++ /dev/null @@ -1 +0,0 @@ -Orphaned diff --git a/sources b/sources new file mode 100644 index 0000000..6a9ee74 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +eac9f3eec40ed1f41d1e4671289b5e8b asl_1.0.43.tgz