[med-svn] [ncbi-blast+] 02/04: Import upstream patch for remaining Boost compatibility issues (#833451).

Aaron M. Ucko ucko at moszumanska.debian.org
Fri Aug 5 03:24:03 UTC 2016


This is an automated email from the git hooks/post-receive script.

ucko pushed a commit to branch master
in repository ncbi-blast+.

commit e9a76498a8445bf3c7704e76da5767816a4d95a4
Author: Aaron M. Ucko <ucko at debian.org>
Date:   Thu Aug 4 23:02:18 2016 -0400

    Import upstream patch for remaining Boost compatibility issues (#833451).
    
    Call it debian/patches/support_recent_boost.
---
 debian/changelog                    |   4 +-
 debian/patches/series               |   1 +
 debian/patches/support_recent_boost | 512 ++++++++++++++++++++++++++++++++++++
 3 files changed, 516 insertions(+), 1 deletion(-)

diff --git a/debian/changelog b/debian/changelog
index c1cbf3c..0f032c3 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,8 +1,10 @@
 ncbi-blast+ (2.4.0-2) UNRELEASED; urgency=medium
 
   * NOT RELEASED YET.
+  * Import upstream patch for remaining Boost compatibility issues
+    as debian/patches/support_recent_boost.  (Closes: #833451.)
 
- -- Aaron M. Ucko <ucko at debian.org>  Thu, 04 Aug 2016 22:57:56 -0400
+ -- Aaron M. Ucko <ucko at debian.org>  Thu, 04 Aug 2016 23:02:18 -0400
 
 ncbi-blast+ (2.4.0-1) unstable; urgency=medium
 
diff --git a/debian/patches/series b/debian/patches/series
index 349f163..ad2f271 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -7,3 +7,4 @@ use_pie_for_apps
 skip_services_unit_test
 fix_configure
 fix_version_extraction
+support_recent_boost
diff --git a/debian/patches/support_recent_boost b/debian/patches/support_recent_boost
new file mode 100644
index 0000000..8e7bc85
--- /dev/null
+++ b/debian/patches/support_recent_boost
@@ -0,0 +1,512 @@
+--- a/c++/src/corelib/teamcity_boost.cpp
++++ b/c++/src/corelib/teamcity_boost.cpp
+@@ -1,83 +1,106 @@
+ /* Copyright 2011 JetBrains s.r.o.
+- *
++ * 
+  * Licensed under the Apache License, Version 2.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+- *
++ * 
+  *     http://www.apache.org/licenses/LICENSE-2.0
+- *
++ * 
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+- *
++ * 
+  * $Id: teamcity_boost.cpp 488254 2015-12-29 13:56:26Z ivanov $
+ */
+ 
+ #include <sstream>
+ 
+-#include <boost/test/unit_test_suite_impl.hpp>
+ #include <boost/test/results_collector.hpp>
+ #include <boost/test/utils/basic_cstring/io.hpp>
+ #include <boost/test/unit_test_log.hpp>
+-#include <boost/test/included/unit_test.hpp>
++#include <boost/test/execution_monitor.hpp>
++#include <boost/test/unit_test_log_formatter.hpp>
++#include <boost/test/unit_test.hpp>
++
++// In 1.59.0, they changed the name of this enum value, so we have to this hacky thing...
++#include <boost/version.hpp>
++#if BOOST_VERSION >= 105900
++    #define TUT_CASE_IDENTIFIER boost::unit_test::TUT_CASE
++    #define CURRENT_TEST_NAME   boost::unit_test_framework::framework::current_test_case().full_name()
++#else
++    #define TUT_CASE_IDENTIFIER boost::unit_test::tut_case
++    #define CURRENT_TEST_NAME   boost::unit_test_framework::framework::current_test_case().p_name
++#endif
+ 
+ #include "teamcity_messages.h"
+ 
+-///
+-// NOTE: Using namespace boost::unit_test breaks GPIPE Static build!!
+-///
+-//using namespace boost::unit_test;
+-using namespace std;
+-
+-namespace JetBrains {
++namespace jetbrains { namespace teamcity {
++const std::string ASSERT_CTX = "Assertion occurred in a following context:";
++const std::string FAILURE_CTX = "Failure occurred in a following context:";
+ 
+ // Custom formatter for TeamCity messages
+ class TeamcityBoostLogFormatter: public boost::unit_test::unit_test_log_formatter {
+     TeamcityMessages messages;
+     std::string currentDetails;
++    std::string currentContextDetails;
+     std::string flowId;
+ 
+ public:
+     TeamcityBoostLogFormatter(const std::string &_flowId);
+     TeamcityBoostLogFormatter();
+ 
+-    void log_start(std::ostream&, boost::unit_test::counter_t test_cases_amount);
+-    void log_finish(std::ostream&);
+-    void log_build_info(std::ostream&);
++    virtual ~TeamcityBoostLogFormatter() {}
++
++    virtual void log_start(std::ostream&, boost::unit_test::counter_t test_cases_amount);
++    virtual void log_finish(std::ostream&);
++    virtual void log_build_info(std::ostream&);
+ 
+-    void test_unit_start(std::ostream&, boost::unit_test::test_unit const& tu);
+-    void test_unit_finish(std::ostream&,
++    virtual void test_unit_start(std::ostream&, boost::unit_test::test_unit const& tu);
++    virtual void test_unit_finish(std::ostream&,
+         boost::unit_test::test_unit const& tu,
+         unsigned long elapsed);
+-    void test_unit_skipped(std::ostream&, boost::unit_test::test_unit const& tu);
++    virtual void test_unit_skipped(std::ostream&, boost::unit_test::test_unit const& tu);
++    virtual void test_unit_skipped(std::ostream&,
++        boost::unit_test::test_unit const& tu,
++        boost::unit_test::const_string reason);
+ 
+-    void log_exception(std::ostream&,
++    virtual void log_exception(std::ostream&,
+         boost::unit_test::log_checkpoint_data const&,
+         boost::unit_test::const_string explanation);
++    virtual void log_exception_start(std::ostream&,
++        boost::unit_test::log_checkpoint_data const&,
++        const boost::execution_exception&);
++    virtual void log_exception_finish(std::ostream&);
+ 
+-    void log_entry_start(std::ostream&,
+-        boost::unit_test::log_entry_data const&,
++    virtual void log_entry_start(std::ostream & out,
++        boost::unit_test::log_entry_data const & entry_data,
+         log_entry_types let);
+-    void log_entry_value(std::ostream&, boost::unit_test::const_string value);
+-    void log_entry_finish(std::ostream&);
++    virtual void log_entry_value(std::ostream&, boost::unit_test::const_string value);
++    virtual void log_entry_finish(std::ostream&);
++
++    virtual void entry_context_start(std::ostream&, boost::unit_test::log_level);
++    virtual void log_entry_context(std::ostream&, boost::unit_test::const_string);
++    virtual void entry_context_finish(std::ostream&);
+ };
+ 
+ // Fake fixture to register formatter
+ struct TeamcityFormatterRegistrar {
+     TeamcityFormatterRegistrar() {
+-        if (JetBrains::underTeamcity()) {
+-            boost::unit_test::unit_test_log.set_formatter(new JetBrains::TeamcityBoostLogFormatter());
+-            boost::unit_test::unit_test_log.set_threshold_level(boost::unit_test::runtime_config::log_level());
++        if (underTeamcity()) {
++            boost::unit_test::unit_test_log.set_formatter(new TeamcityBoostLogFormatter());
++            boost::unit_test::unit_test_log.set_threshold_level
++                (RTCFG(but::log_level, LOG_LEVEL, log_level));
+         }
+     }
+ };
++
+ BOOST_GLOBAL_FIXTURE(TeamcityFormatterRegistrar);
+ 
+ // Formatter implementation
+-string toString(boost::unit_test::const_string bstr) {
+-    stringstream ss;
++static std::string toString(boost::unit_test::const_string bstr) {
++    std::stringstream ss;
+ 
+     ss << bstr;
+ 
+@@ -92,19 +115,19 @@ TeamcityBoostLogFormatter::TeamcityBoost
+ : flowId(getFlowIdFromEnvironment())
+ {}
+ 
+-void TeamcityBoostLogFormatter::log_start(ostream &out, boost::unit_test::counter_t test_cases_amount)
++void TeamcityBoostLogFormatter::log_start(std::ostream &/*out*/, boost::unit_test::counter_t /*test_cases_amount*/)
+ {}
+ 
+-void TeamcityBoostLogFormatter::log_finish(ostream &out)
++void TeamcityBoostLogFormatter::log_finish(std::ostream &/*out*/)
+ {}
+ 
+-void TeamcityBoostLogFormatter::log_build_info(ostream &out)
++void TeamcityBoostLogFormatter::log_build_info(std::ostream &/*out*/)
+ {}
+ 
+-void TeamcityBoostLogFormatter::test_unit_start(ostream &out, boost::unit_test::test_unit const& tu) {
++void TeamcityBoostLogFormatter::test_unit_start(std::ostream &out, boost::unit_test::test_unit const& tu) {
+     messages.setOutput(out);
+ 
+-    if (tu.p_type == boost::unit_test::tut_case) {
++    if (tu.p_type == TUT_CASE_IDENTIFIER) {
+         messages.testStarted(tu.p_name, flowId);
+     } else {
+         messages.suiteStarted(tu.p_name, flowId);
+@@ -113,11 +136,11 @@ void TeamcityBoostLogFormatter::test_uni
+     currentDetails.clear();
+ }
+ 
+-void TeamcityBoostLogFormatter::test_unit_finish(ostream &out, boost::unit_test::test_unit const& tu, unsigned long elapsed) {
++void TeamcityBoostLogFormatter::test_unit_finish(std::ostream &out, boost::unit_test::test_unit const& tu, unsigned long elapsed) {
+     messages.setOutput(out);
+ 
+     boost::unit_test::test_results const& tr = boost::unit_test::results_collector.results(tu.p_id);
+-    if (tu.p_type == boost::unit_test::tut_case) {
++    if (tu.p_type == TUT_CASE_IDENTIFIER) {
+         if(!tr.passed()) {
+             if(tr.p_skipped) {
+                 messages.testIgnored(tu.p_name, "ignored", flowId);
+@@ -134,27 +157,62 @@ void TeamcityBoostLogFormatter::test_uni
+     }
+ }
+ 
+-void TeamcityBoostLogFormatter::test_unit_skipped(ostream &out, boost::unit_test::test_unit const& tu)
++void TeamcityBoostLogFormatter::test_unit_skipped(std::ostream &/*out*/, boost::unit_test::test_unit const& /*tu*/)
+ {}
+ 
+-void TeamcityBoostLogFormatter::log_exception(ostream &out, boost::unit_test::log_checkpoint_data const&, boost::unit_test::const_string explanation) {
+-    string what = toString(explanation);
++void TeamcityBoostLogFormatter::test_unit_skipped(std::ostream &out, boost::unit_test::test_unit const& tu, boost::unit_test::const_string reason)
++{
++    messages.testIgnored(tu.p_name, toString(reason), flowId);
++}
++
++void TeamcityBoostLogFormatter::log_exception(std::ostream &out, boost::unit_test::log_checkpoint_data const &, boost::unit_test::const_string explanation) {
++    std::string what = toString(explanation);
+ 
+-    out << what << endl;
++    out << what << std::endl;
+     currentDetails += what + "\n";
+ }
+ 
+-void TeamcityBoostLogFormatter::log_entry_start(ostream&, boost::unit_test::log_entry_data const&, log_entry_types let)
+-{}
++void TeamcityBoostLogFormatter::log_exception_start(std::ostream &out, boost::unit_test::log_checkpoint_data const &data, const boost::execution_exception& excpt) {
++    log_exception(out, data, excpt.what());
++}
++
++void TeamcityBoostLogFormatter::log_exception_finish(std::ostream &/*out*/) {}
+ 
+-void TeamcityBoostLogFormatter::log_entry_value(ostream &out, boost::unit_test::const_string value) {
++
++void TeamcityBoostLogFormatter::log_entry_start(std::ostream & out, boost::unit_test::log_entry_data const & entry_data, log_entry_types /*let*/)
++{
++    std::stringstream ss(std::ios_base::out);
++
++    out << entry_data.m_file_name << "(" << entry_data.m_line_num << "): ";
++    ss  << entry_data.m_file_name << "(" << entry_data.m_line_num << "): ";
++
++    currentDetails += ss.str();
++}
++
++void TeamcityBoostLogFormatter::log_entry_value(std::ostream &out, boost::unit_test::const_string value) {
+     out << value;
+     currentDetails += toString(value);
+ }
+ 
+-void TeamcityBoostLogFormatter::log_entry_finish(ostream &out) {
+-    out << endl;
++void TeamcityBoostLogFormatter::log_entry_finish(std::ostream &out) {
++    out << std::endl;
+     currentDetails += "\n";
+ }
+ 
++void TeamcityBoostLogFormatter::entry_context_start(std::ostream &out, boost::unit_test::log_level l) {
++    const std::string& initial_msg = (l == boost::unit_test::log_successful_tests ? ASSERT_CTX : FAILURE_CTX);
++    out << initial_msg;
++    currentContextDetails = initial_msg;
+ }
++
++void TeamcityBoostLogFormatter::log_entry_context(std::ostream &out, boost::unit_test::const_string ctx) {
++    out << "\n " << ctx;
++    currentContextDetails += "\n " + toString(ctx);
++}
++
++void TeamcityBoostLogFormatter::entry_context_finish(std::ostream &out) {
++    out.flush();
++    messages.testOutput(CURRENT_TEST_NAME, currentContextDetails, flowId, TeamcityMessages::StdErr);
++}
++
++}}                                                          // namespace teamcity, jetbrains
+--- a/c++/src/corelib/teamcity_messages.cpp
++++ b/c++/src/corelib/teamcity_messages.cpp
+@@ -15,40 +15,61 @@
+  * $Id: teamcity_messages.cpp 435791 2014-05-20 18:47:58Z camacho $
+ */
+ 
+-#include <ncbi_pch.hpp>
+-
+-#include <stdlib.h>
+-#include <sstream>
+-
+ #include "teamcity_messages.h"
+ 
+-using namespace std;
++#include <cstdlib>
++#include <sstream>
+ 
+-namespace JetBrains {
++namespace jetbrains {
++namespace teamcity {
+ 
+ std::string getFlowIdFromEnvironment() {
++#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
++    char *flowId = NULL;
++    size_t sz = 0;
++    std::string result;
++    if(!_dupenv_s(&flowId, &sz,"TEAMCITY_PROCESS_FLOW_ID")) {
++        result = flowId != NULL ? flowId : "";
++        free(flowId);
++    }
++
++    return result;
++#else
+     const char *flowId = getenv("TEAMCITY_PROCESS_FLOW_ID");
+     return flowId == NULL ? "" : flowId;
++#endif
+ }
+ 
+ bool underTeamcity() {
++#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__)
++    char *teamCityProjectName = 0;
++    size_t sz = 0;
++    bool result = false;
++    if(!_dupenv_s(&teamCityProjectName, &sz, "TEAMCITY_PROJECT_NAME")) {
++        result = teamCityProjectName != NULL;
++        free(teamCityProjectName);
++    }
++
++    return result;
++#else
+     return getenv("TEAMCITY_PROJECT_NAME") != NULL;
++#endif
+ }
+ 
+ TeamcityMessages::TeamcityMessages()
+-: m_out(&cout)
++: m_out(&std::cout)
+ {}
+ 
+-void TeamcityMessages::setOutput(ostream &out) {
++void TeamcityMessages::setOutput(std::ostream &out) {
+     m_out = &out;
+ }
+ 
+-string TeamcityMessages::escape(string s) {
+-    string result;
+-    
++std::string TeamcityMessages::escape(std::string s) {
++    std::string result;
++
+     for (size_t i = 0; i < s.length(); i++) {
+         char c = s[i];
+-        
++
+         switch (c) {
+         case '\n': result.append("|n"); break;
+         case '\r': result.append("|r"); break;
+@@ -58,56 +79,60 @@ string TeamcityMessages::escape(string s
+         default:   result.append(&c, 1);
+         }
+     }
+-    
++
+     return result;
+ }
+ 
+-void TeamcityMessages::openMsg(const string &name) {
+-    *m_out << "##teamcity[" << name;
++void TeamcityMessages::openMsg(const std::string &name) {
++    // endl for http://jetbrains.net/tracker/issue/TW-4412
++    *m_out << std::endl << "##teamcity[" << name;
+ }
+ 
+ void TeamcityMessages::closeMsg() {
+     *m_out << "]";
+     // endl for http://jetbrains.net/tracker/issue/TW-4412
+-    *m_out << endl;
+-    m_out->flush();
++    *m_out << std::endl;
+ }
+ 
+-void TeamcityMessages::writeProperty(string name, string value) {
++void TeamcityMessages::writeProperty(std::string name, std::string value) {
+     *m_out << " " << name << "='" << escape(value) << "'";
+ }
+ 
+-void TeamcityMessages::suiteStarted(string name, string flowid) {
++void TeamcityMessages::suiteStarted(std::string name, std::string flowid) {
+     openMsg("testSuiteStarted");
+     writeProperty("name", name);
+     if(flowid.length() > 0) {
+         writeProperty("flowId", flowid);
+     }
+-    
++
+     closeMsg();
+ }
+ 
+-void TeamcityMessages::suiteFinished(string name, string flowid) {
++void TeamcityMessages::suiteFinished(std::string name, std::string flowid) {
+     openMsg("testSuiteFinished");
+     writeProperty("name", name);
+     if(flowid.length() > 0) {
+         writeProperty("flowId", flowid);
+     }
+-    
++
+     closeMsg();
+ }
+ 
+-void TeamcityMessages::testStarted(string name, string flowid) {
++void TeamcityMessages::testStarted(std::string name, std::string flowid, bool captureStandardOutput) {
+     openMsg("testStarted");
+     writeProperty("name", name);
+     if(flowid.length() > 0) {
+         writeProperty("flowId", flowid);
+     }
+-    
++
++    if(captureStandardOutput) {
++        writeProperty("captureStandardOutput", "true"); // false by default
++    }
++
+     closeMsg();
+ }
+ 
+-void TeamcityMessages::testFinished(string name, int durationMs, string flowid) {
++void TeamcityMessages::testFinished(std::string name, int durationMs, std::string flowid) {
+     openMsg("testFinished");
+ 
+     writeProperty("name", name);
+@@ -117,15 +142,15 @@ void TeamcityMessages::testFinished(stri
+     }
+ 
+     if(durationMs >= 0) {
+-        stringstream out;
++        std::stringstream out(std::ios_base::out);
+         out << durationMs;
+         writeProperty("duration", out.str());
+     }
+-    
++
+     closeMsg();
+ }
+ 
+-void TeamcityMessages::testFailed(string name, string message, string details, string flowid) {
++void TeamcityMessages::testFailed(std::string name, std::string message, std::string details, std::string flowid) {
+     openMsg("testFailed");
+     writeProperty("name", name);
+     writeProperty("message", message);
+@@ -133,19 +158,31 @@ void TeamcityMessages::testFailed(string
+     if(flowid.length() > 0) {
+         writeProperty("flowId", flowid);
+     }
+-    
++
+     closeMsg();
+ }
+ 
+-void TeamcityMessages::testIgnored(std::string name, std::string message, string flowid) {
++void TeamcityMessages::testIgnored(std::string name, std::string message, std::string flowid) {
+     openMsg("testIgnored");
+     writeProperty("name", name);
+     writeProperty("message", message);
+     if(flowid.length() > 0) {
+         writeProperty("flowId", flowid);
+     }
+-    
++
+     closeMsg();
+ }
+ 
++void TeamcityMessages::testOutput(std::string name, std::string output, std::string flowid, bool isStdError) {
++    openMsg(isStdError ? "testStdErr" : "testStdOut");
++    writeProperty("name", name);
++    writeProperty("out", output);
++    if(flowid.length() > 0) {
++        writeProperty("flowId", flowid);
++    }
++
++    closeMsg();
++}
++
++}
+ }
+--- a/c++/src/corelib/teamcity_messages.h
++++ b/c++/src/corelib/teamcity_messages.h
+@@ -18,17 +18,18 @@
+ #ifndef H_TEAMCITY_MESSAGES
+ #define H_TEAMCITY_MESSAGES
+ 
+-#include <string>
+ #include <iostream>
++#include <string>
+ 
+-namespace JetBrains {
++namespace jetbrains {
++namespace teamcity {
+ 
+ std::string getFlowIdFromEnvironment();
+ bool underTeamcity();
+ 
+ class TeamcityMessages {
+     std::ostream *m_out;
+-    
++
+ protected:
+     std::string escape(std::string s);
+ 
+@@ -37,19 +38,24 @@ protected:
+     void closeMsg();
+ 
+ public:
++    static const bool StdErr = true;
++    static const bool StdOut = false;
++
+     TeamcityMessages();
+-    
++
+     void setOutput(std::ostream &);
+-    
+-    void suiteStarted(std::string name, std::string flowid = "");
+-    void suiteFinished(std::string name, std::string flowid = "");
+-    
+-    void testStarted(std::string name, std::string flowid = "");
+-    void testFailed(std::string name, std::string message, std::string details, std::string flowid = "");
+-    void testIgnored(std::string name, std::string message, std::string flowid = "");
+-    void testFinished(std::string name, int durationMs = -1, std::string flowid = "");    
++
++    void suiteStarted(std::string name, std::string flowid =  std::string());
++    void suiteFinished(std::string name, std::string flowid =  std::string());
++
++    void testStarted(std::string name, std::string flowid =  std::string(), bool captureStandardOutput = false);
++    void testFailed(std::string name, std::string message, std::string details, std::string flowid =  std::string());
++    void testIgnored(std::string name, std::string message, std::string flowid =  std::string());
++    void testOutput(std::string name, std::string output, std::string flowid, bool isStdErr = StdOut);
++    void testFinished(std::string name, int durationMs = -1, std::string flowid = std::string());
+ };
+ 
+ }
++}
+ 
+ #endif /* H_TEAMCITY_MESSAGES */

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/ncbi-blast+.git



More information about the debian-med-commit mailing list