ci: compile-check installed headers
Script copied from ndn-cxx with minor modifications Also, move tlv.hpp to detail/ and cleanup includes in common.hpp Change-Id: I6240601f005c61bb3547bd5acf854200f3b13093
This commit is contained in:
Executable
+8
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
set -ex
|
||||
|
||||
PROJ=ChronoSync
|
||||
|
||||
sudo rm -fr /usr/local/include/"$PROJ"
|
||||
sudo rm -f /usr/local/lib{,64}/lib"$PROJ"*
|
||||
sudo rm -f /usr/local/lib{,64}/pkgconfig/"$PROJ".pc
|
||||
Executable
+45
@@ -0,0 +1,45 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# It's intentional not to use `set -x`, because this script explicitly prints useful information
|
||||
# and should not run in trace mode.
|
||||
# It's intentional not to use `set -e`, because this script wants to check all headers
|
||||
# (similar to running all test cases), instead of failing at the first error.
|
||||
|
||||
PROJ=ChronoSync
|
||||
|
||||
if [[ -n $DISABLE_HEADERS_CHECK ]]; then
|
||||
echo 'Skipping headers check.'
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if has CentOS-8 $NODE_LABELS; then
|
||||
export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig
|
||||
fi
|
||||
|
||||
CXX=${CXX:-g++}
|
||||
STD=-std=c++14
|
||||
CXXFLAGS="-O2 -Wall -Wno-unneeded-internal-declaration -Wno-unused-const-variable $(pkg-config --cflags libndn-cxx $PROJ)"
|
||||
INCLUDEDIR="$(pkg-config --variable=includedir $PROJ)"/$PROJ
|
||||
|
||||
echo "Using: $CXX $STD $CXXFLAGS"
|
||||
|
||||
NCHECKED=0
|
||||
NERRORS=0
|
||||
while IFS= read -r -d '' H; do
|
||||
echo "Checking header ${H#${INCLUDEDIR}/}"
|
||||
"$CXX" -xc++ $STD $CXXFLAGS -c -o /dev/null "$H"
|
||||
[[ $? -eq 0 ]] || ((NERRORS++))
|
||||
((NCHECKED++))
|
||||
done < <(find "$INCLUDEDIR" -name '*.hpp' -type f -print0 2>/dev/null)
|
||||
|
||||
if [[ $NCHECKED -eq 0 ]]; then
|
||||
echo "No headers found. Is $PROJ installed?"
|
||||
exit 1
|
||||
else
|
||||
echo "$NCHECKED headers checked."
|
||||
fi
|
||||
|
||||
if [[ $NERRORS -gt 0 ]]; then
|
||||
echo "$NERRORS headers could not be compiled."
|
||||
exit 1
|
||||
fi
|
||||
@@ -17,12 +17,13 @@
|
||||
* ChronoSync, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "detail/bzip2-helper.hpp"
|
||||
#include "bzip2-helper.hpp"
|
||||
|
||||
#include <boost/iostreams/filtering_stream.hpp>
|
||||
#include <boost/iostreams/detail/iostream.hpp>
|
||||
#include <boost/iostreams/filter/bzip2.hpp>
|
||||
#include <boost/iostreams/copy.hpp>
|
||||
#include <boost/iostreams/device/array.hpp>
|
||||
#include <boost/iostreams/filtering_stream.hpp>
|
||||
#include <boost/iostreams/filter/bzip2.hpp>
|
||||
#include <boost/iostreams/stream.hpp>
|
||||
|
||||
#include <ndn-cxx/encoding/buffer-stream.hpp>
|
||||
|
||||
@@ -38,7 +39,7 @@ compress(const char* buffer, size_t bufferSize)
|
||||
bio::filtering_stream<bio::output> out;
|
||||
out.push(bio::bzip2_compressor());
|
||||
out.push(os);
|
||||
bio::stream<bio::array_source> in(reinterpret_cast<const char*>(buffer), bufferSize);
|
||||
bio::stream<bio::array_source> in(buffer, bufferSize);
|
||||
bio::copy(in, out);
|
||||
return os.buf();
|
||||
}
|
||||
@@ -50,7 +51,7 @@ decompress(const char* buffer, size_t bufferSize)
|
||||
bio::filtering_stream<bio::output> out;
|
||||
out.push(bio::bzip2_decompressor());
|
||||
out.push(os);
|
||||
bio::stream<bio::array_source> in(reinterpret_cast<const char*>(buffer), bufferSize);
|
||||
bio::stream<bio::array_source> in(buffer, bufferSize);
|
||||
bio::copy(in, out);
|
||||
return os.buf();
|
||||
}
|
||||
|
||||
+6
-15
@@ -23,7 +23,7 @@
|
||||
#ifndef CHRONOSYNC_DETAIL_COMMON_HPP
|
||||
#define CHRONOSYNC_DETAIL_COMMON_HPP
|
||||
|
||||
#include "detail/config.hpp"
|
||||
#include "config.hpp"
|
||||
|
||||
#ifdef CHRONOSYNC_WITH_TESTS
|
||||
#define CHRONOSYNC_VIRTUAL_WITH_TESTS virtual
|
||||
@@ -38,11 +38,10 @@
|
||||
#endif
|
||||
|
||||
#include <cstddef>
|
||||
#include <list>
|
||||
#include <queue>
|
||||
#include <functional>
|
||||
#include <memory>
|
||||
#include <set>
|
||||
#include <vector>
|
||||
#include <tuple>
|
||||
|
||||
#include <ndn-cxx/data.hpp>
|
||||
#include <ndn-cxx/face.hpp>
|
||||
@@ -55,22 +54,19 @@
|
||||
#include <ndn-cxx/util/time.hpp>
|
||||
|
||||
#include <boost/algorithm/string.hpp>
|
||||
#include <boost/asio.hpp>
|
||||
#include <boost/assert.hpp>
|
||||
#include <boost/core/noncopyable.hpp>
|
||||
#include <boost/lexical_cast.hpp>
|
||||
|
||||
namespace chronosync {
|
||||
|
||||
using std::size_t;
|
||||
|
||||
using boost::noncopyable;
|
||||
|
||||
using std::size_t;
|
||||
|
||||
using std::bind;
|
||||
using std::cref;
|
||||
using std::function;
|
||||
using std::make_shared;
|
||||
using std::make_tuple;
|
||||
using std::ref;
|
||||
using std::shared_ptr;
|
||||
|
||||
@@ -79,17 +75,12 @@ using ndn::ConstBufferPtr;
|
||||
using ndn::Data;
|
||||
using ndn::Interest;
|
||||
using ndn::Name;
|
||||
using ndn::security::ValidationError;
|
||||
using ndn::security::Validator;
|
||||
|
||||
namespace tlv {
|
||||
using namespace ndn::tlv;
|
||||
} // namespace tlv
|
||||
using ndn::security::ValidationError;
|
||||
|
||||
namespace name = ndn::name;
|
||||
namespace time = ndn::time;
|
||||
namespace security = ndn::security;
|
||||
namespace encoding = ndn::encoding;
|
||||
|
||||
} // namespace chronosync
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
|
||||
/*
|
||||
* Copyright (c) 2012-2014 University of California, Los Angeles
|
||||
* Copyright (c) 2012-2021 University of California, Los Angeles
|
||||
*
|
||||
* This file is part of ChronoSync, synchronization library for distributed realtime
|
||||
* applications for NDN.
|
||||
@@ -19,8 +19,8 @@
|
||||
* @author Yingdi Yu <yingdi@cs.ucla.edu>
|
||||
*/
|
||||
|
||||
#ifndef CHRONOSYNC_TLV_HPP
|
||||
#define CHRONOSYNC_TLV_HPP
|
||||
#ifndef CHRONOSYNC_DETAIL_TLV_HPP
|
||||
#define CHRONOSYNC_DETAIL_TLV_HPP
|
||||
|
||||
namespace chronosync {
|
||||
namespace tlv {
|
||||
@@ -32,10 +32,10 @@ namespace tlv {
|
||||
enum {
|
||||
SyncReply = 128, // 0x80
|
||||
StateLeaf = 129, // 0x81
|
||||
SeqNo = 130 // 0x82
|
||||
SeqNo = 130, // 0x82
|
||||
};
|
||||
|
||||
} // namespace tlv
|
||||
} // namespace chronosync
|
||||
|
||||
#endif // CHRONOSYNC_TLV_HPP
|
||||
#endif // CHRONOSYNC_DETAIL_TLV_HPP
|
||||
@@ -1,25 +0,0 @@
|
||||
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
|
||||
/*
|
||||
* Copyright (c) 2012-2014 University of California, Los Angeles
|
||||
*
|
||||
* This file is part of ChronoSync, synchronization library for distributed realtime
|
||||
* applications for NDN.
|
||||
*
|
||||
* ChronoSync is free software: you can redistribute it and/or modify it under the terms
|
||||
* of the GNU General Public License as published by the Free Software Foundation, either
|
||||
* version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* ChronoSync is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* ChronoSync, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @author Zhenkai Zhu <http://irl.cs.ucla.edu/~zhenkai/>
|
||||
* @author Chaoyi Bian <bcy@pku.edu.cn>
|
||||
* @author Alexander Afanasyev <http://lasr.cs.ucla.edu/afanasyev/index.html>
|
||||
* @author Yingdi Yu <yingdi@cs.ucla.edu>
|
||||
*/
|
||||
|
||||
#include "diff-state-container.hpp"
|
||||
@@ -1,6 +1,6 @@
|
||||
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
|
||||
/*
|
||||
* Copyright (c) 2012-2017 University of California, Los Angeles
|
||||
* Copyright (c) 2012-2021 University of California, Los Angeles
|
||||
*
|
||||
* This file is part of ChronoSync, synchronization library for distributed realtime
|
||||
* applications for NDN.
|
||||
@@ -27,6 +27,8 @@
|
||||
|
||||
#include "interest-container.hpp"
|
||||
|
||||
#include <boost/asio/io_service.hpp>
|
||||
|
||||
namespace chronosync {
|
||||
|
||||
/**
|
||||
@@ -38,11 +40,7 @@ public:
|
||||
class Error : public std::runtime_error
|
||||
{
|
||||
public:
|
||||
explicit
|
||||
Error(const std::string& what)
|
||||
: std::runtime_error(what)
|
||||
{
|
||||
}
|
||||
using std::runtime_error::runtime_error;
|
||||
};
|
||||
|
||||
using iterator = InterestContainer::iterator;
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
|
||||
/*
|
||||
* Copyright (c) 2012-2014 University of California, Los Angeles
|
||||
*
|
||||
* This file is part of ChronoSync, synchronization library for distributed realtime
|
||||
* applications for NDN.
|
||||
*
|
||||
* ChronoSync is free software: you can redistribute it and/or modify it under the terms
|
||||
* of the GNU General Public License as published by the Free Software Foundation, either
|
||||
* version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* ChronoSync is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* ChronoSync, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @author Zhenkai Zhu <http://irl.cs.ucla.edu/~zhenkai/>
|
||||
* @author Chaoyi Bian <bcy@pku.edu.cn>
|
||||
* @author Alexander Afanasyev <http://lasr.cs.ucla.edu/afanasyev/index.html>
|
||||
* @author Yingdi Yu <yingdi@cs.ucla.edu>
|
||||
*/
|
||||
|
||||
#include "leaf-container.hpp"
|
||||
// Simply check whether LeafContainer can compile
|
||||
+9
-9
@@ -1,6 +1,6 @@
|
||||
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
|
||||
/*
|
||||
* Copyright (c) 2012-2020 University of California, Los Angeles
|
||||
* Copyright (c) 2012-2021 University of California, Los Angeles
|
||||
*
|
||||
* This file is part of ChronoSync, synchronization library for distributed realtime
|
||||
* applications for NDN.
|
||||
@@ -23,6 +23,7 @@
|
||||
*/
|
||||
|
||||
#include "state.hpp"
|
||||
#include "detail/tlv.hpp"
|
||||
|
||||
#include <boost/range/adaptor/reversed.hpp>
|
||||
#include <ndn-cxx/util/exception.hpp>
|
||||
@@ -36,20 +37,19 @@ State::update(const Name& info, const SeqNo& seq)
|
||||
{
|
||||
m_wire.reset();
|
||||
|
||||
LeafContainer::iterator leaf = m_leaves.find(info);
|
||||
|
||||
auto leaf = m_leaves.find(info);
|
||||
if (leaf == m_leaves.end()) {
|
||||
m_leaves.insert(make_shared<Leaf>(info, cref(seq)));
|
||||
return make_tuple(true, false, 0);
|
||||
m_leaves.insert(make_shared<Leaf>(info, seq));
|
||||
return std::make_tuple(true, false, 0);
|
||||
}
|
||||
else {
|
||||
if ((*leaf)->getSeq() == seq || seq < (*leaf)->getSeq()) {
|
||||
return make_tuple(false, false, 0);
|
||||
return std::make_tuple(false, false, 0);
|
||||
}
|
||||
|
||||
SeqNo old = (*leaf)->getSeq();
|
||||
m_leaves.modify(leaf, [=] (LeafPtr& leaf) { leaf->setSeq(seq); } );
|
||||
return make_tuple(false, true, old);
|
||||
return std::make_tuple(false, true, old);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -82,9 +82,9 @@ State::operator+=(const State& state)
|
||||
return *this;
|
||||
}
|
||||
|
||||
template<encoding::Tag T>
|
||||
template<ndn::encoding::Tag T>
|
||||
size_t
|
||||
State::wireEncode(encoding::EncodingImpl<T>& block) const
|
||||
State::wireEncode(ndn::encoding::EncodingImpl<T>& block) const
|
||||
{
|
||||
size_t totalLength = 0;
|
||||
|
||||
|
||||
+5
-9
@@ -1,6 +1,6 @@
|
||||
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
|
||||
/*
|
||||
* Copyright (c) 2012-2017 University of California, Los Angeles
|
||||
* Copyright (c) 2012-2021 University of California, Los Angeles
|
||||
*
|
||||
* This file is part of ChronoSync, synchronization library for distributed realtime
|
||||
* applications for NDN.
|
||||
@@ -26,9 +26,9 @@
|
||||
#define CHRONOSYNC_STATE_HPP
|
||||
|
||||
#include "leaf-container.hpp"
|
||||
#include "tlv.hpp"
|
||||
|
||||
#include <ndn-cxx/util/sha256.hpp>
|
||||
#include <tuple>
|
||||
|
||||
namespace chronosync {
|
||||
|
||||
@@ -49,11 +49,7 @@ public:
|
||||
class Error : public std::runtime_error
|
||||
{
|
||||
public:
|
||||
explicit
|
||||
Error(const std::string& what)
|
||||
: std::runtime_error(what)
|
||||
{
|
||||
}
|
||||
using std::runtime_error::runtime_error;
|
||||
};
|
||||
|
||||
virtual
|
||||
@@ -112,9 +108,9 @@ public:
|
||||
wireDecode(const Block& wire);
|
||||
|
||||
protected:
|
||||
template<encoding::Tag T>
|
||||
template<ndn::encoding::Tag T>
|
||||
size_t
|
||||
wireEncode(encoding::EncodingImpl<T>& block) const;
|
||||
wireEncode(ndn::encoding::EncodingImpl<T>& block) const;
|
||||
|
||||
protected:
|
||||
LeafContainer m_leaves;
|
||||
|
||||
@@ -7,4 +7,5 @@ def build(bld):
|
||||
name='unit-tests',
|
||||
source=bld.path.ant_glob('**/*.cpp'),
|
||||
use='ChronoSync',
|
||||
includes='..',
|
||||
install_path=None)
|
||||
|
||||
Reference in New Issue
Block a user