Skip to content

Instantly share code, notes, and snippets.

@asim
Last active April 27, 2021 10:09
Show Gist options
  • Select an option

  • Save asim/f9b980fabd54f75fd37dd087ebab5590 to your computer and use it in GitHub Desktop.

Select an option

Save asim/f9b980fabd54f75fd37dd087ebab5590 to your computer and use it in GitHub Desktop.

Revisions

  1. asim revised this gist Apr 27, 2021. 1 changed file with 118 additions and 77 deletions.
    195 changes: 118 additions & 77 deletions osrm.sh
    Original file line number Diff line number Diff line change
    @@ -1,94 +1,135 @@
    #!/bin/bash

    set -x
    set -e
    # chkconfig: 345 20 80
    # description: Builds and runs OSRM

    # This script builds OSRM Planet
    # It will create builds for 3 profiles; car, bike, foot
    # There is not any backup as of yet

    # Source function library.
    . /etc/init.d/functions

    VERSION=5.24.0
    FILENAME=planet-latest
    PROFILES=( car bicycle foot )
    PROFILE=car
    SOURCE_URL=https://github.com/Project-OSRM/osrm-backend/archive/refs/tags/v${VERSION}.tar.gz
    PLANET_URL=https://planet.openstreetmap.org/pbf/$FILENAME.osm.pbf

    # Make swap space. We'll leave this behind
    if ! $(swapon | grep -q /swap); then
    fallocate -l 100G /swap
    chmod 600 /swap
    mkswap /swap
    swapon /swap
    fi

    # do the updates
    sudo apt-get update

    # Get OSRM build deps
    sudo apt-get install -y git g++ cmake libboost-dev libboost-filesystem-dev libboost-thread-dev \
    libboost-system-dev libboost-regex-dev libxml2-dev libsparsehash-dev libbz2-dev \
    zlib1g-dev libzip-dev libgomp1 liblua5.3-dev \
    pkg-config libgdal-dev libboost-program-options-dev libboost-iostreams-dev \
    libboost-test-dev libtbb-dev libexpat1-dev

    # Download and install OSRM

    # Create a working directory
    if [ ! -d osrm ]; then
    mkdir osrm
    fi

    # Get present directory
    cd osrm
    PWD=`pwd`

    # Download and extract osrm
    if [ ! -d osrm-backend-$VERSION ]; then
    wget $SOURCE_URL
    tar zxvf v${VERSION}.tar.gz
    cd osrm-backend-$VERSION
    fi

    # Build OSRM
    if [ ! -d build ]; then
    mkdir -p build
    cd build
    cmake .. -DCMAKE_BUILD_TYPE=Release
    cmake --build .
    sudo cmake --build . --target install
    fi

    # Download and build OSM dataset
    cd $PWD

    # Get the planet file if needed
    if [ ! -f $FILENAME.osm.pbf ]; then
    wget $PLANET_URL
    fi

    # make a data dir
    if [ ! -d $FILENAME-data ]; then
    mkdir $FILENAME-data
    fi

    for profile in car bicycle foot; do
    if [ -d $FILENAME-data/$profile ]; then
    echo "$FILENAME-data/$profile already exists...skipping"
    continue
    build() {
    set -x
    set -e

    # Make swap space. We'll leave this behind
    if ! $(swapon | grep -q /swap); then
    fallocate -l 100G /swap
    chmod 600 /swap
    mkswap /swap
    swapon /swap
    fi

    # do the updates
    sudo apt-get update

    # Get OSRM build deps
    sudo apt-get install -y git g++ cmake libboost-dev libboost-filesystem-dev libboost-thread-dev \
    libboost-system-dev libboost-regex-dev libxml2-dev libsparsehash-dev libbz2-dev \
    zlib1g-dev libzip-dev libgomp1 liblua5.3-dev \
    pkg-config libgdal-dev libboost-program-options-dev libboost-iostreams-dev \
    libboost-test-dev libtbb-dev libexpat1-dev

    # Download and install OSRM

    # Create a working directory
    if [ ! -d osrm ]; then
    mkdir osrm
    fi

    # make a directory for the profile
    mkdir -p $FILENAME-data/$profile
    # Get present directory
    cd osrm
    PWD=`pwd`

    # extract the planet data for each profile
    osrm-extract $FILENAME.osm.pbf -p osrm-backend-$VERSION/profiles/$profile.lua
    # Uncomment if using traffic updates
    # https://github.com/Project-OSRM/osrm-backend/wiki/Running-OSRM
    # osrm-partition $FILENAME.osrm
    # osrm-customize $FILENAME.osrm
    # Download and extract osrm
    if [ ! -d osrm-backend-$VERSION ]; then
    wget $SOURCE_URL
    tar zxvf v${VERSION}.tar.gz
    fi

    # Build OSRM
    if [ ! -d osrm-backend-$VERSION/build ]; then
    cd osrm-backend-$VERSION
    mkdir -p build
    cd build
    cmake .. -DCMAKE_BUILD_TYPE=Release
    cmake --build .
    sudo cmake --build . --target install
    fi

    # Comment out if using traffic updates above
    osrm-contract $FILENAME.osrm
    # Download and build OSM dataset
    cd $PWD

    # move the generated files to its own profile dir
    mv $FILENAME.osrm* $FILENAME-data/$profile/
    done
    # Get the planet file if needed
    if [ ! -f $FILENAME.osm.pbf ]; then
    wget $PLANET_URL
    fi

    # make a data dir
    if [ ! -d $FILENAME-data ]; then
    mkdir $FILENAME-data
    fi

    for profile in ${PROFILES[@]}; do
    if [ -d $FILENAME-data/$profile ]; then
    echo "$FILENAME-data/$profile already exists...skipping"
    continue
    fi

    # make a directory for the profile
    mkdir -p $FILENAME-data/$profile

    # extract the planet data for each profile
    osrm-extract $FILENAME.osm.pbf -p osrm-backend-$VERSION/profiles/$profile.lua
    # Uncomment if using traffic updates
    # https://github.com/Project-OSRM/osrm-backend/wiki/Running-OSRM
    osrm-partition $FILENAME.osrm
    osrm-customize $FILENAME.osrm

    # Comment out if using traffic updates above
    osrm-contract $FILENAME.osrm

    # move the generated files to its own profile dir
    mv $FILENAME.osrm* $FILENAME-data/$profile/
    done
    }

    # start the osrm-routed process (port 5000)
    start() {
    cd /root/osrm/$FILENAME-data/$PROFILE
    osrm-routed $FILENAME.osrm &
    echo $? > /var/run/osrm.pid
    }

    # stop the osrm-routed process
    stop() {
    if [ ! -f /var/run/osrm.pid ]; then
    return
    fi
    kill `cat /var/run/osrm.pid`
    rm /var/run/osrm.pid
    }

    case "$1" in
    build)
    build
    ;;
    start)
    start
    ;;
    stop)
    stop
    ;;
    *)
    echo "$0 {build|start|stop}"
    ;;
    esac
  2. asim created this gist Apr 23, 2021.
    94 changes: 94 additions & 0 deletions osrm.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,94 @@
    #!/bin/bash

    set -x
    set -e

    # This script builds OSRM Planet
    # It will create builds for 3 profiles; car, bike, foot
    # There is not any backup as of yet

    VERSION=5.24.0
    FILENAME=planet-latest
    SOURCE_URL=https://github.com/Project-OSRM/osrm-backend/archive/refs/tags/v${VERSION}.tar.gz
    PLANET_URL=https://planet.openstreetmap.org/pbf/$FILENAME.osm.pbf

    # Make swap space. We'll leave this behind
    if ! $(swapon | grep -q /swap); then
    fallocate -l 100G /swap
    chmod 600 /swap
    mkswap /swap
    swapon /swap
    fi

    # do the updates
    sudo apt-get update

    # Get OSRM build deps
    sudo apt-get install -y git g++ cmake libboost-dev libboost-filesystem-dev libboost-thread-dev \
    libboost-system-dev libboost-regex-dev libxml2-dev libsparsehash-dev libbz2-dev \
    zlib1g-dev libzip-dev libgomp1 liblua5.3-dev \
    pkg-config libgdal-dev libboost-program-options-dev libboost-iostreams-dev \
    libboost-test-dev libtbb-dev libexpat1-dev

    # Download and install OSRM

    # Create a working directory
    if [ ! -d osrm ]; then
    mkdir osrm
    fi

    # Get present directory
    cd osrm
    PWD=`pwd`

    # Download and extract osrm
    if [ ! -d osrm-backend-$VERSION ]; then
    wget $SOURCE_URL
    tar zxvf v${VERSION}.tar.gz
    cd osrm-backend-$VERSION
    fi

    # Build OSRM
    if [ ! -d build ]; then
    mkdir -p build
    cd build
    cmake .. -DCMAKE_BUILD_TYPE=Release
    cmake --build .
    sudo cmake --build . --target install
    fi

    # Download and build OSM dataset
    cd $PWD

    # Get the planet file if needed
    if [ ! -f $FILENAME.osm.pbf ]; then
    wget $PLANET_URL
    fi

    # make a data dir
    if [ ! -d $FILENAME-data ]; then
    mkdir $FILENAME-data
    fi

    for profile in car bicycle foot; do
    if [ -d $FILENAME-data/$profile ]; then
    echo "$FILENAME-data/$profile already exists...skipping"
    continue
    fi

    # make a directory for the profile
    mkdir -p $FILENAME-data/$profile

    # extract the planet data for each profile
    osrm-extract $FILENAME.osm.pbf -p osrm-backend-$VERSION/profiles/$profile.lua
    # Uncomment if using traffic updates
    # https://github.com/Project-OSRM/osrm-backend/wiki/Running-OSRM
    # osrm-partition $FILENAME.osrm
    # osrm-customize $FILENAME.osrm

    # Comment out if using traffic updates above
    osrm-contract $FILENAME.osrm

    # move the generated files to its own profile dir
    mv $FILENAME.osrm* $FILENAME-data/$profile/
    done