Remove Boost.Filesystem v3 fix for Boost < 1.48, refactor call sites.
We needed this for Boost < 1.48, but per our Wiki on building OSRM: > On Ubuntu 12.04 you will be limited to OSRM tag v0.3.10 because > later versions **require Boost v1.49+** and installing this > causes problems with libluabind-dev package. Thus, rip it out! To keep the commits atomic and isolated, I also refactored all call sites that used the functionality from the portability fix. While doing this, I also simplified the monster of around ~100 lines of file path checking --- lambda's are awesome' use them! References: - http://stackoverflow.com/a/1750710 - https://github.com/Project-OSRM/osrm-backend/wiki/Building-on-Ubuntu
This commit is contained in:
parent
98b7e0a407
commit
31cf8a8813
@ -29,7 +29,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
#include "../data_structures/query_node.hpp"
|
#include "../data_structures/query_node.hpp"
|
||||||
#include "../data_structures/shared_memory_vector_wrapper.hpp"
|
#include "../data_structures/shared_memory_vector_wrapper.hpp"
|
||||||
#include "../data_structures/static_rtree.hpp"
|
#include "../data_structures/static_rtree.hpp"
|
||||||
#include "../util/boost_filesystem_2_fix.hpp"
|
|
||||||
#include "../data_structures/edge_based_node.hpp"
|
#include "../data_structures/edge_based_node.hpp"
|
||||||
|
|
||||||
#include <osrm/coordinate.hpp>
|
#include <osrm/coordinate.hpp>
|
||||||
|
@ -38,7 +38,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
#include "server/data_structures/datafacade_base.hpp"
|
#include "server/data_structures/datafacade_base.hpp"
|
||||||
#include "server/data_structures/shared_datatype.hpp"
|
#include "server/data_structures/shared_datatype.hpp"
|
||||||
#include "server/data_structures/shared_barriers.hpp"
|
#include "server/data_structures/shared_barriers.hpp"
|
||||||
#include "util/boost_filesystem_2_fix.hpp"
|
|
||||||
#include "util/datastore_options.hpp"
|
#include "util/datastore_options.hpp"
|
||||||
#include "util/simple_logger.hpp"
|
#include "util/simple_logger.hpp"
|
||||||
#include "util/osrm_exception.hpp"
|
#include "util/osrm_exception.hpp"
|
||||||
@ -185,7 +184,7 @@ int main(const int argc, const char *argv[])
|
|||||||
BOOST_ASSERT(server_paths.end() != paths_iterator);
|
BOOST_ASSERT(server_paths.end() != paths_iterator);
|
||||||
BOOST_ASSERT(!paths_iterator->second.empty());
|
BOOST_ASSERT(!paths_iterator->second.empty());
|
||||||
const boost::filesystem::path index_file_path_absolute =
|
const boost::filesystem::path index_file_path_absolute =
|
||||||
boost::filesystem::portable_canonical(paths_iterator->second);
|
boost::filesystem::canonical(paths_iterator->second);
|
||||||
const std::string &file_index_path = index_file_path_absolute.string();
|
const std::string &file_index_path = index_file_path_absolute.string();
|
||||||
paths_iterator = server_paths.find("nodesdata");
|
paths_iterator = server_paths.find("nodesdata");
|
||||||
BOOST_ASSERT(server_paths.end() != paths_iterator);
|
BOOST_ASSERT(server_paths.end() != paths_iterator);
|
||||||
|
@ -39,7 +39,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
#include "../../data_structures/static_graph.hpp"
|
#include "../../data_structures/static_graph.hpp"
|
||||||
#include "../../data_structures/static_rtree.hpp"
|
#include "../../data_structures/static_rtree.hpp"
|
||||||
#include "../../data_structures/range_table.hpp"
|
#include "../../data_structures/range_table.hpp"
|
||||||
#include "../../util/boost_filesystem_2_fix.hpp"
|
|
||||||
#include "../../util/graph_loader.hpp"
|
#include "../../util/graph_loader.hpp"
|
||||||
#include "../../util/simple_logger.hpp"
|
#include "../../util/simple_logger.hpp"
|
||||||
|
|
||||||
@ -179,7 +178,7 @@ template <class EdgeDataT> class InternalDataFacade final : public BaseDataFacad
|
|||||||
core_stream.read((char *)&number_of_markers, sizeof(unsigned));
|
core_stream.read((char *)&number_of_markers, sizeof(unsigned));
|
||||||
|
|
||||||
std::vector<char> unpacked_core_markers(number_of_markers);
|
std::vector<char> unpacked_core_markers(number_of_markers);
|
||||||
core_stream.read((char *)unpacked_core_markers.data(), sizeof(char)*number_of_markers);
|
core_stream.read((char *)unpacked_core_markers.data(), sizeof(char) * number_of_markers);
|
||||||
|
|
||||||
// in this case we have nothing to do
|
// in this case we have nothing to do
|
||||||
if (number_of_markers <= 0)
|
if (number_of_markers <= 0)
|
||||||
@ -258,90 +257,40 @@ template <class EdgeDataT> class InternalDataFacade final : public BaseDataFacad
|
|||||||
|
|
||||||
explicit InternalDataFacade(const ServerPaths &server_paths)
|
explicit InternalDataFacade(const ServerPaths &server_paths)
|
||||||
{
|
{
|
||||||
// generate paths of data files
|
// cache end iterator to quickly check .find against
|
||||||
if (server_paths.find("hsgrdata") == server_paths.end())
|
const auto end_it = end(server_paths);
|
||||||
{
|
|
||||||
throw osrm::exception("no hsgr file given in ini file");
|
|
||||||
}
|
|
||||||
if (server_paths.find("ramindex") == server_paths.end())
|
|
||||||
{
|
|
||||||
throw osrm::exception("no ram index file given in ini file");
|
|
||||||
}
|
|
||||||
if (server_paths.find("fileindex") == server_paths.end())
|
|
||||||
{
|
|
||||||
throw osrm::exception("no leaf index file given in ini file");
|
|
||||||
}
|
|
||||||
if (server_paths.find("geometries") == server_paths.end())
|
|
||||||
{
|
|
||||||
throw osrm::exception("no geometries file given in ini file");
|
|
||||||
}
|
|
||||||
if (server_paths.find("nodesdata") == server_paths.end())
|
|
||||||
{
|
|
||||||
throw osrm::exception("no nodes file given in ini file");
|
|
||||||
}
|
|
||||||
if (server_paths.find("coredata") == server_paths.end())
|
|
||||||
{
|
|
||||||
throw osrm::exception("no core file given in ini file");
|
|
||||||
}
|
|
||||||
if (server_paths.find("edgesdata") == server_paths.end())
|
|
||||||
{
|
|
||||||
throw osrm::exception("no edges file given in ini file");
|
|
||||||
}
|
|
||||||
if (server_paths.find("namesdata") == server_paths.end())
|
|
||||||
{
|
|
||||||
throw osrm::exception("no names file given in ini file");
|
|
||||||
}
|
|
||||||
|
|
||||||
auto paths_iterator = server_paths.find("hsgrdata");
|
const auto file_for = [&server_paths, &end_it](const std::string &path)
|
||||||
BOOST_ASSERT(server_paths.end() != paths_iterator);
|
{
|
||||||
const boost::filesystem::path &hsgr_path = paths_iterator->second;
|
const auto it = server_paths.find(path);
|
||||||
paths_iterator = server_paths.find("timestamp");
|
if (it == end_it || !boost::filesystem::is_regular_file(it->second))
|
||||||
BOOST_ASSERT(server_paths.end() != paths_iterator);
|
throw osrm::exception("no valid " + path + " file given in ini file");
|
||||||
const boost::filesystem::path ×tamp_path = paths_iterator->second;
|
return it->second;
|
||||||
paths_iterator = server_paths.find("ramindex");
|
};
|
||||||
BOOST_ASSERT(server_paths.end() != paths_iterator);
|
|
||||||
ram_index_path = paths_iterator->second;
|
ram_index_path = file_for("ramindex");
|
||||||
paths_iterator = server_paths.find("fileindex");
|
file_index_path = file_for("fileindex");
|
||||||
BOOST_ASSERT(server_paths.end() != paths_iterator);
|
|
||||||
file_index_path = paths_iterator->second;
|
|
||||||
paths_iterator = server_paths.find("nodesdata");
|
|
||||||
BOOST_ASSERT(server_paths.end() != paths_iterator);
|
|
||||||
const boost::filesystem::path &nodes_data_path = paths_iterator->second;
|
|
||||||
paths_iterator = server_paths.find("edgesdata");
|
|
||||||
BOOST_ASSERT(server_paths.end() != paths_iterator);
|
|
||||||
const boost::filesystem::path &edges_data_path = paths_iterator->second;
|
|
||||||
paths_iterator = server_paths.find("namesdata");
|
|
||||||
BOOST_ASSERT(server_paths.end() != paths_iterator);
|
|
||||||
const boost::filesystem::path &names_data_path = paths_iterator->second;
|
|
||||||
paths_iterator = server_paths.find("geometries");
|
|
||||||
BOOST_ASSERT(server_paths.end() != paths_iterator);
|
|
||||||
const boost::filesystem::path &geometries_path = paths_iterator->second;
|
|
||||||
paths_iterator = server_paths.find("coredata");
|
|
||||||
BOOST_ASSERT(server_paths.end() != paths_iterator);
|
|
||||||
const boost::filesystem::path &core_data_path = paths_iterator->second;
|
|
||||||
|
|
||||||
// load data
|
|
||||||
SimpleLogger().Write() << "loading graph data";
|
SimpleLogger().Write() << "loading graph data";
|
||||||
AssertPathExists(hsgr_path);
|
LoadGraph(file_for("hsgrdata"));
|
||||||
LoadGraph(hsgr_path);
|
|
||||||
SimpleLogger().Write() << "loading edge information";
|
SimpleLogger().Write() << "loading edge information";
|
||||||
AssertPathExists(nodes_data_path);
|
LoadNodeAndEdgeInformation(file_for("nodesdata"), file_for("edgesdata"));
|
||||||
AssertPathExists(edges_data_path);
|
|
||||||
LoadNodeAndEdgeInformation(nodes_data_path, edges_data_path);
|
|
||||||
SimpleLogger().Write() << "loading core information";
|
SimpleLogger().Write() << "loading core information";
|
||||||
AssertPathExists(core_data_path);
|
LoadCoreInformation(file_for("coredata"));
|
||||||
LoadCoreInformation(core_data_path);
|
|
||||||
SimpleLogger().Write() << "loading geometries";
|
SimpleLogger().Write() << "loading geometries";
|
||||||
AssertPathExists(geometries_path);
|
LoadGeometries(file_for("geometries"));
|
||||||
LoadGeometries(geometries_path);
|
|
||||||
SimpleLogger().Write() << "loading r-tree";
|
SimpleLogger().Write() << "loading r-tree";
|
||||||
AssertPathExists(ram_index_path);
|
// XXX(daniel-j-h): it says this ^ but doesn't load the rtree here
|
||||||
AssertPathExists(file_index_path);
|
|
||||||
SimpleLogger().Write() << "loading timestamp";
|
SimpleLogger().Write() << "loading timestamp";
|
||||||
LoadTimestamp(timestamp_path);
|
LoadTimestamp(file_for("timestamp"));
|
||||||
|
|
||||||
SimpleLogger().Write() << "loading street names";
|
SimpleLogger().Write() << "loading street names";
|
||||||
AssertPathExists(names_data_path);
|
LoadStreetNames(file_for("namesdata"));
|
||||||
LoadStreetNames(names_data_path);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// search graph access
|
// search graph access
|
||||||
|
@ -36,7 +36,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
#include "../../data_structures/range_table.hpp"
|
#include "../../data_structures/range_table.hpp"
|
||||||
#include "../../data_structures/static_graph.hpp"
|
#include "../../data_structures/static_graph.hpp"
|
||||||
#include "../../data_structures/static_rtree.hpp"
|
#include "../../data_structures/static_rtree.hpp"
|
||||||
#include "../../util/boost_filesystem_2_fix.hpp"
|
|
||||||
#include "../../util/make_unique.hpp"
|
#include "../../util/make_unique.hpp"
|
||||||
#include "../../util/simple_logger.hpp"
|
#include "../../util/simple_logger.hpp"
|
||||||
|
|
||||||
@ -273,7 +272,7 @@ template <class EdgeDataT> class SharedDataFacade final : public BaseDataFacade<
|
|||||||
if (!boost::filesystem::exists(file_index_path))
|
if (!boost::filesystem::exists(file_index_path))
|
||||||
{
|
{
|
||||||
SimpleLogger().Write(logDEBUG) << "Leaf file name " << file_index_path.string();
|
SimpleLogger().Write(logDEBUG) << "Leaf file name " << file_index_path.string();
|
||||||
throw osrm::exception("Could not load leaf index file."
|
throw osrm::exception("Could not load leaf index file. "
|
||||||
"Is any data loaded into shared memory?");
|
"Is any data loaded into shared memory?");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,144 +0,0 @@
|
|||||||
/*
|
|
||||||
|
|
||||||
Copyright (c) 2015, Project OSRM contributors
|
|
||||||
All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without modification,
|
|
||||||
are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
Redistributions of source code must retain the above copyright notice, this list
|
|
||||||
of conditions and the following disclaimer.
|
|
||||||
Redistributions in binary form must reproduce the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer in the documentation and/or
|
|
||||||
other materials provided with the distribution.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
||||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
|
||||||
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
||||||
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef BOOST_FILE_SYSTEM_FIX_H
|
|
||||||
#define BOOST_FILE_SYSTEM_FIX_H
|
|
||||||
|
|
||||||
#include "osrm_exception.hpp"
|
|
||||||
|
|
||||||
// #include <boost/any.hpp>
|
|
||||||
#include <boost/filesystem.hpp>
|
|
||||||
// #include <boost/program_options.hpp>
|
|
||||||
|
|
||||||
// This is one big workaround for latest boost renaming woes.
|
|
||||||
|
|
||||||
#if BOOST_FILESYSTEM_VERSION < 3
|
|
||||||
#warning Boost Installation with Filesystem3 missing, activating workaround
|
|
||||||
#include <cstdio>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace boost
|
|
||||||
{
|
|
||||||
namespace filesystem
|
|
||||||
{
|
|
||||||
|
|
||||||
// Validator for boost::filesystem::path, that verifies that the file
|
|
||||||
// exists. The validate() function must be defined in the same namespace
|
|
||||||
// as the target type, (boost::filesystem::path in this case), otherwise
|
|
||||||
// it is not called
|
|
||||||
// inline void validate(
|
|
||||||
// boost::any & v,
|
|
||||||
// const std::vector<std::string> & values,
|
|
||||||
// boost::filesystem::path *,
|
|
||||||
// int
|
|
||||||
// ) {
|
|
||||||
// boost::program_options::validators::check_first_occurrence(v);
|
|
||||||
// const std::string & input_string =
|
|
||||||
// boost::program_options::validators::get_single_string(values);
|
|
||||||
// if(boost::filesystem::is_regular_file(input_string)) {
|
|
||||||
// v = boost::any(boost::filesystem::path(input_string));
|
|
||||||
// } else {
|
|
||||||
// throw osrm::exception(input_string + " not found");
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// adapted from:
|
|
||||||
// http://stackoverflow.com/questions/1746136/how-do-i-normalize-a-pathname-using-boostfilesystem
|
|
||||||
inline boost::filesystem::path
|
|
||||||
portable_canonical(const boost::filesystem::path &relative_path,
|
|
||||||
const boost::filesystem::path ¤t_path = boost::filesystem::current_path())
|
|
||||||
{
|
|
||||||
const boost::filesystem::path absolute_path =
|
|
||||||
boost::filesystem::absolute(relative_path, current_path);
|
|
||||||
|
|
||||||
boost::filesystem::path canonical_path;
|
|
||||||
for (auto path_iterator = absolute_path.begin(); path_iterator != absolute_path.end();
|
|
||||||
++path_iterator)
|
|
||||||
{
|
|
||||||
if (".." == path_iterator->string())
|
|
||||||
{
|
|
||||||
// /a/b/.. is not necessarily /a if b is a symbolic link
|
|
||||||
if (boost::filesystem::is_symlink(canonical_path))
|
|
||||||
{
|
|
||||||
canonical_path /= *path_iterator;
|
|
||||||
}
|
|
||||||
else if (".." == canonical_path.filename())
|
|
||||||
{
|
|
||||||
// /a/b/../.. is not /a/b/.. under most circumstances
|
|
||||||
// We can end up with ..s in our result because of symbolic links
|
|
||||||
canonical_path /= *path_iterator;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Otherwise it should be safe to resolve the parent
|
|
||||||
canonical_path = canonical_path.parent_path();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if ("." == path_iterator->string())
|
|
||||||
{
|
|
||||||
// Ignore
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Just cat other path entries
|
|
||||||
canonical_path /= *path_iterator;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
BOOST_ASSERT(canonical_path.is_absolute());
|
|
||||||
BOOST_ASSERT(boost::filesystem::exists(canonical_path));
|
|
||||||
return canonical_path;
|
|
||||||
}
|
|
||||||
|
|
||||||
#if BOOST_FILESYSTEM_VERSION < 3
|
|
||||||
|
|
||||||
inline path temp_directory_path()
|
|
||||||
{
|
|
||||||
char *buffer;
|
|
||||||
buffer = tmpnam(nullptr);
|
|
||||||
|
|
||||||
return path(buffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline path unique_path(const path &) { return temp_directory_path(); }
|
|
||||||
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef BOOST_FILESYSTEM_VERSION
|
|
||||||
#define BOOST_FILESYSTEM_VERSION 3
|
|
||||||
#endif
|
|
||||||
|
|
||||||
inline void AssertPathExists(const boost::filesystem::path &path)
|
|
||||||
{
|
|
||||||
if (!boost::filesystem::is_regular_file(path))
|
|
||||||
{
|
|
||||||
throw osrm::exception(path.string() + " not found.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* BOOST_FILE_SYSTEM_FIX_H */
|
|
@ -28,7 +28,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
#ifndef DATASTORE_OPTIONS_HPP
|
#ifndef DATASTORE_OPTIONS_HPP
|
||||||
#define DATASTORE_OPTIONS_HPP
|
#define DATASTORE_OPTIONS_HPP
|
||||||
|
|
||||||
#include "boost_filesystem_2_fix.hpp"
|
|
||||||
#include "git_sha.hpp"
|
#include "git_sha.hpp"
|
||||||
#include "ini_file.hpp"
|
#include "ini_file.hpp"
|
||||||
#include "osrm_exception.hpp"
|
#include "osrm_exception.hpp"
|
||||||
@ -68,8 +67,8 @@ bool GenerateDataStoreOptions(const int argc, const char *argv[], ServerPaths &p
|
|||||||
"ramindex", boost::program_options::value<boost::filesystem::path>(&paths["ramindex"]),
|
"ramindex", boost::program_options::value<boost::filesystem::path>(&paths["ramindex"]),
|
||||||
".ramIndex file")(
|
".ramIndex file")(
|
||||||
"fileindex", boost::program_options::value<boost::filesystem::path>(&paths["fileindex"]),
|
"fileindex", boost::program_options::value<boost::filesystem::path>(&paths["fileindex"]),
|
||||||
".fileIndex file")(
|
".fileIndex file")("core",
|
||||||
"core", boost::program_options::value<boost::filesystem::path>(&paths["core"]),
|
boost::program_options::value<boost::filesystem::path>(&paths["core"]),
|
||||||
".core file")(
|
".core file")(
|
||||||
"namesdata", boost::program_options::value<boost::filesystem::path>(&paths["namesdata"]),
|
"namesdata", boost::program_options::value<boost::filesystem::path>(&paths["namesdata"]),
|
||||||
".names file")("timestamp",
|
".names file")("timestamp",
|
||||||
@ -120,7 +119,8 @@ bool GenerateDataStoreOptions(const int argc, const char *argv[], ServerPaths &p
|
|||||||
|
|
||||||
boost::program_options::notify(option_variables);
|
boost::program_options::notify(option_variables);
|
||||||
|
|
||||||
const bool parameter_present = (paths.find("hsgrdata") != paths.end() &&
|
const bool parameter_present =
|
||||||
|
(paths.find("hsgrdata") != paths.end() &&
|
||||||
!paths.find("hsgrdata")->second.string().empty()) ||
|
!paths.find("hsgrdata")->second.string().empty()) ||
|
||||||
(paths.find("nodesdata") != paths.end() &&
|
(paths.find("nodesdata") != paths.end() &&
|
||||||
!paths.find("nodesdata")->second.string().empty()) ||
|
!paths.find("nodesdata")->second.string().empty()) ||
|
||||||
@ -132,8 +132,7 @@ bool GenerateDataStoreOptions(const int argc, const char *argv[], ServerPaths &p
|
|||||||
!paths.find("ramindex")->second.string().empty()) ||
|
!paths.find("ramindex")->second.string().empty()) ||
|
||||||
(paths.find("fileindex") != paths.end() &&
|
(paths.find("fileindex") != paths.end() &&
|
||||||
!paths.find("fileindex")->second.string().empty()) ||
|
!paths.find("fileindex")->second.string().empty()) ||
|
||||||
(paths.find("core") != paths.end() &&
|
(paths.find("core") != paths.end() && !paths.find("core")->second.string().empty()) ||
|
||||||
!paths.find("core")->second.string().empty()) ||
|
|
||||||
(paths.find("timestamp") != paths.end() &&
|
(paths.find("timestamp") != paths.end() &&
|
||||||
!paths.find("timestamp")->second.string().empty());
|
!paths.find("timestamp")->second.string().empty());
|
||||||
|
|
||||||
@ -223,58 +222,59 @@ bool GenerateDataStoreOptions(const int argc, const char *argv[], ServerPaths &p
|
|||||||
}
|
}
|
||||||
|
|
||||||
path_iterator = paths.find("hsgrdata");
|
path_iterator = paths.find("hsgrdata");
|
||||||
if (path_iterator == paths.end() || path_iterator->second.string().empty())
|
if (path_iterator == paths.end() || path_iterator->second.string().empty() ||
|
||||||
|
!boost::filesystem::is_regular_file(path_iterator->second))
|
||||||
{
|
{
|
||||||
throw osrm::exception(".hsgr file must be specified");
|
throw osrm::exception("valid .hsgr file must be specified");
|
||||||
}
|
}
|
||||||
AssertPathExists(path_iterator->second);
|
|
||||||
|
|
||||||
path_iterator = paths.find("nodesdata");
|
path_iterator = paths.find("nodesdata");
|
||||||
if (path_iterator == paths.end() || path_iterator->second.string().empty())
|
if (path_iterator == paths.end() || path_iterator->second.string().empty() ||
|
||||||
|
!boost::filesystem::is_regular_file(path_iterator->second))
|
||||||
{
|
{
|
||||||
throw osrm::exception(".nodes file must be specified");
|
throw osrm::exception("valid .nodes file must be specified");
|
||||||
}
|
}
|
||||||
AssertPathExists(path_iterator->second);
|
|
||||||
|
|
||||||
path_iterator = paths.find("edgesdata");
|
path_iterator = paths.find("edgesdata");
|
||||||
if (path_iterator == paths.end() || path_iterator->second.string().empty())
|
if (path_iterator == paths.end() || path_iterator->second.string().empty() ||
|
||||||
|
!boost::filesystem::is_regular_file(path_iterator->second))
|
||||||
{
|
{
|
||||||
throw osrm::exception(".edges file must be specified");
|
throw osrm::exception("valid .edges file must be specified");
|
||||||
}
|
}
|
||||||
AssertPathExists(path_iterator->second);
|
|
||||||
|
|
||||||
path_iterator = paths.find("geometry");
|
path_iterator = paths.find("geometry");
|
||||||
if (path_iterator == paths.end() || path_iterator->second.string().empty())
|
if (path_iterator == paths.end() || path_iterator->second.string().empty() ||
|
||||||
|
!boost::filesystem::is_regular_file(path_iterator->second))
|
||||||
{
|
{
|
||||||
throw osrm::exception(".geometry file must be specified");
|
throw osrm::exception("valid .geometry file must be specified");
|
||||||
}
|
}
|
||||||
AssertPathExists(path_iterator->second);
|
|
||||||
|
|
||||||
path_iterator = paths.find("ramindex");
|
path_iterator = paths.find("ramindex");
|
||||||
if (path_iterator == paths.end() || path_iterator->second.string().empty())
|
if (path_iterator == paths.end() || path_iterator->second.string().empty() ||
|
||||||
|
!boost::filesystem::is_regular_file(path_iterator->second))
|
||||||
{
|
{
|
||||||
throw osrm::exception(".ramindex file must be specified");
|
throw osrm::exception("valid .ramindex file must be specified");
|
||||||
}
|
}
|
||||||
AssertPathExists(path_iterator->second);
|
|
||||||
|
|
||||||
path_iterator = paths.find("fileindex");
|
path_iterator = paths.find("fileindex");
|
||||||
if (path_iterator == paths.end() || path_iterator->second.string().empty())
|
if (path_iterator == paths.end() || path_iterator->second.string().empty() ||
|
||||||
|
!boost::filesystem::is_regular_file(path_iterator->second))
|
||||||
{
|
{
|
||||||
throw osrm::exception(".fileindex file must be specified");
|
throw osrm::exception("valid .fileindex file must be specified");
|
||||||
}
|
}
|
||||||
AssertPathExists(path_iterator->second);
|
|
||||||
|
|
||||||
path_iterator = paths.find("namesdata");
|
path_iterator = paths.find("namesdata");
|
||||||
if (path_iterator == paths.end() || path_iterator->second.string().empty())
|
if (path_iterator == paths.end() || path_iterator->second.string().empty() ||
|
||||||
|
!boost::filesystem::is_regular_file(path_iterator->second))
|
||||||
{
|
{
|
||||||
throw osrm::exception(".names file must be specified");
|
throw osrm::exception("valid .names file must be specified");
|
||||||
}
|
}
|
||||||
AssertPathExists(path_iterator->second);
|
|
||||||
|
|
||||||
path_iterator = paths.find("timestamp");
|
path_iterator = paths.find("timestamp");
|
||||||
if (path_iterator == paths.end() || path_iterator->second.string().empty())
|
if (path_iterator == paths.end() || path_iterator->second.string().empty() ||
|
||||||
|
!boost::filesystem::is_regular_file(path_iterator->second))
|
||||||
{
|
{
|
||||||
throw osrm::exception(".timestamp file must be specified");
|
throw osrm::exception("valid .timestamp file must be specified");
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
Loading…
Reference in New Issue
Block a user