[osrm] 02/02: Inject debian/ dir as created by Christopher Baines <cbaines8 at gmail.com> Thu, 04 Jul 2013 15:03:15 +0100
Andreas Tille
tille at debian.org
Thu Jul 10 14:39:08 UTC 2014
This is an automated email from the git hooks/post-receive script.
tille pushed a commit to branch master
in repository osrm.
commit 2b2e882ab74b91664847b2775f775ec834e70c5f
Author: Andreas Tille <tille at debian.org>
Date: Thu Jul 10 16:35:27 2014 +0200
Inject debian/ dir as created by
Christopher Baines <cbaines8 at gmail.com> Thu, 04 Jul 2013 15:03:15 +0100
---
debian/README.source | 9 +
debian/changelog | 5 +
debian/compat | 1 +
debian/conffiles/access.lua | 13 ++
debian/conffiles/bicycle.lua | 353 +++++++++++++++++++++++++++++++++++++++
debian/conffiles/car.lua | 219 ++++++++++++++++++++++++
debian/conffiles/contractor.ini | 1 +
debian/conffiles/extractor.ini | 2 +
debian/conffiles/foot.lua | 193 +++++++++++++++++++++
debian/conffiles/server.ini | 10 ++
debian/conffiles/testbot.lua | 107 ++++++++++++
debian/conffiles/turnbot.lua | 8 +
debian/control | 35 ++++
debian/copyright | 65 +++++++
debian/docs | 2 +
debian/osrm-components.1 | 14 ++
debian/osrm-extract.1 | 22 +++
debian/osrm-prepare.1 | 14 ++
debian/osrm-routed.1 | 56 +++++++
debian/osrm-tools.install | 1 +
debian/osrm-tools.manpages | 1 +
debian/osrm.7 | 67 ++++++++
debian/osrm.default | 2 +
debian/osrm.init | 98 +++++++++++
debian/osrm.install | 12 ++
debian/osrm.manpages | 4 +
debian/osrm.postinst | 50 ++++++
debian/osrm.postrm | 50 ++++++
debian/patches/add-cmake-install | 38 +++++
debian/patches/series | 1 +
debian/rules | 9 +
debian/source/format | 1 +
debian/source/include-binaries | 22 +++
33 files changed, 1485 insertions(+)
diff --git a/debian/README.source b/debian/README.source
new file mode 100644
index 0000000..fa1a5a0
--- /dev/null
+++ b/debian/README.source
@@ -0,0 +1,9 @@
+osrm for Debian
+---------------
+
+<this file describes information about the source package, see Debian policy
+manual section 4.14. You WILL either need to modify or delete this file>
+
+
+
+
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 0000000..1c0430a
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,5 @@
+osrm (0.3.4-1) unstable; urgency=low
+
+ * Initial release (Closes: #701506)
+
+ -- Christopher Baines <cbaines8 at gmail.com> Thu, 04 Jul 2013 15:03:15 +0100
diff --git a/debian/compat b/debian/compat
new file mode 100644
index 0000000..ec63514
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
+9
diff --git a/debian/conffiles/access.lua b/debian/conffiles/access.lua
new file mode 100644
index 0000000..094db62
--- /dev/null
+++ b/debian/conffiles/access.lua
@@ -0,0 +1,13 @@
+local ipairs = ipairs
+
+module "Access"
+
+function find_access_tag(source,access_tags_hierachy)
+ for i,v in ipairs(access_tags_hierachy) do
+ local tag = source.tags:Find(v)
+ if tag ~= '' then
+ return tag
+ end
+ end
+ return nil
+end
\ No newline at end of file
diff --git a/debian/conffiles/bicycle.lua b/debian/conffiles/bicycle.lua
new file mode 100644
index 0000000..98d03c8
--- /dev/null
+++ b/debian/conffiles/bicycle.lua
@@ -0,0 +1,353 @@
+require("lib/access")
+
+-- Begin of globals
+barrier_whitelist = { [""] = true, ["cycle_barrier"] = true, ["bollard"] = true, ["entrance"] = true, ["cattle_grid"] = true, ["border_control"] = true, ["toll_booth"] = true, ["sally_port"] = true, ["gate"] = true, ["no"] = true}
+access_tag_whitelist = { ["yes"] = true, ["permissive"] = true, ["designated"] = true }
+access_tag_blacklist = { ["no"] = true, ["private"] = true, ["agricultural"] = true, ["forestery"] = true }
+access_tag_restricted = { ["destination"] = true, ["delivery"] = true }
+access_tags_hierachy = { "bicycle", "vehicle", "access" }
+cycleway_tags = {["track"]=true,["lane"]=true,["opposite"]=true,["opposite_lane"]=true,["opposite_track"]=true,["share_busway"]=true,["sharrow"]=true,["shared"]=true }
+service_tag_restricted = { ["parking_aisle"] = true }
+restriction_exception_tags = { "bicycle", "vehicle", "access" }
+
+default_speed = 15
+
+walking_speed = 6
+
+bicycle_speeds = {
+ ["cycleway"] = default_speed,
+ ["primary"] = default_speed,
+ ["primary_link"] = default_speed,
+ ["secondary"] = default_speed,
+ ["secondary_link"] = default_speed,
+ ["tertiary"] = default_speed,
+ ["tertiary_link"] = default_speed,
+ ["residential"] = default_speed,
+ ["unclassified"] = default_speed,
+ ["living_street"] = default_speed,
+ ["road"] = default_speed,
+ ["service"] = default_speed,
+ ["track"] = 12,
+ ["path"] = 12
+ --["footway"] = 12,
+ --["pedestrian"] = 12,
+}
+
+pedestrian_speeds = {
+ ["footway"] = walking_speed,
+ ["pedestrian"] = walking_speed,
+ ["steps"] = 2
+}
+
+railway_speeds = {
+ ["train"] = 10,
+ ["railway"] = 10,
+ ["subway"] = 10,
+ ["light_rail"] = 10,
+ ["monorail"] = 10,
+ ["tram"] = 10
+}
+
+platform_speeds = {
+ ["platform"] = walking_speed
+}
+
+amenity_speeds = {
+ ["parking"] = 10,
+ ["parking_entrance"] = 10
+}
+
+man_made_speeds = {
+ ["pier"] = walking_speed
+}
+
+route_speeds = {
+ ["ferry"] = 5
+}
+
+surface_speeds = {
+ ["cobblestone:flattened"] = 10,
+ ["paving_stones"] = 10,
+ ["compacted"] = 10,
+ ["cobblestone"] = 6,
+ ["unpaved"] = 6,
+ ["fine_gravel"] = 6,
+ ["gravel"] = 6,
+ ["fine_gravel"] = 6,
+ ["pebbelstone"] = 6,
+ ["ground"] = 6,
+ ["dirt"] = 6,
+ ["earth"] = 6,
+ ["grass"] = 6,
+ ["mud"] = 3,
+ ["sand"] = 3
+}
+
+take_minimum_of_speeds = true
+obey_oneway = true
+obey_bollards = false
+use_restrictions = true
+ignore_areas = true -- future feature
+traffic_signal_penalty = 5
+u_turn_penalty = 20
+use_turn_restrictions = false
+turn_penalty = 60
+turn_bias = 1.4
+-- End of globals
+
+function get_exceptions(vector)
+ for i,v in ipairs(restriction_exception_tags) do
+ vector:Add(v)
+ end
+end
+
+function node_function (node)
+ local barrier = node.tags:Find ("barrier")
+ local access = Access.find_access_tag(node, access_tags_hierachy)
+ local traffic_signal = node.tags:Find("highway")
+
+ -- flag node if it carries a traffic light
+ if traffic_signal == "traffic_signals" then
+ node.traffic_light = true
+ end
+
+ -- parse access and barrier tags
+ if access and access ~= "" then
+ if access_tag_blacklist[access] then
+ node.bollard = true
+ else
+ node.bollard = false
+ end
+ elseif barrier and barrier ~= "" then
+ if barrier_whitelist[barrier] then
+ node.bollard = false
+ else
+ node.bollard = true
+ end
+ end
+
+ return 1
+end
+
+function way_function (way)
+ -- initial routability check, filters out buildings, boundaries, etc
+ local highway = way.tags:Find("highway")
+ local route = way.tags:Find("route")
+ local man_made = way.tags:Find("man_made")
+ local railway = way.tags:Find("railway")
+ local amenity = way.tags:Find("amenity")
+ local public_transport = way.tags:Find("public_transport")
+ if (not highway or highway == '') and
+ (not route or route == '') and
+ (not railway or railway=='') and
+ (not amenity or amenity=='') and
+ (not man_made or man_made=='') and
+ (not public_transport or public_transport=='')
+ then
+ return 0
+ end
+
+ -- don't route on ways or railways that are still under construction
+ if highway=='construction' or railway=='construction' then
+ return 0
+ end
+
+ -- access
+ local access = Access.find_access_tag(way, access_tags_hierachy)
+ if access_tag_blacklist[access] then
+ return 0
+ end
+
+
+ -- other tags
+ local name = way.tags:Find("name")
+ local ref = way.tags:Find("ref")
+ local junction = way.tags:Find("junction")
+ local maxspeed = parseMaxspeed(way.tags:Find ( "maxspeed") )
+ local maxspeed_forward = parseMaxspeed(way.tags:Find( "maxspeed:forward"))
+ local maxspeed_backward = parseMaxspeed(way.tags:Find( "maxspeed:backward"))
+ local barrier = way.tags:Find("barrier")
+ local oneway = way.tags:Find("oneway")
+ local onewayClass = way.tags:Find("oneway:bicycle")
+ local cycleway = way.tags:Find("cycleway")
+ local cycleway_left = way.tags:Find("cycleway:left")
+ local cycleway_right = way.tags:Find("cycleway:right")
+ local duration = way.tags:Find("duration")
+ local service = way.tags:Find("service")
+ local area = way.tags:Find("area")
+ local foot = way.tags:Find("foot")
+ local surface = way.tags:Find("surface")
+
+ -- name
+ if "" ~= ref and "" ~= name then
+ way.name = name .. ' / ' .. ref
+ elseif "" ~= ref then
+ way.name = ref
+ elseif "" ~= name then
+ way.name = name
+ else
+ way.name = "{highway:"..highway.."}" -- if no name exists, use way type
+ -- this encoding scheme is excepted to be a temporary solution
+ end
+
+ -- speed
+ if route_speeds[route] then
+ -- ferries (doesn't cover routes tagged using relations)
+ way.direction = Way.bidirectional
+ way.ignore_in_grid = true
+ if durationIsValid(duration) then
+ way.duration = math.max( 1, parseDuration(duration) )
+ else
+ way.speed = route_speeds[route]
+ end
+ elseif railway and platform_speeds[railway] then
+ -- railway platforms (old tagging scheme)
+ way.speed = platform_speeds[railway]
+ elseif platform_speeds[public_transport] then
+ -- public_transport platforms (new tagging platform)
+ way.speed = platform_speeds[public_transport]
+ elseif railway and railway_speeds[railway] then
+ -- railways
+ if access and access_tag_whitelist[access] then
+ way.speed = railway_speeds[railway]
+ way.direction = Way.bidirectional
+ end
+ elseif amenity and amenity_speeds[amenity] then
+ -- parking areas
+ way.speed = amenity_speeds[amenity]
+ elseif bicycle_speeds[highway] then
+ -- regular ways
+ way.speed = bicycle_speeds[highway]
+ elseif access and access_tag_whitelist[access] then
+ -- unknown way, but valid access tag
+ way.speed = default_speed
+ else
+ -- biking not allowed, maybe we can push our bike?
+ -- essentially requires pedestrian profiling, for example foot=no mean we can't push a bike
+ -- TODO: if we can push, the way should be marked as pedestrion mode, but there's no way to do it yet from lua..
+ if foot ~= 'no' then
+ if pedestrian_speeds[highway] then
+ -- pedestrian-only ways and areas
+ way.speed = pedestrian_speeds[highway]
+ elseif man_made and man_made_speeds[man_made] then
+ -- man made structures
+ way.speed = man_made_speeds[man_made]
+ elseif foot == 'yes' then
+ way.speed = walking_speed
+ end
+ end
+ end
+
+ -- direction
+ way.direction = Way.bidirectional
+ local impliedOneway = false
+ if junction == "roundabout" or highway == "motorway_link" or highway == "motorway" then
+ way.direction = Way.oneway
+ impliedOneway = true
+ end
+
+ if onewayClass == "yes" or onewayClass == "1" or onewayClass == "true" then
+ way.direction = Way.oneway
+ elseif onewayClass == "no" or onewayClass == "0" or onewayClass == "false" then
+ way.direction = Way.bidirectional
+ elseif onewayClass == "-1" then
+ way.direction = Way.opposite
+ elseif oneway == "no" or oneway == "0" or oneway == "false" then
+ way.direction = Way.bidirectional
+ elseif cycleway and string.find(cycleway, "opposite") == 1 then
+ if impliedOneway then
+ way.direction = Way.opposite
+ else
+ way.direction = Way.bidirectional
+ end
+ elseif cycleway_left and cycleway_tags[cycleway_left] and cycleway_right and cycleway_tags[cycleway_right] then
+ way.direction = Way.bidirectional
+ elseif cycleway_left and cycleway_tags[cycleway_left] then
+ if impliedOneway then
+ way.direction = Way.opposite
+ else
+ way.direction = Way.bidirectional
+ end
+ elseif cycleway_right and cycleway_tags[cycleway_right] then
+ if impliedOneway then
+ way.direction = Way.oneway
+ else
+ way.direction = Way.bidirectional
+ end
+ elseif oneway == "-1" then
+ way.direction = Way.opposite
+ elseif oneway == "yes" or oneway == "1" or oneway == "true" then
+ way.direction = Way.oneway
+ end
+
+ -- pushing bikes
+ if bicycle_speeds[highway] or pedestrian_speeds[highway] then
+ if foot ~= 'no' then
+ if junction ~= "roundabout" then
+ if way.direction == Way.oneway then
+ way.backward_speed = walking_speed
+ elseif way.direction == Way.opposite then
+ way.backward_speed = walking_speed
+ way.speed = way.speed
+ end
+ end
+ end
+ if way.backward_speed == way.speed then
+ -- TODO: no way yet to mark a way as pedestrian mode if forward/backward speeds are equal
+ way.direction = Way.bidirectional
+ end
+ end
+
+
+ -- cycleways
+ if cycleway and cycleway_tags[cycleway] then
+ way.speed = bicycle_speeds["cycleway"]
+ elseif cycleway_left and cycleway_tags[cycleway_left] then
+ way.speed = bicycle_speeds["cycleway"]
+ elseif cycleway_right and cycleway_tags[cycleway_right] then
+ way.speed = bicycle_speeds["cycleway"]
+ end
+
+ -- surfaces
+ if surface then
+ surface_speed = surface_speeds[surface]
+ if surface_speed then
+ way.speed = math.min(way.speed, surface_speed)
+ way.backward_speed = math.min(way.backward_speed, surface_speed)
+ end
+ end
+
+ -- maxspeed
+ -- TODO: maxspeed of backward direction
+ if take_minimum_of_speeds then
+ if maxspeed and maxspeed>0 then
+ way.speed = math.min(way.speed, maxspeed)
+ end
+ end
+
+ -- Override speed settings if explicit forward/backward maxspeeds are given
+ if maxspeed_forward ~= nil and maxspeed_forward > 0 then
+ if Way.bidirectional == way.direction then
+ way.backward_speed = way.speed
+ end
+ way.speed = maxspeed_forward
+ end
+ if maxspeed_backward ~= nil and maxspeed_backward > 0 then
+ way.backward_speed = maxspeed_backward
+ end
+
+
+
+ way.type = 1
+ return 1
+end
+
+function turn_function (angle)
+ -- compute turn penalty as angle^2, with a left/right bias
+ k = turn_penalty/(90.0*90.0)
+ if angle>=0 then
+ return angle*angle*k/turn_bias
+ else
+ return angle*angle*k*turn_bias
+ end
+end
diff --git a/debian/conffiles/car.lua b/debian/conffiles/car.lua
new file mode 100644
index 0000000..ff7c379
--- /dev/null
+++ b/debian/conffiles/car.lua
@@ -0,0 +1,219 @@
+-- Begin of globals
+require("lib/access")
+
+barrier_whitelist = { ["cattle_grid"] = true, ["border_control"] = true, ["toll_booth"] = true, ["sally_port"] = true, ["gate"] = true, ["no"] = true}
+access_tag_whitelist = { ["yes"] = true, ["motorcar"] = true, ["motor_vehicle"] = true, ["vehicle"] = true, ["permissive"] = true, ["designated"] = true }
+access_tag_blacklist = { ["no"] = true, ["private"] = true, ["agricultural"] = true, ["forestry"] = true }
+access_tag_restricted = { ["destination"] = true, ["delivery"] = true }
+access_tags = { "motorcar", "motor_vehicle", "vehicle" }
+access_tags_hierachy = { "motorcar", "motor_vehicle", "vehicle", "access" }
+service_tag_restricted = { ["parking_aisle"] = true }
+ignore_in_grid = { ["ferry"] = true }
+restriction_exception_tags = { "motorcar", "motor_vehicle", "vehicle" }
+
+speed_profile = {
+ ["motorway"] = 90,
+ ["motorway_link"] = 75,
+ ["trunk"] = 85,
+ ["trunk_link"] = 70,
+ ["primary"] = 65,
+ ["primary_link"] = 60,
+ ["secondary"] = 55,
+ ["secondary_link"] = 50,
+ ["tertiary"] = 40,
+ ["tertiary_link"] = 30,
+ ["unclassified"] = 25,
+ ["residential"] = 25,
+ ["living_street"] = 10,
+ ["service"] = 15,
+-- ["track"] = 5,
+ ["ferry"] = 5,
+ ["shuttle_train"] = 10,
+ ["default"] = 50
+}
+
+take_minimum_of_speeds = false
+obey_oneway = true
+obey_bollards = true
+use_restrictions = true
+ignore_areas = true -- future feature
+traffic_signal_penalty = 2
+u_turn_penalty = 20
+
+-- End of globals
+
+function get_exceptions(vector)
+ for i,v in ipairs(restriction_exception_tags) do
+ vector:Add(v)
+ end
+end
+
+local function parse_maxspeed(source)
+ if source == nil then
+ return 0
+ end
+ local n = tonumber(source:match("%d*"))
+ if n == nil then
+ n = 0
+ end
+ if string.match(source, "mph") or string.match(source, "mp/h") then
+ n = (n*1609)/1000;
+ end
+ return math.abs(n)
+end
+
+function node_function (node)
+ local barrier = node.tags:Find ("barrier")
+ local access = Access.find_access_tag(node, access_tags_hierachy)
+ local traffic_signal = node.tags:Find("highway")
+
+ --flag node if it carries a traffic light
+
+ if traffic_signal == "traffic_signals" then
+ node.traffic_light = true;
+ end
+
+ -- parse access and barrier tags
+ if access and access ~= "" then
+ if access_tag_blacklist[access] then
+ node.bollard = true
+ end
+ elseif barrier and barrier ~= "" then
+ if barrier_whitelist[barrier] then
+ return
+ else
+ node.bollard = true
+ end
+ end
+ return 1
+end
+
+
+function way_function (way)
+ -- we dont route over areas
+ local area = way.tags:Find("area")
+ if ignore_areas and ("yes" == area) then
+ return 0
+ end
+
+ -- check if oneway tag is unsupported
+ local oneway = way.tags:Find("oneway")
+ if "reversible" == oneway then
+ return 0
+ end
+
+ -- Check if we are allowed to access the way
+ local access = Access.find_access_tag(way, access_tags_hierachy)
+ if access_tag_blacklist[access] then
+ return 0
+ end
+
+ -- Second, parse the way according to these properties
+ local highway = way.tags:Find("highway")
+ local name = way.tags:Find("name")
+ local ref = way.tags:Find("ref")
+ local junction = way.tags:Find("junction")
+ local route = way.tags:Find("route")
+ local maxspeed = parse_maxspeed(way.tags:Find ( "maxspeed") )
+ local maxspeed_forward = parse_maxspeed(way.tags:Find( "maxspeed:forward"))
+ local maxspeed_backward = parse_maxspeed(way.tags:Find( "maxspeed:backward"))
+ local barrier = way.tags:Find("barrier")
+ local cycleway = way.tags:Find("cycleway")
+ local duration = way.tags:Find("duration")
+ local service = way.tags:Find("service")
+
+
+ -- Set the name that will be used for instructions
+ if "" ~= ref then
+ way.name = ref
+ elseif "" ~= name then
+ way.name = name
+-- else
+-- way.name = highway -- if no name exists, use way type
+ end
+
+ if "roundabout" == junction then
+ way.roundabout = true;
+ end
+
+ -- Handling ferries and piers
+ if (speed_profile[route] ~= nil and speed_profile[route] > 0) then
+ if durationIsValid(duration) then
+ way.duration = math.max( parseDuration(duration), 1 );
+ end
+ way.direction = Way.bidirectional
+ if speed_profile[route] ~= nil then
+ highway = route;
+ end
+ if tonumber(way.duration) < 0 then
+ way.speed = speed_profile[highway]
+ end
+ end
+
+ -- Set the avg speed on the way if it is accessible by road class
+ if (speed_profile[highway] ~= nil and way.speed == -1 ) then
+ if maxspeed > speed_profile[highway] then
+ way.speed = maxspeed
+ else
+ if 0 == maxspeed then
+ maxspeed = math.huge
+ end
+ way.speed = math.min(speed_profile[highway], maxspeed)
+ end
+ end
+
+ -- Set the avg speed on ways that are marked accessible
+ if "" ~= highway and access_tag_whitelist[access] and way.speed == -1 then
+ if 0 == maxspeed then
+ maxspeed = math.huge
+ end
+ way.speed = math.min(speed_profile["default"], maxspeed)
+ end
+
+ -- Set access restriction flag if access is allowed under certain restrictions only
+ if access ~= "" and access_tag_restricted[access] then
+ way.is_access_restricted = true
+ end
+
+ -- Set access restriction flag if service is allowed under certain restrictions only
+ if service ~= "" and service_tag_restricted[service] then
+ way.is_access_restricted = true
+ end
+
+ -- Set direction according to tags on way
+ way.direction = Way.bidirectional
+ if obey_oneway then
+ if oneway == "-1" then
+ way.direction = Way.opposite
+ elseif oneway == "yes" or oneway == "1" or oneway == "true" or junction == "roundabout" or highway == "motorway_link" or highway == "motorway" then
+ way.direction = Way.oneway
+ end
+ end
+
+ -- Override speed settings if explicit forward/backward maxspeeds are given
+ if maxspeed_forward ~= nil and maxspeed_forward > 0 then
+ if Way.bidirectional == way.direction then
+ way.backward_speed = way.speed
+ end
+ way.speed = maxspeed_forward
+ end
+ if maxspeed_backward ~= nil and maxspeed_backward > 0 then
+ way.backward_speed = maxspeed_backward
+ end
+
+ -- Override general direction settings of there is a specific one for our mode of travel
+ if ignore_in_grid[highway] ~= nil and ignore_in_grid[highway] then
+ way.ignore_in_grid = true
+ end
+
+ way.type = 1
+ return 1
+end
+
+-- These are wrappers to parse vectors of nodes and ways and thus to speed up any tracing JIT
+
+function node_vector_function(vector)
+ for v in vector.nodes do
+ node_function(v)
+ end
+end
diff --git a/debian/conffiles/contractor.ini b/debian/conffiles/contractor.ini
new file mode 100644
index 0000000..4da33c7
--- /dev/null
+++ b/debian/conffiles/contractor.ini
@@ -0,0 +1 @@
+Threads = 4
diff --git a/debian/conffiles/extractor.ini b/debian/conffiles/extractor.ini
new file mode 100644
index 0000000..8dd11de
--- /dev/null
+++ b/debian/conffiles/extractor.ini
@@ -0,0 +1,2 @@
+Memory = 2
+Threads = 10
diff --git a/debian/conffiles/foot.lua b/debian/conffiles/foot.lua
new file mode 100644
index 0000000..6a15fb2
--- /dev/null
+++ b/debian/conffiles/foot.lua
@@ -0,0 +1,193 @@
+-- Foot profile
+
+-- Begin of globals
+
+bollards_whitelist = { [""] = true, ["cattle_grid"] = true, ["border_control"] = true, ["toll_booth"] = true, ["sally_port"] = true, ["gate"] = true}
+access_tag_whitelist = { ["yes"] = true, ["foot"] = true, ["permissive"] = true, ["designated"] = true }
+access_tag_blacklist = { ["no"] = true, ["private"] = true, ["agricultural"] = true, ["forestery"] = true }
+access_tag_restricted = { ["destination"] = true, ["delivery"] = true }
+access_tags = { "foot" }
+service_tag_restricted = { ["parking_aisle"] = true }
+ignore_in_grid = { ["ferry"] = true }
+restriction_exception_tags = { "foot" }
+
+speed_profile = {
+ ["primary"] = 5,
+ ["primary_link"] = 5,
+ ["secondary"] = 5,
+ ["secondary_link"] = 5,
+ ["tertiary"] = 5,
+ ["tertiary_link"] = 5,
+ ["unclassified"] = 5,
+ ["residential"] = 5,
+ ["road"] = 5,
+ ["living_street"] = 5,
+ ["service"] = 5,
+ ["track"] = 5,
+ ["path"] = 5,
+ ["steps"] = 5,
+ ["ferry"] = 5,
+ ["pedestrian"] = 5,
+ ["footway"] = 5,
+ ["pier"] = 5,
+ ["default"] = 5
+}
+
+
+take_minimum_of_speeds = true
+obey_oneway = true
+obey_bollards = false
+use_restrictions = false
+ignore_areas = true -- future feature
+traffic_signal_penalty = 2
+u_turn_penalty = 2
+use_turn_restrictions = false
+-- End of globals
+
+function get_exceptions(vector)
+ for i,v in ipairs(restriction_exception_tags) do
+ vector:Add(v)
+ end
+end
+
+function node_function (node)
+ local barrier = node.tags:Find ("barrier")
+ local access = node.tags:Find ("access")
+ local traffic_signal = node.tags:Find("highway")
+
+ --flag node if it carries a traffic light
+
+ if traffic_signal == "traffic_signals" then
+ node.traffic_light = true;
+ end
+
+ if obey_bollards then
+ --flag node as unpassable if it black listed as unpassable
+ if access_tag_blacklist[barrier] then
+ node.bollard = true;
+ end
+
+ --reverse the previous flag if there is an access tag specifying entrance
+ if node.bollard and not bollards_whitelist[barrier] and not access_tag_whitelist[barrier] then
+ node.bollard = false;
+ end
+ end
+ return 1
+end
+
+function way_function (way)
+
+ -- First, get the properties of each way that we come across
+ local highway = way.tags:Find("highway")
+ local name = way.tags:Find("name")
+ local ref = way.tags:Find("ref")
+ local junction = way.tags:Find("junction")
+ local route = way.tags:Find("route")
+ local maxspeed = parseMaxspeed(way.tags:Find ( "maxspeed") )
+ local man_made = way.tags:Find("man_made")
+ local barrier = way.tags:Find("barrier")
+ local oneway = way.tags:Find("oneway")
+ local onewayClass = way.tags:Find("oneway:foot")
+ local duration = way.tags:Find("duration")
+ local service = way.tags:Find("service")
+ local area = way.tags:Find("area")
+ local access = way.tags:Find("access")
+
+ -- Second parse the way according to these properties
+
+ if ignore_areas and ("yes" == area) then
+ return 0
+ end
+
+ -- Check if we are allowed to access the way
+ if access_tag_blacklist[access] ~=nil and access_tag_blacklist[access] then
+ return 0;
+ end
+
+ -- Check if our vehicle types are forbidden
+ for i,v in ipairs(access_tags) do
+ local mode_value = way.tags:Find(v)
+ if nil ~= mode_value and "no" == mode_value then
+ return 0;
+ end
+ end
+
+
+ -- Set the name that will be used for instructions
+ if "" ~= ref then
+ way.name = ref
+ elseif "" ~= name then
+ way.name = name
+ end
+
+ if "roundabout" == junction then
+ way.roundabout = true;
+ end
+
+ -- Handling ferries and piers
+
+ if (speed_profile[route] ~= nil and speed_profile[route] > 0) or
+ (speed_profile[man_made] ~= nil and speed_profile[man_made] > 0)
+ then
+ if durationIsValid(duration) then
+ way.speed = parseDuration(duration) / math.max(1, numberOfNodesInWay-1);
+ way.is_duration_set = true;
+ end
+ way.direction = Way.bidirectional;
+ if speed_profile[route] ~= nil then
+ highway = route;
+ elseif speed_profile[man_made] ~= nil then
+ highway = man_made;
+ end
+ if not way.is_duration_set then
+ way.speed = speed_profile[highway]
+ end
+
+ end
+
+ -- Set the avg speed on the way if it is accessible by road class
+ if (speed_profile[highway] ~= nil and way.speed == -1 ) then
+ way.speed = speed_profile[highway]
+ end
+
+ -- Set the avg speed on ways that are marked accessible
+ if access_tag_whitelist[access] and way.speed == -1 then
+ if (0 < maxspeed and not take_minimum_of_speeds) or maxspeed == 0 then
+ maxspeed = math.huge
+ end
+ way.speed = math.min(speed_profile["default"], maxspeed)
+ end
+
+ -- Set access restriction flag if access is allowed under certain restrictions only
+ if access ~= "" and access_tag_restricted[access] then
+ way.is_access_restricted = true
+ end
+
+ -- Set access restriction flag if service is allowed under certain restrictions only
+ if service ~= "" and service_tag_restricted[service] then
+ way.is_access_restricted = true
+ end
+
+ -- Set direction according to tags on way
+ if obey_oneway then
+ if onewayClass == "yes" or onewayClass == "1" or onewayClass == "true" then
+ way.direction = Way.oneway
+ elseif onewayClass == "no" or onewayClass == "0" or onewayClass == "false" then
+ way.direction = Way.bidirectional
+ elseif onewayClass == "-1" then
+ way.direction = Way.opposite
+ else
+ way.direction = Way.bidirectional
+ end
+ else
+ way.direction = Way.bidirectional
+ end
+
+ -- Override general direction settings of there is a specific one for our mode of travel
+
+ if ignore_in_grid[highway] ~= nil and ignore_in_grid[highway] then
+ way.ignore_in_grid = true
+ end
+ way.type = 1
+ return 1
+end
diff --git a/debian/conffiles/server.ini b/debian/conffiles/server.ini
new file mode 100644
index 0000000..9920460
--- /dev/null
+++ b/debian/conffiles/server.ini
@@ -0,0 +1,10 @@
+Threads = 8
+IP = 0.0.0.0
+Port = 5000
+
+hsgrData=/var/lib/osrm/planet-latest.osrm.hsgr
+nodesData=/var/lib/osrm/planet-latest.osrm.nodes
+edgesData=/var/lib/osrm/planet-latest.osrm.edges
+ramIndex=/var/lib/osrm/planet-latest.osrm.ramIndex
+fileIndex=/var/lib/osrm/planet-latest.osrm.fileIndex
+namesData=/var/lib/osrm/planet-latest.osrm.names
diff --git a/debian/conffiles/testbot.lua b/debian/conffiles/testbot.lua
new file mode 100644
index 0000000..f934fea
--- /dev/null
+++ b/debian/conffiles/testbot.lua
@@ -0,0 +1,107 @@
+-- Testbot profile
+
+-- Moves at fixed, well-known speeds, practical for testing speed and travel times:
+
+-- Primary road: 36km/h = 36000m/3600s = 100m/10s
+-- Secondary road: 18km/h = 18000m/3600s = 100m/20s
+-- Tertiary road: 12km/h = 12000m/3600s = 100m/30s
+
+speed_profile = {
+ ["primary"] = 36,
+ ["secondary"] = 18,
+ ["tertiary"] = 12,
+ ["default"] = 24
+}
+
+-- these settings are read directly by osrm
+
+take_minimum_of_speeds = true
+obey_oneway = true
+obey_bollards = true
+use_restrictions = true
+ignore_areas = true -- future feature
+traffic_signal_penalty = 7 -- seconds
+u_turn_penalty = 20
+
+function limit_speed(speed, limits)
+ -- don't use ipairs(), since it stops at the first nil value
+ for i=1, #limits do
+ limit = limits[i]
+ if limit ~= nil and limit > 0 then
+ if limit < speed then
+ return limit -- stop at first speedlimit that's smaller than speed
+ end
+ end
+ end
+ return speed
+end
+
+function node_function (node)
+ local traffic_signal = node.tags:Find("highway")
+
+ if traffic_signal == "traffic_signals" then
+ node.traffic_light = true;
+ -- TODO: a way to set the penalty value
+ end
+ return 1
+end
+
+function way_function (way)
+ local highway = way.tags:Find("highway")
+ local name = way.tags:Find("name")
+ local oneway = way.tags:Find("oneway")
+ local route = way.tags:Find("route")
+ local duration = way.tags:Find("duration")
+ local maxspeed = tonumber(way.tags:Find ( "maxspeed"))
+ local maxspeed_forward = tonumber(way.tags:Find( "maxspeed:forward"))
+ local maxspeed_backward = tonumber(way.tags:Find( "maxspeed:backward"))
+
+ way.name = name
+
+ if route ~= nil and durationIsValid(duration) then
+ way.duration = math.max( 1, parseDuration(duration) )
+ else
+ local speed_forw = speed_profile[highway] or speed_profile['default']
+ local speed_back = speed_forw
+
+ if highway == "river" then
+ local temp_speed = speed_forw;
+ speed_forw = temp_speed*1.5
+ speed_back = temp_speed/1.5
+ end
+
+ if maxspeed_forward ~= nil and maxspeed_forward > 0 then
+ speed_forw = maxspeed_forward
+ else
+ if maxspeed ~= nil and maxspeed > 0 and speed_forw > maxspeed then
+ speed_forw = maxspeed
+ end
+ end
+
+ if maxspeed_backward ~= nil and maxspeed_backward > 0 then
+ speed_back = maxspeed_backward
+ else
+ if maxspeed ~=nil and maxspeed > 0 and speed_back > maxspeed then
+ speed_back = maxspeed
+ end
+ end
+
+ way.speed = speed_forw
+ if speed_back ~= way_forw then
+ way.backward_speed = speed_back
+ end
+ end
+
+ if oneway == "no" or oneway == "0" or oneway == "false" then
+ way.direction = Way.bidirectional
+ elseif oneway == "-1" then
+ way.direction = Way.opposite
+ elseif oneway == "yes" or oneway == "1" or oneway == "true" then
+ way.direction = Way.oneway
+ else
+ way.direction = Way.bidirectional
+ end
+
+ way.type = 1
+ return 1
+end
diff --git a/debian/conffiles/turnbot.lua b/debian/conffiles/turnbot.lua
new file mode 100644
index 0000000..1a96966
--- /dev/null
+++ b/debian/conffiles/turnbot.lua
@@ -0,0 +1,8 @@
+-- Testbot, with turn penalty
+-- Used for testing turn penalties
+
+require 'testbot'
+
+function turn_function (angle)
+ return 200*math.abs(angle)/180 -- penalty
+end
diff --git a/debian/control b/debian/control
new file mode 100644
index 0000000..515c81c
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,35 @@
+Source: osrm
+Section: misc
+Priority: extra
+Maintainer: Debian GIS Project <pkg-grass-devel at lists.alioth.debian.org>
+Uploaders: Debian OpenStreetMap Team <pkg-osm-maint at lists.alioth.debian.org>,
+ Christopher Baines <cbaines8 at gmail.com>
+Build-Depends: debhelper (>= 9.0.0), cmake, libboost-dev, libboost-filesystem-dev, libboost-thread-dev, libboost-system-dev, libboost-regex-dev, libstxxl-dev, libxml2-dev, libsparsehash-dev, libbz2-dev, zlib1g-dev, libzip-dev, libgomp1, libpng-dev, libprotoc7, libprotobuf-dev, protobuf-compiler, liblua5.1-0-dev, libluabind-dev, pkg-config, libosmpbf-dev, libgdal-dev
+Standards-Version: 3.9.4
+Homepage: http://project-osrm.org/
+Vcs-Git: git://git.debian.org/pkg-grass/osrm.git
+Vcs-Browser: http://git.debian.org/?p=pkg-grass/osrm.git
+
+Package: osrm
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Suggests: osrm-tools
+Pre-Depends: adduser
+Description: high performance routing engine for shortest paths in road networks
+ The Open Source Routing Machine (OSRM) is a C++ implementation of a
+ high-performance routing engine for shortest paths in road networks.
+ .
+ OSRM is able to compute and output a shortest path between any origin
+ and destination within a few miliseconds.
+
+Package: osrm-tools
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Enhances: osrm
+Description: tools for use with osrm
+ The Open Source Routing Machine (OSRM) is a C++ implementation of a
+ high-performance routing engine for shortest paths in road networks.
+ .
+ This package contains the component analisis (osrm-components) tool
+ which generates statistics and a shapefile for unroutable roads in the OSM
+ data.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 0000000..efa741b
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,65 @@
+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: osrm
+Source: http://project-osrm.org/
+
+Files: *
+Copyright: Christian Vetter
+ Dennis Luxen
+ Ruslan Krenzler
+ Frederik Ramm
+ Bharath Vissapragada
+ Pascal Neis
+ Sasa Ivetic
+ Emil Tin
+ Henning Moll
+License: GPL-3
+ This package is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation.
+ .
+ This package 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 Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>
+
+Files: win/getopt.c win/getopt.h
+Copyright: 1987,88,89,90,91,92,93,94,95,96,98,99,2000,2001 Free Software Foundation, Inc.
+License: LGPL-2.1+
+ This file is part of the GNU C Library.
+ .
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+ .
+ The GNU C Library 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
+ Lesser General Public License for more details.
+ .
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA.
+ .
+ On Debian systems, the full text of the GNU Lesser General Public
+ License version 2.1 can be found in the file
+ `/usr/share/common-licenses/LGPL-2.1'.
+
+Files: debian/*
+Copyright: 2013 Christopher Baines <cbaines8 at gmail.com>
+License: AGPL-3
+ This package is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation.
+ .
+ This package 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 Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>
diff --git a/debian/docs b/debian/docs
new file mode 100644
index 0000000..a5a61e8
--- /dev/null
+++ b/debian/docs
@@ -0,0 +1,2 @@
+AUTHORS.TXT
+README.TXT
diff --git a/debian/osrm-components.1 b/debian/osrm-components.1
new file mode 100644
index 0000000..039d505
--- /dev/null
+++ b/debian/osrm-components.1
@@ -0,0 +1,14 @@
+.TH OSRM-COMPONENTS 1 "July 4, 2013" osrm-components "Open Source Rouing Machine"
+.SH NAME
+osrm-components \- gives information about unroutable roads in the data
+.SH SYNOPSIS
+.B osrm-components
+.I data.osrm
+.I data.osrm.restrictions
+.SH DESCRIPTION
+Produces some statistics, and a shapefile (with associated data) regarding the input data.
+.SH SEE ALSO
+.BR osrm (7),
+.BR osrm-extract (1),
+.BR osrm-prepare (1),
+.BR osrm-routed (1)
diff --git a/debian/osrm-extract.1 b/debian/osrm-extract.1
new file mode 100644
index 0000000..d39a3b0
--- /dev/null
+++ b/debian/osrm-extract.1
@@ -0,0 +1,22 @@
+.TH OSRM-EXTRACT 1 "July 4, 2013" osrm-extract "Open Source Routing Machine"
+.SH NAME
+osrm-extract \- generate OSRM routing data from OSM data
+.SH SYNOPSIS
+.B osrm-extract
+.I data
+[profile.lua]
+.SH DESCRIPTION
+\fBosrm-extract\fP takes OSM data, ether in a xml file, a bzipped xml or a pbf encoded file. Along with a profile (written in lua). It then creates three files, .osrm which contains the routing data, osrm.restrictions which contains turn restrictions, and .osrm.names which contains the names of the road.
+.SH PROFILES
+Profiles are written in lua, and describe how the osm data can be routed across. Several profiles are available in /etc/osrm/profiles
+.SH EXAMPLES
+Using the data file planet-latest.osm.pbf, and the profile /etc/osrm/profiles/car.lua, you would run:
+
+ osrm-extract planet-latest.osm.pbf /etc/osrm/profiles/car.lua
+
+This should then generate: planet-latest.osrm planet-latest.osrm.restrictions planet-latest.osrm.names
+The next step is to run the osrm-prepare tool.
+.SH SEE ALSO
+.BR osrm (7),
+.BR osrm-prepare (1),
+.BR osrm-routed (1)
diff --git a/debian/osrm-prepare.1 b/debian/osrm-prepare.1
new file mode 100644
index 0000000..4afd368
--- /dev/null
+++ b/debian/osrm-prepare.1
@@ -0,0 +1,14 @@
+.TH OSRM-PREPARE 1 "July 4, 2013" osrm-prepare "Open Source Routing Machine"
+.SH NAME
+osrm-prepare \- generate the hierarchy from OSRM data
+.SH SYNOPSIS
+.B osrm-prepare
+.I file.osrm
+.I file.osrm.resctictions
+.I profile.lua
+.SH DESCRIPTION
+The \fBosrm-prepare\fP tool takes the data generated by \fBosrm-extract\fP and creates, .osrm.hsgr, .osrm.nodes, .osrm.ramIndex, .osrm.fileIndex . After these have been generated, the osrm service can be started, or the \fBosrm-routed\fP command can be run.
+.SH SEE ALSO
+.BR osrm (7),
+.BR osrm-extract (1),
+.BR osrm-routed (1)
diff --git a/debian/osrm-routed.1 b/debian/osrm-routed.1
new file mode 100644
index 0000000..13ee086
--- /dev/null
+++ b/debian/osrm-routed.1
@@ -0,0 +1,56 @@
+.\" (C) Copyright 2013 Christopher Baines <chris at chris-desktop.home>,
+.TH OSRM-ROUTED 1 "July 4, 2013" osrm-routed "Open Source Routing Machine"
+.SH NAME
+osrm-routed \- the OSRM routing service
+.SH SYNOPSIS
+.B osrm
+.I server.ini
+.SH DESCRIPTION
+The Open Source Routing Machine (OSRM) is a high performance routing enigine for finding shortest paths in road networks.
+.PP
+\fBosrm-routed\fP starts the router, it uses then config file given, defaulting to server.ini in the current directory. Note that on Debian, this command is executed by the init file, so for a standard setup, it should not be nessacery to run it directly.
+.SH CONFIGURATION FILE
+Uses a key = value syntax. The table below gives the keys that can be used.
+
+.TS
+tab (@);
+l lx.
+Threads at T{
+Number of threads OSRM will use (default 8)
+T}
+IP at T{
+IP address that OSRM will use (default 0.0.0.0)
+T}
+Port at T{
+Port that OSRM will use (default 5000)
+T}
+hsgrData at T{
+OSRM Hierarchy (default suffix: osrm.hsgr)
+T}
+nodesData at T{
+Node map (default suffix: osrm.nodes)
+T}
+edgesData at T{
+Edge map (default suffix: osrm.edges)
+T}
+ramIndex at T{
+Stage 1 index (default suffix: osrm.ramIndex)
+e.g. \fBman\fR(7), \fBgroff\fR(7)
+T}
+fileIndex at T{
+Stage 2 index (default suffix: osrm.fileIndex)
+T}
+namesData at T{
+Road names (default suffix: osrm.names)
+T}
+.TE
+
+.SH FILES
+.TP
+.I /etc/osrm/server.ini
+The server configuration file used by the OSRM service
+
+.SH "SEE ALSO"
+.BR osrm (7),
+.BR osrm-extract (1),
+.BR osrm-prepare (1)
diff --git a/debian/osrm-tools.install b/debian/osrm-tools.install
new file mode 100644
index 0000000..4781507
--- /dev/null
+++ b/debian/osrm-tools.install
@@ -0,0 +1 @@
+debian/tmp/usr/bin/osrm-components /usr/bin/
diff --git a/debian/osrm-tools.manpages b/debian/osrm-tools.manpages
new file mode 100644
index 0000000..b630af7
--- /dev/null
+++ b/debian/osrm-tools.manpages
@@ -0,0 +1 @@
+debian/osrm-components.1
diff --git a/debian/osrm.7 b/debian/osrm.7
new file mode 100644
index 0000000..c59da78
--- /dev/null
+++ b/debian/osrm.7
@@ -0,0 +1,67 @@
+.TH OSRM 7 "July 4, 2013" osrm "Open Source Routing Machine"
+.SH NAME
+osrm \- high performance routing engine
+.SH SYNOPSIS
+.B osrm-extract
+.I data
+[profile.lua]
+.br
+.B osrm-prepare
+.I file.osrm
+.I file.osrm.resctictions
+.I profile.lua
+.br
+.B osrm-routed
+.I server.ini
+.br
+.B osrm-components
+.I data.osrm
+.I data.osrm.restrictions
+.SH DESCRIPTION
+The Open Source Routing Machine (OSRM) is a high performance routing engine for road networks.
+
+Firstly, you must take OSM data, and create the files that OSM uses. This is done through the use of the osrm-extract and osrm-prepare commands.
+.SH EXAMPLE
+The following example uses an osm file called planet-latest.osm.pbf, however this will work with raw osm data, or pbf data. The prefix for the osrm files will be planet-latest, this is taken from the name of the osm file, if you use a differently named file, you must change the prefix in the below commands. The files used will be placed in /var/cache/osrm, as this is the default location, as set in /etc/osrm/server.ini, the configuration file used by the osrm service.
+
+The latest planet file can be downloaded from the planet.openstreetmap.org site by using the following command (run in the /var/cache/osrm directory):
+
+ wget http://planet.openstreetmap.org/pbf/planet-latest.osm.pbf
+
+The following commands assume that the osm data is in the /var/lib/osrm directory.
+
+For this example, the profile /etc/osrm/profiles/car.lua will be used, but this can either be changed, or a different profile can be used. There are additional sample profiles available in /etc/osrm/profiles. To run the extraction, run:
+
+ osrm-extract planet-latest.osm.pbf /etc/osrm/profiles/car.lua
+
+Once finished, you should have the files planet-latest.osrm, planet-latest.osrm.names, planet-latest.osrm.restrictions present. You will also have some stxxl related files, but these are not directly related to osrm.
+
+To proceed, use osrm-prepare to generate the higherarchi:
+
+ osrm-prepare planet-latest.osrm planet-latest.osrm.restrictions /etc/osrm/profiles/car.lua
+
+In the working directory, you should now have in addition to the above files planet-latest.osrm.hsgr, planet-latest.osrm.edges, planet-latest.osrm.nodes, planet-latest.osrm.ramindex and planet-latest.osrm.fileIndex. You can then start the service.
+
+ service osrm restart
+
+If the service starts successfully, you should be able to use the API, if not, check the log file at /var/log.osrm/routed.log, and if nessacery, report a bug against the osrm package.
+.SH SERVER API
+The service api is similar to query strings for HTTP. Three types of query are possible:
+.TS
+tab (@);
+l lx.
+locate at T{
+Takes latitude and longitude and returns the nearest node in the data to that point.
+T}
+nearest at T{
+Takes lattitude and longitude and returns the nearest point on a street segment to that point.
+T}
+viaroute at T{
+Takes multiple latitude, longitude points, and returns a route from the first, through to the last.
+T}
+.TE
+.SH SEE ALSO
+.BR osrm-extract (1),
+.BR osrm-prepare (1),
+.BR osrm-routed (1),
+.BR osrm-components (1)
diff --git a/debian/osrm.default b/debian/osrm.default
new file mode 100644
index 0000000..f69417e
--- /dev/null
+++ b/debian/osrm.default
@@ -0,0 +1,2 @@
+# Location of the configuration file
+DAEMON_OPTS="/etc/osrm/server.ini"
diff --git a/debian/osrm.init b/debian/osrm.init
new file mode 100644
index 0000000..748c889
--- /dev/null
+++ b/debian/osrm.init
@@ -0,0 +1,98 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: osrm
+# Required-Start: $network $local_fs $remote_fs
+# Required-Stop: $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: OSRM routing service
+# Description: high performance routing engine
+### END INIT INFO
+
+# Author: Christopher Baines <cbaines8 at gmail.com>
+
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+DESC="high performance routing engine"
+NAME=osrm
+USER=osrm
+DAEMON=/usr/bin/osrm-routed
+SERVER_INI=/etc/osrm/server.ini
+DAEMON_ARGS="$SERVER_INI >>/var/log/osrm/routed.log 2>&1"
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x $DAEMON ] || exit 0
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --background --user $USER --chuid $USER --exec $DAEMON --test > /dev/null || return 1
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --background --user $USER --chuid $USER --exec $DAEMON -- $DAEMON_ARGS || return 2
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+ start-stop-daemon --stop --quiet --user $USER --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
+ RETVAL="$?"
+ [ "$RETVAL" = 2 ] && return 2
+ start-stop-daemon --stop --quiet --user $USER --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+ [ "$?" = 2 ] && return 2
+ rm -f $PIDFILE
+ return "$RETVAL"
+}
+
+case "$1" in
+ start)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC " "$NAME"
+ do_start
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ stop)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ status)
+ status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
+ ;;
+ restart|force-reload)
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_end_msg 1 ;; # Old process is still running
+ *) log_end_msg 1 ;; # Failed to start
+ esac
+ ;;
+ *)
+ # Failed to stop
+ log_end_msg 1
+ ;;
+ esac
+ ;;
+ *)
+ echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/debian/osrm.install b/debian/osrm.install
new file mode 100644
index 0000000..fefbabc
--- /dev/null
+++ b/debian/osrm.install
@@ -0,0 +1,12 @@
+debian/tmp/usr/bin/osrm-routed /usr/bin/
+debian/tmp/usr/bin/osrm-prepare /usr/bin/
+debian/tmp/usr/bin/osrm-extract /usr/bin/
+debian/conffiles/server.ini /etc/osrm/
+debian/conffiles/extractor.ini /etc/osrm/
+debian/conffiles/contractor.ini /etc/osrm/
+debian/conffiles/car.lua /etc/osrm/profiles/
+debian/conffiles/foot.lua /etc/osrm/profiles/
+debian/conffiles/bicycle.lua /etc/osrm/profiles/
+debian/conffiles/testbot.lua /etc/osrm/profiles/
+debian/conffiles/turnbot.lua /etc/osrm/profiles/
+debian/conffiles/access.lua /etc/osrm/profiles/lib/
diff --git a/debian/osrm.manpages b/debian/osrm.manpages
new file mode 100644
index 0000000..3b07499
--- /dev/null
+++ b/debian/osrm.manpages
@@ -0,0 +1,4 @@
+debian/osrm.7
+debian/osrm-routed.1
+debian/osrm-extract.1
+debian/osrm-prepare.1
diff --git a/debian/osrm.postinst b/debian/osrm.postinst
new file mode 100644
index 0000000..2408ba3
--- /dev/null
+++ b/debian/osrm.postinst
@@ -0,0 +1,50 @@
+#!/bin/sh
+# postinst script for osrm
+
+set -e
+
+# summary of how this script can be called:
+# * <postinst> `configure' <most-recently-configured-version>
+# * <old-postinst> `abort-upgrade' <new version>
+# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+# <new-version>
+# * <postinst> `abort-remove'
+# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+# <failed-install-package> <version> `removing'
+# <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+case "$1" in
+ configure)
+ # Create osrm group if it doesn't already exist.
+ if ! getent group osrm >/dev/null; then
+ addgroup --quiet --system osrm
+ fi
+
+ # Create osrm user if it doesn't already exist.
+ if ! getent passwd osrm >/dev/null; then
+ adduser --quiet --system --ingroup osrm --home /var/lib/osrm \
+ --gecos "OSRM" osrm
+ fi
+
+ mkdir -p /var/log/osrm
+ chown osrm:osrm /var/log/osrm
+ mkdir -p /var/lib/osrm
+ ;;
+
+ abort-upgrade|abort-remove|abort-deconfigure)
+ ;;
+
+ *)
+ echo "postinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/osrm.postrm b/debian/osrm.postrm
new file mode 100644
index 0000000..a888153
--- /dev/null
+++ b/debian/osrm.postrm
@@ -0,0 +1,50 @@
+#!/bin/sh
+# postrm script for osrm
+
+set -e
+
+# summary of how this script can be called:
+# * <postrm> `remove'
+# * <postrm> `purge'
+# * <old-postrm> `upgrade' <new-version>
+# * <new-postrm> `failed-upgrade' <old-version>
+# * <new-postrm> `abort-install'
+# * <new-postrm> `abort-install' <old-version>
+# * <new-postrm> `abort-upgrade' <old-version>
+# * <disappearer's-postrm> `disappear' <overwriter>
+# <overwriter-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+case "$1" in
+ purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+ if getent passwd osrm >/dev/null; then
+ if [ -x "`which deluser 2>/dev/null`" ]; then
+ deluser --system osrm
+ else
+ echo >&2 "Not removing \`osrm' system account" \
+ "because deluser command was not found."
+ fi
+ fi
+ if getent group osrm >/dev/null; then
+ if [ -x "`which delgroup 2>/dev/null`" ]; then
+ delgroup --system osrm
+ else
+ echo >&2 "Not removing \`osrm' system group" \
+ "because delgroup command was not found."
+ fi
+ fi
+ ;;
+
+ *)
+ echo "postrm called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/patches/add-cmake-install b/debian/patches/add-cmake-install
new file mode 100644
index 0000000..148e34f
--- /dev/null
+++ b/debian/patches/add-cmake-install
@@ -0,0 +1,38 @@
+Description: <short summary of the patch>
+ TODO: Put a short summary on the line above and replace this paragraph
+ with a longer explanation of this change. Complete the meta-information
+ with other relevant fields (see below for details). To make it easier, the
+ information below has been extracted from the changelog. Adjust it or drop
+ it.
+ .
+ osrm (0.3.4-1) unstable; urgency=low
+ .
+ * Initial release (Closes: #nnnn) <nnnn is the bug number of your ITP>
+Author: Christopher Baines <cbaines8 at gmail.com>
+
+---
+The information above should follow the Patch Tagging Guidelines, please
+checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
+are templates for supplementary fields that you might want to add:
+
+Origin: <vendor|upstream|other>, <url of original patch>
+Bug: <url in upstream bugtracker>
+Bug-Debian: http://bugs.debian.org/<bugnumber>
+Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
+Forwarded: <no|not-needed|url proving that it has been forwarded>
+Reviewed-By: <name and email of someone who approved the patch>
+Last-Update: <YYYY-MM-DD>
+
+--- osrm-0.3.4.orig/CMakeLists.txt
++++ osrm-0.3.4/CMakeLists.txt
+@@ -107,5 +107,10 @@ if(WITH_TOOLS)
+ include_directories(${GDAL_INCLUDE_DIR})
+ target_link_libraries( osrm-components ${GDAL_LIBRARIES} )
+ target_link_libraries( osrm-components ${Boost_LIBRARIES} )
++ install(TARGETS osrm-components RUNTIME DESTINATION bin)
+ endif(GDAL_FOUND)
+ endif(WITH_TOOLS)
++
++install(TARGETS osrm-extract RUNTIME DESTINATION bin)
++install(TARGETS osrm-prepare RUNTIME DESTINATION bin)
++install(TARGETS osrm-routed RUNTIME DESTINATION bin)
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..9c427cd
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1 @@
+add-cmake-install
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..13119bc
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,9 @@
+#!/usr/bin/make -f
+
+export DEB_BUILD_HARDENING=1
+
+%:
+ dh $@ --parallel
+
+override_dh_auto_configure:
+ dh_auto_configure -- -DWITH_TOOLS=1
diff --git a/debian/source/format b/debian/source/format
new file mode 100644
index 0000000..163aaf8
--- /dev/null
+++ b/debian/source/format
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/debian/source/include-binaries b/debian/source/include-binaries
new file mode 100644
index 0000000..5282da9
--- /dev/null
+++ b/debian/source/include-binaries
@@ -0,0 +1,22 @@
+obj-x86_64-linux-gnu/CMakeFiles/2.8.11.1/CMakeDetermineCompilerABI_C.bin
+obj-x86_64-linux-gnu/CMakeFiles/2.8.11.1/CMakeDetermineCompilerABI_CXX.bin
+obj-x86_64-linux-gnu/CMakeFiles/2.8.11.1/CompilerIdC/a.out
+obj-x86_64-linux-gnu/CMakeFiles/2.8.11.1/CompilerIdCXX/a.out
+obj-x86_64-linux-gnu/CMakeFiles/osrm-extract.dir/Extractor/BaseParser.cpp.o
+obj-x86_64-linux-gnu/CMakeFiles/osrm-extract.dir/Extractor/ExtractionContainers.cpp.o
+obj-x86_64-linux-gnu/CMakeFiles/osrm-extract.dir/Extractor/ExtractorCallbacks.cpp.o
+obj-x86_64-linux-gnu/CMakeFiles/osrm-extract.dir/Extractor/PBFParser.cpp.o
+obj-x86_64-linux-gnu/CMakeFiles/osrm-extract.dir/Extractor/ScriptingEnvironment.cpp.o
+obj-x86_64-linux-gnu/CMakeFiles/osrm-extract.dir/Extractor/XMLParser.cpp.o
+obj-x86_64-linux-gnu/CMakeFiles/osrm-extract.dir/extractor.cpp.o
+obj-x86_64-linux-gnu/CMakeFiles/osrm-prepare.dir/Contractor/EdgeBasedGraphFactory.cpp.o
+obj-x86_64-linux-gnu/CMakeFiles/osrm-prepare.dir/Contractor/TemporaryStorage.cpp.o
+obj-x86_64-linux-gnu/CMakeFiles/osrm-prepare.dir/createHierarchy.cpp.o
+obj-x86_64-linux-gnu/CMakeFiles/osrm-routed.dir/DataStructures/SearchEngine.cpp.o
+obj-x86_64-linux-gnu/CMakeFiles/osrm-routed.dir/DataStructures/SearchEngineData.cpp.o
+obj-x86_64-linux-gnu/CMakeFiles/osrm-routed.dir/Descriptors/DescriptionFactory.cpp.o
+obj-x86_64-linux-gnu/CMakeFiles/osrm-routed.dir/Server/DataStructures/QueryObjectsStorage.cpp.o
+obj-x86_64-linux-gnu/CMakeFiles/osrm-routed.dir/routed.cpp.o
+obj-x86_64-linux-gnu/osrm-extract
+obj-x86_64-linux-gnu/osrm-prepare
+obj-x86_64-linux-gnu/osrm-routed
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/osrm.git
More information about the Pkg-grass-devel
mailing list