blob: eef6993dfabf3233fb01d21341d682923b4ddd78 (
plain)
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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
|
# Copyright 1999-2009 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/games-rpg/mangos/mangos-9999.1.ebuild,v 1.4 2009/07/23 01:10:43 trapni Exp $
# TODO:
# - make use of system's zlib/zthread ebuilds instead of mangos' packaged
# - create ebuilds for specific releases (and related patchsets, if desired)
inherit eutils git subversion autotools
MANGOS_REPO_URI="git://github.com/mangos/mangos.git"
SD2_REPO_URI="https://scriptdev2.svn.sourceforge.net/svnroot/scriptdev2"
EGIT_REPO_URI="${MANGOS_REPO_URI}"
ESVN_REPO_URI="${SD2_REPO_URI}"
DESCRIPTION="Massive Network Game Object Server"
HOMEPAGE="http://getmangos.com/"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="cli ra sd2 debug mysql postgres"
RDEPEND="postgres? ( virtual/postgresql-server )
mysql? ( >=virtual/mysql-4.1 )
!mysql? ( !postgres? ( >=virtual/mysql-4.1 ) )"
DEPEND="${RDEPEND}
>=sys-devel/gcc-3.2
sys-devel/make
sys-devel/automake
sys-devel/autoconf
dev-libs/glib
dev-libs/openssl"
## setup some env vars we use everywhere (but might change from ebuild to ebuild)
setup_env() {
# export PREFIX='/usr'
# export SYSCONFDIR='/etc/mangos'
# export LOGDIR='/var/log/mangos'
export PREFIX='/opt/mangos'
export SYSCONFDIR='/opt/mangos/etc'
export LOGDIR='/opt/mangos/log'
export PV_FILES='9999'
}
pkg_setup() {
if useq mysql && useq postgres; then
eerror "Please decide with database you want to use for this ebuild by"
eerror "explicitely enabling/disabling the mysql and postgres USE-flags!"
die "Both useflags - mysql and postgres - has been specified. Choose one of them only!"
fi
enewgroup mangos
enewuser mangos -1 -1 -1 "mangos"
}
## unpacks SD2 (ScriptDev2) into mangos workdir
sd2_src_unpack() {
S="${S}/src/bindings/ScriptDev2" ESVN_REPO_URI="${SD2_REPO_URI}" subversion_src_unpack || die
local PATCHES_DIR="${S}/src/bindings/ScriptDev2/patches"
local FILE=$(ls ${PATCHES_DIR} | sort -f -r | awk "NR == 1")
EPATCH_OPTS="-d ${S}" EPATCH_FORCE="yes" epatch "${PATCHES_DIR}/${FILE}" || die
}
src_unpack() {
git_src_unpack
useq sd2 && sd2_src_unpack
cd "${S}" || die
eautoreconf --force --install || die "eautoreconf failed"
}
src_compile() {
setup_env
local myconf
if ! useq mysql && ! useq postgres; then
# defaulth to mysql in case nothing has been specified.
myconf="${myconf} --with-mysql"
fi
mkdir obj || die
cd obj
ECONF_SOURCE=.. econf \
--with-gnu-ld \
${myconf} \
--prefix="${PREFIX}" \
--sysconfdir="${SYSCONFDIR}" \
$(use_with mysql) \
$(use_with postgres postgresql) \
$(use_enable cli) \
$(use_enable ra) \
$(use_enable doc doxygen) \
$(use_enable debug debug-info) \
|| die "econf failed"
emake || die "emake with current options failed"
cd "${S}/contrib/extractor" || die
cmake . || die
emake || die "failed to run emake for extractor"
}
src_install() {
setup_env
cd obj
emake DESTDIR="${D}" install || die "emake install failed"
dodir "${PREFIX}/share"
mv "${D}/usr/share/mangos" "${D}${PREFIX}/share/mangos" || die
rm -f "${D}${PREFIX}/bin/genrevision" # not really part of mangos dist
doinitd "${FILESDIR}/${PV_FILES}/mangos-realmd" || die
doinitd "${FILESDIR}/${PV_FILES}/mangos-worldd" || die
exeinto "${PREFIX}/bin"
doexe "${S}/contrib/extractor/ad" || die
keepdir ${PREFIX}/share/mangos/dbc
keepdir ${PREFIX}/share/mangos/maps
keepdir ${PREFIX}/share/mangos/vmaps
if useq sd2; then
local DIRS=(sql sql/Updates sql/Updates/0.0.1 sql/Updates/0.0.2)
for dir in ${DIRS[*]}; do
dodir "${PREFIX}/share/sd2/${dir}" || die
cp -r "../src/bindings/ScriptDev2/${dir}/*.sql" "${D}${PREFIX}/share/sd2/${dir}" || die
done
fi
keepdir ${LOGDIR}
fowners root.mangos ${SYSCONFDIR}
fowners mangos.mangos ${LOGDIR}
}
pkg_postinst() {
setup_env
ewarn "You need to manually configure MaNGOS."
ewarn "See /etc/mangos/ for config files."
ewarn "Remember to move your maps, DBC and vmaps files to your data folder - ${PREFIX}/share/mangos/"
ewarn
ewarn "Don't forget to run SQL scripts for:"
ewarn "\t- MaNGOS databases: ${PREFIX}/share/mangos/sql"
useq sd2 && ewarn "\t- ScriptDev2 database: ${PREFIX}/share/sd2/sql"
ewarn
einfo "If you want Mangos to start automatically on boot execute:"
einfo "\trc-update add mangos-realmd default"
einfo "\trc-update add mangos-worldd default"
einfo
ewarn
einfo "Next steps for you may be as the following example:"
einfo "\t${PREFIX}/bin/ad -i/path/to/wow/client -o${PREFIX}/share/mangos"
# TODO replace these points with actual commands, and provide helpful URLs
einfo "\t- initialize database schema"
einfo "\t- populate database"
}
|