diff options
author | rakuco <rakuco@FreeBSD.org> | 2017-07-14 23:15:30 +0800 |
---|---|---|
committer | rakuco <rakuco@FreeBSD.org> | 2017-07-14 23:15:30 +0800 |
commit | 478893951e96623083c2333b4a3fdc1e737ccf92 (patch) | |
tree | 958db1ece533713a13675426a5cf8b246bc7cddb /devel | |
parent | d978e45135ea95749d6cb828ade17f67c7e83da2 (diff) | |
download | freebsd-ports-gnome-478893951e96623083c2333b4a3fdc1e737ccf92.tar.gz freebsd-ports-gnome-478893951e96623083c2333b4a3fdc1e737ccf92.tar.zst freebsd-ports-gnome-478893951e96623083c2333b4a3fdc1e737ccf92.zip |
Stop using boost's tr1 regex implementation.
tr1 is gone in the upcoming Boost 1.65. Adjust the code by switching to C++11's
<regex> header instead. There is similar code in upstream's git repository, but
it is mixed with a lot of other changes that make it infeasible to backport
them directly.
PR: 220715
Reported by: jbeich
Diffstat (limited to 'devel')
-rw-r--r-- | devel/libcutl/Makefile | 2 | ||||
-rw-r--r-- | devel/libcutl/files/patch-configure | 38 | ||||
-rw-r--r-- | devel/libcutl/files/patch-cutl_re_re.cxx | 141 |
3 files changed, 180 insertions, 1 deletions
diff --git a/devel/libcutl/Makefile b/devel/libcutl/Makefile index 4551d03e717f..b78857ed5e8d 100644 --- a/devel/libcutl/Makefile +++ b/devel/libcutl/Makefile @@ -2,7 +2,7 @@ PORTNAME= libcutl PORTVERSION= 1.10.0 -PORTREVISION= 3 +PORTREVISION= 4 CATEGORIES= devel MASTER_SITES= http://www.codesynthesis.com/download/${PORTNAME}/${PORTVERSION:R}/ diff --git a/devel/libcutl/files/patch-configure b/devel/libcutl/files/patch-configure new file mode 100644 index 000000000000..432051d95751 --- /dev/null +++ b/devel/libcutl/files/patch-configure @@ -0,0 +1,38 @@ +Use regex from C++11 instead of boost/tr1's version (the latter is gone as of +boost 1.65). +--- configure.orig 2015-11-24 13:45:55 UTC ++++ configure +@@ -17554,13 +17554,13 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + +-#include <boost/tr1/regex.hpp> ++#include <regex> + + int + main () + { +- std::tr1::regex r ("te.t", std::tr1::regex_constants::ECMAScript); +- return std::tr1::regex_match ("test", r) ? 0 : 1; ++ std::regex r ("te.t", std::regex_constants::ECMAScript); ++ return std::regex_match ("test", r) ? 0 : 1; + } + + _ACEOF +@@ -17631,13 +17631,13 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + +-#include <boost/tr1/regex.hpp> ++#include <regex> + + int + main () + { +- std::tr1::regex r ("te.t", std::tr1::regex_constants::ECMAScript); +- return std::tr1::regex_match ("test", r) ? 0 : 1; ++ std::regex r ("te.t", std::regex_constants::ECMAScript); ++ return std::regex_match ("test", r) ? 0 : 1; + } + + _ACEOF diff --git a/devel/libcutl/files/patch-cutl_re_re.cxx b/devel/libcutl/files/patch-cutl_re_re.cxx new file mode 100644 index 000000000000..1a2a30fc886a --- /dev/null +++ b/devel/libcutl/files/patch-cutl_re_re.cxx @@ -0,0 +1,141 @@ +Use regex from C++11 instead of boost/tr1's version (the latter is gone as of +boost 1.65). +--- cutl/re/re.cxx.orig 2017-07-14 14:59:43 UTC ++++ cutl/re/re.cxx +@@ -9,7 +9,7 @@ + #ifndef LIBCUTL_EXTERNAL_BOOST + # include <cutl/details/boost/tr1/regex.hpp> + #else +-# include <boost/tr1/regex.hpp> ++# include <regex> + #endif + + using namespace std; +@@ -40,17 +40,17 @@ namespace cutl + struct basic_regex<C>::impl + { + typedef basic_string<C> string_type; +- typedef tr1::basic_regex<C> regex_type; ++ typedef std::basic_regex<C> regex_type; + typedef typename regex_type::flag_type flag_type; + + impl () {} + impl (regex_type const& r): r (r) {} + impl (string_type const& s, bool icase) + { +- flag_type f (tr1::regex_constants::ECMAScript); ++ flag_type f (std::regex_constants::ECMAScript); + + if (icase) +- f |= tr1::regex_constants::icase; ++ f |= std::regex_constants::icase; + + r.assign (s, f); + } +@@ -118,15 +118,15 @@ namespace cutl + impl_ = s == 0 ? new impl : new impl (*s, icase); + else + { +- impl::flag_type f (tr1::regex_constants::ECMAScript); ++ impl::flag_type f (std::regex_constants::ECMAScript); + + if (icase) +- f |= tr1::regex_constants::icase; ++ f |= std::regex_constants::icase; + + impl_->r.assign (*s, f); + } + } +- catch (tr1::regex_error const& e) ++ catch (std::regex_error const& e) + { + throw basic_format<char> (s == 0 ? "" : *s, e.what ()); + } +@@ -146,15 +146,15 @@ namespace cutl + impl_ = s == 0 ? new impl : new impl (*s, icase); + else + { +- impl::flag_type f (tr1::regex_constants::ECMAScript); ++ impl::flag_type f (std::regex_constants::ECMAScript); + + if (icase) +- f |= tr1::regex_constants::icase; ++ f |= std::regex_constants::icase; + + impl_->r.assign (*s, f); + } + } +- catch (tr1::regex_error const& e) ++ catch (std::regex_error const& e) + { + throw basic_format<wchar_t> (s == 0 ? L"" : *s, e.what ()); + } +@@ -166,28 +166,28 @@ namespace cutl + bool basic_regex<char>:: + match (string_type const& s) const + { +- return tr1::regex_match (s, impl_->r); ++ return std::regex_match (s, impl_->r); + } + + template <> + bool basic_regex<wchar_t>:: + match (string_type const& s) const + { +- return tr1::regex_match (s, impl_->r); ++ return std::regex_match (s, impl_->r); + } + + template <> + bool basic_regex<char>:: + search (string_type const& s) const + { +- return tr1::regex_search (s, impl_->r); ++ return std::regex_search (s, impl_->r); + } + + template <> + bool basic_regex<wchar_t>:: + search (string_type const& s) const + { +- return tr1::regex_search (s, impl_->r); ++ return std::regex_search (s, impl_->r); + } + + template <> +@@ -196,13 +196,13 @@ namespace cutl + string_type const& sub, + bool first_only) const + { +- tr1::regex_constants::match_flag_type f ( +- tr1::regex_constants::format_default); ++ std::regex_constants::match_flag_type f ( ++ std::regex_constants::format_default); + + if (first_only) +- f |= tr1::regex_constants::format_first_only; ++ f |= std::regex_constants::format_first_only; + +- return tr1::regex_replace (s, impl_->r, sub, f); ++ return std::regex_replace (s, impl_->r, sub, f); + } + + template <> +@@ -211,13 +211,13 @@ namespace cutl + string_type const& sub, + bool first_only) const + { +- tr1::regex_constants::match_flag_type f ( +- tr1::regex_constants::format_default); ++ std::regex_constants::match_flag_type f ( ++ std::regex_constants::format_default); + + if (first_only) +- f |= tr1::regex_constants::format_first_only; ++ f |= std::regex_constants::format_first_only; + +- return tr1::regex_replace (s, impl_->r, sub, f); ++ return std::regex_replace (s, impl_->r, sub, f); + } + } + } |