~mser/vmangos-docker

ref: c47d3eef9e7cb973330e36047f957a94378291c8 vmangos-docker/00-install.sh -rwxr-xr-x 3.6 KiB
c47d3eefMichael Serajnik Add missing license notices 4 months ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#!/bin/sh

# vmangos-docker
# Copyright (C) 2021-present  Michael Serajnik  https://sr.ht/~mser/

# This program 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, either version 3 of the License, or
# (at your option) any later version.

# This program 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 Affero 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/>.

# Replace if needed; e.g., to match your host user/group ID
user_id=1000
group_id=1000

# Replace with different client version, if required
# See https://github.com/vmangos/core#currently-supported-builds
client_version=5875

# Replace with a different world database import name in case there is an
# update
world_database_import_name=world_full_14_june_2021

script_path=$(readlink -f "$0")
repository_path=$(dirname "$script_path")

cd "$repository_path"

echo "[VMaNGOS]: Updating submodules..."

git submodule update --init --remote --recursive

echo "[VMaNGOS]: Building VMaNGOS..."

docker build \
  --build-arg VMANGOS_USER_ID=$user_id \
  --build-arg VMANGOS_GROUP_ID=$group_id \
  --no-cache \
  -t vmangos_build \
  -f ./docker/build/Dockerfile .

docker run \
  -v "$repository_path/vmangos:/vmangos" \
  -v "$repository_path/src/database:/database" \
  -v "$repository_path/src/world_database:/world_database" \
  -v "$repository_path/src/ccache:/ccache" \
  -e CCACHE_DIR=/ccache \
  -e VMANGOS_CLIENT=$client_version \
  -e VMANGOS_WORLD=$world_database_import_name \
  -e VMANGOS_THREADS=$((`nproc` > 1 ? `nproc` - 1 : 1)) \
  --rm \
  vmangos_build

if [ $(ls -l ./src/data | wc -l) -eq 1 ]; then
  echo "[VMaNGOS]: Extracted client data missing, running extractors."
  echo "[VMaNGOS]: This will take a long time..."

  if [ ! -d "./src/client_data/Data" ]; then
    echo "[VMaNGOS]: Client data missing, aborting installation."
    exit 1
  fi

  docker build \
    --no-cache \
    -t vmangos_extractors \
    -f ./docker/extractors/Dockerfile .

  docker run \
    -v "$repository_path/src/client_data:/client_data" \
    --rm \
    vmangos_extractors \
    /opt/vmangos/bin/mapextractor

  docker run \
    -v "$repository_path/src/client_data:/client_data" \
    --rm \
    vmangos_extractors \
    /opt/vmangos/bin/vmapextractor

  docker run \
    -v "$repository_path/src/client_data:/client_data" \
    --rm \
    vmangos_extractors \
    /opt/vmangos/bin/vmap_assembler

  docker run \
    -v "$repository_path/src/client_data:/client_data" \
    -v "$repository_path/src/core/contrib/mmap:/mmap_contrib" \
    --rm \
    vmangos_extractors \
    /opt/vmangos/bin/MoveMapGen --offMeshInput /mmap_contrib/offmesh.txt

  # This data isn't used. delete it to avoid confusion
  rm -rf ./src/client_data/Buildings

  # Remove potentially existing partial data
  rm -rf ./src/data/*
  mkdir -p "./src/data/$client_version"

  mv ./src/client_data/dbc "./src/data/$client_version/"
  mv ./src/client_data/maps ./src/data/
  mv ./src/client_data/mmaps ./src/data/
  mv ./src/client_data/vmaps ./src/data/
fi

echo "[VMaNGOS]: Merging database migrations..."

cd ./src/core/sql/migrations
./merge.sh
cd "$repository_path"

echo "[VMaNGOS]: Creating containers..."

docker-compose up -d

echo "[VMaNGOS]: Installation complete!"
echo "[VMaNGOS]: Please wait a few minutes for the database to get built before trying to access it."