Merge lp:~armagetronad-ap/armagetronad/0.2.9-armagetronad-sty+ct+ap into lp:~z-man/armagetronad/0.2.9-armagetronad-sty+ct+ap
- 0.2.9-armagetronad-sty+ct+ap
- Merge into 0.2.9-armagetronad-sty+ct+ap
Status: | Merged | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Merged at revision: | 1118 | ||||||||||||||||
Proposed branch: | lp:~armagetronad-ap/armagetronad/0.2.9-armagetronad-sty+ct+ap | ||||||||||||||||
Merge into: | lp:~z-man/armagetronad/0.2.9-armagetronad-sty+ct+ap | ||||||||||||||||
Diff against target: |
24818 lines (+13757/-5571) 188 files modified
.bzrignore (+5/-1) .dockerignore (+5/-0) .gitignore (+9/-0) .gitlab-ci.yml (+364/-0) AUTHORS (+1/-1) CHANGELOG.md (+807/-0) CHANGELOG_FROZEN.md (+792/-0) Dockerfile (+94/-0) Makefile.am (+6/-3) Makefile.manual (+3/-5) NEWS (+78/-19) batch/checkbugle.py (+21/-19) batch/git_ff_to_release.sh (+68/-0) batch/git_merge_safe_sources.sh (+74/-0) batch/ladder.py (+7/-5) batch/make/patchnotes.py (+204/-0) batch/make/sortresources (+3/-1) batch/make/sortresources.py (+7/-6) batch/make/uninstall (+1/-1) batch/make/update_changelog (+13/-0) batch/make/version (+25/-3) bootstrap.sh (+1/-1) config/settings.cfg (+2/-0) config/settings_dedicated.cfg (+1/-1) configure.ac (+23/-30) desktop/armagetronad.desktop.in (+1/-2) docker/README.md (+103/-0) docker/build/Makefile.am (+652/-0) docker/build/build_in_container.sh (+87/-0) docker/build/context/appdir.sh (+15/-0) docker/build/context/appimage.sh (+24/-0) docker/build/context/build.sh (+14/-0) docker/build/context/portable/AppRun (+38/-0) docker/build/context/portable/README (+2/-0) docker/build/context/portable/build (+89/-0) docker/build/context/portable/fixlinks (+21/-0) docker/build/context/steam.sh (+32/-0) docker/build/context/testbuild.sh (+10/-0) docker/build/context/version.sh.in (+6/-0) docker/build/context/winbuild.sh (+14/-0) docker/build/context/wininst.sh (+22/-0) docker/build/context/winsource.sh (+82/-0) docker/build/context_to_result.sh (+43/-0) docker/build/debian_source.sh (+48/-0) docker/build/fakerelease_proto.sh (+3/-0) docker/build/make_ci.sh.in (+34/-0) docker/build/make_deploy.sh (+29/-0) docker/build/prepare_context.sh (+33/-0) docker/build/rebrand_debian_core.sh (+24/-0) docker/build/setup_ci_test.sh.in (+45/-0) docker/deploy/anonymous_secrets.b64 (+104/-0) docker/deploy/deploy_download.sh (+140/-0) docker/deploy/deploy_lp.sh (+40/-0) docker/deploy/deploy_ppa.sh (+33/-0) docker/deploy/deploy_scp.sh (+32/-0) docker/deploy/deploy_steam.sh (+62/-0) docker/deploy/deploy_zeroinstall.sh (+62/-0) docker/deploy/lp-project-upload (+247/-0) docker/deploy/prepare_deploy.sh (+31/-0) docker/deploy/steamcontentbuilder/README.txt (+1/-0) docker/deploy/steamcontentbuilder/scripts/app_build_1306180.vdf (+16/-0) docker/deploy/steamcontentbuilder/scripts/depot_build_1306181.vdf (+31/-0) docker/deploy/steamcontentbuilder/scripts/depot_build_1306182.vdf (+31/-0) docker/deploy/targets.sh.in (+233/-0) docker/deploy/update_zeroinstall.sh (+112/-0) docker/images/armabuild/Dockerfile.proto (+224/-0) docker/images/armabuild_32.digest (+1/-0) docker/images/armabuild_64.digest (+1/-0) docker/images/armadeb_64.digest (+1/-0) docker/images/armadeploy_64.digest (+1/-0) docker/images/armalpine/Dockerfile.proto (+50/-0) docker/images/armalpine_32.digest (+1/-0) docker/images/armaroot/Dockerfile.proto (+31/-0) docker/images/armaroot_64.digest (+1/-0) docker/images/armasteam_64.digest (+1/-0) docker/images/armawineblocks.digest (+1/-0) docker/images/build_all.sh (+20/-0) docker/images/build_armabuild.sh (+33/-0) docker/images/build_armabuild_32.sh (+8/-0) docker/images/build_armabuild_64.sh (+8/-0) docker/images/build_armadeb_64.sh (+7/-0) docker/images/build_armadeploy_64.sh (+8/-0) docker/images/build_armalpine.sh (+21/-0) docker/images/build_armalpine_32.sh (+8/-0) docker/images/build_armalpine_64.sh (+11/-0) docker/images/build_armaroot_64.sh (+18/-0) docker/images/build_armasteam_64.sh (+10/-0) docker/images/build_armawineblocks.sh (+37/-0) docker/images/build_steamcmd.sh (+18/-0) docker/images/build_steamrt_scout_amd64.sh (+44/-0) docker/images/clean_all.sh (+20/-0) docker/images/digest.sh (+12/-0) docker/images/epoch.sh (+2/-0) docker/images/rebuild_all_noninteractive.sh (+11/-0) docker/images/steamcmd.digest (+1/-0) docker/images/steamcmd/Dockerfile.proto (+14/-0) docker/images/upload_all.sh (+37/-0) docker/images/wineblocks/Dockerfile.proto (+18/-0) docker/images/wineblocks/install.sh (+6/-0) docker/notes.txt (+62/-0) docker/scripts/brand.sh (+61/-0) docker/scripts/build_image.sh (+45/-0) docker/scripts/download.sh (+13/-0) docker/scripts/ensure_gits.sh (+39/-0) docker/scripts/ensure_image.sh (+65/-0) docker/scripts/fix_gits.sh (+31/-0) docker/scripts/relevant_branches.sh (+8/-0) docker/scripts/setup_ci_variables_test.sh (+72/-0) docker/scripts/tarwrapper.sh (+6/-0) docker/scripts/test_yaml.sh (+19/-0) docker/scripts/update_gits.sh (+82/-0) language/deutsch.txt (+5/-0) language/english_base.txt (+30/-24) language/english_base_notranslate.txt (+1/-0) language/update.py (+14/-6) src/Makefile.am (+0/-3) src/doc/HtmlMakefile (+8/-5) src/doc/html.m4.in (+0/-2) src/doc/net/sig.m4 (+0/-3) src/engine/eCamera.cpp (+4/-2) src/engine/eChat.cpp (+18/-18) src/engine/eChat.h (+22/-22) src/engine/eGrid.cpp (+4/-2) src/engine/eNetGameObject.cpp (+6/-32) src/engine/eNetGameObject.h (+0/-1) src/engine/ePlayer.cpp (+141/-90) src/engine/ePlayer.h (+10/-1) src/engine/eSound.cpp (+5/-1) src/engine/eTeam.cpp (+164/-162) src/engine/eTeam.h (+6/-11) src/engine/eVoter.cpp (+8/-23) src/network/l3_demo.cpp (+7/-0) src/network/nAuthentication.cpp (+180/-180) src/network/nNetObject.cpp (+11/-12) src/network/nNetObject.h (+36/-14) src/network/nNetwork.cpp (+35/-11) src/network/nNetwork.h (+21/-21) src/network/nServerInfo.cpp (+4/-7) src/network/nServerInfo.h (+1/-1) src/network/nSocket.cpp (+43/-41) src/network/nSpamProtection.cpp (+21/-23) src/network/nSpamProtection.h (+3/-3) src/render/rConsole.cpp (+7/-9) src/render/rConsoleCout.cpp (+144/-143) src/render/rConsoleGraph.cpp (+1/-1) src/render/rFont.cpp (+1/-1) src/render/rScreen.cpp (+12/-11) src/render/rScreen.h (+1/-0) src/render/rSysdep.cpp (+3/-3) src/render/rTexture.cpp (+5/-0) src/thirdparty/binreloc/prefix.c (+1/-1) src/tools/tConfiguration.cpp (+1/-1) src/tools/tDirectories.cpp (+3/-0) src/tools/tError.cpp (+5/-0) src/tools/tError.h (+4/-0) src/tools/tHeap.cpp (+1/-1) src/tools/tLinkedList.cpp (+7/-3) src/tools/tLocale.cpp (+13/-18) src/tools/tLocale.h (+1/-1) src/tools/tMemManager.cpp (+35/-43) src/tools/tMemManager.h (+5/-1) src/tools/tSafePTR.h (+9/-6) src/tools/tString.cpp (+740/-662) src/tools/tString.h (+5/-0) src/tron/gAIBase.cpp (+2/-2) src/tron/gAIBase.h (+5/-0) src/tron/gArmagetron.cpp (+13/-13) src/tron/gCycle.cpp (+38/-19) src/tron/gCycle.h (+1/-1) src/tron/gCycleMovement.cpp (+77/-77) src/tron/gFloor.cpp (+27/-20) src/tron/gFriends.cpp (+11/-11) src/tron/gFriends.h (+1/-1) src/tron/gGame.cpp (+31/-21) src/tron/gGame.h (+5/-4) src/tron/gHud.cpp (+627/-627) src/tron/gMenus.cpp (+5/-0) src/tron/gParser.cpp (+475/-475) src/tron/gServerBrowser.cpp (+16/-4) src/tron/gZone.cpp (+2702/-2565) src/ui/uInput.cpp (+2/-1) src/ui/uMenu.cpp (+9/-6) src/win32/config_common.h (+3/-0) textures/font-src.svg (+99/-0) textures/font.svg (+418/-0) textures/font_extra-src.svg (+238/-0) textures/font_extra.svg (+614/-0) textures/font_s.svg (+78/-0) |
||||||||||||||||
To merge this branch: | bzr merge lp:~armagetronad-ap/armagetronad/0.2.9-armagetronad-sty+ct+ap | ||||||||||||||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Manuel Moos | Pending | ||
Review via email: mp+385709@code.launchpad.net |
Commit message
Description of the change
- 1108. By Armanelgtron
-
Have LADDERLOG_ENABLED enabled by default for servers but disabled for clients (where it's generally less useful anyway).
- 1109. By Armanelgtron
-
Check CanRespawn for zone spawn action.
- 1110. By Armanelgtron
-
Merge from 0.2.8.
- 1111. By Armanelgtron
-
Disallow scoreboard from being toggled while chatting instead of just closing it when entering chat.
- 1112. By Armanelgtron
-
Aspect ratio correction for text.
- 1113. By Armanelgtron
-
Don't include colors when shrinking center messages.
- 1114. By Armanelgtron
-
Add VERIFY_COLOR_STRICT and escape noncompliant color codes on the server so clients don't have to support it.
- 1115. By Armanelgtron
-
A couple patches, mainly color related:
Less strict color filtering for
- names so they can't wind up visibly illegally long.
- logs/console output
- center message shrinking
Complete the implementation of CONSOLE_LOG_COLOR_ DECORATE_ TIMESTAMP - 1116. By Armanelgtron
-
More aspect ratio correction: for text in server browser and fullscreen messages.
- 1117. By Armanelgtron
-
"Hack" to fade zones in before round begins
- 1118. By Armanelgtron
-
Converted 0.4's font to textures. Using that instead.
Preview Diff
1 | === modified file '.bzrignore' |
2 | --- .bzrignore 2019-07-26 01:01:51 +0000 |
3 | +++ .bzrignore 2020-07-03 06:03:19 +0000 |
4 | @@ -17,12 +17,14 @@ |
5 | ChangeLog |
6 | EclipseBuild |
7 | ./INSTALL |
8 | +./compile |
9 | Makefile.in |
10 | ./aclocal.m4 |
11 | ./autom4te.cache |
12 | ./config.h.in |
13 | ./config.sub |
14 | ./configure |
15 | +./compile |
16 | ./depcomp |
17 | ./install-sh |
18 | ./missing |
19 | @@ -34,6 +36,7 @@ |
20 | ./config.h |
21 | ./config.log |
22 | ./config.status |
23 | +./config.guess |
24 | ./extrapaths |
25 | ./stamp-h1 |
26 | ./universal_variable* |
27 | @@ -64,4 +67,5 @@ |
28 | a.out.dSYM |
29 | src/armagetronad_main_master |
30 | src/doc/COPYING.txt |
31 | -rubbish |
32 | \ No newline at end of file |
33 | +rubbish |
34 | +./version.h |
35 | |
36 | === added file '.dockerignore' |
37 | --- .dockerignore 1970-01-01 00:00:00 +0000 |
38 | +++ .dockerignore 2020-07-03 06:03:19 +0000 |
39 | @@ -0,0 +1,5 @@ |
40 | +Dockerfile |
41 | +dockerbuild |
42 | +.dockerignore |
43 | +.gitlab-ci.yml |
44 | +builds |
45 | |
46 | === modified file '.gitignore' |
47 | --- .gitignore 2019-07-26 01:01:51 +0000 |
48 | +++ .gitignore 2020-07-03 06:03:19 +0000 |
49 | @@ -3,10 +3,16 @@ |
50 | Armagetron Advanced.app |
51 | desktop/os-x/Info.plist |
52 | .gdbinit |
53 | +.cache |
54 | +.lock.* |
55 | +docker/images/context |
56 | +docker/deploy/*.gpg |
57 | +docker/deploy/ssh |
58 | batch/rcd_config |
59 | batch/rcd_server |
60 | batch/rcd_startstop |
61 | batch/serverstarter |
62 | +*.digest.local |
63 | ./armagetronad-dedicated |
64 | COPYING |
65 | ChangeLog |
66 | @@ -19,6 +25,7 @@ |
67 | /config.h.in |
68 | /config.sub |
69 | /configure |
70 | +/builds |
71 | /depcomp |
72 | /install-sh |
73 | /ylwrap |
74 | @@ -31,6 +38,7 @@ |
75 | /config.h |
76 | /config.log |
77 | /config.status |
78 | +/config.guess |
79 | /extrapaths |
80 | /stamp-h1 |
81 | /universal_variable* |
82 | @@ -42,6 +50,7 @@ |
83 | config/rc.config |
84 | desktop/armagetronad-armagetronad.desktop |
85 | language/languages.txt |
86 | +language/*.bak |
87 | resource/included/ |
88 | resource/automatic/ |
89 | .deps |
90 | |
91 | === added file '.gitlab-ci.yml' |
92 | --- .gitlab-ci.yml 1970-01-01 00:00:00 +0000 |
93 | +++ .gitlab-ci.yml 2020-07-03 06:03:19 +0000 |
94 | @@ -0,0 +1,364 @@ |
95 | +image: registry.gitlab.com/armagetronad/armagetronad/armaroot_64@sha256:182493edea0ad5b31f8dfe0c27b414cc2a3d710a051b6f2359a21da791ca8a68 |
96 | + |
97 | +variables: |
98 | + # https://docs.gitlab.com/ee/ci/docker/using_docker_build.html |
99 | + #DOCKER_TLS_CERTDIR: "/certs" |
100 | + #DOCKER_HOST: "" |
101 | + |
102 | +services: |
103 | + # required for shared runners, does not hurt for our runner (just some diagnostic complaints) |
104 | + - name: docker:19.03.0-dind |
105 | + alias: docker |
106 | +variables: |
107 | + DOCKER_DRIVER: overlay2 |
108 | + DOCKER_TLS_CERTDIR: "" |
109 | + |
110 | +stages: |
111 | + - minimal_build |
112 | + - build_prepare |
113 | + - build_base |
114 | + - build_main |
115 | + - build_collect |
116 | + - test |
117 | + - stage |
118 | + - deploy |
119 | + |
120 | +default: |
121 | + # common before script: bootstrap, configure, make dist, prepare docker builds |
122 | + before_script: |
123 | + - if ! test -d gitlab_build; then |
124 | + - docker help > /dev/null |
125 | + - touch timestamp.tag |
126 | + - test "x${ARMAGETRONAD_FAKERELEASE}" == "x" && export ARMAGETRONAD_FAKERELEASE=false |
127 | + - test -r configure || ./bootstrap.sh |
128 | + - ls docker/build -al |
129 | + - cat version.m4 |
130 | + - mkdir -p gitlab_build |
131 | + - cd gitlab_build |
132 | + - . ../docker/scripts/brand.sh . |
133 | + - ../configure --prefix=/usr/local --disable-glout --disable-sysinstall --disable-desktop progname="${PROGRAM_NAME}" progtitle="${PROGRAM_TITLE}" |
134 | + - test "x${ARMAGETRONAD_FAKERELEASE}" == "xtrue" && cp ../docker/build/fakerelease_proto.sh docker/build/fakerelease.sh |
135 | + - cd docker/build |
136 | + - make CI_prepare -j`nproc` |
137 | + - cd ../../../ |
138 | + - else |
139 | + - find . -newer timestamp.tag ! -path "./gitlab_build" -exec touch -r timestamp.tag \{\} \; |
140 | + - ./docker/scripts/fix_gits.sh || exit $? |
141 | + - fi |
142 | + |
143 | + # cache git checkouts of repositories we depend on |
144 | + cache: |
145 | + paths: |
146 | + - docker/scripts/.cache |
147 | + |
148 | + |
149 | +# very basic build |
150 | +build_prepare: |
151 | + stage: build_prepare |
152 | + rules: |
153 | + - if: $CI_MERGE_REQUEST_ID |
154 | + when: on_success |
155 | + - when: on_success |
156 | + script: [""] |
157 | + artifacts: |
158 | + untracked: true |
159 | + expire_in: 1 day |
160 | + |
161 | + |
162 | +build_server_32_raw: |
163 | + stage: build_base |
164 | + rules: |
165 | + - if: $CI_MERGE_REQUEST_ID |
166 | + when: on_success |
167 | + - when: on_success |
168 | + script: |
169 | + - gitlab_build/docker/build/make_ci.sh -k result.build_server_32 |
170 | + after_script: |
171 | + - rm -rf gitlab_build/docker/build/context*.dir |
172 | + artifacts: |
173 | + untracked: true |
174 | + expire_in: 1 day |
175 | + |
176 | +build_server_steam_raw: |
177 | + stage: build_base |
178 | + rules: |
179 | + - if: $CI_MERGE_REQUEST_ID |
180 | + when: on_success |
181 | + - when: on_success |
182 | + script: |
183 | + - gitlab_build/docker/build/make_ci.sh -k result.build_server_steam |
184 | + artifacts: |
185 | + untracked: true |
186 | + expire_in: 1 day |
187 | + |
188 | + # It seems like GitLab CI, all else being equal, schedules jobs in the order |
189 | +# listed here. So list the ones that take longest first. |
190 | +# Windows builds are worst because they have an additional layer of emulation, |
191 | +# are not parallelized and are client and server build in one. |
192 | +build_windows: |
193 | + needs: |
194 | + - build_server_32_raw |
195 | + dependencies: |
196 | + - build_server_32_raw |
197 | + stage: build_main |
198 | + rules: |
199 | + - if: $CI_MERGE_REQUEST_ID |
200 | + when: on_success |
201 | + - when: on_success |
202 | + script: |
203 | + - gitlab_build/docker/build/make_ci.sh CI_windows |
204 | + artifacts: |
205 | + paths: |
206 | + - gitlab_build/docker/build/ |
207 | + expire_in: 1 day |
208 | + |
209 | +build_windows_steam: |
210 | + needs: |
211 | + - build_server_steam_raw |
212 | + dependencies: |
213 | + - build_server_steam_raw |
214 | + stage: build_main |
215 | + rules: |
216 | + - if: $CI_MERGE_REQUEST_ID |
217 | + when: on_success |
218 | + - when: on_success |
219 | + script: |
220 | + - gitlab_build/docker/build/make_ci.sh CI_windows_steam |
221 | + artifacts: |
222 | + paths: |
223 | + - gitlab_build/docker/build/ |
224 | + expire_in: 1 day |
225 | + |
226 | +# debtest is faster, but also not paralellized |
227 | +build_debtest: |
228 | + dependencies: |
229 | + - build_prepare |
230 | + stage: build_main |
231 | + rules: |
232 | + - if: $CI_MERGE_REQUEST_ID |
233 | + when: on_success |
234 | + - when: on_success |
235 | + script: |
236 | + - gitlab_build/docker/build/make_ci.sh CI_debtest |
237 | + artifacts: |
238 | + paths: |
239 | + - gitlab_build/docker/build/ |
240 | + expire_in: 1 day |
241 | + |
242 | +# steam builds server and client in one go (the server is already pre-built), they are packed together |
243 | +build_linux_steam: |
244 | + dependencies: |
245 | + - build_server_steam_raw |
246 | + stage: build_main |
247 | + rules: |
248 | + - if: $CI_MERGE_REQUEST_ID |
249 | + when: on_success |
250 | + - when: on_success |
251 | + script: |
252 | + - gitlab_build/docker/build/make_ci.sh CI_linux_steam |
253 | + artifacts: |
254 | + paths: |
255 | + - gitlab_build/docker/build/ |
256 | + expire_in: 1 day |
257 | + |
258 | +build_client_64: |
259 | + dependencies: |
260 | + - build_prepare |
261 | + stage: build_main |
262 | + rules: |
263 | + - if: $CI_MERGE_REQUEST_ID |
264 | + when: on_success |
265 | + - when: on_success |
266 | + script: |
267 | + - gitlab_build/docker/build/make_ci.sh CI_linux_client_64 |
268 | + artifacts: |
269 | + paths: |
270 | + - gitlab_build/docker/build/ |
271 | + expire_in: 1 day |
272 | + |
273 | +build_client_32: |
274 | + dependencies: |
275 | + - build_prepare |
276 | + stage: build_main |
277 | + rules: |
278 | + - if: $CI_MERGE_REQUEST_ID |
279 | + when: on_success |
280 | + - when: on_success |
281 | + script: |
282 | + - gitlab_build/docker/build/make_ci.sh CI_linux_client_32 |
283 | + artifacts: |
284 | + paths: |
285 | + - gitlab_build/docker/build/ |
286 | + expire_in: 1 day |
287 | + |
288 | +build_server_64: |
289 | + dependencies: |
290 | + - build_prepare |
291 | + stage: build_main |
292 | + rules: |
293 | + - if: $CI_MERGE_REQUEST_ID |
294 | + when: on_success |
295 | + - when: on_success |
296 | + script: |
297 | + - gitlab_build/docker/build/make_ci.sh CI_linux_server_64 |
298 | + artifacts: |
299 | + paths: |
300 | + - gitlab_build/docker/build/ |
301 | + expire_in: 1 day |
302 | + |
303 | +# this one is special, it can rely on previous build work |
304 | +build_server_32: |
305 | + dependencies: |
306 | + - build_server_32_raw |
307 | + stage: build_main |
308 | + rules: |
309 | + - if: $CI_MERGE_REQUEST_ID |
310 | + when: on_success |
311 | + - when: on_success |
312 | + script: |
313 | + - gitlab_build/docker/build/make_ci.sh CI_linux_server_32 |
314 | + artifacts: |
315 | + paths: |
316 | + - gitlab_build/docker/build/ |
317 | + expire_in: 1 day |
318 | + |
319 | +build_collect: |
320 | + stage: build_collect |
321 | + rules: |
322 | + - if: $CI_MERGE_REQUEST_ID |
323 | + when: on_success |
324 | + - when: on_success |
325 | + script: |
326 | + - gitlab_build/docker/build/make_ci.sh debtest.tag CI || exit $? |
327 | + - rm -rf src |
328 | + artifacts: |
329 | + untracked: true |
330 | + expire_in: 1 week |
331 | + |
332 | +# deploy to staged environment |
333 | +deploy-staged: |
334 | + dependencies: |
335 | + - build_prepare |
336 | + - build_collect |
337 | + stage: stage |
338 | + tags: |
339 | + - armagetronad_deploy |
340 | + rules: |
341 | + - if: $CI_MERGE_REQUEST_ID |
342 | + when: never |
343 | + - if: $CI_COMMIT_REF_PROTECTED == "true" |
344 | + when: on_success |
345 | + - when: never |
346 | + before_script: |
347 | + - ./docker/scripts/fix_gits.sh || exit $? |
348 | + - ./docker/deploy/prepare_deploy.sh || exit $? |
349 | + |
350 | + script: |
351 | + # mark |
352 | + - echo ${CI_PIPELINE_IID} > /messageboard/current_pipeline_${CI_COMMIT_REF_NAME} |
353 | + # now enter the docker build directory and just invoke make there |
354 | + - cd gitlab_build/docker/build |
355 | + - make staged_deploy -O -j$(nproc) -k |
356 | + |
357 | + |
358 | +# do the actual release; manually for final releases, delayed to avoid spam for everyone else |
359 | +delay-release: |
360 | + dependencies: [] |
361 | + stage: stage |
362 | + rules: |
363 | + - if: $CI_MERGE_REQUEST_ID |
364 | + when: never |
365 | + - if: '$CI_COMMIT_REF_PROTECTED == "false"' |
366 | + when: never |
367 | + - if: '$CI_COMMIT_REF_PROTECTED == "true" && $CI_COMMIT_REF_NAME !~ /^release/' |
368 | + when: delayed |
369 | + start_in: '6 hours' |
370 | + - when: on_success |
371 | + before_script: [""] |
372 | + script: [""] |
373 | + |
374 | +# do the actual release; manually for final releases, delayed to avoid spam for everyone else |
375 | +deploy-release: |
376 | + dependencies: |
377 | + - build_prepare |
378 | + - build_collect |
379 | + stage: deploy |
380 | + tags: |
381 | + - armagetronad_deploy |
382 | + rules: |
383 | + - if: $CI_MERGE_REQUEST_ID |
384 | + when: never |
385 | + - if: '$CI_COMMIT_REF_PROTECTED == "true" && $CI_COMMIT_REF_NAME =~ /^release/' |
386 | + when: manual |
387 | + - if: '$CI_COMMIT_REF_PROTECTED == "true" && $CI_COMMIT_REF_NAME !~ /^release/' |
388 | + when: on_success |
389 | + - when: never |
390 | + before_script: |
391 | + - ./docker/scripts/fix_gits.sh || exit $? |
392 | + - ./docker/deploy/prepare_deploy.sh || exit $? |
393 | + script: |
394 | + - tagfile=/messageboard/current_pipeline_${CI_COMMIT_REF_NAME} |
395 | + - if ! echo ${CI_COMMIT_REF_NAME} | grep -q ^release && test -r ${tagfile} && ! test ${CI_PIPELINE_IID} == `cat ${tagfile}`; then |
396 | + - echo "A newer build is already in the pipeline, abort." |
397 | + - exit 0 |
398 | + - fi |
399 | + |
400 | + # now enter the docker build directory and just invoke make there |
401 | + - cd gitlab_build/docker/build |
402 | + - make unstaged_deploy -O -j$(nproc) -k |
403 | + |
404 | + |
405 | + |
406 | + |
407 | +# pack up the downloadable build files in one handy artifact |
408 | +pack: |
409 | + stage: stage |
410 | + needs: |
411 | + - build_collect |
412 | + dependencies: |
413 | + - build_collect |
414 | + script: [""] |
415 | + before_script: |
416 | + # test that everything has been prepared correctly |
417 | + - if ! test -d gitlab_build; then |
418 | + - echo "No build yet!" |
419 | + - exit 1 |
420 | + - fi |
421 | + - find . -newer timestamp.tag ! -path "./gitlab_build" -exec touch -r timestamp.tag \{\} \; |
422 | + - if ! make -C gitlab_build/docker/build -q CI_pack.tag; then |
423 | + - make -d -C gitlab_build/docker/build -q CI_pack.tag || exit $? |
424 | + - exit 1 |
425 | + - fi |
426 | + - ./docker/scripts/fix_gits.sh || exit $? |
427 | + artifacts: |
428 | + expire_in: 1 week |
429 | + paths: |
430 | + - gitlab_build/docker/build/upload |
431 | + |
432 | + |
433 | + |
434 | + |
435 | +testbuild: |
436 | + stage: test |
437 | + rules: |
438 | + - when: never |
439 | + script: |
440 | + - docker build -t armagetronad_server . |
441 | + |
442 | + |
443 | + |
444 | + |
445 | +# for local testing |
446 | +complete_build: |
447 | + stage: build_main |
448 | + rules: |
449 | + - when: never |
450 | + script: |
451 | + - cd gitlab_build/docker/build |
452 | + - make -O -j$(nproc) CI_base |
453 | + - make -O -j$(nproc) CI |
454 | + |
455 | + artifacts: |
456 | + expire_in: 1 day |
457 | + paths: |
458 | + - gitlab_build/docker/build/upload |
459 | |
460 | === modified file 'AUTHORS' |
461 | --- AUTHORS 2012-05-21 04:31:14 +0000 |
462 | +++ AUTHORS 2020-07-03 06:03:19 +0000 |
463 | @@ -37,7 +37,7 @@ |
464 | Oscilloscope : Most default instant chats |
465 | Belenus : OpenBSD support sniplets |
466 | hoop : Zone rendering settings |
467 | -fman23 : Console Commands |
468 | +fman23 : Console commands |
469 | LOVER$BOY : Console Commands |
470 | |
471 | Translators who aren't already cited above: |
472 | |
473 | === added file 'CHANGELOG.md' |
474 | --- CHANGELOG.md 1970-01-01 00:00:00 +0000 |
475 | +++ CHANGELOG.md 2020-07-03 06:03:19 +0000 |
476 | @@ -0,0 +1,807 @@ |
477 | + |
478 | +#### Changes since 0.2.8.3.5: |
479 | + |
480 | +##### Fixed Bugs |
481 | + |
482 | + * Debian builds: Documentation html files have empty last change ([#9](https://gitlab.com/armagetronad/armagetronad/-/issues/9)) |
483 | + * Ubuntu PPA release candidate builds would overwrite previous stable releases ([#15](https://gitlab.com/armagetronad/armagetronad/-/issues/15)) |
484 | + |
485 | +##### New Features |
486 | + |
487 | + * Adapt ChangeLog and fingerprint generation to git ([#11](https://gitlab.com/armagetronad/armagetronad/-/issues/11)) |
488 | + * Integrated build system ([#14](https://gitlab.com/armagetronad/armagetronad/-/issues/14)) |
489 | + |
490 | + |
491 | +##### Changes on the 0.2.9 branch |
492 | + |
493 | + * Added detection and reaction code for timing assist bots |
494 | + * /shuffle now works before you actually join a team |
495 | + * Implemented /shout command and associated settings |
496 | + * Fixed suspension and silenced status not being re-applied after a player |
497 | + disconnects and rejoins a server. |
498 | + * Tweaks to enemy influence system. |
499 | + * Ingame menu and console now are drawn on top of a semi-transparent, |
500 | + darkened area for increased readability. |
501 | + * New first start menu with clearer language selection and initial setup. |
502 | + * Tutorial match against one AI at slower speed. |
503 | + * Tutorial tooltips for the most important keybindings. |
504 | + * ADD_MASTER_SERVER command to announce a server to a new master server. |
505 | + Simplifies the process to list your server on a subculture. |
506 | + * Team launch positions logged to ladderlog with POSITIONS event. Disabled by |
507 | + default. |
508 | + * New command-line option "--input" added to poll for input from a file |
509 | + instead of stdin. |
510 | + * Added WHITELIST_ENEMIES_[IP/USERNAME] to allow players to be enemies, even |
511 | + if they come from the same IP address and ALLOW_ENEMIES_SAME_IP is |
512 | + disabled (which is its default setting). |
513 | + * GAME_END, NEW_MATCH, and NEW_ROUND ladderlog events include date and time. |
514 | + * Added ENCODING ladderlog event, which specifies the encoding for data in |
515 | + ladderlog.txt. |
516 | + * "--input" now can be used more than once to read from multiple files or pipes. |
517 | + * new team management ladderlog messages: |
518 | + TEAM_CREATED <team name> |
519 | + TEAM_DESTROYED <team name> |
520 | + TEAM_RENAMED <old team name> <new team name> |
521 | + TEAM_PLAYER_ADDED <team name> <player> |
522 | + TEAM_PLAYER_REMOVED <team name> <player> |
523 | + * Manage external scripts on Unix dedicated servers. New commands: |
524 | + SPAWN_SCRIPT, RESPAWN_SCRIPT, FORCE_RESPAWN_SCRIPT, KILL_SCRIPT, |
525 | + LIST_SCRIPTS, SCRIPT_ENV. |
526 | + * New setting ACCESS_LEVEL_ANNOUNCE_LOGIN that determines if a player's |
527 | + login/logout message can be announced. |
528 | + * Authentication is now enabled by default. |
529 | + |
530 | +#### Changes since 0.2.8.3.4: |
531 | + |
532 | + * Security fix: Check that the remote is allowed to create an object |
533 | + before creating it, not decide whether it gets to keep it after |
534 | + it already has been created and potential damage has been done. |
535 | + No arbitrary code could be executed, but a client could effectively |
536 | + shut down a server by sending crucial objects, such as the main game |
537 | + timer or the game itself. |
538 | + * Compilation fixes for current systems. |
539 | + |
540 | +#### Changes since 0.2.8.3.3: |
541 | + |
542 | + * Eliminated undefined behavior that was fine in gcc 5, but now |
543 | + (rightfully!) turned into crashes in gcc 6. |
544 | + * Eliminated compilation disambiguity that was just causing a mild |
545 | + performance degradation in gcc 5 and is now a compilation failure in |
546 | + gcc 6. |
547 | + |
548 | +#### Changes since 0.2.8.3.2: |
549 | + |
550 | + * security fix: do not read ahead of the beginning of network buffer. |
551 | + * security fix: don't attribute network errors from processing random |
552 | + packets to the connection to the server |
553 | + * security fix: while at it, don't process random packets unless they |
554 | + may be important |
555 | + * fix for potential crash with friend list filtering |
556 | + * intel driver compatibility |
557 | + * fix for rare crash with sound lock |
558 | + * fix for camera turning for bizarre axis configurations |
559 | + |
560 | +#### Changes since 0.2.8.3.1: |
561 | + |
562 | + * security fix: old style action commands from clients no loger cause hangs and crashes |
563 | + * security fix: oversized packets are ignored properly |
564 | + * security fix: never read one byte outside of the received buffer |
565 | + * security fix: only include .cfg files from the var subfolder |
566 | + * compiler compatibility: adapted to gcc 4.60 |
567 | + * smaller spelling fixes |
568 | + * FOV calculations now correct for widescreen and horizontal splitscreen |
569 | + * Additional checks against illegal values passed to renderer |
570 | + |
571 | +#### Changes since 0.2.8.3: |
572 | + |
573 | + * fixed temporary sound disappearance when alt-tabbing away and back |
574 | + * default subcultures are now distributed |
575 | + * enable 32 bit color depth at desktop resolution |
576 | + * no more display lists for SiS cards |
577 | + * spelling mistakes and missing German translations |
578 | + |
579 | +#### Changes since 0.2.8.3_rc4: |
580 | + |
581 | + * New setting: KEEP_PLAYER_SLOT allows the server to kick (preferably) spectators |
582 | + if it gets full so there is always one slot open for players |
583 | + * New setting: ACCESS_LEVEL_AUTOKICK_IMMUNITY sets the access level required |
584 | + to be immune from such kicks (and idle autokicks, too) |
585 | + * Intercepted chat commands are now written to ladderlog.txt. Format: |
586 | + COMMAND /command-intercepted player [command arguments] |
587 | + * Increased default speed of server pinging |
588 | + * Reordered game menus a bit |
589 | + * fast finish works again |
590 | + |
591 | +#### Changes since 0.2.8.3_rc3: |
592 | + |
593 | + * Pinging previously popular servers earlier for quicker server |
594 | + browsing |
595 | + * Improved master server random polling, the second polled master now |
596 | + also is random, and all masters are polled if need be |
597 | + * Custom camera snaps to cycle direction once when activated if the turn speed |
598 | + is zero. |
599 | + * RESERVE_SCREEN_NAME now works regardless of the ALLOW_IMPOSTOR setting. |
600 | + * USER_LEVEL now escapes the given authenticated name so you don't have to |
601 | + guess the escaping rules. Ex: USER_LEVEL "name with spaces@forums" 2 |
602 | + changes user level for name\_with\_spaces@forums |
603 | + |
604 | +#### Changes since 0.2.8.3_rc2: |
605 | + |
606 | + * Fixed crash with server polling |
607 | + * ROUND_WINNER and MATCH_WINNER ladderlog events now include the players of |
608 | + the team. |
609 | + * Camera switches to user preferred camera when you die in incam mode |
610 | + * Better support for custom language files |
611 | + * Players can no longer spam chat with /shuffle messages. Added new setting |
612 | + SHUFFLE_SPAM_MESSAGES_PER_ROUND, a per round, per player limit on the number |
613 | + of shuffle messages displayed. |
614 | + |
615 | +#### Changes since 0.2.8.3_rc1: |
616 | + |
617 | + * Fixed dark color filters, such as FILTER_DARK_COLOR_STRINGS, to not filter |
618 | + the reset color. |
619 | + * ASE moviepack models no longer have a vertex count limit |
620 | + * Fixed endless recursion crash between rounds |
621 | + |
622 | +#### Changes since 0.2.8.3_beta3: |
623 | + |
624 | + * Chat prefix spam protection. Guards against prefix spam, such as when a |
625 | + user always changes their chat message color, or prefixes all messages |
626 | + with a clan tag. Toggle with the PREFIX_SPAM_ENABLE setting. |
627 | + * Fixed VOTING_MATURITY to use the time when the player entered as its |
628 | + reference time. |
629 | + * Fixed single player highscore list not containing everyone. |
630 | + * Fixed generation of duplicate names in highscore lists. |
631 | + * Fixed camera crash when the grid is empty. |
632 | + |
633 | +#### Changes since 0.2.8.3_beta2: |
634 | + * Fixed 'invincibility' bug. It really was cycles freezing in time. |
635 | + * Fixed sporadic sound related crash at round end. |
636 | + * setting rename: SILENCE_ALL -> SILENCE_DEFAULT. |
637 | + * Sound no longer gets muted after you switch the sound settings. |
638 | + * Fixed object collision detection that would sometimes pick a wrong |
639 | + wall to collide with, most likely the reason behind wrongly accredited |
640 | + kills. |
641 | + * Fixed inability to switch viewport assignment in four player mode. |
642 | + * Better handling of lag clusterbombs. |
643 | + * Server disconnects now also take immediate effect even when you're |
644 | + in a menu or chatting. |
645 | + |
646 | +#### Changes since 0.2.8.3_beta1: |
647 | + * Made ready for Armatrators |
648 | + * Authentication routines now use utf8 as forward- compatibility with |
649 | + trunk. Previously, non-ASCII usernames simply didn't work at all. |
650 | + * Better lag slide protection: clients no longer get confused when |
651 | + the server sends their cycle back in time, and the server no longer |
652 | + does that for old clients. |
653 | + * Fixed rare wallpassing bug; it required what whould usually be an |
654 | + instakill and infinte wall length. |
655 | + |
656 | +#### Changes since 0.2.8.2: |
657 | + |
658 | +New settings and commands: |
659 | + |
660 | + * MIN_PLAY_TIME_*: minimal play time required before you are allowed to |
661 | + play on this server. |
662 | + * SPAM_AUTOKICK_COUNT: minimal number of spam warning messages you get in a |
663 | + row before you get kicked. |
664 | + * FORTRESS_COLLAPSE_SPEED: tune the collapse speed of fortress zones. |
665 | + * VOTE_KICK_REASON: default reason given on kick votes. |
666 | + * "/vote" chat interface to votes; "/vote kick <player>" issues a kick vote. |
667 | + * new vote type "/vote suspend <player>" suspends a player for |
668 | + VOTING_SUSPEND_ROUNDS rounds. |
669 | + * new vote type "/vote include <file>", includes configuration file |
670 | + vote/<file>. |
671 | + * new vote type "/vote command <command>" executes console command |
672 | + <command>. (Both that and /vote include are by default only available |
673 | + to moderators). |
674 | + * VOTING_HARM_TIME: time between all harmful votes against a player |
675 | + * VOTING_KICK_MINHARM: auto-transform the first few menu issued kick |
676 | + votes to suspensions |
677 | + * (UN)SUSPEND kicks a player to spectator mode with a timeout. Intended to |
678 | + let new players watch before they play. |
679 | + * VOTES_CANCEL cancels all running polls. |
680 | + * VOTING_SUSPEND [<minutes>] disallows voting during a specified amount of time. |
681 | + * ZONE_ALPHA_TOGGLE to override the systemwide alpha blendings setting and |
682 | + have zones rendered in wireframe mode even when alpha blending is on. |
683 | + * ZONE_ALPHA(_SERVER) to control intensity of zone rendering. |
684 | + * SCORE_HOLE for awarding sacrifice. |
685 | + * SCORE_SURVIVE for player survival and FORTRESS_HELD_SCORE for not losing |
686 | + each fortress zone. |
687 | + * KICK_TO and MOVE_TO: redirect a client to a different server |
688 | + * DEFAULT_KICK(_TO)_MESSAGE: default reason given to players for a kick |
689 | + * DEFAULT_KICK_TO_SERVER/PORT: default redirection target for KICK/MOVE_TO. |
690 | + * RENAME renames a player. |
691 | + * If all clients support it, PING_CHARITY_MIN/MAX can be used to constrain ping charity. |
692 | + * VOTE_KICK_TO_SERVER/PORT: redirection target for vote kicks. |
693 | + * SILENCE and VOICE allow to control chat of annoying players. |
694 | + * SILENCE_ALL can be used on the server to inhibit all cross-team communication unless specifically voiced. |
695 | + * ENABLE_CHAT can be set to 0 to disable all chat. If it is set on the server it only disables public chat and logged in players can still speak. |
696 | + * LAG_*: controls game level lag compensation. |
697 | + * FILTER_NAME_MIDDLE: collapses multiple whitespaces to one in player names. |
698 | + * FORTRESS_CONQEST_TIMEOUT: if an enemy contact with a zone happens longer ago than |
699 | + this value, it is discarded from zone memory. |
700 | + * TOPOLOGY_POLICE_PARALLEL, extra topology police flag to control the checks |
701 | + for walls getting copied into the grid in exactly the same place. |
702 | + * CAMERA_GLANCE_*: separate settings for the glancing camera, work like CAMERA_CUSTOM_*. |
703 | + Likewise, CAMERA_SERVER_GLANCE_* can replace CAMERA_SERVER_CUSTOM_* when glancing. |
704 | + CAMERA_*CUSTOM_GLANCE* are server side settings that can control whether server or |
705 | + clientside settings are used in various situations, see settings.cfg for details. |
706 | + * CYCLE_BOOST_? and CYCLE_BOOSTFACTOR_? for boosts when breaking away from walls, |
707 | + see settings.cfg or config.html for details |
708 | + * CYCLE_ACCEL_TUNNEL, works like CYCLE_ACCEL_SLINGSHOT, but is active when |
709 | + none of the two walls you're in between is your own. |
710 | + * CYCLE_WIDTH for making it impossible to squeeze through tight tunnels, |
711 | + see settings.cfg for details |
712 | + * VOTING_MATURITY controls how long you have to wait after login before |
713 | + you can issue kick votes. |
714 | + * CYCLE_DELAY_DOUBLEBIND_BONUS is an extra factor applied to CYCLE_DELAY |
715 | + for turns in the same direction. Can be used to limit the advantage |
716 | + doublebinders get while not punishing players who press both left and |
717 | + right at the same time. |
718 | + * LAG_O_METER_(TRESHOLD|BLEND|USE_OLD): Configure the minimal size of the |
719 | + Lag-O-Meter, its color and whether to scrap it all and stick with the old |
720 | + one. |
721 | + * ALLOW_TEAM_CHANGE: if set to 0 players won't be able to join a team, create |
722 | + a new team or change to another team. |
723 | + * ALLOW_TEAM_CHANGE_PLAYER/DISALLOW_TEAM_CHANGE_PLAYER: allow/disallow specific |
724 | + players to switch teams |
725 | + * INTERCEPT_COMMANDS is a space-delimited list of chat commands that shall be |
726 | + intercepted by an external script. Example value: /login /admin /teamleave |
727 | + /teamshuffle /shuffle /team |
728 | + * INTERCEPT_UNKNOWN_COMMANDS is a boolean specifying if an external script |
729 | + wishes to handle unrecognized chat commands. This would allow hooking |
730 | + arbitrary things like /foobarz or /mode ctf |
731 | + * CONSOLE_LADDER_LOG boolean places the ladderlog on stdout prefixed with |
732 | + "[L] " |
733 | + * PLAYER_MESSAGE <user ID or name> <Message>: Like /msg, but from the |
734 | + console |
735 | + * All ladderlog outputs can be enabled or disabled separately by using |
736 | + LADDERLOG_WRITE_*. LADDERLOG_WRITE_ALL enables or disables all ladderlog |
737 | + output alltogether. |
738 | + * CHAT_LOG controls whether to write a machine-readable chatlog to |
739 | + var/chatlog.txt |
740 | + * CONSOLE_DECORATE_TIMESTAMP write a timestamp for every console message? |
741 | + * LADDERLOG_DECORATE_TIMESTAMP prefix every ladderlog message with a timestamp? |
742 | + * SLAP <player> [points] sends a message to everyone and subtracts a number |
743 | + of points (default: 1) from <player>'s score. Negative points are |
744 | + supported. |
745 | + * AUTO_TEAM_SPEC_SPAM to disable the spectator join/leave messages you get |
746 | + when AUTO_TEAM is enabled |
747 | + |
748 | +If --enable-armathentication was activated: |
749 | + |
750 | + * /lock, /unlock, /invite and /uninvite team management chat for players of |
751 | + access level ACCESS_LEVEL_TEAM or better. |
752 | + * /teams chat command that rougly prints team layout. |
753 | + * ACCESS_LEVEL_IPS to let admins see IPs of players in the list. |
754 | + * ACCESS_LEVEL_SPY_MSG/TEAM to let admins spy on team/private messages. |
755 | + * CASACL to temporarily raise the access level |
756 | + * ACCESS_LEVEL to modify the required access level to change settings |
757 | + * AUTHORITY_WHITELIST and AUTHORITY_BLACKLIST to filter authorities you want on your server. |
758 | + * GLOBAL_ID_ENABLED to toggle remote accounts |
759 | + * LOCAL_USER, LOCAL_TEAM for local login accounts |
760 | + * MD5_PREFIX/MD5_SUFFIX for additional password scrambling |
761 | + * USER_LEVEL to grant users various access levels |
762 | + * RESERVE_SCREEN_NAME to reserve a screen name to a certain player |
763 | + * USER_ALIAS to bend authentication names around |
764 | + * (UN)BAN_USER to ban really stupid users based on their global user ID, |
765 | + BAN_USER_LIST to show a list. |
766 | + * ACCESS_LEVEL_OP/ADMIN/CHAT/PLAY/PLAY_SLIDING to control who can do which things |
767 | + * /login chat command then uses the more secure hashed base logins |
768 | + * new chat commands /op and /deop to change other players' access rights |
769 | + |
770 | +Featurelets: |
771 | + |
772 | + * Added Polish language file |
773 | + * clientside play time tracking and server controlled minimal required experience |
774 | + to be allowed to play. |
775 | + * color codes in chat increase the spam level logarithmically. |
776 | + * /team messages get a reduced spam level; reduction factor is given by |
777 | + (team size)/(number of total players). |
778 | + * /team messages can be used by spectators to chat with other spectators only. |
779 | + * Performance optimizations. Using OpenGL display lists to cache geometry. |
780 | + * Removed ztrick, antialiasing and perspective correction settings. They all had only one right |
781 | + setting and caused us some interesting bug reports. |
782 | + * Added PLAYER_RANDOM_COLOR for lazy people who just want to have a |
783 | + color that differs from everyone else on the server. |
784 | + * Configuration files get reloaded on SIGHUP |
785 | + * all admin commands now also accept partial name matches, like /msg, and check for case sensitive |
786 | + matches in the screen name first, then the user name, then case insensitive matches in the two. |
787 | + * --enable-krawallserver has been actually implemented now, and it enables secure logins |
788 | + to accounts local to the server and not-so-secure logins managed by authentication servers. |
789 | + * A subculture list for server groups that are not managed by our main master servers |
790 | + * A friends list and filter for the server browser that shows you only servers with |
791 | + your friends on them. |
792 | + * The client now can handle network traffic while it is waiting for the graphics |
793 | + card to swap buffers. |
794 | + * The dedicated server no longer uses a fixed delay, but a select() call (that |
795 | + returns when network data arrives) to idle. When data arrives, it does |
796 | + the minimum amount of work before it sends out the responses, resulting in |
797 | + lower latency. It is now safe to decrease DEDICATED_FPS to 20 or 10, latency |
798 | + is no longer influenced by that setting. |
799 | + * Game level lag compensation. When a command arrives from a client that is delayed, |
800 | + it is backdated to the time it was issued, provided enough "lag credit" is left. |
801 | + The client is informed of the delay so it can compensate in the future, which it does |
802 | + by forging the game timer. |
803 | + * Nonnormalized axes and axes with odd turning directions are now properly supported |
804 | + * The camera has a memory which player you like to watch. Every time you manually switch |
805 | + the camera and your favorite player is not dead, the favorite is set to the currently |
806 | + watched player. The next time the camera doesn't know what to watch, your favorite |
807 | + will be selected. |
808 | + * Players leaving to spectator mode with <0.2.8.2 clients are handled like |
809 | + spectators of 0.2.8.2 clients: they stay visible to the others. |
810 | + * Kick statistics are now persistent across server runs. |
811 | + * MESSAGE_OF_DAY is now displayed fullscreen if both server and client support it |
812 | + * Manual fullscreen messages can be triggered with |
813 | + FULLSCREEN_MESSAGE <timeout> <message content> |
814 | + * Axes Indicators by meriton, can be enabled using the AXES_INDICATORS |
815 | + setting. |
816 | + * New "About" menu item in the main menu displays the version of |
817 | + Armagetron Advanced, the paths it uses, links to the main site, wiki |
818 | + and forums and the names of the project admins. |
819 | + * New entries in ladderlog.txt: |
820 | + - GAME_TIME <time> (only if enabled via the LADDERLOG_GAME_TIME_INTERVAL |
821 | + setting): The time that has passed since the last start of a round |
822 | + - BASEZONE_CONQUERED <team> <x> <y>: A fortress zone belonging to <team> |
823 | + at the coordinates (<x>, <y>) has been conquered |
824 | + - BASEZONE_CONQUERER <player>: at the time of the last BASEZONE_CONQUERED |
825 | + message, <player> has been in the conquered zone |
826 | + - ONLINE_PLAYER <player> [<ping [<team>]]: At the beginning of the round, |
827 | + <player> had <ping> and was on <team>. This line is not printed for bots |
828 | + - NUM_HUMANS <n>: There are <n> players that are not AIs and are part of a |
829 | + team. |
830 | + - ROUND_SCORE has the player's team name appended. |
831 | + - ROUND_SCORE_TEAM: score a team accumulated during the last round. |
832 | + - WAIT_FOR_EXTENAL_SCRIPT: printed if the setting of the same name is |
833 | + enabled. In this case the server will delay the start of the next round |
834 | + until WAIT_FOR_EXTENAL_SCRIPT_TIMEOUT is reached or the setting is |
835 | + disabled. |
836 | + * Wrapped console lines are indented by an amount of spaces that can be |
837 | + specified using the setting CONSOLE_INDENT. |
838 | + * /help command that supports multiple help topics. Use |
839 | + HELP_INTRODUCTORY_BLURB and ADD_HELP_TOPIC to control its contents |
840 | + * /rtfm command that allows moderators to send help messages to newbies |
841 | + * /players now shows the players' color and allows searching |
842 | + * TEAM_ELIMINATION_MODE sets the way ArmagetronAd removes teams when there's too much teams. |
843 | + |
844 | +Bugfixes: |
845 | + |
846 | + * Added compensation for drifting timers (observed often with |
847 | + overclocked mainboards) |
848 | + * Text input fields now let the text wrap correctly and make use of the space allocated |
849 | + for them in a not-completely-dumb way. And *sigh* depending on the text field, color |
850 | + codes are either ignored (for the usernames) or both displayed in text and rendered. |
851 | + * "KICK 2pack" no longer kicks user 2 instead of player 2pack. |
852 | + * Fixed various trail end related extrapolation/simulation inaccuracies that looked |
853 | + like lag. |
854 | + * When extrapolating, the game's sensors never detected own or teammates' walls, |
855 | + it mistook them for enemy walls. |
856 | + * The acceleration and boost system always used settings for enemy walls instead of |
857 | + settings for team players' walls. That means that old clients connecting to a |
858 | + 0.2.8.3+ server that has CYCLE_ACCEL_ENEMY and CYCLE_ACCEL_TEAM set to different |
859 | + values experience syncing problems. The default behavior therefore is to lock 0.2.8.2 |
860 | + and earlier out of your server if you set one of them away from the default. |
861 | + If you want to set both accelerations away from the default, but to the same value, |
862 | + there won't be a compatibility problem; in that case, set CYCLE_ACCEL_ENEMY_OVERRIDE |
863 | + and CYCLE_ACCEL_TEAM_OVERRIDE to 0 and old clients will be allowed in. However, you |
864 | + should manually lock out players with 0.2.7 clients, for example by modifying |
865 | + CYCLE_ACCEL_RIM a tiny bit. |
866 | + * "Team Red" bug. If the server allows maximally two teams, no team ever |
867 | + gets to be Team Red. |
868 | + * Phasing made even more difficult; nice side effect of the fix is |
869 | + reduced network bandwidth usage. |
870 | + * Speed gauge resets between rounds. |
871 | + * More accurate Lag-O-Meter by meriton. |
872 | + * Zones were sometimes invisible. |
873 | + |
874 | +Internals: |
875 | + |
876 | + * A complete netsync cycle is now sn_Receive(); nNetObject::SyncAll(); sn_SendPlanned();. |
877 | + * Ping charity is now completely server controlled. |
878 | + |
879 | +#### Changes since 0.2.8.1: |
880 | + * Timestamps and teamscores added to scorelog.txt |
881 | + * Dedicated server now works on FreeBSD and OpenBSD |
882 | + * User running the dedicated server is called "armagetronad" again, the |
883 | + longer "armagetronad-dedicated" caused problems with BSD |
884 | + * Test versions refuse to connect to servers more than one version ahead |
885 | + * Prepared client for respawns |
886 | + * Team spawn formation is now configurable |
887 | + * Added reasons to bans |
888 | + * Added spectator autokicking |
889 | + * Added history to chat and console (wrtlprnft). Press "Cursor up" to |
890 | + edit and repeat previous chats and console commands. |
891 | + * You only enter a game once your client is synced |
892 | + * /msg now prefers exact matches over partial matches |
893 | + * Cycles now have better memory for pending turns (wrtlprnft) |
894 | + * Added player join/leave/rename messages to ladderlog.txt with IPs |
895 | + * Ping variance influence on packet loss tolerance code is now clamped |
896 | + by the regular, configurable, packet loss tolerance: effect of variance |
897 | + can be no bigger than the effect of ping. |
898 | + * Spectators are now regular players and can chat |
899 | + * The /msg command now converts the entered pattern into the internal |
900 | + name so if you write "/msg öäü" and there is a user named "öäü" with |
901 | + an internal nick of "oau" it will still get matched |
902 | + * Team changes are now only executed when allowed, the need for the |
903 | + temporary/permanent team imbalance setting distinction has gone away |
904 | + * Added brake toggle button |
905 | + Bugfixes: |
906 | + * Client sometimes crashed when leaving a server with AIs on over the menu |
907 | + * The server starting scripts were chowning /var/run and /var/log to armagetronad |
908 | + * Short names could crash the server |
909 | + * Direct cycle collisions sometimes lead to both passing trough each other |
910 | + * Init scripts now installed correctly with --enable-initscripts |
911 | + * Hopeless pending team change wishes are deleted |
912 | + * Large timesteps are now broken down into smaller ones on the game level |
913 | + * Pretend keys are released before entering chat |
914 | + * Two cycle steering events were sent if you doublebound the brake |
915 | + * Large speed boosts out of game rule bounds were possible during network |
916 | + glitches |
917 | + * Debug recording reliability increased, function call with undefined return |
918 | + value eliminated |
919 | + * Recording and scorekeeping no longer conflict |
920 | + * Input during a recording now has an end marker, making quick keypresses |
921 | + after leaving a menu not break it |
922 | + * CYCLE_RUBBER_DELAY was overridden sometimes by packet loss tolerance |
923 | + * ALLOW_CONTROL_DURING_CHAT now ignores modifier keys like shift and |
924 | + has been reactivated |
925 | + * The camera sometimes got stuck in free mode for the first round you watch |
926 | + * Crashfix in hole blowing code when no cycle was set |
927 | + * After a "perfect" 180, you're more often on the right side of your own wall |
928 | + That code caused some havoc at first, so it has been reworked |
929 | + * The smart cam did not like fluctuating framerates |
930 | + * Improved debug recording reliability: multiple master server visits |
931 | + and too quick keypresses were causing trouble. |
932 | + * Canonical DESTDIR support and added ROOTDIR support for testing |
933 | + * Login floods are detected and ignored |
934 | + * Player name updates sanitized |
935 | + * Disabled complicated feasibility tests for team menu entries, |
936 | + they did not have the full information and were often wrong |
937 | + * Team score only added to player score if no teamplay is possible |
938 | + |
939 | +#### Changes since 0.2.8.0: |
940 | + * INCLUDE console command now gives a file not found error |
941 | + * ALL user given paths are validated for security problems in a special function |
942 | + * Fallback to default map on map load failure works again (broken sine 0.2.8.0_rc4) |
943 | + |
944 | +#### Changes since 0.2.8.0_rc4: |
945 | +Bugfixes: |
946 | + |
947 | + * SECURITY FIX: via a MAP_FILE path with included .., it was possible |
948 | + to write files anywhere, provided they did not exist previously. |
949 | + Clients with this vulnerability are locked out of the server now. |
950 | + * ALLOW_CONTROL_DURING_CHAT has been disabled for now. |
951 | + * Another connection termination bug. |
952 | + |
953 | +#### Changes since 0.2.8.0_rc3: |
954 | + * Added spectator mode toggle key. |
955 | + * Thresholds when a white background bar is rendered behind texts is |
956 | + now configurable in the expert section of settings.cfg. |
957 | + * Ingame menu trigger key is configurable now, only ESC stays hardcoded. |
958 | + * The map parser checks whether the map is stored at the right location. |
959 | + * Map validation errors are now visible on the client. |
960 | + * Made magic numbers used by the smart camera configurable for user tweaking. |
961 | + This is undocumented and unsupported. |
962 | + * The server browser now shows a B beside the score to mark bookmarked servers. |
963 | + Bugfixes: |
964 | + * -Os compile option is filtered out if GCC 3.3 is used, it makes the build go bad. |
965 | + * Extremely low values of CYCLE_DELAY were not honored, an arbitrary delay of .005s |
966 | + was added to it. |
967 | + * On entering a server, the camera would sometimes be stuck in free mode. |
968 | + |
969 | +#### Changes since 0.2.8.0_rc2: |
970 | + * Almost final artwork |
971 | + * Moviepacks can now also contain texture replacements for the default cycle model |
972 | + * Added number of teammates alive to HUD |
973 | + Bugfixes: |
974 | + * Dual textured floor rendering is now disabled without alpha blending as it |
975 | + did not work anyway. |
976 | + * Lag-O-Meter now has the correct size (the old, buggy one can be restored by |
977 | + setting LAG_O_METER_SCALE to .5). |
978 | + * The network system made some IDs randomly unusable, causing zombie |
979 | + cycles, invisible walls and disconnections. |
980 | + * The AI Team from a previous local game session was sometimes still visible |
981 | + on the score table in the following network game on a remote server. |
982 | + * The server did not start a new match when temporarily, only spectators were online. |
983 | + * Player walls were rendered twice. |
984 | + * The server wrote console center messages to stderr. |
985 | + * UNBAN_IP did not work at all. |
986 | + * The code that should kill a cycle in performance/DOS protection |
987 | + circumstances just crashed. |
988 | + |
989 | +#### Changes since 0.2.8.0_rc1: |
990 | + * Bugfixes: |
991 | + - Dedicated server for Windows works again. |
992 | + - Cycle turns are now executed more accurately on the server. |
993 | + - Timer stuttering at end of round (was non-critical, but ugly). |
994 | + - Custom camera did not turn when the internal camera was |
995 | + configured not to turn. |
996 | + - Idle player kick code crashed when it kicked a client with |
997 | + many players. |
998 | + - The code that removes inactive players after a while removed |
999 | + the AI players. |
1000 | + * Reverted smart camera movement to pre-beta4 behavior, |
1001 | + the new code made some players seasick :) |
1002 | + * Ingame admin interface gives more useful information to the invoker |
1003 | + * Small font rendering improvements |
1004 | + * Zone conquest message, if it is not the one that ends the round, |
1005 | + now states the name of the zone owning team. |
1006 | + |
1007 | +#### Changes since 0.2.8_beta4.2: |
1008 | + * Fixed bugs: |
1009 | + - Random client disconnection |
1010 | + - Another vote-not-appearing-on-client bug |
1011 | + - Invisible wall segments right after turn |
1012 | + - Arena initialization before all settings are transmitted from the server |
1013 | + - The server was using more rubber than the client sometimes |
1014 | + - Crash with moviepack and some maps |
1015 | + - Object sync messages not accepted by client in second network session |
1016 | + * Improved kill/suicide/team kill distinction (ENEMY_* settings) |
1017 | + * Chatbots and idle players can be removed from the game and kicked |
1018 | + (CHATTER/IDLE_REMOVE_TIME,IDLE_KICK_TIME) |
1019 | + * Players/team leaders can pause the game before a rond starts (PLAYER_CHAT_WAIT*) |
1020 | + * Color codes can be filtered from player names (FILTER_COLOR_NAMES) |
1021 | + * New machine readable log file: ladderlog.txt |
1022 | + * Configurable and better core dump/team kill/suicide distinction algorithm |
1023 | + * Unknown settings are recognized now in configuration files |
1024 | + * All global key bindings (Grab mouse, pause and texture reload were left) |
1025 | + are now configurable |
1026 | + * Player listing length limit adjusted so two teams/16 players fits on screen |
1027 | + * Less verbose upgrade warning messages |
1028 | + * Imposters can get a non-conflicting name (ALLOW_IMPOST[EO]RS) |
1029 | + |
1030 | +#### Changes since 0.2.8_beta4: |
1031 | + * Fixed bugs: |
1032 | + - Windows version had a memory overwrite error causing crashes and weird behavior. |
1033 | + - The game quit when the chat key and a key bound to an instant chat were pressed to quickly. |
1034 | + - Votes expired too early on the client. |
1035 | + - Performance: a lot of unused temporary walls were hanging around each round. |
1036 | + - Cycles sometimes warped to odd locations. |
1037 | + * Tweaked smart camera to not stay in front of the cycle so much. |
1038 | + - Tweaked smart camera custom glancing. |
1039 | + Report back whether you like or hate it! |
1040 | + * Made custom camera even more configurable, changed default settings. |
1041 | + (old ones are still in settings.cfg) |
1042 | + * Forced glancing end on cycle turn now looks better. |
1043 | + * FOV settings now deal better with wide screens/splitscreen mode. |
1044 | + * Increased ping measurements again by adding the fluctuations. The raw |
1045 | + average ping caused the game logic to be too picky. |
1046 | + |
1047 | +#### Changes since 0.2.8_beta3: |
1048 | + * Famous fixed bugs: |
1049 | + - Random huge felt lag or blank screen (it was actually a problem with the timer) is gone. |
1050 | + - Bogus "possible phase bug" message. |
1051 | + - Seemingly random walls popping out of nothing, only to disappear a second later. |
1052 | + - Random camera focus changes while you were still alive. |
1053 | + - Every 100th console line got deleted. |
1054 | + * Reduced pings! Actually, just the measurement is improved, the actual latency |
1055 | + stays the same. I hope nobody notices that. Good thing nobody reads NEWS files :) |
1056 | + * New text editing convenience: Home and end keys work, and CTRL+left/right/del/backspace |
1057 | + work on whole words. Thanks, Nemo! |
1058 | + * New instant chat functions: There are now 25 instant chat strings. If an instant |
1059 | + chat string ends in a \, it will not be sent immediately, it's opened to be edited by you. |
1060 | + Pressing an instant chat key while already chatting will insert the string, provided the |
1061 | + key does not produce a regular character. |
1062 | + * If enabled by the server administrator: control your cycle while you chat. |
1063 | + * Turning speed of custom and internal camera can be adjusted with CAMERA_CUSTOM_TURN_SPEED |
1064 | + and CAMERA_IN_TURN_SPEED. |
1065 | + * The custom camera zooms out from a closeup at round start. Useful to see your position |
1066 | + in your team. Configurable with CAMERA_CUSTOM_ZOOM. |
1067 | + * Master server redundancy enabled. Thanks to Lucifer for hosting the backup master! |
1068 | + |
1069 | +#### Changes since 0.2.8_beta2: |
1070 | + * More bugfixes: most annoying was the crash/infinite loop a server got in when |
1071 | + the master server was unreachable |
1072 | + * Added zones to map specification |
1073 | + * Reworked top level map format (sorry to the map makers for the inconvenience) |
1074 | + * Windows: added start menu entries that open the system and user data directories |
1075 | + * Bandwidth limitation now works. That means if you lowered the bandwidth |
1076 | + limits in the network setup, they were not respected. You probably should |
1077 | + readjust them. |
1078 | + |
1079 | +#### Changes since 0.2.8_beta1: |
1080 | + * bugfixes, of course |
1081 | + * added recording and playback startmenu entries for Windows |
1082 | + * abuse prevention: added IP banning, player number per IP and client limit, |
1083 | + doublebinding can be crippled on server command |
1084 | + |
1085 | +#### Changes since 0.2.7.1: |
1086 | + * Server side cycle synchronization issues fixed: |
1087 | + - destination removal fixed |
1088 | + - lag sliding caused by different interpretation of grinding turn commands on client and server fixed |
1089 | + - niceness for older clients: sync interval decreased, no sync in front of wall to prevent local tunneling |
1090 | + * Client side cycle synchronization issues fixed: |
1091 | + - smooth corrections now only affect the appearance, the correct values are used internally |
1092 | + - sync messages are no longer ignored, |
1093 | + - new extrapolating sync method implemented, |
1094 | + - ghosting fixed, |
1095 | + - wall ends sticking out fixed ( for enemy cycles ), |
1096 | + - the sophisticated distance based sync code implemented years ago is now actually used, oh dear. |
1097 | + * Performance improvements: |
1098 | + - netobject synchronization does no longer traverse all netobjects |
1099 | + - disabled gameobject-gameobject interaction |
1100 | + * added support for nonorthogonal driving directions |
1101 | + * added support for debug recording and playback |
1102 | + * switched to using automake |
1103 | + |
1104 | +#### Changes since 0.2.7.0: |
1105 | + * Fixed security issues: fake message ID crash, fake peer ID crash ( both |
1106 | + maybe could be used to execute arbitrary code ), fake logout exploit, fake |
1107 | + connections DOS attack |
1108 | + * The feared "left grid" error message has been replaced by recovery code |
1109 | + * Fixed transfer of infinite floats over the network |
1110 | + * Fixed network timer inaccuracies on long running servers |
1111 | + * Fixed rip bug ( for those who like it: search and you will find ) |
1112 | + * Fixed wall bending ( there is still some wall bending left, but it will be |
1113 | + too small to notice ) |
1114 | + * Fixed tunneling bugs ( you were able to move from one side of a wall to the other ) |
1115 | + * Fixed bounce bug ( a small zigzag towards a wall sometimes put you further |
1116 | + away from it, leaving a hole ) |
1117 | + * Fixed massive reference counting overflow crash caused by repeated close grinding/180ing |
1118 | + * Made rubber code customizable and frame rate independent ( new CYCLE_RUBBER_ |
1119 | + variables in settings.cfg ) |
1120 | + * For debugging and scripting: dedicated server console messages can be |
1121 | + decorated with client ID and IP |
1122 | + * Topology police: facility to catch tunneling issues after they happened. off |
1123 | + by default |
1124 | + * Cycle network code is more robust |
1125 | + * Update frequency of cycle position now configurable and more frequent for |
1126 | + client's own cycle that the rest by default |
1127 | + * Corrected rc.d scripts to start the server as a system service |
1128 | + * Voting more configurable: voters can be made public, spectators can't vote |
1129 | + any more by default |
1130 | + * Moviepack floor color fixed |
1131 | + * Hostname lookup failure fixed |
1132 | + * "PLAYER_1 nick" console command problems fixed |
1133 | + * Windows libraries moved out of the main source tree |
1134 | + * Source code now compatible with 64 bit and gcc 3.4 |
1135 | + * Colored explosions! |
1136 | + * HUD enhancements: customization, works in splitscreen mode |
1137 | + * Directory scanning code added ( not yet visible, will be used for |
1138 | + moviepack/cycle selection ) |
1139 | + * Moviepack sky texture support |
1140 | + * Master server can now run on windows, too |
1141 | + * Explosion sound now actually works |
1142 | + |
1143 | +#### Changes since 0.2.6.0: |
1144 | + * added HUD |
1145 | + * Winzone may now be a deathzone |
1146 | + |
1147 | +#### Changes since 0.2.5.2: |
1148 | + * Split custom camera into server defined and client defined custom camera |
1149 | + * Fixed monster chat message exploit |
1150 | + * Added local player silencing |
1151 | + * Added Kick voting |
1152 | + * Added player names on cycles ( implemented by Christian Reitwiessner ) |
1153 | + * Harsher ( and configurable ) spam protection |
1154 | + * Fixed strangely bent walls |
1155 | + |
1156 | +#### Changes since 0.2.5.1: |
1157 | + * Fixed fullscreen toggle while chatting |
1158 | + * Disabled trilinear filtering for ATI cards by default ( to avoid lockups ) |
1159 | + * Worked around flawy S3 texture storage |
1160 | + * Fixed crash when trying to change teams in spectator mode |
1161 | + |
1162 | +#### Changes since 0.2.5: |
1163 | + * Another go at the "11th Round Bug" |
1164 | + * Player list is now sorted after displayed score ( before: some invisible combination of team score and own score ) |
1165 | + * Fixed brakes when connecting to a 0.2.4 or earlier server |
1166 | + * Updated FAQ with server setting hints |
1167 | + * Unified Windows and Unix network code |
1168 | + * Fixed texture hardware mode |
1169 | + * Less connection losses |
1170 | + * Fixed network ID related crash |
1171 | + * Added player names to information you get from a server |
1172 | + * Added window-fullscreen toggle key and separate setting of screen resolution/window size |
1173 | + |
1174 | +#### Changes since 0.2.4: |
1175 | + * Fixed online observer mode switching |
1176 | + * Fixed command line options |
1177 | + * Fixed player quit message |
1178 | + * Fixed AI join message |
1179 | + * Fixed double registration of some network objects ( had no known visible symptom ) |
1180 | + * Added security checks to see if Armagetron is run correctly |
1181 | + * Fixed big brother ( reporting of OS, graphic card and version to the master server ) |
1182 | + * Disabled memory manager by default |
1183 | + * Fixed single player exit game crash |
1184 | + * Fixed zero length sting receive crash |
1185 | + * Completed network version control |
1186 | + * Added timestamps to logfiles ( code fragments by k_at_work ) |
1187 | + * Added reason to login deny/kick messages |
1188 | + * Fixed 11th round bug ( additional round started after match end ) |
1189 | + * Added --doc command line switch to print offline version of online help |
1190 | + * Fixed sign of rise/drop highscore messages |
1191 | + * New console commands: quit/exit ( dedicated server only ), kick <player name>, center_message <message> and console_message <message> |
1192 | + * New setting item: MAX_CLIENTS |
1193 | + * Improved server browser, less skipping around |
1194 | + * Added instant win zone |
1195 | + * Cycle brake is now of limited duration |
1196 | + |
1197 | +#### Changes since 0.2.3: |
1198 | + * Fixed score display ( really! ) |
1199 | + * Fixed freestyle mode round counting |
1200 | + * Fixed server freezer |
1201 | + * Fixed explosion sync |
1202 | + * Fixed AI crashes when player leaves in mid-battle |
1203 | + * Fixed configure script: now really uses sdl-config |
1204 | + * Speeded up deletion of unreachable servers |
1205 | + * Fixed endless recursion bug ( "11th player bug" ) |
1206 | + * Moved team start positions further apart |
1207 | + * Player name is now taken from $USER on first start and player color is randomized |
1208 | + |
1209 | +#### Changes since 0.2.2: |
1210 | + * Fixed highscores and ladder |
1211 | + * Delayed score deletion after match end |
1212 | + * Fixed autoexec.cfg loading |
1213 | + * More automatic rebuilding |
1214 | + * Fixed dedicated server idle quitting |
1215 | + * Fixed auto AI |
1216 | + * Fixed instant chat |
1217 | + * Fixed score display for many players or long player names |
1218 | + * Fixed very rare client crash |
1219 | + * Fixed not so rare release only crash |
1220 | + * Fixed balance-related typos |
1221 | + * Tweaked smart camera so that it works well when braking |
1222 | + * Fixed finish mode game setting |
1223 | + |
1224 | +#### Changes since 0.2.1: |
1225 | + * Fixed another connection-loss bug |
1226 | + * Fixed observer freeze |
1227 | + * Observers now don't just get kicked when nobody else is online |
1228 | + * Fixed software renderer detection |
1229 | + * Updated FAQ |
1230 | + * Fixed config file loading on some architectures |
1231 | + * Improved team coloring |
1232 | + * Fixed stuck brake bug |
1233 | + |
1234 | +#### Changes since 0.2.0: |
1235 | + * Fixed crash when watching a quitting player |
1236 | + |
1237 | +#### Changes since 0.2.pre4: |
1238 | + * Fixed crashes |
1239 | + * Fixed windows network connection problems |
1240 | + * Fixed clour related problems |
1241 | + * Added marker for own cycle to avoid confusion in team mode |
1242 | + * Changed directory placement: configuration resides in /etc/armagetron, |
1243 | + user configuration in ~/.armagetron/var |
1244 | + * Data files added to ~/.armagetron/textures ( or /models or /sounds ) |
1245 | + are now loaded in favor of original data, allowing user specific mods |
1246 | + |
1247 | +#### Changes since 0.2.pre3: |
1248 | + * Fixed some more rare crashes and lockups |
1249 | + * Fixed team handling: all team change operations now get only active |
1250 | + on next round address |
1251 | + * Fixed moviesounds |
1252 | + * Fixed server-master server communications |
1253 | + * new installation method: make update ( keeps user configuration ) |
1254 | + |
1255 | +#### Changes since 0.2.pre2: |
1256 | + * Fixed some rare crashes and lockups |
1257 | + * Improved cycle handling over network |
1258 | + * It is now allowed to fight with an arbitrary large team against the AI |
1259 | + regardless of the balancing settings |
1260 | + * improved rendering precision: z-fighting artefact are now uncommon, |
1261 | + and at the same time early clipping on the near clipping plane |
1262 | + |
1263 | +#### Changes since 0.2.pre: |
1264 | + * got rid of "zombie" players |
1265 | + * corrected team messages |
1266 | + * fixed chatting |
1267 | + * fixed 32 bit rendering |
1268 | + |
1269 | +#### Changes since 0.1.4.9: |
1270 | + * it is now possible for players to form teams |
1271 | + * explosion now can blow holes in player walls |
1272 | + * delay added to wall disappearance after death |
1273 | + * finite wall length supported for snake-style gameplay |
1274 | + * arena size and game speed configurable in the menu |
1275 | + * the AI has been greatly improved |
1276 | + * there is an Internet master server active |
1277 | + * support for localization has been added, currently featuring |
1278 | + English and German |
1279 | + * AI players now have names |
1280 | + * the moviepack title screen is displayed |
1281 | + * Linux version: easier system-wide installation with RPM packages |
1282 | + or "make install" |
1283 | + |
1284 | |
1285 | === added file 'CHANGELOG_FROZEN.md' |
1286 | --- CHANGELOG_FROZEN.md 1970-01-01 00:00:00 +0000 |
1287 | +++ CHANGELOG_FROZEN.md 2020-07-03 06:03:19 +0000 |
1288 | @@ -0,0 +1,792 @@ |
1289 | +##### Changes on the 0.2.9 branch |
1290 | + |
1291 | + * Added detection and reaction code for timing assist bots |
1292 | + * /shuffle now works before you actually join a team |
1293 | + * Implemented /shout command and associated settings |
1294 | + * Fixed suspension and silenced status not being re-applied after a player |
1295 | + disconnects and rejoins a server. |
1296 | + * Tweaks to enemy influence system. |
1297 | + * Ingame menu and console now are drawn on top of a semi-transparent, |
1298 | + darkened area for increased readability. |
1299 | + * New first start menu with clearer language selection and initial setup. |
1300 | + * Tutorial match against one AI at slower speed. |
1301 | + * Tutorial tooltips for the most important keybindings. |
1302 | + * ADD_MASTER_SERVER command to announce a server to a new master server. |
1303 | + Simplifies the process to list your server on a subculture. |
1304 | + * Team launch positions logged to ladderlog with POSITIONS event. Disabled by |
1305 | + default. |
1306 | + * New command-line option "--input" added to poll for input from a file |
1307 | + instead of stdin. |
1308 | + * Added WHITELIST_ENEMIES_[IP/USERNAME] to allow players to be enemies, even |
1309 | + if they come from the same IP address and ALLOW_ENEMIES_SAME_IP is |
1310 | + disabled (which is its default setting). |
1311 | + * GAME_END, NEW_MATCH, and NEW_ROUND ladderlog events include date and time. |
1312 | + * Added ENCODING ladderlog event, which specifies the encoding for data in |
1313 | + ladderlog.txt. |
1314 | + * "--input" now can be used more than once to read from multiple files or pipes. |
1315 | + * new team management ladderlog messages: |
1316 | + TEAM_CREATED <team name> |
1317 | + TEAM_DESTROYED <team name> |
1318 | + TEAM_RENAMED <old team name> <new team name> |
1319 | + TEAM_PLAYER_ADDED <team name> <player> |
1320 | + TEAM_PLAYER_REMOVED <team name> <player> |
1321 | + * Manage external scripts on Unix dedicated servers. New commands: |
1322 | + SPAWN_SCRIPT, RESPAWN_SCRIPT, FORCE_RESPAWN_SCRIPT, KILL_SCRIPT, |
1323 | + LIST_SCRIPTS, SCRIPT_ENV. |
1324 | + * New setting ACCESS_LEVEL_ANNOUNCE_LOGIN that determines if a player's |
1325 | + login/logout message can be announced. |
1326 | + * Authentication is now enabled by default. |
1327 | + |
1328 | +#### Changes since 0.2.8.3.4: |
1329 | + |
1330 | + * Security fix: Check that the remote is allowed to create an object |
1331 | + before creating it, not decide whether it gets to keep it after |
1332 | + it already has been created and potential damage has been done. |
1333 | + No arbitrary code could be executed, but a client could effectively |
1334 | + shut down a server by sending crucial objects, such as the main game |
1335 | + timer or the game itself. |
1336 | + * Compilation fixes for current systems. |
1337 | + |
1338 | +#### Changes since 0.2.8.3.3: |
1339 | + |
1340 | + * Eliminated undefined behavior that was fine in gcc 5, but now |
1341 | + (rightfully!) turned into crashes in gcc 6. |
1342 | + * Eliminated compilation disambiguity that was just causing a mild |
1343 | + performance degradation in gcc 5 and is now a compilation failure in |
1344 | + gcc 6. |
1345 | + |
1346 | +#### Changes since 0.2.8.3.2: |
1347 | + |
1348 | + * security fix: do not read ahead of the beginning of network buffer. |
1349 | + * security fix: don't attribute network errors from processing random |
1350 | + packets to the connection to the server |
1351 | + * security fix: while at it, don't process random packets unless they |
1352 | + may be important |
1353 | + * fix for potential crash with friend list filtering |
1354 | + * intel driver compatibility |
1355 | + * fix for rare crash with sound lock |
1356 | + * fix for camera turning for bizarre axis configurations |
1357 | + |
1358 | +#### Changes since 0.2.8.3.1: |
1359 | + |
1360 | + * security fix: old style action commands from clients no loger cause hangs and crashes |
1361 | + * security fix: oversized packets are ignored properly |
1362 | + * security fix: never read one byte outside of the received buffer |
1363 | + * security fix: only include .cfg files from the var subfolder |
1364 | + * compiler compatibility: adapted to gcc 4.60 |
1365 | + * smaller spelling fixes |
1366 | + * FOV calculations now correct for widescreen and horizontal splitscreen |
1367 | + * Additional checks against illegal values passed to renderer |
1368 | + |
1369 | +#### Changes since 0.2.8.3: |
1370 | + |
1371 | + * fixed temporary sound disappearance when alt-tabbing away and back |
1372 | + * default subcultures are now distributed |
1373 | + * enable 32 bit color depth at desktop resolution |
1374 | + * no more display lists for SiS cards |
1375 | + * spelling mistakes and missing German translations |
1376 | + |
1377 | +#### Changes since 0.2.8.3_rc4: |
1378 | + |
1379 | + * New setting: KEEP_PLAYER_SLOT allows the server to kick (preferably) spectators |
1380 | + if it gets full so there is always one slot open for players |
1381 | + * New setting: ACCESS_LEVEL_AUTOKICK_IMMUNITY sets the access level required |
1382 | + to be immune from such kicks (and idle autokicks, too) |
1383 | + * Intercepted chat commands are now written to ladderlog.txt. Format: |
1384 | + COMMAND /command-intercepted player [command arguments] |
1385 | + * Increased default speed of server pinging |
1386 | + * Reordered game menus a bit |
1387 | + * fast finish works again |
1388 | + |
1389 | +#### Changes since 0.2.8.3_rc3: |
1390 | + |
1391 | + * Pinging previously popular servers earlier for quicker server |
1392 | + browsing |
1393 | + * Improved master server random polling, the second polled master now |
1394 | + also is random, and all masters are polled if need be |
1395 | + * Custom camera snaps to cycle direction once when activated if the turn speed |
1396 | + is zero. |
1397 | + * RESERVE_SCREEN_NAME now works regardless of the ALLOW_IMPOSTOR setting. |
1398 | + * USER_LEVEL now escapes the given authenticated name so you don't have to |
1399 | + guess the escaping rules. Ex: USER_LEVEL "name with spaces@forums" 2 |
1400 | + changes user level for name\_with\_spaces@forums |
1401 | + |
1402 | +#### Changes since 0.2.8.3_rc2: |
1403 | + |
1404 | + * Fixed crash with server polling |
1405 | + * ROUND_WINNER and MATCH_WINNER ladderlog events now include the players of |
1406 | + the team. |
1407 | + * Camera switches to user preferred camera when you die in incam mode |
1408 | + * Better support for custom language files |
1409 | + * Players can no longer spam chat with /shuffle messages. Added new setting |
1410 | + SHUFFLE_SPAM_MESSAGES_PER_ROUND, a per round, per player limit on the number |
1411 | + of shuffle messages displayed. |
1412 | + |
1413 | +#### Changes since 0.2.8.3_rc1: |
1414 | + |
1415 | + * Fixed dark color filters, such as FILTER_DARK_COLOR_STRINGS, to not filter |
1416 | + the reset color. |
1417 | + * ASE moviepack models no longer have a vertex count limit |
1418 | + * Fixed endless recursion crash between rounds |
1419 | + |
1420 | +#### Changes since 0.2.8.3_beta3: |
1421 | + |
1422 | + * Chat prefix spam protection. Guards against prefix spam, such as when a |
1423 | + user always changes their chat message color, or prefixes all messages |
1424 | + with a clan tag. Toggle with the PREFIX_SPAM_ENABLE setting. |
1425 | + * Fixed VOTING_MATURITY to use the time when the player entered as its |
1426 | + reference time. |
1427 | + * Fixed single player highscore list not containing everyone. |
1428 | + * Fixed generation of duplicate names in highscore lists. |
1429 | + * Fixed camera crash when the grid is empty. |
1430 | + |
1431 | +#### Changes since 0.2.8.3_beta2: |
1432 | + * Fixed 'invincibility' bug. It really was cycles freezing in time. |
1433 | + * Fixed sporadic sound related crash at round end. |
1434 | + * setting rename: SILENCE_ALL -> SILENCE_DEFAULT. |
1435 | + * Sound no longer gets muted after you switch the sound settings. |
1436 | + * Fixed object collision detection that would sometimes pick a wrong |
1437 | + wall to collide with, most likely the reason behind wrongly accredited |
1438 | + kills. |
1439 | + * Fixed inability to switch viewport assignment in four player mode. |
1440 | + * Better handling of lag clusterbombs. |
1441 | + * Server disconnects now also take immediate effect even when you're |
1442 | + in a menu or chatting. |
1443 | + |
1444 | +#### Changes since 0.2.8.3_beta1: |
1445 | + * Made ready for Armatrators |
1446 | + * Authentication routines now use utf8 as forward- compatibility with |
1447 | + trunk. Previously, non-ASCII usernames simply didn't work at all. |
1448 | + * Better lag slide protection: clients no longer get confused when |
1449 | + the server sends their cycle back in time, and the server no longer |
1450 | + does that for old clients. |
1451 | + * Fixed rare wallpassing bug; it required what whould usually be an |
1452 | + instakill and infinte wall length. |
1453 | + |
1454 | +#### Changes since 0.2.8.2: |
1455 | + |
1456 | +New settings and commands: |
1457 | + |
1458 | + * MIN_PLAY_TIME_*: minimal play time required before you are allowed to |
1459 | + play on this server. |
1460 | + * SPAM_AUTOKICK_COUNT: minimal number of spam warning messages you get in a |
1461 | + row before you get kicked. |
1462 | + * FORTRESS_COLLAPSE_SPEED: tune the collapse speed of fortress zones. |
1463 | + * VOTE_KICK_REASON: default reason given on kick votes. |
1464 | + * "/vote" chat interface to votes; "/vote kick <player>" issues a kick vote. |
1465 | + * new vote type "/vote suspend <player>" suspends a player for |
1466 | + VOTING_SUSPEND_ROUNDS rounds. |
1467 | + * new vote type "/vote include <file>", includes configuration file |
1468 | + vote/<file>. |
1469 | + * new vote type "/vote command <command>" executes console command |
1470 | + <command>. (Both that and /vote include are by default only available |
1471 | + to moderators). |
1472 | + * VOTING_HARM_TIME: time between all harmful votes against a player |
1473 | + * VOTING_KICK_MINHARM: auto-transform the first few menu issued kick |
1474 | + votes to suspensions |
1475 | + * (UN)SUSPEND kicks a player to spectator mode with a timeout. Intended to |
1476 | + let new players watch before they play. |
1477 | + * VOTES_CANCEL cancels all running polls. |
1478 | + * VOTING_SUSPEND [<minutes>] disallows voting during a specified amount of time. |
1479 | + * ZONE_ALPHA_TOGGLE to override the systemwide alpha blendings setting and |
1480 | + have zones rendered in wireframe mode even when alpha blending is on. |
1481 | + * ZONE_ALPHA(_SERVER) to control intensity of zone rendering. |
1482 | + * SCORE_HOLE for awarding sacrifice. |
1483 | + * SCORE_SURVIVE for player survival and FORTRESS_HELD_SCORE for not losing |
1484 | + each fortress zone. |
1485 | + * KICK_TO and MOVE_TO: redirect a client to a different server |
1486 | + * DEFAULT_KICK(_TO)_MESSAGE: default reason given to players for a kick |
1487 | + * DEFAULT_KICK_TO_SERVER/PORT: default redirection target for KICK/MOVE_TO. |
1488 | + * RENAME renames a player. |
1489 | + * If all clients support it, PING_CHARITY_MIN/MAX can be used to constrain ping charity. |
1490 | + * VOTE_KICK_TO_SERVER/PORT: redirection target for vote kicks. |
1491 | + * SILENCE and VOICE allow to control chat of annoying players. |
1492 | + * SILENCE_ALL can be used on the server to inhibit all cross-team communication unless specifically voiced. |
1493 | + * ENABLE_CHAT can be set to 0 to disable all chat. If it is set on the server it only disables public chat and logged in players can still speak. |
1494 | + * LAG_*: controls game level lag compensation. |
1495 | + * FILTER_NAME_MIDDLE: collapses multiple whitespaces to one in player names. |
1496 | + * FORTRESS_CONQEST_TIMEOUT: if an enemy contact with a zone happens longer ago than |
1497 | + this value, it is discarded from zone memory. |
1498 | + * TOPOLOGY_POLICE_PARALLEL, extra topology police flag to control the checks |
1499 | + for walls getting copied into the grid in exactly the same place. |
1500 | + * CAMERA_GLANCE_*: separate settings for the glancing camera, work like CAMERA_CUSTOM_*. |
1501 | + Likewise, CAMERA_SERVER_GLANCE_* can replace CAMERA_SERVER_CUSTOM_* when glancing. |
1502 | + CAMERA_*CUSTOM_GLANCE* are server side settings that can control whether server or |
1503 | + clientside settings are used in various situations, see settings.cfg for details. |
1504 | + * CYCLE_BOOST_? and CYCLE_BOOSTFACTOR_? for boosts when breaking away from walls, |
1505 | + see settings.cfg or config.html for details |
1506 | + * CYCLE_ACCEL_TUNNEL, works like CYCLE_ACCEL_SLINGSHOT, but is active when |
1507 | + none of the two walls you're in between is your own. |
1508 | + * CYCLE_WIDTH for making it impossible to squeeze through tight tunnels, |
1509 | + see settings.cfg for details |
1510 | + * VOTING_MATURITY controls how long you have to wait after login before |
1511 | + you can issue kick votes. |
1512 | + * CYCLE_DELAY_DOUBLEBIND_BONUS is an extra factor applied to CYCLE_DELAY |
1513 | + for turns in the same direction. Can be used to limit the advantage |
1514 | + doublebinders get while not punishing players who press both left and |
1515 | + right at the same time. |
1516 | + * LAG_O_METER_(TRESHOLD|BLEND|USE_OLD): Configure the minimal size of the |
1517 | + Lag-O-Meter, its color and whether to scrap it all and stick with the old |
1518 | + one. |
1519 | + * ALLOW_TEAM_CHANGE: if set to 0 players won't be able to join a team, create |
1520 | + a new team or change to another team. |
1521 | + * ALLOW_TEAM_CHANGE_PLAYER/DISALLOW_TEAM_CHANGE_PLAYER: allow/disallow specific |
1522 | + players to switch teams |
1523 | + * INTERCEPT_COMMANDS is a space-delimited list of chat commands that shall be |
1524 | + intercepted by an external script. Example value: /login /admin /teamleave |
1525 | + /teamshuffle /shuffle /team |
1526 | + * INTERCEPT_UNKNOWN_COMMANDS is a boolean specifying if an external script |
1527 | + wishes to handle unrecognized chat commands. This would allow hooking |
1528 | + arbitrary things like /foobarz or /mode ctf |
1529 | + * CONSOLE_LADDER_LOG boolean places the ladderlog on stdout prefixed with |
1530 | + "[L] " |
1531 | + * PLAYER_MESSAGE <user ID or name> <Message>: Like /msg, but from the |
1532 | + console |
1533 | + * All ladderlog outputs can be enabled or disabled separately by using |
1534 | + LADDERLOG_WRITE_*. LADDERLOG_WRITE_ALL enables or disables all ladderlog |
1535 | + output alltogether. |
1536 | + * CHAT_LOG controls whether to write a machine-readable chatlog to |
1537 | + var/chatlog.txt |
1538 | + * CONSOLE_DECORATE_TIMESTAMP write a timestamp for every console message? |
1539 | + * LADDERLOG_DECORATE_TIMESTAMP prefix every ladderlog message with a timestamp? |
1540 | + * SLAP <player> [points] sends a message to everyone and subtracts a number |
1541 | + of points (default: 1) from <player>'s score. Negative points are |
1542 | + supported. |
1543 | + * AUTO_TEAM_SPEC_SPAM to disable the spectator join/leave messages you get |
1544 | + when AUTO_TEAM is enabled |
1545 | + |
1546 | +If --enable-armathentication was activated: |
1547 | + |
1548 | + * /lock, /unlock, /invite and /uninvite team management chat for players of |
1549 | + access level ACCESS_LEVEL_TEAM or better. |
1550 | + * /teams chat command that rougly prints team layout. |
1551 | + * ACCESS_LEVEL_IPS to let admins see IPs of players in the list. |
1552 | + * ACCESS_LEVEL_SPY_MSG/TEAM to let admins spy on team/private messages. |
1553 | + * CASACL to temporarily raise the access level |
1554 | + * ACCESS_LEVEL to modify the required access level to change settings |
1555 | + * AUTHORITY_WHITELIST and AUTHORITY_BLACKLIST to filter authorities you want on your server. |
1556 | + * GLOBAL_ID_ENABLED to toggle remote accounts |
1557 | + * LOCAL_USER, LOCAL_TEAM for local login accounts |
1558 | + * MD5_PREFIX/MD5_SUFFIX for additional password scrambling |
1559 | + * USER_LEVEL to grant users various access levels |
1560 | + * RESERVE_SCREEN_NAME to reserve a screen name to a certain player |
1561 | + * USER_ALIAS to bend authentication names around |
1562 | + * (UN)BAN_USER to ban really stupid users based on their global user ID, |
1563 | + BAN_USER_LIST to show a list. |
1564 | + * ACCESS_LEVEL_OP/ADMIN/CHAT/PLAY/PLAY_SLIDING to control who can do which things |
1565 | + * /login chat command then uses the more secure hashed base logins |
1566 | + * new chat commands /op and /deop to change other players' access rights |
1567 | + |
1568 | +Featurelets: |
1569 | + |
1570 | + * Added Polish language file |
1571 | + * clientside play time tracking and server controlled minimal required experience |
1572 | + to be allowed to play. |
1573 | + * color codes in chat increase the spam level logarithmically. |
1574 | + * /team messages get a reduced spam level; reduction factor is given by |
1575 | + (team size)/(number of total players). |
1576 | + * /team messages can be used by spectators to chat with other spectators only. |
1577 | + * Performance optimizations. Using OpenGL display lists to cache geometry. |
1578 | + * Removed ztrick, antialiasing and perspective correction settings. They all had only one right |
1579 | + setting and caused us some interesting bug reports. |
1580 | + * Added PLAYER_RANDOM_COLOR for lazy people who just want to have a |
1581 | + color that differs from everyone else on the server. |
1582 | + * Configuration files get reloaded on SIGHUP |
1583 | + * all admin commands now also accept partial name matches, like /msg, and check for case sensitive |
1584 | + matches in the screen name first, then the user name, then case insensitive matches in the two. |
1585 | + * --enable-krawallserver has been actually implemented now, and it enables secure logins |
1586 | + to accounts local to the server and not-so-secure logins managed by authentication servers. |
1587 | + * A subculture list for server groups that are not managed by our main master servers |
1588 | + * A friends list and filter for the server browser that shows you only servers with |
1589 | + your friends on them. |
1590 | + * The client now can handle network traffic while it is waiting for the graphics |
1591 | + card to swap buffers. |
1592 | + * The dedicated server no longer uses a fixed delay, but a select() call (that |
1593 | + returns when network data arrives) to idle. When data arrives, it does |
1594 | + the minimum amount of work before it sends out the responses, resulting in |
1595 | + lower latency. It is now safe to decrease DEDICATED_FPS to 20 or 10, latency |
1596 | + is no longer influenced by that setting. |
1597 | + * Game level lag compensation. When a command arrives from a client that is delayed, |
1598 | + it is backdated to the time it was issued, provided enough "lag credit" is left. |
1599 | + The client is informed of the delay so it can compensate in the future, which it does |
1600 | + by forging the game timer. |
1601 | + * Nonnormalized axes and axes with odd turning directions are now properly supported |
1602 | + * The camera has a memory which player you like to watch. Every time you manually switch |
1603 | + the camera and your favorite player is not dead, the favorite is set to the currently |
1604 | + watched player. The next time the camera doesn't know what to watch, your favorite |
1605 | + will be selected. |
1606 | + * Players leaving to spectator mode with <0.2.8.2 clients are handled like |
1607 | + spectators of 0.2.8.2 clients: they stay visible to the others. |
1608 | + * Kick statistics are now persistent across server runs. |
1609 | + * MESSAGE_OF_DAY is now displayed fullscreen if both server and client support it |
1610 | + * Manual fullscreen messages can be triggered with |
1611 | + FULLSCREEN_MESSAGE <timeout> <message content> |
1612 | + * Axes Indicators by meriton, can be enabled using the AXES_INDICATORS |
1613 | + setting. |
1614 | + * New "About" menu item in the main menu displays the version of |
1615 | + Armagetron Advanced, the paths it uses, links to the main site, wiki |
1616 | + and forums and the names of the project admins. |
1617 | + * New entries in ladderlog.txt: |
1618 | + - GAME_TIME <time> (only if enabled via the LADDERLOG_GAME_TIME_INTERVAL |
1619 | + setting): The time that has passed since the last start of a round |
1620 | + - BASEZONE_CONQUERED <team> <x> <y>: A fortress zone belonging to <team> |
1621 | + at the coordinates (<x>, <y>) has been conquered |
1622 | + - BASEZONE_CONQUERER <player>: at the time of the last BASEZONE_CONQUERED |
1623 | + message, <player> has been in the conquered zone |
1624 | + - ONLINE_PLAYER <player> [<ping [<team>]]: At the beginning of the round, |
1625 | + <player> had <ping> and was on <team>. This line is not printed for bots |
1626 | + - NUM_HUMANS <n>: There are <n> players that are not AIs and are part of a |
1627 | + team. |
1628 | + - ROUND_SCORE has the player's team name appended. |
1629 | + - ROUND_SCORE_TEAM: score a team accumulated during the last round. |
1630 | + - WAIT_FOR_EXTENAL_SCRIPT: printed if the setting of the same name is |
1631 | + enabled. In this case the server will delay the start of the next round |
1632 | + until WAIT_FOR_EXTENAL_SCRIPT_TIMEOUT is reached or the setting is |
1633 | + disabled. |
1634 | + * Wrapped console lines are indented by an amount of spaces that can be |
1635 | + specified using the setting CONSOLE_INDENT. |
1636 | + * /help command that supports multiple help topics. Use |
1637 | + HELP_INTRODUCTORY_BLURB and ADD_HELP_TOPIC to control its contents |
1638 | + * /rtfm command that allows moderators to send help messages to newbies |
1639 | + * /players now shows the players' color and allows searching |
1640 | + * TEAM_ELIMINATION_MODE sets the way ArmagetronAd removes teams when there's too much teams. |
1641 | + |
1642 | +Bugfixes: |
1643 | + |
1644 | + * Added compensation for drifting timers (observed often with |
1645 | + overclocked mainboards) |
1646 | + * Text input fields now let the text wrap correctly and make use of the space allocated |
1647 | + for them in a not-completely-dumb way. And *sigh* depending on the text field, color |
1648 | + codes are either ignored (for the usernames) or both displayed in text and rendered. |
1649 | + * "KICK 2pack" no longer kicks user 2 instead of player 2pack. |
1650 | + * Fixed various trail end related extrapolation/simulation inaccuracies that looked |
1651 | + like lag. |
1652 | + * When extrapolating, the game's sensors never detected own or teammates' walls, |
1653 | + it mistook them for enemy walls. |
1654 | + * The acceleration and boost system always used settings for enemy walls instead of |
1655 | + settings for team players' walls. That means that old clients connecting to a |
1656 | + 0.2.8.3+ server that has CYCLE_ACCEL_ENEMY and CYCLE_ACCEL_TEAM set to different |
1657 | + values experience syncing problems. The default behavior therefore is to lock 0.2.8.2 |
1658 | + and earlier out of your server if you set one of them away from the default. |
1659 | + If you want to set both accelerations away from the default, but to the same value, |
1660 | + there won't be a compatibility problem; in that case, set CYCLE_ACCEL_ENEMY_OVERRIDE |
1661 | + and CYCLE_ACCEL_TEAM_OVERRIDE to 0 and old clients will be allowed in. However, you |
1662 | + should manually lock out players with 0.2.7 clients, for example by modifying |
1663 | + CYCLE_ACCEL_RIM a tiny bit. |
1664 | + * "Team Red" bug. If the server allows maximally two teams, no team ever |
1665 | + gets to be Team Red. |
1666 | + * Phasing made even more difficult; nice side effect of the fix is |
1667 | + reduced network bandwidth usage. |
1668 | + * Speed gauge resets between rounds. |
1669 | + * More accurate Lag-O-Meter by meriton. |
1670 | + * Zones were sometimes invisible. |
1671 | + |
1672 | +Internals: |
1673 | + |
1674 | + * A complete netsync cycle is now sn_Receive(); nNetObject::SyncAll(); sn_SendPlanned();. |
1675 | + * Ping charity is now completely server controlled. |
1676 | + |
1677 | +#### Changes since 0.2.8.1: |
1678 | + * Timestamps and teamscores added to scorelog.txt |
1679 | + * Dedicated server now works on FreeBSD and OpenBSD |
1680 | + * User running the dedicated server is called "armagetronad" again, the |
1681 | + longer "armagetronad-dedicated" caused problems with BSD |
1682 | + * Test versions refuse to connect to servers more than one version ahead |
1683 | + * Prepared client for respawns |
1684 | + * Team spawn formation is now configurable |
1685 | + * Added reasons to bans |
1686 | + * Added spectator autokicking |
1687 | + * Added history to chat and console (wrtlprnft). Press "Cursor up" to |
1688 | + edit and repeat previous chats and console commands. |
1689 | + * You only enter a game once your client is synced |
1690 | + * /msg now prefers exact matches over partial matches |
1691 | + * Cycles now have better memory for pending turns (wrtlprnft) |
1692 | + * Added player join/leave/rename messages to ladderlog.txt with IPs |
1693 | + * Ping variance influence on packet loss tolerance code is now clamped |
1694 | + by the regular, configurable, packet loss tolerance: effect of variance |
1695 | + can be no bigger than the effect of ping. |
1696 | + * Spectators are now regular players and can chat |
1697 | + * The /msg command now converts the entered pattern into the internal |
1698 | + name so if you write "/msg öäü" and there is a user named "öäü" with |
1699 | + an internal nick of "oau" it will still get matched |
1700 | + * Team changes are now only executed when allowed, the need for the |
1701 | + temporary/permanent team imbalance setting distinction has gone away |
1702 | + * Added brake toggle button |
1703 | + Bugfixes: |
1704 | + * Client sometimes crashed when leaving a server with AIs on over the menu |
1705 | + * The server starting scripts were chowning /var/run and /var/log to armagetronad |
1706 | + * Short names could crash the server |
1707 | + * Direct cycle collisions sometimes lead to both passing trough each other |
1708 | + * Init scripts now installed correctly with --enable-initscripts |
1709 | + * Hopeless pending team change wishes are deleted |
1710 | + * Large timesteps are now broken down into smaller ones on the game level |
1711 | + * Pretend keys are released before entering chat |
1712 | + * Two cycle steering events were sent if you doublebound the brake |
1713 | + * Large speed boosts out of game rule bounds were possible during network |
1714 | + glitches |
1715 | + * Debug recording reliability increased, function call with undefined return |
1716 | + value eliminated |
1717 | + * Recording and scorekeeping no longer conflict |
1718 | + * Input during a recording now has an end marker, making quick keypresses |
1719 | + after leaving a menu not break it |
1720 | + * CYCLE_RUBBER_DELAY was overridden sometimes by packet loss tolerance |
1721 | + * ALLOW_CONTROL_DURING_CHAT now ignores modifier keys like shift and |
1722 | + has been reactivated |
1723 | + * The camera sometimes got stuck in free mode for the first round you watch |
1724 | + * Crashfix in hole blowing code when no cycle was set |
1725 | + * After a "perfect" 180, you're more often on the right side of your own wall |
1726 | + That code caused some havoc at first, so it has been reworked |
1727 | + * The smart cam did not like fluctuating framerates |
1728 | + * Improved debug recording reliability: multiple master server visits |
1729 | + and too quick keypresses were causing trouble. |
1730 | + * Canonical DESTDIR support and added ROOTDIR support for testing |
1731 | + * Login floods are detected and ignored |
1732 | + * Player name updates sanitized |
1733 | + * Disabled complicated feasibility tests for team menu entries, |
1734 | + they did not have the full information and were often wrong |
1735 | + * Team score only added to player score if no teamplay is possible |
1736 | + |
1737 | +#### Changes since 0.2.8.0: |
1738 | + * INCLUDE console command now gives a file not found error |
1739 | + * ALL user given paths are validated for security problems in a special function |
1740 | + * Fallback to default map on map load failure works again (broken sine 0.2.8.0_rc4) |
1741 | + |
1742 | +#### Changes since 0.2.8.0_rc4: |
1743 | +Bugfixes: |
1744 | + |
1745 | + * SECURITY FIX: via a MAP_FILE path with included .., it was possible |
1746 | + to write files anywhere, provided they did not exist previously. |
1747 | + Clients with this vulnerability are locked out of the server now. |
1748 | + * ALLOW_CONTROL_DURING_CHAT has been disabled for now. |
1749 | + * Another connection termination bug. |
1750 | + |
1751 | +#### Changes since 0.2.8.0_rc3: |
1752 | + * Added spectator mode toggle key. |
1753 | + * Thresholds when a white background bar is rendered behind texts is |
1754 | + now configurable in the expert section of settings.cfg. |
1755 | + * Ingame menu trigger key is configurable now, only ESC stays hardcoded. |
1756 | + * The map parser checks whether the map is stored at the right location. |
1757 | + * Map validation errors are now visible on the client. |
1758 | + * Made magic numbers used by the smart camera configurable for user tweaking. |
1759 | + This is undocumented and unsupported. |
1760 | + * The server browser now shows a B beside the score to mark bookmarked servers. |
1761 | + Bugfixes: |
1762 | + * -Os compile option is filtered out if GCC 3.3 is used, it makes the build go bad. |
1763 | + * Extremely low values of CYCLE_DELAY were not honored, an arbitrary delay of .005s |
1764 | + was added to it. |
1765 | + * On entering a server, the camera would sometimes be stuck in free mode. |
1766 | + |
1767 | +#### Changes since 0.2.8.0_rc2: |
1768 | + * Almost final artwork |
1769 | + * Moviepacks can now also contain texture replacements for the default cycle model |
1770 | + * Added number of teammates alive to HUD |
1771 | + Bugfixes: |
1772 | + * Dual textured floor rendering is now disabled without alpha blending as it |
1773 | + did not work anyway. |
1774 | + * Lag-O-Meter now has the correct size (the old, buggy one can be restored by |
1775 | + setting LAG_O_METER_SCALE to .5). |
1776 | + * The network system made some IDs randomly unusable, causing zombie |
1777 | + cycles, invisible walls and disconnections. |
1778 | + * The AI Team from a previous local game session was sometimes still visible |
1779 | + on the score table in the following network game on a remote server. |
1780 | + * The server did not start a new match when temporarily, only spectators were online. |
1781 | + * Player walls were rendered twice. |
1782 | + * The server wrote console center messages to stderr. |
1783 | + * UNBAN_IP did not work at all. |
1784 | + * The code that should kill a cycle in performance/DOS protection |
1785 | + circumstances just crashed. |
1786 | + |
1787 | +#### Changes since 0.2.8.0_rc1: |
1788 | + * Bugfixes: |
1789 | + - Dedicated server for Windows works again. |
1790 | + - Cycle turns are now executed more accurately on the server. |
1791 | + - Timer stuttering at end of round (was non-critical, but ugly). |
1792 | + - Custom camera did not turn when the internal camera was |
1793 | + configured not to turn. |
1794 | + - Idle player kick code crashed when it kicked a client with |
1795 | + many players. |
1796 | + - The code that removes inactive players after a while removed |
1797 | + the AI players. |
1798 | + * Reverted smart camera movement to pre-beta4 behavior, |
1799 | + the new code made some players seasick :) |
1800 | + * Ingame admin interface gives more useful information to the invoker |
1801 | + * Small font rendering improvements |
1802 | + * Zone conquest message, if it is not the one that ends the round, |
1803 | + now states the name of the zone owning team. |
1804 | + |
1805 | +#### Changes since 0.2.8_beta4.2: |
1806 | + * Fixed bugs: |
1807 | + - Random client disconnection |
1808 | + - Another vote-not-appearing-on-client bug |
1809 | + - Invisible wall segments right after turn |
1810 | + - Arena initialization before all settings are transmitted from the server |
1811 | + - The server was using more rubber than the client sometimes |
1812 | + - Crash with moviepack and some maps |
1813 | + - Object sync messages not accepted by client in second network session |
1814 | + * Improved kill/suicide/team kill distinction (ENEMY_* settings) |
1815 | + * Chatbots and idle players can be removed from the game and kicked |
1816 | + (CHATTER/IDLE_REMOVE_TIME,IDLE_KICK_TIME) |
1817 | + * Players/team leaders can pause the game before a rond starts (PLAYER_CHAT_WAIT*) |
1818 | + * Color codes can be filtered from player names (FILTER_COLOR_NAMES) |
1819 | + * New machine readable log file: ladderlog.txt |
1820 | + * Configurable and better core dump/team kill/suicide distinction algorithm |
1821 | + * Unknown settings are recognized now in configuration files |
1822 | + * All global key bindings (Grab mouse, pause and texture reload were left) |
1823 | + are now configurable |
1824 | + * Player listing length limit adjusted so two teams/16 players fits on screen |
1825 | + * Less verbose upgrade warning messages |
1826 | + * Imposters can get a non-conflicting name (ALLOW_IMPOST[EO]RS) |
1827 | + |
1828 | +#### Changes since 0.2.8_beta4: |
1829 | + * Fixed bugs: |
1830 | + - Windows version had a memory overwrite error causing crashes and weird behavior. |
1831 | + - The game quit when the chat key and a key bound to an instant chat were pressed to quickly. |
1832 | + - Votes expired too early on the client. |
1833 | + - Performance: a lot of unused temporary walls were hanging around each round. |
1834 | + - Cycles sometimes warped to odd locations. |
1835 | + * Tweaked smart camera to not stay in front of the cycle so much. |
1836 | + - Tweaked smart camera custom glancing. |
1837 | + Report back whether you like or hate it! |
1838 | + * Made custom camera even more configurable, changed default settings. |
1839 | + (old ones are still in settings.cfg) |
1840 | + * Forced glancing end on cycle turn now looks better. |
1841 | + * FOV settings now deal better with wide screens/splitscreen mode. |
1842 | + * Increased ping measurements again by adding the fluctuations. The raw |
1843 | + average ping caused the game logic to be too picky. |
1844 | + |
1845 | +#### Changes since 0.2.8_beta3: |
1846 | + * Famous fixed bugs: |
1847 | + - Random huge felt lag or blank screen (it was actually a problem with the timer) is gone. |
1848 | + - Bogus "possible phase bug" message. |
1849 | + - Seemingly random walls popping out of nothing, only to disappear a second later. |
1850 | + - Random camera focus changes while you were still alive. |
1851 | + - Every 100th console line got deleted. |
1852 | + * Reduced pings! Actually, just the measurement is improved, the actual latency |
1853 | + stays the same. I hope nobody notices that. Good thing nobody reads NEWS files :) |
1854 | + * New text editing convenience: Home and end keys work, and CTRL+left/right/del/backspace |
1855 | + work on whole words. Thanks, Nemo! |
1856 | + * New instant chat functions: There are now 25 instant chat strings. If an instant |
1857 | + chat string ends in a \, it will not be sent immediately, it's opened to be edited by you. |
1858 | + Pressing an instant chat key while already chatting will insert the string, provided the |
1859 | + key does not produce a regular character. |
1860 | + * If enabled by the server administrator: control your cycle while you chat. |
1861 | + * Turning speed of custom and internal camera can be adjusted with CAMERA_CUSTOM_TURN_SPEED |
1862 | + and CAMERA_IN_TURN_SPEED. |
1863 | + * The custom camera zooms out from a closeup at round start. Useful to see your position |
1864 | + in your team. Configurable with CAMERA_CUSTOM_ZOOM. |
1865 | + * Master server redundancy enabled. Thanks to Lucifer for hosting the backup master! |
1866 | + |
1867 | +#### Changes since 0.2.8_beta2: |
1868 | + * More bugfixes: most annoying was the crash/infinite loop a server got in when |
1869 | + the master server was unreachable |
1870 | + * Added zones to map specification |
1871 | + * Reworked top level map format (sorry to the map makers for the inconvenience) |
1872 | + * Windows: added start menu entries that open the system and user data directories |
1873 | + * Bandwidth limitation now works. That means if you lowered the bandwidth |
1874 | + limits in the network setup, they were not respected. You probably should |
1875 | + readjust them. |
1876 | + |
1877 | +#### Changes since 0.2.8_beta1: |
1878 | + * bugfixes, of course |
1879 | + * added recording and playback startmenu entries for Windows |
1880 | + * abuse prevention: added IP banning, player number per IP and client limit, |
1881 | + doublebinding can be crippled on server command |
1882 | + |
1883 | +#### Changes since 0.2.7.1: |
1884 | + * Server side cycle synchronization issues fixed: |
1885 | + - destination removal fixed |
1886 | + - lag sliding caused by different interpretation of grinding turn commands on client and server fixed |
1887 | + - niceness for older clients: sync interval decreased, no sync in front of wall to prevent local tunneling |
1888 | + * Client side cycle synchronization issues fixed: |
1889 | + - smooth corrections now only affect the appearance, the correct values are used internally |
1890 | + - sync messages are no longer ignored, |
1891 | + - new extrapolating sync method implemented, |
1892 | + - ghosting fixed, |
1893 | + - wall ends sticking out fixed ( for enemy cycles ), |
1894 | + - the sophisticated distance based sync code implemented years ago is now actually used, oh dear. |
1895 | + * Performance improvements: |
1896 | + - netobject synchronization does no longer traverse all netobjects |
1897 | + - disabled gameobject-gameobject interaction |
1898 | + * added support for nonorthogonal driving directions |
1899 | + * added support for debug recording and playback |
1900 | + * switched to using automake |
1901 | + |
1902 | +#### Changes since 0.2.7.0: |
1903 | + * Fixed security issues: fake message ID crash, fake peer ID crash ( both |
1904 | + maybe could be used to execute arbitrary code ), fake logout exploit, fake |
1905 | + connections DOS attack |
1906 | + * The feared "left grid" error message has been replaced by recovery code |
1907 | + * Fixed transfer of infinite floats over the network |
1908 | + * Fixed network timer inaccuracies on long running servers |
1909 | + * Fixed rip bug ( for those who like it: search and you will find ) |
1910 | + * Fixed wall bending ( there is still some wall bending left, but it will be |
1911 | + too small to notice ) |
1912 | + * Fixed tunneling bugs ( you were able to move from one side of a wall to the other ) |
1913 | + * Fixed bounce bug ( a small zigzag towards a wall sometimes put you further |
1914 | + away from it, leaving a hole ) |
1915 | + * Fixed massive reference counting overflow crash caused by repeated close grinding/180ing |
1916 | + * Made rubber code customizable and frame rate independent ( new CYCLE_RUBBER_ |
1917 | + variables in settings.cfg ) |
1918 | + * For debugging and scripting: dedicated server console messages can be |
1919 | + decorated with client ID and IP |
1920 | + * Topology police: facility to catch tunneling issues after they happened. off |
1921 | + by default |
1922 | + * Cycle network code is more robust |
1923 | + * Update frequency of cycle position now configurable and more frequent for |
1924 | + client's own cycle that the rest by default |
1925 | + * Corrected rc.d scripts to start the server as a system service |
1926 | + * Voting more configurable: voters can be made public, spectators can't vote |
1927 | + any more by default |
1928 | + * Moviepack floor color fixed |
1929 | + * Hostname lookup failure fixed |
1930 | + * "PLAYER_1 nick" console command problems fixed |
1931 | + * Windows libraries moved out of the main source tree |
1932 | + * Source code now compatible with 64 bit and gcc 3.4 |
1933 | + * Colored explosions! |
1934 | + * HUD enhancements: customization, works in splitscreen mode |
1935 | + * Directory scanning code added ( not yet visible, will be used for |
1936 | + moviepack/cycle selection ) |
1937 | + * Moviepack sky texture support |
1938 | + * Master server can now run on windows, too |
1939 | + * Explosion sound now actually works |
1940 | + |
1941 | +#### Changes since 0.2.6.0: |
1942 | + * added HUD |
1943 | + * Winzone may now be a deathzone |
1944 | + |
1945 | +#### Changes since 0.2.5.2: |
1946 | + * Split custom camera into server defined and client defined custom camera |
1947 | + * Fixed monster chat message exploit |
1948 | + * Added local player silencing |
1949 | + * Added Kick voting |
1950 | + * Added player names on cycles ( implemented by Christian Reitwiessner ) |
1951 | + * Harsher ( and configurable ) spam protection |
1952 | + * Fixed strangely bent walls |
1953 | + |
1954 | +#### Changes since 0.2.5.1: |
1955 | + * Fixed fullscreen toggle while chatting |
1956 | + * Disabled trilinear filtering for ATI cards by default ( to avoid lockups ) |
1957 | + * Worked around flawy S3 texture storage |
1958 | + * Fixed crash when trying to change teams in spectator mode |
1959 | + |
1960 | +#### Changes since 0.2.5: |
1961 | + * Another go at the "11th Round Bug" |
1962 | + * Player list is now sorted after displayed score ( before: some invisible combination of team score and own score ) |
1963 | + * Fixed brakes when connecting to a 0.2.4 or earlier server |
1964 | + * Updated FAQ with server setting hints |
1965 | + * Unified Windows and Unix network code |
1966 | + * Fixed texture hardware mode |
1967 | + * Less connection losses |
1968 | + * Fixed network ID related crash |
1969 | + * Added player names to information you get from a server |
1970 | + * Added window-fullscreen toggle key and separate setting of screen resolution/window size |
1971 | + |
1972 | +#### Changes since 0.2.4: |
1973 | + * Fixed online observer mode switching |
1974 | + * Fixed command line options |
1975 | + * Fixed player quit message |
1976 | + * Fixed AI join message |
1977 | + * Fixed double registration of some network objects ( had no known visible symptom ) |
1978 | + * Added security checks to see if Armagetron is run correctly |
1979 | + * Fixed big brother ( reporting of OS, graphic card and version to the master server ) |
1980 | + * Disabled memory manager by default |
1981 | + * Fixed single player exit game crash |
1982 | + * Fixed zero length sting receive crash |
1983 | + * Completed network version control |
1984 | + * Added timestamps to logfiles ( code fragments by k_at_work ) |
1985 | + * Added reason to login deny/kick messages |
1986 | + * Fixed 11th round bug ( additional round started after match end ) |
1987 | + * Added --doc command line switch to print offline version of online help |
1988 | + * Fixed sign of rise/drop highscore messages |
1989 | + * New console commands: quit/exit ( dedicated server only ), kick <player name>, center_message <message> and console_message <message> |
1990 | + * New setting item: MAX_CLIENTS |
1991 | + * Improved server browser, less skipping around |
1992 | + * Added instant win zone |
1993 | + * Cycle brake is now of limited duration |
1994 | + |
1995 | +#### Changes since 0.2.3: |
1996 | + * Fixed score display ( really! ) |
1997 | + * Fixed freestyle mode round counting |
1998 | + * Fixed server freezer |
1999 | + * Fixed explosion sync |
2000 | + * Fixed AI crashes when player leaves in mid-battle |
2001 | + * Fixed configure script: now really uses sdl-config |
2002 | + * Speeded up deletion of unreachable servers |
2003 | + * Fixed endless recursion bug ( "11th player bug" ) |
2004 | + * Moved team start positions further apart |
2005 | + * Player name is now taken from $USER on first start and player color is randomized |
2006 | + |
2007 | +#### Changes since 0.2.2: |
2008 | + * Fixed highscores and ladder |
2009 | + * Delayed score deletion after match end |
2010 | + * Fixed autoexec.cfg loading |
2011 | + * More automatic rebuilding |
2012 | + * Fixed dedicated server idle quitting |
2013 | + * Fixed auto AI |
2014 | + * Fixed instant chat |
2015 | + * Fixed score display for many players or long player names |
2016 | + * Fixed very rare client crash |
2017 | + * Fixed not so rare release only crash |
2018 | + * Fixed balance-related typos |
2019 | + * Tweaked smart camera so that it works well when braking |
2020 | + * Fixed finish mode game setting |
2021 | + |
2022 | +#### Changes since 0.2.1: |
2023 | + * Fixed another connection-loss bug |
2024 | + * Fixed observer freeze |
2025 | + * Observers now don't just get kicked when nobody else is online |
2026 | + * Fixed software renderer detection |
2027 | + * Updated FAQ |
2028 | + * Fixed config file loading on some architectures |
2029 | + * Improved team coloring |
2030 | + * Fixed stuck brake bug |
2031 | + |
2032 | +#### Changes since 0.2.0: |
2033 | + * Fixed crash when watching a quitting player |
2034 | + |
2035 | +#### Changes since 0.2.pre4: |
2036 | + * Fixed crashes |
2037 | + * Fixed windows network connection problems |
2038 | + * Fixed clour related problems |
2039 | + * Added marker for own cycle to avoid confusion in team mode |
2040 | + * Changed directory placement: configuration resides in /etc/armagetron, |
2041 | + user configuration in ~/.armagetron/var |
2042 | + * Data files added to ~/.armagetron/textures ( or /models or /sounds ) |
2043 | + are now loaded in favor of original data, allowing user specific mods |
2044 | + |
2045 | +#### Changes since 0.2.pre3: |
2046 | + * Fixed some more rare crashes and lockups |
2047 | + * Fixed team handling: all team change operations now get only active |
2048 | + on next round address |
2049 | + * Fixed moviesounds |
2050 | + * Fixed server-master server communications |
2051 | + * new installation method: make update ( keeps user configuration ) |
2052 | + |
2053 | +#### Changes since 0.2.pre2: |
2054 | + * Fixed some rare crashes and lockups |
2055 | + * Improved cycle handling over network |
2056 | + * It is now allowed to fight with an arbitrary large team against the AI |
2057 | + regardless of the balancing settings |
2058 | + * improved rendering precision: z-fighting artefact are now uncommon, |
2059 | + and at the same time early clipping on the near clipping plane |
2060 | + |
2061 | +#### Changes since 0.2.pre: |
2062 | + * got rid of "zombie" players |
2063 | + * corrected team messages |
2064 | + * fixed chatting |
2065 | + * fixed 32 bit rendering |
2066 | + |
2067 | +#### Changes since 0.1.4.9: |
2068 | + * it is now possible for players to form teams |
2069 | + * explosion now can blow holes in player walls |
2070 | + * delay added to wall disappearance after death |
2071 | + * finite wall length supported for snake-style gameplay |
2072 | + * arena size and game speed configurable in the menu |
2073 | + * the AI has been greatly improved |
2074 | + * there is an Internet master server active |
2075 | + * support for localization has been added, currently featuring |
2076 | + English and German |
2077 | + * AI players now have names |
2078 | + * the moviepack title screen is displayed |
2079 | + * Linux version: easier system-wide installation with RPM packages |
2080 | + or "make install" |
2081 | |
2082 | === added file 'Dockerfile' |
2083 | --- Dockerfile 1970-01-01 00:00:00 +0000 |
2084 | +++ Dockerfile 2020-07-03 06:03:19 +0000 |
2085 | @@ -0,0 +1,94 @@ |
2086 | +ARG BASE_BUILD_SMALL=registry.gitlab.com/armagetronad/armagetronad/armalpine_32:028_0 |
2087 | +ARG BASE_BUILD_FULL=registry.gitlab.com/armagetronad/armagetronad/armabuild_64:028_0 |
2088 | +ARG BASE_LINUX=i386/alpine:3.7 |
2089 | +ARG PROGRAM_NAME=armagetronad-unk |
2090 | +ARG PROGRAM_TITLE="Armagetron UNK" |
2091 | +ARG FAKERELEASE=false |
2092 | +ARG BRANCH=master-fix-unknown-bug |
2093 | + |
2094 | +######################################## |
2095 | + |
2096 | +# bootstrap source |
2097 | +FROM ${BASE_BUILD_FULL} AS bootstrap |
2098 | +MAINTAINER Manuel Moos <z-man@users.sf.net> |
2099 | + |
2100 | +ENV SOURCE_DIR /home/docker/armagetronad |
2101 | +ENV BUILD_DIR /home/docker/build |
2102 | + |
2103 | +COPY --chown=docker . ${SOURCE_DIR} |
2104 | +RUN chmod 755 ${SOURCE_DIR} |
2105 | +WORKDIR ${SOURCE_DIR} |
2106 | +# these files are in .dockerignore, but if they're in git, restore them. |
2107 | +RUN test -d .git && git checkout .dockerignore .gitlab-ci.yml Dockerfile |
2108 | +RUN git status |
2109 | +#RUN ./batch/make/version . |
2110 | +#RUN false |
2111 | +RUN test -r configure || ./bootstrap.sh |
2112 | +RUN cat version.m4 |
2113 | +#RUN false |
2114 | + |
2115 | +######################################## |
2116 | + |
2117 | +# build tarball |
2118 | +FROM bootstrap AS configured |
2119 | + |
2120 | +#ARG PROGRAM_NAME |
2121 | +#ARG PROGRAM_TITLE |
2122 | +ARG FAKERELEASE |
2123 | +ARG BRANCH |
2124 | + |
2125 | +RUN mkdir -p ${BUILD_DIR} && chmod 755 ${BUILD_DIR} |
2126 | +WORKDIR ${BUILD_DIR} |
2127 | +RUN . ../armagetronad/docker/scripts/brand.sh . && ARMAGETRONAD_FAKERELEASE=${FAKERELEASE} ../armagetronad/configure --prefix=/usr/local --disable-glout --disable-sysinstall --disable-desktop progname="${PROGRAM_NAME}" progtitle="${PROGRAM_TITLE}" |
2128 | +RUN make -j$(nproc) dist && make -C docker/build tag.gits |
2129 | +RUN if [ ${FAKERELEASE} = true ]; then cp ../armagetronad/docker/build/fakerelease_proto.sh docker/build/fakerelease.sh; fi |
2130 | + |
2131 | +######################################## |
2132 | + |
2133 | +# build server |
2134 | +FROM bootstrap AS build_server |
2135 | + |
2136 | +ARG PROGRAM_NAME |
2137 | +ARG PROGRAM_TITLE |
2138 | + |
2139 | +RUN bash ./configure --prefix=/usr/local --disable-glout --disable-sysinstall --disable-desktop progname="${PROGRAM_NAME}" progtitle="${PROGRAM_TITLE}" |
2140 | +RUN make -j$(nproc) |
2141 | +RUN DESTDIR=/home/docker/destdir make install |
2142 | + |
2143 | +######################################## |
2144 | + |
2145 | +# build client |
2146 | +FROM bootstrap AS build_client |
2147 | + |
2148 | +ARG PROGRAM_NAME |
2149 | +ARG PROGRAM_TITLE |
2150 | + |
2151 | +RUN bash ./configure --prefix=/usr/local --disable-sysinstall --disable-desktop progname="${PROGRAM_NAME}" progtitle="${PROGRAM_TITLE}" |
2152 | +RUN make -j$(nproc) |
2153 | +RUN DESTDIR=/home/docker/destdir make install |
2154 | + |
2155 | +######################################## |
2156 | + |
2157 | +FROM ${BASE_LINUX} AS run_server_base |
2158 | +MAINTAINER Manuel Moos <z-man@users.sf.net> |
2159 | + |
2160 | +# runtime dependencies |
2161 | +RUN apk add \ |
2162 | +boost-thread \ |
2163 | +libxml2 \ |
2164 | +protobuf \ |
2165 | +python \ |
2166 | +shadow \ |
2167 | +--no-cache |
2168 | + |
2169 | +######################################## |
2170 | + |
2171 | +FROM run_server_base AS run_server |
2172 | +MAINTAINER Manuel Moos <z-man@users.sf.net> |
2173 | + |
2174 | +ARG PROGRAM_NAME |
2175 | + |
2176 | +WORKDIR / |
2177 | +COPY --chown=root --from=build_server /home/docker/destdir/ / |
2178 | +RUN sh /usr/local/share/games/${PROGRAM_NAME}-dedicated/scripts/sysinstall install /usr/local |
2179 | + |
2180 | |
2181 | === modified file 'Makefile.am' |
2182 | --- Makefile.am 2019-07-26 01:01:51 +0000 |
2183 | +++ Makefile.am 2020-07-03 06:03:19 +0000 |
2184 | @@ -19,7 +19,7 @@ |
2185 | |
2186 | # resource is included as a subdir for the purpose of keeping this makefile short and delegating |
2187 | # resource management to a more appropriate place anyway |
2188 | -SUBDIRS = src resource batch config desktop |
2189 | +SUBDIRS = src resource batch config desktop docker/build |
2190 | |
2191 | # special tasks to do if we're building the master server |
2192 | if BUILDMASTER |
2193 | @@ -80,8 +80,11 @@ |
2194 | # clear SVN |
2195 | find $(distdir) -depth -name .svn -exec rm -rf \{\} \; |
2196 | |
2197 | -# strip comments from translated files |
2198 | - cd $(distdir)/language; python2 ./update.py --dist |
2199 | +# clear git and bzr |
2200 | + rm -rf .git .bzr |
2201 | + |
2202 | +# strip comments from translated files |
2203 | + cd $(distdir)/language; `which python3 python python2 2> /dev/null | head -n 1` ./update.py --dist |
2204 | # restore timestamps |
2205 | cd $(distdir)/language; for f in *.txt; do test -r $$f.bak && touch -r $$f.bak $$f; done |
2206 | rm -f $(distdir)/language/*.bak |
2207 | |
2208 | === modified file 'Makefile.manual' |
2209 | --- Makefile.manual 2011-11-30 19:48:10 +0000 |
2210 | +++ Makefile.manual 2020-07-03 06:03:19 +0000 |
2211 | @@ -146,9 +146,7 @@ |
2212 | |
2213 | # make snapshot of SVN state, tracking relevant changes in .changetag |
2214 | fingerprint: .changetag |
2215 | -# easy, just do svn info, that contains all the information needed. If that fails, try other scms. |
2216 | - svn info ${top_srcdir} > $@ || svk info ${top_srcdir} > $@ || { bzr testament ${top_srcdir}; bzr info ${top_srcdir}; } > $@ || echo "unknown" > $@ |
2217 | - svn info `dirname ${top_srcdir}` >> @$ || svn info `dirname ${top_srcdir}` >> $@ || echo "unknown" >> $@ |
2218 | + git -C ${top_srcdir} show HEAD -s > $@ || svn info ${top_srcdir} > $@ || svk info ${top_srcdir} > $@ || { bzr testament ${top_srcdir}; bzr info ${top_srcdir}; } > $@ || echo "unknown" > $@ |
2219 | diff $@ .changetag > /dev/null 2>&1 || cp $@ .changetag |
2220 | |
2221 | ######################## |
2222 | @@ -162,8 +160,8 @@ |
2223 | # Keep the changelog up to date as well (triggered by make dist only) |
2224 | $(srcdir)/ChangeLog: .changetag |
2225 | touch $@ |
2226 | - @echo -e "\nGenerating ChangeLog from SVN/BZR, please be patient...\n" |
2227 | - cd ${srcdir}; svn log 2>&1 > ChangeLog || bzr log --gnu-changelog 2>&1 > ChangeLog || echo "No official releasse: no changelog" > ChangeLog |
2228 | + @echo -e "\nGenerating ChangeLog from GIT/BZR, please be patient...\n" |
2229 | + cd ${srcdir}; git log 2>&1 > ChangeLog || bzr log --gnu-changelog 2>&1 > ChangeLog || echo "No official releasse: no changelog" > ChangeLog |
2230 | test -r $@ || touch $@ |
2231 | |
2232 | # extra target to make before a real distribution is built |
2233 | |
2234 | === modified file 'NEWS' |
2235 | --- NEWS 2014-01-13 03:59:54 +0000 |
2236 | +++ NEWS 2020-07-03 06:03:19 +0000 |
2237 | @@ -1,4 +1,19 @@ |
2238 | -Changes since 0.2.8.3.x: |
2239 | + |
2240 | +Changes since 0.2.8.3.5: |
2241 | + |
2242 | + Fixed Bugs |
2243 | + |
2244 | +- Debian builds: Documentation html files have empty last change (#9) |
2245 | +- Ubuntu PPA release candidate builds would overwrite previous stable releases (#15) |
2246 | + |
2247 | + New Features |
2248 | + |
2249 | +- Adapt ChangeLog and fingerprint generation to git (#11) |
2250 | +- Integrated build system (#14) |
2251 | + |
2252 | + |
2253 | + Changes on the 0.2.9 branch |
2254 | + |
2255 | - Added detection and reaction code for timing assist bots |
2256 | - /shuffle now works before you actually join a team |
2257 | - Implemented /shout command and associated settings |
2258 | @@ -36,7 +51,38 @@ |
2259 | login/logout message can be announced. |
2260 | - Authentication is now enabled by default. |
2261 | |
2262 | +Changes since 0.2.8.3.4: |
2263 | + |
2264 | +- Security fix: Check that the remote is allowed to create an object |
2265 | + before creating it, not decide whether it gets to keep it after |
2266 | + it already has been created and potential damage has been done. |
2267 | + No arbitrary code could be executed, but a client could effectively |
2268 | + shut down a server by sending crucial objects, such as the main game |
2269 | + timer or the game itself. |
2270 | +- Compilation fixes for current systems. |
2271 | + |
2272 | +Changes since 0.2.8.3.3: |
2273 | + |
2274 | +- Eliminated undefined behavior that was fine in gcc 5, but now |
2275 | + (rightfully!) turned into crashes in gcc 6. |
2276 | +- Eliminated compilation disambiguity that was just causing a mild |
2277 | + performance degradation in gcc 5 and is now a compilation failure in |
2278 | + gcc 6. |
2279 | + |
2280 | +Changes since 0.2.8.3.2: |
2281 | + |
2282 | +- security fix: do not read ahead of the beginning of network buffer. |
2283 | +- security fix: don't attribute network errors from processing random |
2284 | + packets to the connection to the server |
2285 | +- security fix: while at it, don't process random packets unless they |
2286 | + may be important |
2287 | +- fix for potential crash with friend list filtering |
2288 | +- intel driver compatibility |
2289 | +- fix for rare crash with sound lock |
2290 | +- fix for camera turning for bizarre axis configurations |
2291 | + |
2292 | Changes since 0.2.8.3.1: |
2293 | + |
2294 | - security fix: old style action commands from clients no loger cause hangs and crashes |
2295 | - security fix: oversized packets are ignored properly |
2296 | - security fix: never read one byte outside of the received buffer |
2297 | @@ -47,6 +93,7 @@ |
2298 | - Additional checks against illegal values passed to renderer |
2299 | |
2300 | Changes since 0.2.8.3: |
2301 | + |
2302 | - fixed temporary sound disappearance when alt-tabbing away and back |
2303 | - default subcultures are now distributed |
2304 | - enable 32 bit color depth at desktop resolution |
2305 | @@ -54,8 +101,9 @@ |
2306 | - spelling mistakes and missing German translations |
2307 | |
2308 | Changes since 0.2.8.3_rc4: |
2309 | + |
2310 | - New setting: KEEP_PLAYER_SLOT allows the server to kick (preferably) spectators |
2311 | - if it gets full so there is always one slot open for players |
2312 | + if it gets full so there is always one slot open for players |
2313 | - New setting: ACCESS_LEVEL_AUTOKICK_IMMUNITY sets the access level required |
2314 | to be immune from such kicks (and idle autokicks, too) |
2315 | - Intercepted chat commands are now written to ladderlog.txt. Format: |
2316 | @@ -65,6 +113,7 @@ |
2317 | - fast finish works again |
2318 | |
2319 | Changes since 0.2.8.3_rc3: |
2320 | + |
2321 | - Pinging previously popular servers earlier for quicker server |
2322 | browsing |
2323 | - Improved master server random polling, the second polled master now |
2324 | @@ -77,6 +126,7 @@ |
2325 | changes user level for name\_with\_spaces@forums |
2326 | |
2327 | Changes since 0.2.8.3_rc2: |
2328 | + |
2329 | - Fixed crash with server polling |
2330 | - ROUND_WINNER and MATCH_WINNER ladderlog events now include the players of |
2331 | the team. |
2332 | @@ -87,12 +137,14 @@ |
2333 | of shuffle messages displayed. |
2334 | |
2335 | Changes since 0.2.8.3_rc1: |
2336 | + |
2337 | - Fixed dark color filters, such as FILTER_DARK_COLOR_STRINGS, to not filter |
2338 | the reset color. |
2339 | - ASE moviepack models no longer have a vertex count limit |
2340 | - Fixed endless recursion crash between rounds |
2341 | |
2342 | Changes since 0.2.8.3_beta3: |
2343 | + |
2344 | - Chat prefix spam protection. Guards against prefix spam, such as when a |
2345 | user always changes their chat message color, or prefixes all messages |
2346 | with a clan tag. Toggle with the PREFIX_SPAM_ENABLE setting. |
2347 | @@ -127,7 +179,8 @@ |
2348 | |
2349 | Changes since 0.2.8.2: |
2350 | |
2351 | - New settings and commands: |
2352 | +New settings and commands: |
2353 | + |
2354 | - MIN_PLAY_TIME_*: minimal play time required before you are allowed to |
2355 | play on this server. |
2356 | - SPAM_AUTOKICK_COUNT: minimal number of spam warning messages you get in a |
2357 | @@ -217,6 +270,7 @@ |
2358 | when AUTO_TEAM is enabled |
2359 | |
2360 | If --enable-armathentication was activated: |
2361 | + |
2362 | - /lock, /unlock, /invite and /uninvite team management chat for players of |
2363 | access level ACCESS_LEVEL_TEAM or better. |
2364 | - /teams chat command that rougly prints team layout. |
2365 | @@ -237,7 +291,8 @@ |
2366 | - /login chat command then uses the more secure hashed base logins |
2367 | - new chat commands /op and /deop to change other players' access rights |
2368 | |
2369 | - Featurelets: |
2370 | +Featurelets: |
2371 | + |
2372 | - Added Polish language file |
2373 | - clientside play time tracking and server controlled minimal required experience |
2374 | to be allowed to play. |
2375 | @@ -286,19 +341,19 @@ |
2376 | Armagetron Advanced, the paths it uses, links to the main site, wiki |
2377 | and forums and the names of the project admins. |
2378 | - New entries in ladderlog.txt: |
2379 | - - GAME_TIME <time> (only if enabled via the LADDERLOG_GAME_TIME_INTERVAL |
2380 | + GAME_TIME <time> (only if enabled via the LADDERLOG_GAME_TIME_INTERVAL |
2381 | setting): The time that has passed since the last start of a round |
2382 | - - BASEZONE_CONQUERED <team> <x> <y>: A fortress zone belonging to <team> |
2383 | + BASEZONE_CONQUERED <team> <x> <y>: A fortress zone belonging to <team> |
2384 | at the coordinates (<x>, <y>) has been conquered |
2385 | - - BASEZONE_CONQUERER <player>: at the time of the last BASEZONE_CONQUERED |
2386 | + BASEZONE_CONQUERER <player>: at the time of the last BASEZONE_CONQUERED |
2387 | message, <player> has been in the conquered zone |
2388 | - - ONLINE_PLAYER <player> [<ping [<team>]]: At the beginning of the round, |
2389 | + ONLINE_PLAYER <player> [<ping [<team>]]: At the beginning of the round, |
2390 | <player> had <ping> and was on <team>. This line is not printed for bots |
2391 | - - NUM_HUMANS <n>: There are <n> players that are not AIs and are part of a |
2392 | + NUM_HUMANS <n>: There are <n> players that are not AIs and are part of a |
2393 | team. |
2394 | - - ROUND_SCORE has the player's team name appended. |
2395 | - - ROUND_SCORE_TEAM: score a team accumulated during the last round. |
2396 | - - WAIT_FOR_EXTENAL_SCRIPT: printed if the setting of the same name is |
2397 | + ROUND_SCORE has the player's team name appended. |
2398 | + ROUND_SCORE_TEAM: score a team accumulated during the last round. |
2399 | + WAIT_FOR_EXTENAL_SCRIPT: printed if the setting of the same name is |
2400 | enabled. In this case the server will delay the start of the next round |
2401 | until WAIT_FOR_EXTENAL_SCRIPT_TIMEOUT is reached or the setting is |
2402 | disabled. |
2403 | @@ -310,7 +365,8 @@ |
2404 | - /players now shows the players' color and allows searching |
2405 | - TEAM_ELIMINATION_MODE sets the way ArmagetronAd removes teams when there's too much teams. |
2406 | |
2407 | - Bugfixes: |
2408 | +Bugfixes: |
2409 | + |
2410 | - Added compensation for drifting timers (observed often with |
2411 | overclocked mainboards) |
2412 | - Text input fields now let the text wrap correctly and make use of the space allocated |
2413 | @@ -339,7 +395,8 @@ |
2414 | - More accurate Lag-O-Meter by meriton. |
2415 | - Zones were sometimes invisible. |
2416 | |
2417 | - Internals: |
2418 | +Internals: |
2419 | + |
2420 | - A complete netsync cycle is now sn_Receive(); nNetObject::SyncAll(); sn_SendPlanned();. |
2421 | - Ping charity is now completely server controlled. |
2422 | |
2423 | @@ -410,6 +467,7 @@ |
2424 | |
2425 | Changes since 0.2.8.0_rc4: |
2426 | Bugfixes: |
2427 | + |
2428 | - SECURITY FIX: via a MAP_FILE path with included .., it was possible |
2429 | to write files anywhere, provided they did not exist previously. |
2430 | Clients with this vulnerability are locked out of the server now. |
2431 | @@ -458,11 +516,11 @@ |
2432 | Cycle turns are now executed more accurately on the server. |
2433 | Timer stuttering at end of round (was non-critical, but ugly). |
2434 | Custom camera did not turn when the internal camera was |
2435 | - configured not to turn. |
2436 | + configured not to turn. |
2437 | Idle player kick code crashed when it kicked a client with |
2438 | - many players. |
2439 | + many players. |
2440 | The code that removes inactive players after a while removed |
2441 | - the AI players. |
2442 | + the AI players. |
2443 | - Reverted smart camera movement to pre-beta4 behavior, |
2444 | the new code made some players seasick :) |
2445 | - Ingame admin interface gives more useful information to the invoker |
2446 | @@ -502,7 +560,7 @@ |
2447 | Cycles sometimes warped to odd locations. |
2448 | - Tweaked smart camera to not stay in front of the cycle so much. |
2449 | Tweaked smart camera custom glancing. |
2450 | - Report back whether you like or hate it! |
2451 | + Report back whether you like or hate it! |
2452 | - Made custom camera even more configurable, changed default settings. |
2453 | (old ones are still in settings.cfg) |
2454 | - Forced glancing end on cycle turn now looks better. |
2455 | @@ -601,7 +659,7 @@ |
2456 | - Colored explosions! |
2457 | - HUD enhancements: customization, works in splitscreen mode |
2458 | - Directory scanning code added ( not yet visible, will be used for |
2459 | - moviepack/cycle selection ) |
2460 | + moviepack/cycle selection ) |
2461 | - Moviepack sky texture support |
2462 | - Master server can now run on windows, too |
2463 | - Explosion sound now actually works |
2464 | @@ -746,3 +804,4 @@ |
2465 | - the moviepack title screen is displayed |
2466 | - Linux version: easier system-wide installation with RPM packages |
2467 | or "make install" |
2468 | + |
2469 | |
2470 | === modified file 'batch/checkbugle.py' |
2471 | --- batch/checkbugle.py 2008-12-11 08:15:17 +0000 |
2472 | +++ batch/checkbugle.py 2020-07-03 06:03:19 +0000 |
2473 | @@ -2,6 +2,8 @@ |
2474 | |
2475 | # checks bugle trace log for OpenGL problems |
2476 | |
2477 | +from __future__ import print_function |
2478 | + |
2479 | import sys |
2480 | |
2481 | count = 0 |
2482 | @@ -38,7 +40,7 @@ |
2483 | lineNo=lineNo+1 |
2484 | |
2485 | if False and function.find( 'List' ) >= 0 and function.find( 'Call' ) < 0: |
2486 | - print "%d (%s) (%s) (%s) (%s)" % (count, line[:-1], function, args, result) |
2487 | + print("%d (%s) (%s) (%s) (%s)" % (count, line[:-1], function, args, result)) |
2488 | |
2489 | count = count + 1 |
2490 | if count > 100: |
2491 | @@ -46,12 +48,12 @@ |
2492 | |
2493 | if function == 'glBegin': |
2494 | if inBlock: |
2495 | - print "Error: Still in block.", lineNo |
2496 | + print("Error: Still in block.", lineNo) |
2497 | exit(-1) |
2498 | inBlock = True |
2499 | elif function == 'glEnd': |
2500 | if not inBlock: |
2501 | - print "Error: Not in block.", lineNo |
2502 | + print("Error: Not in block.", lineNo) |
2503 | exit(-1) |
2504 | inBlock = False |
2505 | else: |
2506 | @@ -64,15 +66,15 @@ |
2507 | if function == 'glGenLists': |
2508 | legalLists[result] = True |
2509 | if inList: |
2510 | - print "Error: Still in list generation.", lineNo |
2511 | + print("Error: Still in list generation.", lineNo) |
2512 | exit(-1) |
2513 | |
2514 | if function == 'glEndList': |
2515 | if not inList: |
2516 | - print "Error: Not in list generation.", lineNo |
2517 | + print("Error: Not in list generation.", lineNo) |
2518 | exit(-1) |
2519 | if inBlockAtListStart != inBlock: |
2520 | - print "Error: glBegin/glEnd mismatch in list.", lineNo |
2521 | + print("Error: glBegin/glEnd mismatch in list.", lineNo) |
2522 | exit(-1) |
2523 | inList=False |
2524 | |
2525 | @@ -81,50 +83,50 @@ |
2526 | list=args[0:args.find(',')] |
2527 | currentList=list |
2528 | if inList: |
2529 | - print "Error: Still in list generation.", lineNo |
2530 | + print("Error: Still in list generation.", lineNo) |
2531 | exit(-1) |
2532 | if not legalLists[list]: |
2533 | - print "Error: list %s used, but not generated." % [list], lineNo |
2534 | + print("Error: list %s used, but not generated." % [list], lineNo) |
2535 | exit(-1) |
2536 | setLists[list]=True |
2537 | inList=True |
2538 | elif inList: |
2539 | if not function in usedInList: |
2540 | usedInList[function]=lineNo |
2541 | - #print lineNo, function |
2542 | + #print(lineNo, function) |
2543 | |
2544 | if function == 'glCallList': |
2545 | list=args |
2546 | if not legalLists[list]: |
2547 | - print "Error: list %s used, but not generated." % [list], lineNo |
2548 | + print("Error: list %s used, but not generated." % [list], lineNo) |
2549 | exit(-1) |
2550 | if inList and currentList == list: |
2551 | - print "Error: list %s used, but it's just getting generated." % [list], lineNo |
2552 | + print("Error: list %s used, but it's just getting generated." % [list], lineNo) |
2553 | exit(-1) |
2554 | if not setLists[list]: |
2555 | - print "Error: list %s used, but not set." % [list], lineNo |
2556 | + print("Error: list %s used, but not set." % [list], lineNo) |
2557 | exit(-1) |
2558 | |
2559 | if function == 'glDeleteLists': |
2560 | list=args[0:args.find(',')] |
2561 | if not legalLists[list]: |
2562 | - print "Error: list %s used, but not generated." % [list], lineNo |
2563 | + print("Error: list %s used, but not generated." % [list], lineNo) |
2564 | exit(-1) |
2565 | legalLists[list]=False |
2566 | setLists[list]=False |
2567 | |
2568 | -print "Used in display lists:" |
2569 | +print("Used in display lists:") |
2570 | for f in usedInList: |
2571 | - print f, usedInList[f] |
2572 | + print(f, usedInList[f]) |
2573 | |
2574 | |
2575 | -print "Used in glBegin/End:" |
2576 | +print("Used in glBegin/End:") |
2577 | for f in usedInBlock: |
2578 | - print f, usedInBlock[f] |
2579 | + print(f, usedInBlock[f]) |
2580 | |
2581 | |
2582 | -print "Used outside glBegin/End:" |
2583 | +print("Used outside glBegin/End:") |
2584 | for f in usedOutBlock: |
2585 | - print f, usedOutBlock[f] |
2586 | + print(f, usedOutBlock[f]) |
2587 | |
2588 | |
2589 | |
2590 | === added file 'batch/git_ff_to_release.sh' |
2591 | --- batch/git_ff_to_release.sh 1970-01-01 00:00:00 +0000 |
2592 | +++ batch/git_ff_to_release.sh 2020-07-03 06:03:19 +0000 |
2593 | @@ -0,0 +1,68 @@ |
2594 | +#!/bin/sh |
2595 | + |
2596 | +# Depending on which branch this is invoked on, fast forward from next a little less stable branch |
2597 | +# master -> beta, beta -> release |
2598 | + |
2599 | +#set -x |
2600 | + |
2601 | +sd=$1 |
2602 | +test -z "${sd}" && sd=`dirname $0` |
2603 | + |
2604 | +git update-index --refresh |
2605 | +if ! git diff-index --quiet HEAD --; then |
2606 | + echo "" |
2607 | + echo "Local modifications detected, abort. Commit first." |
2608 | + exit 1 |
2609 | +fi |
2610 | + |
2611 | +HASH=`git -C ${sd} rev-parse HEAD` |
2612 | +BRANCH=`git -C ${sd} rev-parse --abbrev-ref HEAD` |
2613 | +# BRANCH=beta_0.2.9 |
2614 | +SUFFIX=`echo ${BRANCH} | sed -e s/^release// -e s/^beta// -e s/^legacy//` |
2615 | + |
2616 | +MERGE_FROM="" |
2617 | + |
2618 | +case ${BRANCH} in |
2619 | + release*) |
2620 | + MERGE_FROM=beta${SUFFIX} |
2621 | + ;; |
2622 | + beta) |
2623 | + MERGE_FROM=master |
2624 | + ;; |
2625 | + beta*) |
2626 | + if test "${SUFFIX}" = "_0.2.9"; then |
2627 | + SUFFIX=_0.2.8 |
2628 | + fi |
2629 | + MERGE_FROM=legacy${SUFFIX} |
2630 | + ;; |
2631 | + *) |
2632 | + echo "Unknown branch, don't know what to do." |
2633 | + exit 0 |
2634 | + ;; |
2635 | +esac |
2636 | + |
2637 | +git -C ${sd} fetch origin || exit $? |
2638 | + |
2639 | +# merge the listed branches from origin and, if present, locally |
2640 | +TOTAL_MERGE="" |
2641 | +for s in ${MERGE_FROM}; do |
2642 | + TOTAL_MERGE="${TOTAL_MERGE} origin/$s" |
2643 | + if git -C ${sd} branch -l | grep -q " $s\$"; then |
2644 | + TOTAL_MERGE="${TOTAL_MERGE} ${s}" |
2645 | + fi |
2646 | +done |
2647 | + |
2648 | +git -C ${sd} merge --ff-only ${TOTAL_MERGE} || exit $? |
2649 | + |
2650 | +NEW_HASH=`git -C ${sd} rev-parse HEAD` |
2651 | +test ${NEW_HASH} = ${HASH} && exit 0 |
2652 | + |
2653 | +echo |
2654 | +echo '****************************' |
2655 | +echo 'New revisions in this merge:' |
2656 | +echo '****************************' |
2657 | +git log ${HASH}.. |
2658 | + |
2659 | +echo |
2660 | +echo In case you change your mind and 'git reset --hard', the pre-merge git revision is: |
2661 | +echo ${HASH} |
2662 | \ No newline at end of file |
2663 | |
2664 | === added file 'batch/git_merge_safe_sources.sh' |
2665 | --- batch/git_merge_safe_sources.sh 1970-01-01 00:00:00 +0000 |
2666 | +++ batch/git_merge_safe_sources.sh 2020-07-03 06:03:19 +0000 |
2667 | @@ -0,0 +1,74 @@ |
2668 | +#!/bin/sh |
2669 | + |
2670 | +# Depending on which branch this is invoked on, merge all other branches that can be deemed safe |
2671 | + |
2672 | +#set -x |
2673 | + |
2674 | +sd=$1 |
2675 | +test -z "${sd}" && sd=`dirname $0` |
2676 | + |
2677 | +git -C ${sd} update-index --refresh |
2678 | +if ! git -C ${sd} diff-index --quiet HEAD --; then |
2679 | + echo "" |
2680 | + echo "Local modifications detected, abort. Commit first." |
2681 | + exit 1 |
2682 | +fi |
2683 | + |
2684 | +HASH=`git -C ${sd} rev-parse HEAD` |
2685 | +BRANCH=`git -C ${sd} rev-parse --abbrev-ref HEAD` |
2686 | +#BRANCH=beta_0.2.9 |
2687 | +SUFFIX=`echo ${BRANCH} | sed -e s/^release// -e s/^beta// -e s/^legacy//` |
2688 | + |
2689 | +MERGE_FROM="" |
2690 | + |
2691 | +case ${BRANCH} in |
2692 | + release*) |
2693 | + echo "Release branch, nothing safe to merge." |
2694 | + exit 0 |
2695 | + ;; |
2696 | + beta*) |
2697 | + MERGE_FROM=release${SUFFIX} |
2698 | + ;; |
2699 | + legacy*) |
2700 | + if test "${SUFFIX}" = "_0.2.8"; then |
2701 | + SUFFIX=_0.2.9 |
2702 | + MERGE_FROM=legacy_0.2.8.3 |
2703 | + fi |
2704 | + MERGE_FROM="${MERGE_FROM} release${SUFFIX} beta${SUFFIX}" |
2705 | + ;; |
2706 | + master) |
2707 | + MERGE_FROM="legacy_0.2.8 legacy_0.2.8.3" |
2708 | + #MERGE_FROM="release beta legacy_0.2.8 legacy_0.2.8.3" |
2709 | + ;; |
2710 | + *) |
2711 | + echo "Unknown branch, don't know what to do." |
2712 | + exit 0 |
2713 | + ;; |
2714 | +esac |
2715 | + |
2716 | +git -C ${sd} fetch origin || exit $? |
2717 | + |
2718 | +# merge the listed branches from origin and, if present, locally |
2719 | +TOTAL_MERGE="" |
2720 | +for s in ${MERGE_FROM}; do |
2721 | + TOTAL_MERGE="${TOTAL_MERGE} origin/$s" |
2722 | + if git -C ${sd} branch -l | grep -q " $s\$"; then |
2723 | + TOTAL_MERGE="${TOTAL_MERGE} ${s}" |
2724 | + fi |
2725 | +done |
2726 | + |
2727 | +git -C ${sd} pull --ff-only origin || exit $? |
2728 | +git -C ${sd} merge ${TOTAL_MERGE} || exit $? |
2729 | + |
2730 | +NEW_HASH=`git -C ${sd} rev-parse HEAD` |
2731 | +test ${NEW_HASH} = ${HASH} && exit 0 |
2732 | + |
2733 | +echo |
2734 | +echo '****************************' |
2735 | +echo 'New revisions in this merge:' |
2736 | +echo '****************************' |
2737 | +git log ${HASH}.. |
2738 | + |
2739 | +echo |
2740 | +echo In case you change your mind and 'git reset --hard', the pre-merge git revision is: |
2741 | +echo ${HASH} |
2742 | \ No newline at end of file |
2743 | |
2744 | === modified file 'batch/ladder.py' |
2745 | --- batch/ladder.py 2006-05-29 01:55:42 +0000 |
2746 | +++ batch/ladder.py 2020-07-03 06:03:19 +0000 |
2747 | @@ -1,6 +1,8 @@ |
2748 | #!/usr/bin/python |
2749 | # purpose: process ladderlog.txt and generate a usefull ladder league from it |
2750 | |
2751 | +from __future__ import print_function |
2752 | + |
2753 | import math |
2754 | |
2755 | |
2756 | @@ -150,12 +152,12 @@ |
2757 | if diagonal < minDiagonal: minDiagonal = diagonal |
2758 | averageDiagonal += diagonal/len(players) |
2759 | |
2760 | - print averageDiagonal |
2761 | + print(averageDiagonal) |
2762 | |
2763 | maxDeviation = 1 |
2764 | if minDiagonal < 0: |
2765 | maxDeviation = -1/minDiagonal |
2766 | - print maxDeviation |
2767 | + print(maxDeviation) |
2768 | |
2769 | # initialize score vector |
2770 | score = {} |
2771 | @@ -197,7 +199,7 @@ |
2772 | error += abs(deltascore[i]) |
2773 | |
2774 | if iter == 100: |
2775 | - print error |
2776 | + print(error) |
2777 | iter = 0 |
2778 | iter += 1 |
2779 | |
2780 | @@ -230,9 +232,9 @@ |
2781 | |
2782 | scoreDataBase = PairScoreDictionary() |
2783 | scoreDataBase.ReadLog( open( "ladderlog.txt" ) ) |
2784 | -#print "read" |
2785 | +#print("read") |
2786 | ladder = scoreDataBase.GenerateLadder() |
2787 | |
2788 | for entry in ladder: |
2789 | - print entry[1], entry[0] |
2790 | + print(entry[1], entry[0]) |
2791 | |
2792 | |
2793 | === added file 'batch/make/patchnotes.py' |
2794 | --- batch/make/patchnotes.py 1970-01-01 00:00:00 +0000 |
2795 | +++ batch/make/patchnotes.py 2020-07-03 06:03:19 +0000 |
2796 | @@ -0,0 +1,204 @@ |
2797 | +#!/usr/bin/python3 |
2798 | +#wd=`dirname $0` |
2799 | + |
2800 | +# generates patch notes from git log references to gitlab issues |
2801 | +# parameters: <path to git repository> <path to frozen changelog> <gitlab team> <gitlab project> |
2802 | + |
2803 | + |
2804 | +# issue query URI sample |
2805 | +# https://gitlab.com/api/v4/projects/9837210/issues?scope=all&state=closed&iids[]=11&iids[]=9 |
2806 | + |
2807 | +# Looks for commit lines of the form |
2808 | +# Implements https://gitlab.com/armagetronad/armagetronad/-/issues/11 |
2809 | +# or |
2810 | +# Fixes #11 |
2811 | +# looks up the referenced issues in the GitLab API, generates a ChangeLog/Patch Note line for each |
2812 | + |
2813 | +import sys, argparse |
2814 | +import subprocess |
2815 | +from packaging import version |
2816 | +from string import Template |
2817 | +import urllib.request |
2818 | +import json |
2819 | + |
2820 | +# checks whether s represents an iteger |
2821 | +def RepresentsInt(s): |
2822 | + try: |
2823 | + int(s) |
2824 | + return True |
2825 | + except ValueError: |
2826 | + return False |
2827 | + |
2828 | +# retrieve tags from git repository |
2829 | +def GetTags(repo, tag_lower_limit): |
2830 | + alltags_raw=subprocess.run(["git", "-C", repo, "tag", "-l", "--merged"], stdout=subprocess.PIPE) |
2831 | + alltags=alltags_raw.stdout.decode('utf-8').split('\n') |
2832 | + return list(filter(lambda x: len(x) > 0 and version.parse(x) >= version.parse(tag_lower_limit), alltags)) |
2833 | + |
2834 | + # sort tags in chronological order (assuming they're all on the same branch) |
2835 | + revisions={} |
2836 | + for tag in tags: |
2837 | + # count number of revisions since tag |
2838 | + revisions_since_tag_raw=subprocess.run(["git", "-C", repo, "rev-list", "--count", tag + ".."], stdout=subprocess.PIPE) |
2839 | + revisions[tag]=int(revisions_since_tag_raw.stdout.decode('utf-8')) |
2840 | + |
2841 | + print(revisions) |
2842 | + tags.sort(key=lambda x: revisions[x], reverse=True) |
2843 | + return tags |
2844 | + |
2845 | +# return (tag, list of issues fixed after tag as integers) |
2846 | +def FixedAfterTag(repo, team, project, tags): |
2847 | + # for each tag, collect which issues have been resolved (Fix.. Close.. Solve.. Implement...) |
2848 | + # or mentioned otherwise |
2849 | + uri_start=Template('https://gitlab.com/${team}/${project}/-/issues/').substitute(team=team, project=project) |
2850 | + # The build system is on Python 3.5, so we're stuck with this mechanism |
2851 | + # print(uri_start) |
2852 | + |
2853 | + last_fixed_in={} |
2854 | + last_mentioned_in={} |
2855 | + issues=set([]) |
2856 | + |
2857 | + for tag in tags: |
2858 | + log_raw=subprocess.run(["git", "-C", repo, "log", tag + ".."], stdout=subprocess.PIPE) |
2859 | + log=log_raw.stdout.decode('utf-8').split('\n') |
2860 | + |
2861 | + for logline in log: |
2862 | + mentions=False |
2863 | + fixes=False |
2864 | + ref=None |
2865 | + if logline[0:4] == ' ': |
2866 | + for word in logline.split(): |
2867 | + if word.startswith(uri_start): |
2868 | + ref = word[len(uri_start):] |
2869 | + elif word.startswith('#'): |
2870 | + ref = word[1:] |
2871 | + if not ref is None and RepresentsInt(ref): |
2872 | + ref=int(ref) |
2873 | + mentions = True |
2874 | + trimmed=logline.strip().upper() |
2875 | + if trimmed.startswith('FIX') or trimmed.startswith('IMPLEMENT') or trimmed.startswith('CLOSE') or trimmed.startswith('SOLVE'): |
2876 | + fixes = True |
2877 | + if fixes: |
2878 | + last_fixed_in[ref] = tag |
2879 | + if mentions: |
2880 | + last_mentioned_in[ref] = tag |
2881 | + issues.add(ref) |
2882 | + |
2883 | + #print(issues) |
2884 | + #print(last_fixed_in) |
2885 | + #print(last_mentioned_in) |
2886 | + |
2887 | + fixed_after_tag={} |
2888 | + for issue in issues: |
2889 | + fixed_in = None |
2890 | + if issue in last_fixed_in: |
2891 | + fixed_in = last_fixed_in[issue] |
2892 | + if fixed_in == None and issue in last_mentioned_in: |
2893 | + fixed_in = last_mentioned_in[issue] |
2894 | + if fixed_in != None: |
2895 | + #print(issue, fixed_in) |
2896 | + fixed_after_tag.setdefault(fixed_in, []).append(issue) |
2897 | + |
2898 | + #print(fixed_after_tag) |
2899 | + return fixed_after_tag |
2900 | + |
2901 | +# retrieves metadata for an issue from gitlab, composes markup patch note line |
2902 | +def GetMarkupLine(team, project, issue): |
2903 | + uri=Template('https://gitlab.com/api/v4/projects/${team}%2F${project}/issues?scope=all&state=closed&iids[]=${issue}').substitute(team=team, project=project, issue=issue) |
2904 | + #print(uri) |
2905 | + with urllib.request.urlopen(uri) as content: |
2906 | + data = json.loads(content.read().decode()) |
2907 | + #print(data) |
2908 | + if len(data) == 0: |
2909 | + return "", None |
2910 | + title = data[0]['title'] |
2911 | + weblink = data[0]['web_url'] |
2912 | + labels = data[0]['labels'] |
2913 | + line = None |
2914 | + if data[0]['state'] == 'closed': |
2915 | + line = Template(' * ${title} ([#${issue}](${weblink}))').substitute(title=title.strip(), issue=issue, weblink=weblink) |
2916 | + #print(line, labels) |
2917 | + if 'Type::Bug' in labels: |
2918 | + return 'Fixed Bugs', line |
2919 | + elif 'Type::Feature' in labels: |
2920 | + return 'New Features', line |
2921 | + elif 'Type::Removed' in labels: |
2922 | + return 'Removed', line |
2923 | + elif 'Type::Breaking' in labels: |
2924 | + return 'Breaking Changes', line |
2925 | + else: |
2926 | + return 'Other Changes', line |
2927 | + |
2928 | +# parse given frozen changelog, look for last 'changes since' note, extract tag name |
2929 | +def GetLastFrozenTag(frozen): |
2930 | + file = open(frozen, 'r') |
2931 | + begin = '#### Changes since ' |
2932 | + for line in file: |
2933 | + if line.startswith(begin): |
2934 | + version=line[len(begin):] |
2935 | + version = version.strip(':\n ') |
2936 | + if len(version) > 2: |
2937 | + if version[0] != 'v': |
2938 | + version = 'v' + version |
2939 | + return version |
2940 | + |
2941 | +parser = argparse.ArgumentParser(description='Generates ChangeLog/Patch Notes') |
2942 | +parser.add_argument('repository', help='Path to the local git repository') |
2943 | +parser.add_argument('frozen_changelog', help='Path to a previous, now immutable changelog') |
2944 | +parser.add_argument('gitlab_team', help='Team name on gitlab') |
2945 | +parser.add_argument('gitlab_project', help='Project name on gitlab') |
2946 | +parser.add_argument('-p', help='Just print patch notes', action='store_true') |
2947 | + |
2948 | +args = parser.parse_args() |
2949 | + |
2950 | +if len(sys.argv) < 5: |
2951 | + print("Not enough arguments") |
2952 | + exit(1) |
2953 | + |
2954 | +patchnotes = args.p |
2955 | +repo = args.repository |
2956 | +frozen = args.frozen_changelog |
2957 | +team = args.gitlab_team |
2958 | +project = args.gitlab_project |
2959 | + |
2960 | +# adapt for other branches |
2961 | +tag_lower_limit=GetLastFrozenTag(frozen) |
2962 | +# print(tag_lower_limit) |
2963 | + |
2964 | +# get all tags relevant to the current branch |
2965 | +tags=GetTags(repo, tag_lower_limit) |
2966 | +#print("tags =", tags) |
2967 | + |
2968 | +fixed_after_tag=FixedAfterTag(repo, team, project, tags) |
2969 | +#print(fixed_after_tag) |
2970 | + |
2971 | +for tag in fixed_after_tag: |
2972 | + # print(tag) |
2973 | + fixed = fixed_after_tag[tag] |
2974 | + # luckily, the category names are alphabetically in the order we want them in :) |
2975 | + categories={} |
2976 | + #categories={'Fixed Bugs' : [], 'New Features' : [], 'Other Changes': []} |
2977 | + for issue in fixed: |
2978 | + category, line=GetMarkupLine(team, project, issue) |
2979 | + if not line is None: |
2980 | + categories.setdefault(category, []).append(line) |
2981 | + |
2982 | + if len(categories) > 0: |
2983 | + printtag=tag |
2984 | + if tag[0] == 'v': |
2985 | + printtag = tag[1:] |
2986 | + print() |
2987 | + print("#### Changes since", printtag + ":") |
2988 | + print() |
2989 | + for category in categories: |
2990 | + print("#####", category) |
2991 | + print() |
2992 | + for line in categories[category]: |
2993 | + print(line) |
2994 | + print() |
2995 | + if patchnotes: |
2996 | + exit(0) |
2997 | + print() |
2998 | + |
2999 | +file = open(frozen, 'r') |
3000 | +print(file.read()) |
3001 | |
3002 | === modified file 'batch/make/sortresources' |
3003 | --- batch/make/sortresources 2007-11-04 03:21:24 +0000 |
3004 | +++ batch/make/sortresources 2020-07-03 06:03:19 +0000 |
3005 | @@ -27,7 +27,9 @@ |
3006 | find ${destination}/ -name "*~" -exec rm -rf \{\} \; |
3007 | |
3008 | # rename them properly |
3009 | -python ${sortresources} -v ${destination} || exit 1 |
3010 | +PYTHON=`which python3 python python2 2> /dev/null | head -n 1` |
3011 | +echo python is ${PYTHON} |
3012 | +${PYTHON} ${sortresources} -v ${destination} || exit 1 |
3013 | |
3014 | # silently remove empty directories |
3015 | find ${destination} -type d -depth -exec rmdir \{\} \; > /dev/null 2>&1 |
3016 | |
3017 | === modified file 'batch/make/sortresources.py' |
3018 | --- batch/make/sortresources.py 2012-07-21 19:16:26 +0000 |
3019 | +++ batch/make/sortresources.py 2020-07-03 06:03:19 +0000 |
3020 | @@ -8,9 +8,10 @@ |
3021 | # sortresources.py <path_to_seach_and_sort> |
3022 | # use sortresources.py -h to get command line option help |
3023 | |
3024 | +from __future__ import print_function |
3025 | + |
3026 | from xml import sax |
3027 | from xml.sax import handler |
3028 | -import string |
3029 | import os.path |
3030 | import os |
3031 | import sys |
3032 | @@ -161,7 +162,7 @@ |
3033 | return False |
3034 | |
3035 | if doPrint: |
3036 | - print("renaming " + oldFile + " -> " + newFile) |
3037 | + print("renaming", oldFile, "->", newFile) |
3038 | |
3039 | # move file oldFile to newFile, setting apache rewrite rules to keep the file |
3040 | # fetchable from its old position |
3041 | @@ -183,8 +184,8 @@ |
3042 | # open .htaccess file in the old directory for reading |
3043 | accessFile = open(htaccessPath) |
3044 | for line in accessFile: |
3045 | - splitLineLower = string.split(line.lower()) |
3046 | - splitLine = string.split(line) |
3047 | + splitLineLower = str.split(line.lower()) |
3048 | + splitLine = str.split(line) |
3049 | if splitLineLower[0] == "rewriteengine": |
3050 | # rewriting is already mentioned; we don't have to enable it laster. |
3051 | needEngine = False |
3052 | @@ -195,7 +196,7 @@ |
3053 | # nothing to do |
3054 | return |
3055 | else: |
3056 | - print("Warning: There already is a different RewriteRule for " + oldFile + " in place.") |
3057 | + print("Warning: There already is a different RewriteRule for", oldFile, "in place.") |
3058 | except: pass |
3059 | |
3060 | # open .htaccess file for appended writing |
3061 | @@ -273,7 +274,7 @@ |
3062 | if arg[1] == "v": |
3063 | doPrint = True |
3064 | continue |
3065 | - print("\nUnknown option: " + arg) |
3066 | + print("\nUnknown option:", arg) |
3067 | Options(-1) |
3068 | else: |
3069 | Options(-1) |
3070 | |
3071 | === modified file 'batch/make/uninstall' |
3072 | --- batch/make/uninstall 2011-07-19 12:09:41 +0000 |
3073 | +++ batch/make/uninstall 2020-07-03 06:03:19 +0000 |
3074 | @@ -69,7 +69,7 @@ |
3075 | |
3076 | # compose uninstall script from file and directory list |
3077 | cat ${UNINSTALL}.files >> ${UNINSTALL} |
3078 | -sort ${UNINSTALL}.dir --reverse --unique >> ${UNINSTALL} |
3079 | +sort ${UNINSTALL}.dir -ru >> ${UNINSTALL} |
3080 | |
3081 | rm -rf ${DEST} |
3082 | |
3083 | |
3084 | === added file 'batch/make/update_changelog' |
3085 | --- batch/make/update_changelog 1970-01-01 00:00:00 +0000 |
3086 | +++ batch/make/update_changelog 2020-07-03 06:03:19 +0000 |
3087 | @@ -0,0 +1,13 @@ |
3088 | +#!/bin/sh |
3089 | +# Updates CHANGELOG.md from CHANGELOG_FROZEN.md, git history and launchpad issues |
3090 | +# usage: update_changelog |
3091 | + |
3092 | +set -x |
3093 | + |
3094 | +md=`dirname $0` |
3095 | +top_srcdir=${md}/../../ |
3096 | + |
3097 | +${md}/patchnotes.py ${top_srcdir} ${top_srcdir}/CHANGELOG_FROZEN.md armagetronad armagetronad > ${top_srcdir}/CHANGELOG.md |
3098 | + |
3099 | +sed < ${top_srcdir}/CHANGELOG.md > ${top_srcdir}/NEWS -e "s/^ \* /- /" -e "s/^ - / /" -e "s/^ / /" -e "s/^##### */ /" -e "s/^#### *//" -e "s/^##* *//" -e 's,(\[\(.*\)\](\(.*\))),(\1),' |
3100 | + |
3101 | |
3102 | === modified file 'batch/make/version' |
3103 | --- batch/make/version 2019-03-04 00:53:47 +0000 |
3104 | +++ batch/make/version 2020-07-03 06:03:19 +0000 |
3105 | @@ -2,10 +2,16 @@ |
3106 | # determines the version of the sources |
3107 | # usage: version <source directory> |
3108 | |
3109 | -#set -x |
3110 | +# set -x |
3111 | |
3112 | srcdir="$1" |
3113 | |
3114 | +# if we're building via CI from a protected tag, that is our version |
3115 | +if test "${CI_COMMIT_REF_PROTECTED}" = "true" && ! test -z "${CI_COMMIT_TAG}"; then |
3116 | + echo "${CI_COMMIT_TAG}" | sed -e s/^v// |
3117 | + exit 0 |
3118 | +fi |
3119 | + |
3120 | # set version parts to defaults for CVS snapshot |
3121 | major_version=`cat ${srcdir}/major_version` |
3122 | minor_version_proto=`cat ${srcdir}/minor_version` |
3123 | @@ -97,7 +103,10 @@ |
3124 | fi |
3125 | fi |
3126 | |
3127 | -if test -d "${srcdir}/.git"; then |
3128 | +# try to get a good guess about which branch we're on |
3129 | +GIT_BRANCH="alpha" |
3130 | + |
3131 | +if test -e "${srcdir}/.git"; then |
3132 | # check for a tag |
3133 | cd $srcdir |
3134 | # todo: once we have make tags, consider just git describe --tags as version ID. |
3135 | @@ -106,7 +115,8 @@ |
3136 | minor_version="" |
3137 | DATE="" |
3138 | else |
3139 | - if git diff-index --quiet HEAD --; then |
3140 | + git update-index --refresh > /dev/null |
3141 | + if git diff-index --quiet HEAD --; then |
3142 | # local checkout clean, just use revno |
3143 | DATE=_z`git rev-list HEAD --count` |
3144 | else |
3145 | @@ -114,11 +124,23 @@ |
3146 | DATE=_z`git rev-list HEAD --count`_$DATE |
3147 | fi |
3148 | fi |
3149 | + |
3150 | + GIT_BRANCH=`git -C ${srcdir} rev-parse --abbrev-ref HEAD` |
3151 | fi |
3152 | +test -z "${CI_COMMIT_BRANCH}" || GIT_BRANCH=${CI_COMMIT_BRANCH} |
3153 | |
3154 | if test -z "$minor_version" |
3155 | then |
3156 | test -z "$DATE" || minor_version=`echo ${minor_version_proto} | sed -e "s,DATE,$DATE," -e "s,YYYYMMDD,$DATE,"` |
3157 | fi |
3158 | |
3159 | +if test "${CI_COMMIT_REF_PROTECTED}" = "true"; then |
3160 | + # determine alpha/beta/rc status based on branch |
3161 | + if echo ${GIT_BRANCH} | grep -q "^beta"; then |
3162 | + minor_version=`echo ${minor_version} | sed -e s,alpha,beta,` |
3163 | + elif echo ${GIT_BRANCH} | grep -q "^release"; then |
3164 | + minor_version=`echo ${minor_version} | sed -e s,alpha,rc,` |
3165 | + fi |
3166 | +fi |
3167 | + |
3168 | echo $major_version$minor_version |
3169 | |
3170 | === modified file 'bootstrap.sh' |
3171 | --- bootstrap.sh 2019-07-26 01:01:51 +0000 |
3172 | +++ bootstrap.sh 2020-07-03 06:03:19 +0000 |
3173 | @@ -10,7 +10,7 @@ |
3174 | rm -f version |
3175 | fi |
3176 | echo "Copying license..." |
3177 | -cp COPYING.txt COPYING |
3178 | +test -r COPYING || cp COPYING.txt COPYING || exit $? |
3179 | echo "Running aclocal..." |
3180 | aclocal || { rm aclocal.m4; exit 1; } |
3181 | echo "Running autoheader..." |
3182 | |
3183 | === removed file 'config.guess' |
3184 | === modified file 'config/settings.cfg' |
3185 | --- config/settings.cfg 2016-03-19 07:05:52 +0000 |
3186 | +++ config/settings.cfg 2020-07-03 06:03:19 +0000 |
3187 | @@ -434,6 +434,8 @@ |
3188 | FILTER_NAME_ENDS 1 # Filter whitespace from beginning and end of player names. |
3189 | FILTER_NAME_MIDDLE 1 # Filter excess whitespace and other junk from the middle of player names. |
3190 | FILTER_COLOR_SERVER_NAMES 0 # Filter color codes from server names in the server browser. Only affects the client. |
3191 | +VERIFY_COLOR_STRICT 1 # Verify color codes before interpreting them. Capital letters and anything not 0-9, a-f is not considered a color code then. If set to 0 (the in code default), out of range ascii characters are accepted and interpreted as 0. |
3192 | + |
3193 | |
3194 | SILENCE_DEFAULT 0 # silence new players by default? |
3195 | ENABLE_CHAT 1 # allow public messages? |
3196 | |
3197 | === modified file 'config/settings_dedicated.cfg' |
3198 | --- config/settings_dedicated.cfg 2014-03-30 06:31:13 +0000 |
3199 | +++ config/settings_dedicated.cfg 2020-07-03 06:03:19 +0000 |
3200 | @@ -235,7 +235,7 @@ |
3201 | PING_FLOOD_TIME_100 100.0 # Minimum time for 100 ping packets to arrive. |
3202 | PING_FLOOD_GLOBAL .1 # The same times, multiplied by this value, count for all pings from all machines. Negative values disable global flood protection. |
3203 | CONNECTION_FLOOD_SENSITIVITY .01 # The times PING_FLOOD_TIME_X, multiplied by this value, count for all incoming messages from clients not connected already. A flood here activates turtle mode. Negative values disable global flood protection. |
3204 | -CONNECTION_LIMIT 100 # Maximum number of packets from unknown peers to handle at one |
3205 | +CONNECTION_LIMIT 5 # Maximum number of packets from unknown peers to handle at one |
3206 | ANTI_SPOOF 0 # If set to 1, checks connecting clients for spoofed IPs are done. Only clients passing a connectivity test are allowed in. This is done in turtle mode automatically, but may be useful to have on at all times. |
3207 | |
3208 | |
3209 | |
3210 | === modified file 'configure.ac' |
3211 | --- configure.ac 2019-08-21 22:59:09 +0000 |
3212 | +++ configure.ac 2020-07-03 06:03:19 +0000 |
3213 | @@ -1,4 +1,4 @@ |
3214 | -dnl I would like to do this to generate the version number... |
3215 | +/dnl I would like to do this to generate the version number... |
3216 | dnl AC_DEFUN([AUTOMATIC_VERSION],syscmd([sh batch/make/version .])) |
3217 | |
3218 | dnl but have to do this with version generated in bootstrap.sh instead for some reason |
3219 | @@ -29,7 +29,7 @@ |
3220 | dnl AC_CANONICAL_HOST |
3221 | |
3222 | AC_PROG_RANLIB |
3223 | -AM_INIT_AUTOMAKE([subdir-objects]) |
3224 | +AM_INIT_AUTOMAKE([subdir-objects tar-ustar]) |
3225 | |
3226 | dnl detect which link commant to use |
3227 | AC_PROG_LN_S |
3228 | @@ -38,14 +38,14 @@ |
3229 | AC_CHECK_PROG(HAVE_M4,m4,true,false) |
3230 | AM_CONDITIONAL(HAVE_M4, test $HAVE_M4 = true) |
3231 | |
3232 | -dnl check whether date accepts -r to refer to a file |
3233 | -AM_CONDITIONAL(DATE_R, date +"%Y" -r $0 > /dev/null 2>&1) |
3234 | +dnl dirty trick to allow verbatim output to Makefile.in -> Makefile |
3235 | +dnl source: http://gnu-automake.7480.n7.nabble.com/ifdef-endif-issue-td2662.html |
3236 | +AC_SUBST([protect], [""]) |
3237 | |
3238 | dnl export version |
3239 | version=$VERSION |
3240 | AC_SUBST(version) |
3241 | |
3242 | -AC_ARG_VAR(XML2_CONFIG,[Configuration script of libxml2 to use, defaults to xml2-config]) |
3243 | AC_ARG_VAR(CXXFLAGS,Flags passed to the C++ compiler) |
3244 | AC_ARG_VAR(DEBUGLEVEL,[Debug level for developers, normal users can safely ignore it. Accepted values go from 0 to 5. See README-DEVELOPER for details.]) |
3245 | AC_ARG_VAR(CODELEVEL,[Code checking strictness level for developers, normal users can safely ignore it. Accepted values go from 0 to 4. See README-DEVELOPER for details.]) |
3246 | @@ -61,6 +61,8 @@ |
3247 | dnl a modern autoconf is required to process this |
3248 | AC_PREREQ(2.50) |
3249 | |
3250 | +PKG_PROG_PKG_CONFIG |
3251 | + |
3252 | build_regular=true |
3253 | |
3254 | have_lzma=false |
3255 | @@ -131,7 +133,7 @@ |
3256 | |
3257 | # flag to set when mockup versions of the executables should be built to save |
3258 | # compile time when testing the release process |
3259 | -AM_CONDITIONAL(BUILDFAKERELEASE, test "$ARMAGETRONAD_FAKERELEASE" != "") |
3260 | +AM_CONDITIONAL(BUILDFAKERELEASE, test "$ARMAGETRONAD_FAKERELEASE" != "" && test "$ARMAGETRONAD_FAKERELEASE" != "false" && test "$ARMAGETRONAD_FAKERELEASE" != "no") |
3261 | |
3262 | # set replacement variables for dedicated server |
3263 | progtitle_serverorclient=" Client" |
3264 | @@ -330,12 +332,18 @@ |
3265 | dnl ]) |
3266 | dnl]) |
3267 | |
3268 | - |
3269 | if test $CODELEVEL -ge 1; then |
3270 | CXXFLAGS="$CXXFLAGS -Wall" |
3271 | |
3272 | dnl careful, only supported on GCC 4.2 and later |
3273 | AX_CXXFLAGS_GCC_OPTION(-Wno-strict-overflow) |
3274 | + |
3275 | + dnl this one is from GCC 7 (change to 1 or 2 in the future, |
3276 | + dnl leave at default and use [[fallthrough]] (std C++ 17) |
3277 | + AX_CXXFLAGS_GCC_OPTION(-Wimplicit-fallthrough=1) |
3278 | + |
3279 | + |
3280 | + |
3281 | fi |
3282 | |
3283 | dnl test $CODELEVEL -ge 2 && CXXFLAGS="$CXXFLAGS -Wshadow -Wpointer-arith -Wfloat-equal -W -Wcast-qual -Wcast-align -Wconversion -Wunreachable-code --pedantic -Winline" |
3284 | @@ -572,29 +580,10 @@ |
3285 | dnl ************************************************* |
3286 | |
3287 | if test x$armamain = xtrue; then |
3288 | - |
3289 | -test -z "$XML2_CONFIG" && XML2_CONFIG=xml2-config |
3290 | - |
3291 | -if ! $XML2_CONFIG --libs > /dev/null; then |
3292 | - AC_MSG_ERROR([Fatal error: the libxml2 configuration script $XML2_CONFIG does not work/exist.]) |
3293 | -fi |
3294 | - |
3295 | -# if test x$armamain = xtrue; then |
3296 | -AC_CHECK_LIB(xml2,xmlParseMemory, |
3297 | -CPPFLAGS="$CPPFLAGS `$XML2_CONFIG --cflags`" |
3298 | -LIBS="`$XML2_CONFIG --libs` $LIBS" |
3299 | -AC_DEFINE(HAVE_LIBXML2, 1, [Define if you have the xml2 library (-lxml2).]), |
3300 | -AC_MSG_ERROR([You need the library xml2 to compile ${progtitle}. Read the file doc/install_linux.html.]) |
3301 | -,`$XML2_CONFIG --libs`) |
3302 | - |
3303 | -AC_CHECK_FUNC(xmlParserInputBufferCreateFilenameDefault, |
3304 | -, |
3305 | -AC_MSG_ERROR([ |
3306 | - Your xml2 library is obsolete! |
3307 | - Please upgrade to 2.6.11 or later |
3308 | -]) |
3309 | -) |
3310 | -# fi |
3311 | + PKG_CHECK_MODULES([XML2], [libxml-2.0 >= 2.6.11]) |
3312 | + CPPFLAGS="$CPPFLAGS $XML2_CFLAGS" |
3313 | + LIBS="$LIBS $XML2_LIBS" |
3314 | + AC_DEFINE(HAVE_LIBXML2, 1, [Define if you have the libxml2 library]) |
3315 | |
3316 | dnl ************************************************* |
3317 | dnl Armathentication Threading |
3318 | @@ -994,6 +983,10 @@ |
3319 | resource/Makefile |
3320 | config/Makefile |
3321 | desktop/Makefile |
3322 | +docker/build/Makefile |
3323 | +docker/build/setup_ci_test.sh |
3324 | +docker/build/context/version.sh |
3325 | +docker/deploy/targets.sh |
3326 | desktop/armagetronad.desktop |
3327 | ) |
3328 | |
3329 | |
3330 | === modified file 'desktop/armagetronad.desktop.in' |
3331 | --- desktop/armagetronad.desktop.in 2015-04-01 11:44:48 +0000 |
3332 | +++ desktop/armagetronad.desktop.in 2020-07-03 06:03:19 +0000 |
3333 | @@ -1,12 +1,11 @@ |
3334 | [Desktop Entry] |
3335 | Type=Application |
3336 | Name=@progtitle@@progtitle_server@ |
3337 | -Exec=@progname@ |
3338 | +Exec=@progname@ %f |
3339 | Comment=3d light cycle game |
3340 | Comment[de]=dreidimensionales Lichtradspiel |
3341 | Icon=@progname@ |
3342 | Terminal=@build_dedicated@ |
3343 | -Path=@prefix@/bin |
3344 | Categories=Game;ActionGame; |
3345 | StartupNotify=@build_dedicated@ |
3346 | MimeType=application/x-armagetronad; |
3347 | |
3348 | === added directory 'docker' |
3349 | === added file 'docker/README.md' |
3350 | --- docker/README.md 1970-01-01 00:00:00 +0000 |
3351 | +++ docker/README.md 2020-07-03 06:03:19 +0000 |
3352 | @@ -0,0 +1,103 @@ |
3353 | +# Docker Based Build System |
3354 | + |
3355 | +## You Need to Have Installed |
3356 | + * Everything needed for a dedicated server build, plus python packaging |
3357 | + * [docker in rootless mode](https://docs.docker.com/engine/security/rootless/) |
3358 | + * Optional: [docker in reglar mode](https://docs.docker.com/engine/install/ubuntu/) for steam SDK creation |
3359 | + * Optional: [x11docker](https://github.com/mviereck/x11docker) for Windows build system creation |
3360 | + |
3361 | +Ubuntu is recommended, as rootless docker supports the overlay2 driver there; |
3362 | +pretty much everyone else only gets the vfs driver that always copies the whole |
3363 | +image contents. |
3364 | + |
3365 | +For Ubuntu, to be on the safe side: |
3366 | + |
3367 | + sudo apt install git wine-stable automake \ |
3368 | + bison g++ make libboost-dev libboost-thread-dev \ |
3369 | + libprotobuf-dev libzthread-dev python recode curl uidmap python3-packaging |
3370 | + |
3371 | +Then follow the instructions from the rootless docker and x11docker above. |
3372 | + |
3373 | +If you are not using Ubuntu on your main machine, you can run Rootless Docker inside |
3374 | +an Ubuntu virtual machine and export the socket for use on your main machine. The safest way to run such a machine is with one NAT network connection that you enable |
3375 | +a port forwarding [rule for SSH](https://bobcares.com/blog/virtualbox-ssh-nat/) for. |
3376 | +Once that is set up, assuming your UID is 1000 on the host and 1001 on the host and you went with the example 2522 source port, connect to the guest with |
3377 | + |
3378 | + ssh -p 2522 guest -L /run/user/1001/docker.sock:/run/user/1000/docker.sock |
3379 | + |
3380 | +as suggested [here](https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface) and keep that running. Inform your local docker client about the socket with |
3381 | + |
3382 | + export DOCKER_HOST=unix:///run/user/1000/docker.sock |
3383 | + |
3384 | +and off you go. Only your host user can access that socket and can only control a Docker daemon on a virtual machine running as a non-root user. |
3385 | + |
3386 | +To secure the VM some more, you may want to restrict its access to your LAN. You can use [ufw](https://linuxize.com/post/how-to-setup-a-firewall-with-ufw-on-ubuntu-20-04/) for that. Assuming 192.160.0.1 is your router's IP on the LAN, execute on the VM: |
3387 | + |
3388 | + sudo ufw allow ssh # default is to block everything, so before we enable ufw, we better make sure ssh will keep working |
3389 | + sudo ufw enable |
3390 | + sudo ufw allow out to 192.168.0.1 # this allows traffic to your router and therefore the internet |
3391 | + sudo ufw deny out to 10.0.0.0/8 # these block all private subnets; LANs usually use these IPs. If yours does not, adapt. |
3392 | + sudo ufw deny out to 172.16.0.0/12 |
3393 | + sudo ufw deny out to 192.168.0.0/16 |
3394 | + sudo ufw deny in from 10.0.0.0/8 |
3395 | + sudo ufw deny in from 172.16.0.0/12 |
3396 | + sudo ufw deny in from 192.168.0.0/16 |
3397 | + |
3398 | +The 'deny in' rules are redundant because the VM is behind a NAT anyway, but you never know. Maybe you switch it to 'bridged' one day. |
3399 | + |
3400 | +## Contents |
3401 | + |
3402 | + * scripts/ contains helper scripts |
3403 | + * images/ contains everything else needed to build images from scratch |
3404 | + * build/ contains the actual build stuff |
3405 | + * deploy/ contains information about deployments; pre-filled with target definition; each requires certain secrets |
3406 | + |
3407 | +## How to Build |
3408 | + |
3409 | +Assuming the source is in armagetronad, do |
3410 | + |
3411 | + cd armagetronad |
3412 | + ./bootstrap.sh |
3413 | + mkdir ../build |
3414 | + cd ../build |
3415 | + ../armagetronad/configure --disable-glout |
3416 | + cd docker/build |
3417 | + make <target> |
3418 | + |
3419 | +target can be |
3420 | + |
3421 | + * *free*: Build everything relevant for free open source systems |
3422 | + * *closed*: Build steam and windows binaries |
3423 | + * *full*: Build all |
3424 | + * *clean*: Remove build results |
3425 | + |
3426 | +## Developer Notes |
3427 | +To update to another branch, you may have to adapt related branch names in scripts/relevant_branches.sh. |
3428 | + |
3429 | +To make builds use up to date versions of additional git repositories, call scripts/update_gits.sh. |
3430 | + |
3431 | +All scripts can be invoked from any work directory as long as you invoke them with a relative or absoulte path, they find their relevant data directories and other scripts automatically. |
3432 | + |
3433 | +## GitLab CI |
3434 | + |
3435 | +The root .gitlab-ci.yml uses the files in this directory to do the builds. The building should work fine in any gitlab runner configured to use docker, especially the shared runners. |
3436 | + |
3437 | +For deployment, however, an own runner needs to be set up. A stadard setup will do fine, but then run as root. To run a rootless gitlab runner, you must do the following. Install gitlab runner normally, but disable the default service with |
3438 | + |
3439 | + systemctl disable gitlab-runner |
3440 | + |
3441 | +As a regular user, register a runner with |
3442 | + |
3443 | + gitlab-runner register |
3444 | + |
3445 | +the data to fill in is described on the GitLab CI configuration of the project. Then, normally, gitlab-runner uses docker-in-docker to run additional containers. That does not work rootless. Instead, you can just make the docker control socket available to gitlab's container by editing the volumes line in `~/.gitlab-runer/config.toml` to |
3446 | + |
3447 | + volumes = ["/var/run/user/UID/docker.sock:/var/run/docker.sock", "/cache", "/home/USERNAME/secrets:/secrets:ro"] |
3448 | + |
3449 | +replacing UID with your user ID and USERNAME with your username. If you want to use the runner for deployment, the secrets folder then has to contain the credentials required to do so. Read deploy/targets.sh for details. |
3450 | + |
3451 | +Then, run the runner with |
3452 | + |
3453 | + gitlab-runner run |
3454 | + |
3455 | + Security and consistency implication: You then only have one docker instance. Jobs running on your runner can therefore modify the same docker images, for example apply tags. Therefore, all our CI scripts reference used images by their digest and use randomized names for containers so they don't get into one another's way. |
3456 | \ No newline at end of file |
3457 | |
3458 | === added directory 'docker/build' |
3459 | === added file 'docker/build/Makefile.am' |
3460 | --- docker/build/Makefile.am 1970-01-01 00:00:00 +0000 |
3461 | +++ docker/build/Makefile.am 2020-07-03 06:03:19 +0000 |
3462 | @@ -0,0 +1,652 @@ |
3463 | +.PHONY: tarball clean distclean source free closed full all |
3464 | + |
3465 | +# We want everything deleted if something bad happens |
3466 | +.DELETE_ON_ERROR: |
3467 | + |
3468 | +default: |
3469 | + echo "Nothing generic to do." |
3470 | + |
3471 | +# individual targets for split jobs |
3472 | +CI_prepare: gits_artifacts.tag source make_ci.sh rootcontext.64 |
3473 | +CI_linux_server_32: appimage_server_32.tag apptar_server_32.tag |
3474 | +CI_linux_client_32: appimage_client_32.tag apptar_client_32.tag |
3475 | +CI_linux_server_64: appimage_server_64.tag apptar_server_64.tag |
3476 | +CI_linux_client_64: appimage_client_64.tag apptar_client_64.tag |
3477 | +CI_windows: winzip.tag windows.tag |
3478 | +CI_debtest: debtest.tag |
3479 | +CI_linux_steam: steamdirs/steam_linux |
3480 | +CI_windows_steam: steamdirs/steam_windows |
3481 | + |
3482 | +# full open source builds |
3483 | +free.tag: appimage.tag apptar.tag sourcetar.tag |
3484 | + touch $@ |
3485 | +free: free.tag |
3486 | + |
3487 | +# builds for non-open source systems/environments |
3488 | +closed_regular.tag: windows.tag winzip.tag |
3489 | + touch $@ |
3490 | +closed_regular: closed.tag |
3491 | +closed_steam.tag: steam_windows.tag steam_linux.tag |
3492 | + touch $@ |
3493 | +closed_steam: closed_steam.tag |
3494 | +closed.tag: closed_steam.tag closed_regular.tag |
3495 | + touch $@ |
3496 | +closed: closed.tag |
3497 | + |
3498 | +# closed comes first because windows builds take the longest and are not internally parallelized |
3499 | +full.tag: result.winsource_32 result.winsource_steam closed.tag free.tag |
3500 | + touch $@ |
3501 | +full: full.tag |
3502 | + |
3503 | +# what to build from GitLab CI, divided into stages |
3504 | +CI_base.tag: gits.tag source.tag result.build_server_32 result.build_client_64 context.64 |
3505 | + touch $@ |
3506 | + |
3507 | +# minimal expected build to be packable |
3508 | +CI_pack.tag: gits_artifacts.tag source.tag CI_base.tag free.tag upload/PATCHNOTES.md upload/CHANGELOG.md |
3509 | + touch $@ |
3510 | + |
3511 | +# all windows builds |
3512 | +CI_windows.tag: CI_base.tag steam_windows.tag closed_regular.tag |
3513 | + touch $@ |
3514 | + |
3515 | +# all free linux builds (so, no steam) |
3516 | +CI_free.tag: CI_base.tag free.tag |
3517 | + touch $@ |
3518 | + |
3519 | +# (OBSOLETE) targets for CI merge tests, a bit leaner than a full build |
3520 | +CI_merge.tag: windows.tag debtest.tag |
3521 | + touch $@ |
3522 | +CI_merge: CI_merge.tag |
3523 | +CI_merge_nodeb.tag: windows.tag CI_base.tag |
3524 | + touch $@ |
3525 | +CI_merge_nodeb: CI_merge_nodeb.tag |
3526 | + |
3527 | +# all builds |
3528 | +#CI.tag: CI_pack.tag apptar_server_64.tag |
3529 | +CI.tag: CI_windows.tag CI_free.tag full.tag CI_pack.tag |
3530 | + touch $@ |
3531 | + |
3532 | +CI_base: CI_base.tag |
3533 | +CI: CI.tag |
3534 | + |
3535 | +all: default |
3536 | + |
3537 | +dockertest.tag: |
3538 | + cp ${srcdir}/fakerelease_proto.sh . |
3539 | + @echo "Testing whether 'docker' works..." |
3540 | + docker help > /dev/null |
3541 | + echo > $@ |
3542 | + |
3543 | +tarwrapper.sh: ${top_srcdir}/docker/scripts/tarwrapper.sh |
3544 | + ln -s $< $@ |
3545 | + |
3546 | +#*************************************************************** |
3547 | + |
3548 | +# variables |
3549 | + |
3550 | +# package metadata |
3551 | +PACKAGE_VERSION:=$(shell grep "^PACKAGE_VERSION=" context/version.sh | sed -e "s,.*=,,") |
3552 | +PACKAGE_NAME:=$(shell grep "^PACKAGE_NAME=" context/version.sh | sed -e "s,.*=,,") |
3553 | +PACKAGE_TITLE:=$(shell grep "^PACKAGE_TITLE=" context/version.sh | sed -e "s,.*=,,") |
3554 | +PACKAGE_NAME_SUFFIX:=$(shell echo $(PACKAGE_NAME) | sed -e "s,.*-,-,") |
3555 | +PACKAGE_TITLE_SUFFIX:=$(shell echo $(PACKAGE_TITLE) | sed -e "s,.* , ,") |
3556 | +STEAM_PACKAGE_NAME=retrocycles |
3557 | +STEAM_PACKAGE_TITLE=Retrocycles |
3558 | + |
3559 | +# configurations for lean builds not supposed to be installed |
3560 | +CONFIGURE_ARGUMENTS:=--disable-uninstall --disable-restoreold --enable-etc --enable-automakedefaults --disable-useradd --disable-sysinstall --disable-initscripts |
3561 | +CONFIGURE_ARGUMENTS_SERVER:=--disable-glout --enable-armathentication |
3562 | + |
3563 | +# other directories |
3564 | +SCRIPTDIR:=${srcdir}/../scripts |
3565 | +GITS:=$(SCRIPTDIR)/.cache/gits |
3566 | + |
3567 | +# dump CI data and variables determined from it |
3568 | +CI_INFO: ${srcdir}/../scripts/brand.sh |
3569 | + . ${srcdir}/../scripts/brand.sh @top_srcdir@ && \ |
3570 | + echo SERIES=$${SERIES} > $@ && \ |
3571 | + echo PROGRAM_NAME=$${PROGRAM_NAME} >> $@ && \ |
3572 | + echo PROGRAM_TITLE=$${PROGRAM_TITLE} >> $@ && \ |
3573 | + echo CI_COMMIT_REF_PROTECTED=$${CI_COMMIT_REF_PROTECTED} >> $@ && \ |
3574 | + echo CI_COMMIT_SHA=$${CI_COMMIT_SHA} >> $@ && \ |
3575 | + echo CI_COMMIT_REF_NAME=$${CI_COMMIT_REF_NAME} >> $@ |
3576 | + |
3577 | +.PRECIOUS: CI_INFO |
3578 | + |
3579 | +#*************************************************************** |
3580 | + |
3581 | +upload/.tag: |
3582 | + mkdir -p upload |
3583 | + echo > $@ |
3584 | +proto.tag: |
3585 | + mkdir -p proto |
3586 | + echo > $@ |
3587 | + |
3588 | +make_ci.sh: ${srcdir}/make_ci.sh.in |
3589 | + cp $< $@ |
3590 | + |
3591 | +context/version.sh: ${srcdir}/context/version.sh.in |
3592 | + cd ../../; ./config.status docker/build/context/version.sh |
3593 | + |
3594 | +../deploy/targets.sh: ${srcdir}/../deploy/targets.sh.in |
3595 | + cd ../../; ./config.status docker/deploy/targets.sh |
3596 | + |
3597 | +#*************************************************************** |
3598 | + |
3599 | +# create source tarball |
3600 | +TARBALL:=../../armagetronad-@version@.tar.gz |
3601 | +$(TARBALL): |
3602 | + $(MAKE) -C ../../ dist GZIP_ENV="" |
3603 | +tarball: $(TARBALL) |
3604 | + |
3605 | +# unpack source tarball |
3606 | +source.tag: $(TARBALL) dockertest.tag |
3607 | + rm -rf source armagetronad-@version@ |
3608 | + tar -xzf $(TARBALL) |
3609 | + mv armagetronad-@version@ source |
3610 | + echo > $@ |
3611 | +source: source.tag |
3612 | + |
3613 | +# rebranded tarball for upload |
3614 | +upload/$(PACKAGE_NAME)-@version@.tbz: $(TARBALL) upload/.tag tarwrapper.sh |
3615 | + rm -rf $@ repack |
3616 | + mkdir -p repack_1 repack_2 |
3617 | + cd repack_1; tar -xzf ../$(TARBALL) |
3618 | + mv repack_1/armagetronad-@version@ repack_2/$(PACKAGE_NAME)-@version@ |
3619 | + cd repack_2; ../tarwrapper.sh -cjf repacked.tbz $(PACKAGE_NAME)-@version@ |
3620 | + mv repack_2/repacked.tbz $@ |
3621 | + rm -rf repack_1 repack_2 |
3622 | + |
3623 | +sourcetar.tag: upload/$(PACKAGE_NAME)-@version@.tbz |
3624 | + touch $@ |
3625 | + |
3626 | +# foreign gits (in the cache) |
3627 | +gits.tag: $(SCRIPTDIR)/fix_gits.sh |
3628 | + $(SCRIPTDIR)/fix_gits.sh |
3629 | + echo > $@ |
3630 | + |
3631 | +# bits of gits we need in artifacts |
3632 | +gits_artifacts.tag: gits.tag |
3633 | + rm -rf gits |
3634 | + mkdir -p gits |
3635 | + cp -a ${GITS}/ubuntu/debian gits/ |
3636 | + mkdir -p gits/steam |
3637 | + cp -a ${GITS}/steam-art/good/title.png gits/steam |
3638 | + echo > $@ |
3639 | + |
3640 | +upload/PATCHNOTES.md: sourcetar.tag upload/.tag |
3641 | + ${top_srcdir}/batch/make/patchnotes.py ${top_srcdir} ${top_srcdir}/CHANGELOG_FROZEN.md armagetronad armagetronad -p > $@ |
3642 | + |
3643 | +upload/CHANGELOG.md: sourcetar.tag upload/.tag |
3644 | + ${top_srcdir}/batch/make/patchnotes.py ${top_srcdir} ${top_srcdir}/CHANGELOG_FROZEN.md armagetronad armagetronad > $@ |
3645 | + |
3646 | +#*************************************************************** |
3647 | + |
3648 | +# generic context with source |
3649 | +# technically everything here depends on the Makefile, but enforcing rebuilds on all |
3650 | +# Makefile edits is too annoying during develop/test cycles. |
3651 | +rootcontext.64: source.tag ${srcdir}/*.sh ${srcdir}/context/build.sh #Makefile |
3652 | + ${srcdir}/prepare_context.sh $@.dir source ${srcdir}/context/build.sh |
3653 | + echo "armabuild_64" > $@.dir/image |
3654 | + echo > $@ |
3655 | + |
3656 | +context.64: rootcontext.64 |
3657 | + ${srcdir}/prepare_context.sh $@.dir $<.dir/'*' |
3658 | + echo > $@ |
3659 | + |
3660 | +#*************************************************************** |
3661 | + |
3662 | +# switch container to use to 32 bit |
3663 | +context.32: context.64 |
3664 | + ${srcdir}/prepare_context.sh $@.dir $<.dir/'*' |
3665 | + rm $@.dir/image |
3666 | + echo "armabuild_32" > $@.dir/image |
3667 | + echo > $@ |
3668 | + |
3669 | +# switch container to use to steam SDK, rebrand |
3670 | +context.steam: context.64 gits_artifacts.tag |
3671 | + ${srcdir}/prepare_context.sh $@.dir $<.dir/'*' |
3672 | + rm $@.dir/image |
3673 | + echo "armasteam_64" > $@.dir/image |
3674 | +# rebrand |
3675 | + sed -i $@.dir/version.sh -e s/PACKAGE_NAME=armagetronad/PACKAGE_NAME=$(STEAM_PACKAGE_TITLE)/ -e s/PACKAGE_TITLE=\"Armagetron\ Advanced/PACKAGE_TITLE=\"$(STEAM_PACKAGE_TITLE)/ -e s/PACKAGE_TITLE=\"Armagetron/PACKAGE_TITLE=\"$(STEAM_PACKAGE_TITLE)/ |
3676 | +# no remotely adult stuff |
3677 | + sed -i $@.dir/source/src/engine/ePlayer.cpp -e "s/pr0n/cat videos/" |
3678 | +# install alternative title, adapt sources |
3679 | + cp gits/steam/title.png $@.dir/source/textures/ |
3680 | + sed -i $@.dir/source/src/tron/gLogo.cpp $@.dir/source/Makefile.* -e "s,textures/title.jpg,textures/title.png," |
3681 | + cd $@.dir/source; automake |
3682 | +# done |
3683 | + echo > $@ |
3684 | + |
3685 | +# add debian/ubuntu build info for release %. Requires GPG key from ~/.gnupg |
3686 | +context.debsrc_%: rootcontext.64 ${srcdir}/rebrand_debian_core.sh ${srcdir}/debian_source.sh gits_artifacts.tag $(TARBALL) |
3687 | + ${srcdir}/prepare_context.sh $@.dir $<.dir/'*' $(TARBALL) ${srcdir}/rebrand_debian_core.sh ${srcdir}/debian_source.sh ./gits/debian |
3688 | + if test -r ../deploy/secrets/sec.gpg; then cp -lrf ../deploy/secrets/*.gpg $@.dir/; fi |
3689 | + echo "armadeb_64" > $@.dir/image |
3690 | + echo > $@ |
3691 | +result.debsrc_%: context.debsrc_% |
3692 | + +$(srcdir)/context_to_result.sh $@.dir ./debian_source.sh $* |
3693 | + echo > $@ |
3694 | + |
3695 | +# test build a debian package (with a really old ubuntu codename) |
3696 | +context.debsrc_test: context.debsrc_dapper |
3697 | + ${srcdir}/prepare_context.sh $@.dir $<.dir/'*' |
3698 | +# extract fake secrets |
3699 | + base64 -d < ${srcdir}/../deploy/anonymous_secrets.b64 | tar -xjf - --one-top-level=$@.dir |
3700 | + mv $@.dir/secrets/* $@.dir |
3701 | + rmdir $@.dir/secrets/ |
3702 | + echo > $@ |
3703 | +context.debtest: result.debsrc_test |
3704 | + ${srcdir}/prepare_context.sh $@.dir $<.dir/'*' |
3705 | + echo "cd source && debuild -i -us -uc -b && rm -rf *" > $@.dir/build_deb.sh |
3706 | + chmod +x $@.dir/build_deb.sh |
3707 | + echo > $@ |
3708 | + |
3709 | +result.debtest: context.debtest |
3710 | + +$(srcdir)/context_to_result.sh $@.dir bash ./build_deb.sh |
3711 | + echo > $@ |
3712 | + |
3713 | +debtest.tag: result.debtest |
3714 | + echo > $@ |
3715 | + |
3716 | +# switch container to use alpine |
3717 | +context.test: rootcontext.64 |
3718 | + ${srcdir}/prepare_context.sh $@.dir $<.dir/'*' |
3719 | + rm $@.dir/image |
3720 | + echo "armalpine_32" > $@.dir/image |
3721 | + echo > $@ |
3722 | + |
3723 | +#*************************************************************** |
3724 | + |
3725 | +context.build_server_%: context.% |
3726 | + ${srcdir}/prepare_context.sh $@.dir $<.dir/'*' |
3727 | + echo "server" > $@.dir/serverclient |
3728 | + echo > $@ |
3729 | + |
3730 | +context.build_client_%: context.% |
3731 | + ${srcdir}/prepare_context.sh $@.dir $<.dir/'*' |
3732 | + echo "client" > $@.dir/serverclient |
3733 | + echo > $@ |
3734 | + |
3735 | +.PRECIOUS: context.build_server_32 context.build_client_32 context.build_server_64 context.build_client_64 |
3736 | + |
3737 | +#*************************************************************** |
3738 | + |
3739 | +# server build for further processing |
3740 | +result.build_server_%: context.build_server_% |
3741 | + +$(srcdir)/context_to_result.sh $@.dir ./build.sh $(CONFIGURE_ARGUMENTS) $(CONFIGURE_ARGUMENTS_SERVER) |
3742 | + echo > $@ |
3743 | + |
3744 | +# client build for further processing |
3745 | +result.build_client_%: context.build_client_% |
3746 | + +$(srcdir)/context_to_result.sh $@.dir ./build.sh $(CONFIGURE_ARGUMENTS) |
3747 | + echo > $@ |
3748 | + |
3749 | +.PRECIOUS: result.build_server_32 result.build_client_32 result.build_server_64 result.build_client_64 |
3750 | + |
3751 | +#*************************************************************** |
3752 | + |
3753 | +# portable application directories |
3754 | +context.appdir_%: result.build_% ${srcdir}/context/portable/* ${srcdir}/context/appdir.sh ${srcdir}/context/steam.sh |
3755 | + ${srcdir}/prepare_context.sh $@.dir $<.dir/* ${srcdir}/context/portable ${srcdir}/context/appdir.sh ${srcdir}/context/steam.sh |
3756 | + echo > $@ |
3757 | + |
3758 | +result.appdir_%: context.appdir_% |
3759 | + +$(srcdir)/context_to_result.sh $@.dir ./appdir.sh |
3760 | + echo > $@ |
3761 | + |
3762 | +# use different script for steam builds, rearranging some things |
3763 | +result.appdir_%_steam: context.appdir_%_steam |
3764 | + +$(srcdir)/context_to_result.sh $@.dir ./steam.sh |
3765 | + echo > $@ |
3766 | + |
3767 | +# tarball of appdir |
3768 | +APPTAR_SERVER_32=$(PACKAGE_NAME)-server_32-$(PACKAGE_VERSION).tbz |
3769 | +APPTAR_SERVER_64=$(PACKAGE_NAME)-server_64-$(PACKAGE_VERSION).tbz |
3770 | +APPTAR_CLIENT_32=$(PACKAGE_NAME)-client_32-$(PACKAGE_VERSION).tbz |
3771 | +APPTAR_CLIENT_64=$(PACKAGE_NAME)-client_64-$(PACKAGE_VERSION).tbz |
3772 | +apptar_server_32.tag: upload/$(APPTAR_SERVER_32) |
3773 | + echo > $@ |
3774 | +apptar_server_64.tag: upload/$(APPTAR_SERVER_64) |
3775 | + echo > $@ |
3776 | +apptar_client_32.tag: upload/$(APPTAR_CLIENT_32) |
3777 | + echo > $@ |
3778 | +apptar_client_64.tag: upload/$(APPTAR_CLIENT_64) |
3779 | + echo > $@ |
3780 | + |
3781 | +upload/$(APPTAR_SERVER_32): result.appdir_server_32 upload/.tag tarwrapper.sh |
3782 | + cd $<.dir/appdir; ../../tarwrapper.sh -cjf ../../$@ . |
3783 | +upload/$(APPTAR_CLIENT_32): result.appdir_client_32 upload/.tag tarwrapper.sh |
3784 | + cd $<.dir/appdir; ../../tarwrapper.sh -cjf ../../$@ . |
3785 | +upload/$(APPTAR_SERVER_64): result.appdir_server_64 upload/.tag tarwrapper.sh |
3786 | + cd $<.dir/appdir; ../../tarwrapper.sh -cjf ../../$@ . |
3787 | +upload/$(APPTAR_CLIENT_64): result.appdir_client_64 upload/.tag tarwrapper.sh |
3788 | + cd $<.dir/appdir; ../../tarwrapper.sh -cjf ../../$@ . |
3789 | + |
3790 | +apptar.tag: apptar_server_32.tag apptar_client_32.tag apptar_server_64.tag apptar_client_64.tag upload/$(APPTAR_SERVER_32) upload/$(APPTAR_SERVER_64) upload/$(APPTAR_CLIENT_32) upload/$(APPTAR_CLIENT_64) |
3791 | + echo > $@ |
3792 | +apptar: apptar.tag |
3793 | + |
3794 | +.PHONY: appdir apptar |
3795 | + |
3796 | +.PRECIOUS: context.apptar_server_32 context.apptar_client_32 context.apptar_server_64 context.apptar_client_64 |
3797 | + |
3798 | +.PRECIOUS: context.appdir_server_32 context.appdir_client_32 context.appdir_server_64 context.appdir_client_64 |
3799 | + |
3800 | +#*************************************************************** |
3801 | + |
3802 | +# AppImages |
3803 | +context.appimage_%: result.appdir_% ${srcdir}/context/appimage.sh |
3804 | + ${srcdir}/prepare_context.sh $@.dir $<.dir/appdir $<.dir/image $<.dir/version.sh ${srcdir}/context/appimage.sh |
3805 | + echo > $@ |
3806 | + |
3807 | +result.appimage_%: context.appimage_% |
3808 | + +$(srcdir)/context_to_result.sh $@.dir "./appimage.sh AppImage" |
3809 | + echo > $@ |
3810 | + |
3811 | +APPIMAGE_BASENAME:=$(shell echo $(PACKAGE_TITLE) | sed -e "s, ,,g") |
3812 | +APPIMAGE_CLIENT_64:=$(APPIMAGE_BASENAME)-$(PACKAGE_VERSION) |
3813 | +APPIMAGE_SERVER_64:=$(APPIMAGE_BASENAME)Dedicated-$(PACKAGE_VERSION) |
3814 | +APPIMAGE_CLIENT_32:=$(APPIMAGE_BASENAME)-32bit-$(PACKAGE_VERSION) |
3815 | +APPIMAGE_SERVER_32:=$(APPIMAGE_BASENAME)Dedicated-32bit-$(PACKAGE_VERSION) |
3816 | + |
3817 | +upload/$(APPIMAGE_CLIENT_64): result.appimage_client_64 upload/.tag |
3818 | + cp $<.dir/AppImage $@ |
3819 | +upload/$(APPIMAGE_SERVER_64): result.appimage_server_64 upload/.tag |
3820 | + cp $<.dir/AppImage $@ |
3821 | +upload/$(APPIMAGE_CLIENT_32): result.appimage_client_32 upload/.tag |
3822 | + cp $<.dir/AppImage $@ |
3823 | +upload/$(APPIMAGE_SERVER_32): result.appimage_server_32 upload/.tag |
3824 | + cp $<.dir/AppImage $@ |
3825 | + |
3826 | +appimage_client_64.tag: upload/$(APPIMAGE_CLIENT_64) |
3827 | + echo > $@ |
3828 | +appimage_server_64.tag: upload/$(APPIMAGE_SERVER_64) |
3829 | + echo > $@ |
3830 | +appimage_client_32.tag: upload/$(APPIMAGE_CLIENT_32) |
3831 | + echo > $@ |
3832 | +appimage_server_32.tag: upload/$(APPIMAGE_SERVER_32) |
3833 | + echo > $@ |
3834 | + |
3835 | +appimage.tag: appimage_client_64.tag appimage_server_64.tag appimage_client_32.tag appimage_server_32.tag |
3836 | + echo > $@ |
3837 | + |
3838 | +.PRECIOUS: context.appimage_server_32 context.appimage_client_32 context.appimage_server_64 context.appimage_client_64 |
3839 | + |
3840 | +#*************************************************************** |
3841 | + |
3842 | +# windows source |
3843 | +context.winsource_%: result.build_server_% ${srcdir}/context/winsource.sh gits.tag |
3844 | + ${srcdir}/prepare_context.sh $@.dir $<.dir/* ${srcdir}/context/winsource.sh $(GITS)/codeblocks |
3845 | + echo > $@ |
3846 | +result.winsource_%: context.winsource_% |
3847 | + +$(srcdir)/context_to_result.sh $@.dir ./winsource.sh |
3848 | + echo > $@ |
3849 | + |
3850 | +# windows build |
3851 | +context.winbuild_%: result.winsource_% ${srcdir}/context/winbuild.sh gits.tag |
3852 | + ${srcdir}/prepare_context.sh $@.dir $<.dir/* ${srcdir}/context/winbuild.sh $(GITS)/winlibs |
3853 | + rm $@.dir/image |
3854 | + echo "armawineblocks" > $@.dir/image |
3855 | + echo > $@ |
3856 | +result.winbuild_%: context.winbuild_% |
3857 | + +$(srcdir)/context_to_result.sh $@.dir ./winbuild.sh |
3858 | + echo > $@ |
3859 | + |
3860 | +# windows installers |
3861 | +context.wininst_%: result.winbuild_% ${srcdir}/context/wininst.sh |
3862 | + ${srcdir}/prepare_context.sh $@.dir $<.dir/* ${srcdir}/context/wininst.sh |
3863 | + rm $@.dir/image |
3864 | + echo "armawineblocks" > $@.dir/image |
3865 | + echo > $@ |
3866 | +result.wininst_%: context.wininst_% |
3867 | + +$(srcdir)/context_to_result.sh $@.dir ./wininst.sh |
3868 | + echo > $@ |
3869 | + |
3870 | +# windows source zip |
3871 | +WINZIP_SOURCE_NAME:=$(PACKAGE_NAME)-source-$(PACKAGE_VERSION) |
3872 | +WINZIP_SOURCE_DIR:=proto/$(WINZIP_SOURCE_NAME) |
3873 | +WINZIP_SOURCE:=upload/$(WINZIP_SOURCE_NAME).zip |
3874 | +$(WINZIP_SOURCE_DIR): result.winsource_32 proto.tag Makefile |
3875 | + rm -rf $@.dir |
3876 | + cp -al $<.dir/winsource $@.dir |
3877 | + echo > $@ |
3878 | +$(WINZIP_SOURCE): $(WINZIP_SOURCE_DIR) upload/.tag |
3879 | + cd $(WINZIP_SOURCE_DIR).dir; zip -9 -r ../../$(WINZIP_SOURCE) * |
3880 | +winzip_source.tag: $(WINZIP_SOURCE) |
3881 | + echo > $@ |
3882 | + |
3883 | +# windows client zip |
3884 | +WINZIP_CLIENT_NAME:=$(PACKAGE_NAME)-client-$(PACKAGE_VERSION) |
3885 | +WINZIP_CLIENT_DIR:=proto/$(WINZIP_CLIENT_NAME) |
3886 | +WINZIP_CLIENT:=upload/$(WINZIP_CLIENT_NAME).win32.zip |
3887 | +$(WINZIP_CLIENT_DIR): result.winbuild_32 proto.tag Makefile |
3888 | + rm -rf $@.dir |
3889 | + cp -al $<.dir/dist $@.dir |
3890 | + rm $@.dir/$(PACKAGE_NAME)_dedicated.exe $@.dir/*.nsi $@.dir/banner* $@.dir/INSTALL.txt |
3891 | + echo > $@ |
3892 | +$(WINZIP_CLIENT): $(WINZIP_CLIENT_DIR) upload/.tag |
3893 | + cd $(WINZIP_CLIENT_DIR).dir; zip -9 -r ../../$(WINZIP_CLIENT) * |
3894 | +winzip_client.tag: $(WINZIP_CLIENT) |
3895 | + echo > $@ |
3896 | + |
3897 | +# windows server zip |
3898 | +WINZIP_SERVER_NAME:=$(PACKAGE_NAME)-server-$(PACKAGE_VERSION) |
3899 | +WINZIP_SERVER_DIR:=proto/$(WINZIP_SERVER_NAME) |
3900 | +WINZIP_SERVER:=upload/$(WINZIP_SERVER_NAME).win32.zip |
3901 | +$(WINZIP_SERVER_DIR): result.winbuild_32 proto.tag Makefile |
3902 | + rm -rf $@.dir |
3903 | + cp -al $<.dir/dist $@.dir |
3904 | + rm -r $@.dir/$(PACKAGE_NAME).exe $@.dir/*.nsi $@.dir/banner* \ |
3905 | + $@.dir/INSTALL.txt $@.dir/models $@.dir/sound $@.dir/textures \ |
3906 | + $@.dir/SDL* $@.dir/libpng* $@.dir/jpeg* |
3907 | + echo > $@ |
3908 | +$(WINZIP_SERVER): $(WINZIP_SERVER_DIR) upload/.tag |
3909 | + cd $(WINZIP_SERVER_DIR).dir; zip -9 -r ../../$(WINZIP_SERVER) * |
3910 | +winzip_server.tag: $(WINZIP_SERVER) |
3911 | + echo > $@ |
3912 | + |
3913 | +winzip.tag: winzip_server.tag winzip_client.tag winzip_source.tag |
3914 | + echo > $@ |
3915 | + |
3916 | + |
3917 | +# copy installers into upload |
3918 | +WININST_CLIENT_NAME:=$(PACKAGE_NAME)-$(PACKAGE_VERSION).gcc.win32.exe |
3919 | +WININST_SERVER_NAME:=$(PACKAGE_NAME)-dedicated-$(PACKAGE_VERSION).gcc.win32.exe |
3920 | +WININST_CLIENT=upload/$(WININST_CLIENT_NAME) |
3921 | +WININST_SERVER=upload/$(WININST_SERVER_NAME) |
3922 | +$(WININST_CLIENT): result.wininst_32 upload/.tag |
3923 | + rm -f $@ |
3924 | + cp $<.dir/$(WININST_CLIENT_NAME) $@ |
3925 | +$(WININST_SERVER): result.wininst_32 upload/.tag |
3926 | + rm -f $@ |
3927 | + cp $<.dir/$(WININST_SERVER_NAME) $@ |
3928 | +windows.tag: $(WININST_CLIENT) $(WININST_SERVER) |
3929 | + echo > $@ |
3930 | + |
3931 | +# prerequisites for zeroinstall |
3932 | +zeroinstall.tag: winzip.tag apptar.tag |
3933 | + touch $@ |
3934 | +zeroinstall: zeroinstall.tag |
3935 | + |
3936 | +.PHONY: windows winzip_client winzip_server zeroinstall |
3937 | + |
3938 | +.PRECIOUS: context.wininst_32 context.winbuild_32 context.winsource_32 |
3939 | + |
3940 | +#*************************************************************** |
3941 | + |
3942 | +steamdirs/.tag: |
3943 | + mkdir -p steamdirs |
3944 | + echo > $@ |
3945 | + |
3946 | +# steam packaging |
3947 | +steamdirs/steam_linux: result.appdir_server_steam result.appdir_client_steam steamdirs/.tag |
3948 | + rm -rf $@.dir |
3949 | + cp -al $<.dir/appdir $@.dir |
3950 | + cp -al result.appdir_client_steam.dir/appdir/* $@.dir/ |
3951 | + echo > $@ |
3952 | + |
3953 | +steamdirs/steam_windows: result.winbuild_steam steamdirs/.tag |
3954 | + rm -rf $@.dir |
3955 | + cp -al $<.dir/dist $@.dir |
3956 | + mv $@.dir/*dedicated.exe $@.dir/DEDICATED.hex |
3957 | + mv $@.dir/*.exe $@.dir/CLIENT.hex |
3958 | + mv $@.dir/CLIENT.hex $@.dir/$(STEAM_PACKAGE_TITLE).exe |
3959 | + mv $@.dir/DEDICATED.hex $@.dir/$(STEAM_PACKAGE_TITLE)_Dedicated.exe |
3960 | + rm -rf $@.dir/*.nsi |
3961 | + rm -rf $@.dir/*.url |
3962 | + rm -rf $@.dir/banner* |
3963 | + echo > $@ |
3964 | + |
3965 | +steam_linux.tag: steamdirs/steam_linux result.appdir_client_steam result.appdir_server_steam |
3966 | + echo > $@ |
3967 | +steam_windows.tag: steamdirs/steam_windows result.winbuild_steam |
3968 | + echo > $@ |
3969 | + |
3970 | +steam.tag: steam_windows.tag steam_linux.tag |
3971 | + echo > $@ |
3972 | +.PHONY: steam steam_windows steam_linux |
3973 | + |
3974 | +.PRECIOUS: context.build_client_steam result.build_client_steam context.appdir_client_steam result.build_server_steam context.build_server_steam context.appdir_server_steam context.winbuild_steam context.winsource_steam |
3975 | + |
3976 | +#*************************************************************** |
3977 | + |
3978 | +# for testing, we want minimal builds before any deployment |
3979 | +# in production, the CI solution is responsible for having built |
3980 | +# everything not explicitly required here |
3981 | +deploy_base.tag: CI_pack.tag debtest.tag ../deploy/targets.sh |
3982 | + echo > $@ |
3983 | +deploy_base: deploy_base.tag |
3984 | + |
3985 | +context.deploy_base_%: rootcontext.64 deploy_base.tag ${srcdir}/../deploy/deploy_%.sh ../deploy/* CI_INFO |
3986 | + ${srcdir}/prepare_context.sh $@.dir $<.dir/'*' upload ../deploy/'*' ${srcdir}/../deploy/deploy_$*.sh CI_INFO |
3987 | + echo > $@ |
3988 | +context.deploy_%: context.deploy_base_% |
3989 | + ${srcdir}/prepare_context.sh $@.dir $<.dir/'*' |
3990 | + echo > $@ |
3991 | +result.deploy_%: context.deploy_% |
3992 | + +$(srcdir)/context_to_result.sh $@.dir ./deploy_$*.sh |
3993 | + echo > $@ |
3994 | + |
3995 | +# special case steam: run in steamcmd image |
3996 | +context.deploy_steam: context.deploy_base_steam ${srcdir}/../deploy/steamcontentbuilder/*/* steamdirs/* |
3997 | + ${srcdir}/prepare_context.sh $@.dir $<.dir/'*' ${srcdir}/../deploy/steamcontentbuilder |
3998 | + sed -i $@.dir/steamcontentbuilder/scripts/app_build_1306180.vdf -e "s/BUILD_DESCRIPTION/$(STEAM_PACKAGE_TITLE)$(PACKAGE_TITLE_SUFFIX) $(PACKAGE_VERSION)/" |
3999 | + mkdir -p $@.dir/steamcontentbuilder/content $@.dir/steamcontentbuilder/output |
4000 | + cp -al steamdirs/steam_windows.dir $@.dir/steamcontentbuilder/content/steam_windows |
4001 | + cp -al steamdirs/steam_linux.dir $@.dir/steamcontentbuilder/content/steam_linux |
4002 | + rm -rf $@.dir/upload |
4003 | + rm -f $@.dir/image |
4004 | + echo "steamcmd" > $@.dir/image |
4005 | + echo > $@ |
4006 | + |
4007 | +context.deploy_ppa_%: result.debsrc_% ${srcdir}/../deploy/deploy_ppa.sh ../deploy/targets.sh CI_INFO |
4008 | + ${srcdir}/prepare_context.sh $@.dir $<.dir/'*' ${srcdir}/../deploy/deploy_ppa.sh ../deploy/targets.sh ../deploy/secrets/*.gpg CI_INFO |
4009 | + echo > $@ |
4010 | +result.deploy_ppa_%: context.deploy_ppa_% |
4011 | + +$(srcdir)/context_to_result.sh $@.dir ./deploy_ppa.sh $* |
4012 | + echo > $@ |
4013 | + |
4014 | +# deploy for launchpad needs armadeb image |
4015 | +context.deploy_lp: context.deploy_base_lp ${srcdir}/../deploy/lp-project-upload |
4016 | + ${srcdir}/prepare_context.sh $@.dir $<.dir/'*' ${srcdir}/../deploy/lp-project-upload |
4017 | + rm -f $@.dir/image |
4018 | + echo "armadeb_64" > $@.dir/image |
4019 | + echo > $@ |
4020 | + |
4021 | +context.update_zi: context.deploy_base_zeroinstall ${srcdir}/../deploy/*_zeroinstall.sh |
4022 | + ${srcdir}/prepare_context.sh $@.dir $<.dir/'*' ${srcdir}/../deploy/*_zeroinstall.sh |
4023 | + rm -f $@.dir/image |
4024 | + echo "armadeploy_64" > $@.dir/image |
4025 | + echo > $@ |
4026 | +result.update_zi: context.update_zi |
4027 | + +$(srcdir)/context_to_result.sh $@.dir ./update_zeroinstall.sh |
4028 | + echo > $@ |
4029 | +context.deploy_zi: context.deploy_base_zeroinstall result.update_zi ${srcdir}/../deploy/*_zeroinstall.sh result.deploy_lp result.deploy_scp |
4030 | + ${srcdir}/prepare_context.sh $@.dir $<.dir/'*' result.update_zi.dir/zeroinstall ${srcdir}/../deploy/*_zeroinstall.sh |
4031 | + rm -f $@.dir/image |
4032 | + echo "armadeploy_64" > $@.dir/image |
4033 | + echo > $@ |
4034 | +result.deploy_zi: context.deploy_zi |
4035 | + +$(srcdir)/context_to_result.sh $@.dir ./deploy_zeroinstall.sh |
4036 | + echo > $@ |
4037 | + |
4038 | +# deploy to download site (additional dependency here only, standard rules apply) |
4039 | +result.deploy_download: result.deploy_scp result.deploy_lp |
4040 | + |
4041 | +# individual deploy targets |
4042 | +deploy_lp: result.deploy_lp |
4043 | +deploy_scp: result.deploy_scp |
4044 | +deploy_steam: result.deploy_steam |
4045 | +deploy_zi: result.deploy_zi |
4046 | +deploy_download: result.deploy_download |
4047 | + |
4048 | +deploy_ppa: \ |
4049 | +deploy_ppa_focal \ |
4050 | +deploy_ppa_eoan \ |
4051 | +deploy_ppa_bionic \ |
4052 | +deploy_ppa_xenial \ |
4053 | +deploy_ppa_trusty |
4054 | + |
4055 | +deploy_ppa_%: result.deploy_ppa_% |
4056 | + @echo Deployed $* |
4057 | + |
4058 | +deploy: deploy_lp deploy_scp deploy_ppa deploy_zi deploy_steam deploy_download |
4059 | +#deploy: deploy_scp |
4060 | +#deploy: deploy_zi |
4061 | +#deploy: deploy_ppa |
4062 | + |
4063 | +unstaged_%: |
4064 | +# disable staging, deploy for real |
4065 | + sed -i ../deploy/targets.sh -e "s/STAGING=true/STAGING=false/" |
4066 | + STAGING=false MAKE=$(MAKE) ${srcdir}/make_deploy.sh $* |
4067 | + |
4068 | +staged_%: |
4069 | +# enforce staging |
4070 | + sed -i ../deploy/targets.sh -e "s/STAGING=false/STAGING=true/" |
4071 | + MAKE=$(MAKE) ${srcdir}/make_deploy.sh $* |
4072 | + |
4073 | +.PHONY: deploy deploy_ppa deploy_scp deploy_steam deploy_base deploy_download |
4074 | + |
4075 | +.PRECIOUS: context.debsrc_dapper \ |
4076 | +context.debsrc_bionic result.debsrc_bionic context.deploy_ppa_bionic result.deploy_ppa_bionic \ |
4077 | +context.debsrc_trusty result.debsrc_trusty context.deploy_ppa_trusty result.deploy_ppa_trusty \ |
4078 | +context.debsrc_xenial result.debsrc_xenial context.deploy_ppa_xenial result.deploy_ppa_xenial \ |
4079 | +context.debsrc_eoan result.debsrc_eoan context.deploy_ppa_eoan result.deploy_ppa_eoan \ |
4080 | +context.debsrc_focal result.debsrc_focal context.deploy_ppa_focal result.deploy_ppa_focal \ |
4081 | +context.deploy_base_scp context.deploy_scp \ |
4082 | +context.deploy_base_download result.deploy_download context.deploy_download |
4083 | + |
4084 | +#*************************************************************** |
4085 | + |
4086 | +# base64 encode secrets so they can be passed in via a protected configuration variable |
4087 | +../deploy/secrets.b64: ../deploy/secrets/* ../deploy/secrets/*/* |
4088 | + cd ../deploy; tar --exclude-backups -cjf - secrets | base64 > secrets.b64 |
4089 | + |
4090 | +secrets: ../deploy/secrets.b64 |
4091 | + |
4092 | +.PHONY: secrets |
4093 | + |
4094 | +#*************************************************************** |
4095 | + |
4096 | +# test client build on lean alpine linux |
4097 | +test: result.build_client_test result.build_server_test |
4098 | + |
4099 | +#*************************************************************** |
4100 | + |
4101 | +intermediateclean: |
4102 | + rm -rf context.* |
4103 | + |
4104 | +# keep the artifacts clean of junk not needed in the next phase |
4105 | +artifactclean: |
4106 | + rm -rf *.dir source proto/*.dir |
4107 | + |
4108 | +clean: intermediateclean |
4109 | + rm -rf upload source gits result.* *.tag proto |
4110 | + if git -C ${srcdir} rev-parse --abbrev-ref HEAD > /dev/null; then rm -f CI_INFO; fi |
4111 | +distclean: clean |
4112 | + rm -rf $(TARBALL) CI_INFO |
4113 | + cd ${top_srcdir} && ./bootstrap.sh |
4114 | + cat ${top_srcdir}/version.m4 |
4115 | |
4116 | === added file 'docker/build/build_in_container.sh' |
4117 | --- docker/build/build_in_container.sh 1970-01-01 00:00:00 +0000 |
4118 | +++ docker/build/build_in_container.sh 2020-07-03 06:03:19 +0000 |
4119 | @@ -0,0 +1,87 @@ |
4120 | +#!/bin/bash |
4121 | + |
4122 | +# Usage: build_in_container.sh <base_image> <result> <command> |
4123 | +# Takes <base_image> as base, copies current directory into a build directory, |
4124 | +# runs <commmand>, copies resulting build directory to ./<result>/ |
4125 | + |
4126 | +base=$1 |
4127 | +shift |
4128 | +result=$1 |
4129 | +shift |
4130 | + |
4131 | +if test -d ${result}; then |
4132 | + echo ${result} already exists. |
4133 | + exit 1 |
4134 | +fi |
4135 | + |
4136 | +set -x |
4137 | + |
4138 | +# make sure base image exists |
4139 | +wd=`dirname $0` |
4140 | +${wd}/../scripts/ensure_image.sh "${base}" -d |
4141 | +. ${wd}/../images/digest.sh "${base}" || exit $? |
4142 | + |
4143 | +dockeruser=`docker inspect --format '{{.Config.User}}' ${REGISTRY}${base}${REFERENCE}` || exit $? |
4144 | +home=/home/${dockeruser} |
4145 | +if test -z "$dockeruser";then |
4146 | + dockeruser=root |
4147 | + home=/root |
4148 | +fi |
4149 | + |
4150 | +# create dockerfile with prepared input files |
4151 | +tmp=`mktemp` |
4152 | +container_name=image_${PPID}_`basename ${tmp} | tr '[:upper:]' '[:lower:]'` |
4153 | +function build(){ |
4154 | +docker build --no-cache -t ${container_name} -f - . <<EOF |
4155 | +FROM ${REGISTRY}${base}${REFERENCE} |
4156 | +RUN mkdir -p ${home}/BUILDDIR |
4157 | +COPY --chown=${dockeruser} ./ ${home}/BUILDDIR |
4158 | +WORKDIR ${home}/BUILDDIR |
4159 | +EOF |
4160 | +} |
4161 | + |
4162 | +build || exit $? |
4163 | + |
4164 | +# run command and extract output from container |
4165 | +function run_and_extract(){ |
4166 | + EXITCODE=0 |
4167 | + cidfile=${result}.CID |
4168 | + rm -f ${cidfile} |
4169 | + docker run --cidfile ${cidfile} ${container_name} $@ || EXITCODE=$? |
4170 | + container_id=`cat ${cidfile}` |
4171 | + rm -f ${cidfile} |
4172 | + docker cp ${container_id}:${home}/BUILDDIR ${result} || EXITCODE=$? |
4173 | + docker rm -f ${container_id} || true |
4174 | + docker rmi -f ${container_name} || true |
4175 | + return ${EXITCODE} |
4176 | +} |
4177 | + |
4178 | +if ! run_and_extract "$@"; then |
4179 | + # on failure, remove output |
4180 | + rm -rf ${tmp} |
4181 | + rm -rf ${result}.error |
4182 | + mv ${result} ${result}.error |
4183 | + exit 1 |
4184 | +fi |
4185 | + |
4186 | +rm -rf ${tmp} |
4187 | + |
4188 | +exit 0 |
4189 | + |
4190 | +# save disk space by deduplicating source and destination |
4191 | +set +x |
4192 | +function link_identical_files(){ |
4193 | + while read file; do |
4194 | + if test -r "${result}/${file}"; then |
4195 | + if diff "${file}" "${result}/${file}" > /dev/null; then |
4196 | + echo cp -lf "${file}" ... |
4197 | + cp -lf "${file}" "${result}/${file}" |
4198 | + else |
4199 | + echo NOT "${file}", differs |
4200 | + fi |
4201 | + fi |
4202 | + done |
4203 | +} |
4204 | +find . -type f | link_identical_files || exit $? |
4205 | +set -x |
4206 | + |
4207 | |
4208 | === added directory 'docker/build/context' |
4209 | === added file 'docker/build/context/appdir.sh' |
4210 | --- docker/build/context/appdir.sh 1970-01-01 00:00:00 +0000 |
4211 | +++ docker/build/context/appdir.sh 2020-07-03 06:03:19 +0000 |
4212 | @@ -0,0 +1,15 @@ |
4213 | +#!/bin/bash |
4214 | + |
4215 | +# build a portable application dir |
4216 | +test -x fakerelease.sh && . fakerelease.sh |
4217 | +. version.sh || exit 1 |
4218 | + |
4219 | +set -x |
4220 | + |
4221 | +SUFFIX= |
4222 | +cat serverclient | grep "server" > /dev/null && SUFFIX=-dedicated |
4223 | +make -C build install DESTDIR=`pwd`/appdir || exit |
4224 | +APPDIR=appdir PACKAGE=${PACKAGE_NAME}${SUFFIX} portable/build || exit |
4225 | + |
4226 | +# comment out to inspect result for debug purposes |
4227 | +rm -rf build source |
4228 | |
4229 | === added file 'docker/build/context/appimage.sh' |
4230 | --- docker/build/context/appimage.sh 1970-01-01 00:00:00 +0000 |
4231 | +++ docker/build/context/appimage.sh 2020-07-03 06:03:19 +0000 |
4232 | @@ -0,0 +1,24 @@ |
4233 | +#!/bin/bash |
4234 | + |
4235 | +# pack portable application dir into AppImage |
4236 | +set -x |
4237 | + |
4238 | +. ./version.sh |
4239 | + |
4240 | +# determine arch suffix |
4241 | +ARCH=x86_64 |
4242 | +if test `getconf LONG_BIT` -eq 32; then |
4243 | + ARCH=i686 |
4244 | +fi |
4245 | + |
4246 | +# copy icon |
4247 | +cp -l appdir/usr/local/share/games/${PACKAGE_NAME}*/desktop/icons/large/${PACKAGE_NAME}*.png appdir/ |
4248 | + |
4249 | +# pack it up. The appimagetool package is available here: |
4250 | +# https://github.com/AppImage/AppImageKit/releases |
4251 | + |
4252 | +rm -f $1 |
4253 | +ARCH=${ARCH} appimagetool-${ARCH}.AppImage --appimage-extract-and-run appdir $1 |
4254 | + |
4255 | +# comment out to inspect result for debug purposes |
4256 | +rm -rf appdir |
4257 | |
4258 | === added file 'docker/build/context/build.sh' |
4259 | --- docker/build/context/build.sh 1970-01-01 00:00:00 +0000 |
4260 | +++ docker/build/context/build.sh 2020-07-03 06:03:19 +0000 |
4261 | @@ -0,0 +1,14 @@ |
4262 | +#!/bin/bash |
4263 | + |
4264 | +# do a build from source to build |
4265 | +test -x fakerelease.sh && . fakerelease.sh |
4266 | +. version.sh || exit $? |
4267 | + |
4268 | +set -x |
4269 | + |
4270 | +mkdir -p build |
4271 | +pushd build |
4272 | +progname="${PACKAGE_NAME}" progtitle="${PACKAGE_TITLE}" ../source/configure --prefix=/usr/local $@ || exit $? |
4273 | +nice -n 19 make -j `nproc` || exit $? |
4274 | +popd |
4275 | + |
4276 | |
4277 | === added directory 'docker/build/context/portable' |
4278 | === added file 'docker/build/context/portable/AppRun' |
4279 | --- docker/build/context/portable/AppRun 1970-01-01 00:00:00 +0000 |
4280 | +++ docker/build/context/portable/AppRun 2020-07-03 06:03:19 +0000 |
4281 | @@ -0,0 +1,38 @@ |
4282 | +#!/bin/bash |
4283 | + |
4284 | +#set -x |
4285 | + |
4286 | +root=$(dirname "${0}") |
4287 | +EXEC=$(grep -h -m 1 -r Exec= ${root}/*.desktop | cut -d "=" -f 2 | cut -d % -f 1 | cut -d " " -f 1 | head -n 1) |
4288 | +# append library path so system libraries are found first (if we put our libs into /usr/lib), |
4289 | +# same for executables. |
4290 | + |
4291 | +# true portable app: create a .armagetronad directory in the current directory and |
4292 | +# it'll be used to store your data. |
4293 | +extraarg= |
4294 | +test -d .${EXEC} && extraarg="--userdatadir .${EXEC} --vardir .${EXEC}/var --userconfigdir .${EXEC}/config" |
4295 | + |
4296 | +# for debugging: if LD_DEBUG_APP=true, use the included libraries first. |
4297 | +# you can then use strace to check no non-standard external libraries are needed. |
4298 | + |
4299 | +extralibs= |
4300 | +if test "x${LD_DEBUG_APP}" = xtrue; then |
4301 | + echo "Library debug mode: ignore system libraries." |
4302 | +else |
4303 | + CACHE=~/.${EXEC}/.syslibs |
4304 | + mkdir -p ~/.${EXEC} |
4305 | + if test ! -e ${CACHE} || test ${0} -nt ${CACHE}; then |
4306 | + # find all directories in ld's cache |
4307 | + for lib in $({ /sbin/ldconfig -p || ldconfig -p; } | tail -n +2 | sed -e "s,.* =>,," -e "s,/[^/]*$,," | sort -u); do |
4308 | + extralib=${extralib}:${lib} |
4309 | + done |
4310 | + echo ${extralib} > ${CACHE} |
4311 | + fi |
4312 | + extralib=$(cat ${CACHE}) |
4313 | +fi |
4314 | + |
4315 | +LD_LIBRARY_PATH="${root}/usr/local/lib${extralib}:${LD_LIBRARY_PATH}:${root}/usr/lib" |
4316 | +PATH="${root}/usr/local/bin:${PATH}${root}/usr/bin" |
4317 | +export LD_LIBRARY_PATH |
4318 | +export PATH |
4319 | +exec $EXEC ${extraarg} $@ |
4320 | |
4321 | === added file 'docker/build/context/portable/README' |
4322 | --- docker/build/context/portable/README 1970-01-01 00:00:00 +0000 |
4323 | +++ docker/build/context/portable/README 2020-07-03 06:03:19 +0000 |
4324 | @@ -0,0 +1,2 @@ |
4325 | +Contains files for portable builds (AppImage/Steam) |
4326 | + |
4327 | |
4328 | === added file 'docker/build/context/portable/build' |
4329 | --- docker/build/context/portable/build 1970-01-01 00:00:00 +0000 |
4330 | +++ docker/build/context/portable/build 2020-07-03 06:03:19 +0000 |
4331 | @@ -0,0 +1,89 @@ |
4332 | +#!/bin/bash |
4333 | +# builds portable client |
4334 | + |
4335 | +# set -x |
4336 | + |
4337 | +# add AppRun and desktop file |
4338 | +cp portable/AppRun ${APPDIR}/ |
4339 | +find ${APPDIR} -type f -name "*.desktop" -exec mv \{\} ${APPDIR}/ \; |
4340 | +find ${APPDIR} -type l -name "*.desktop" -exec rm \{\} \; |
4341 | + |
4342 | +# hack Icon |
4343 | +for f in $(find ${APPDIR} -type d -name "desktop"); do |
4344 | + cp $f/icons/small/*.png ${APPDIR}/${PACKAGE}.png |
4345 | +done |
4346 | + |
4347 | +# correct absolute symlinks |
4348 | +APPDIR=${APPDIR} $(dirname $0)/fixlinks |
4349 | + |
4350 | +lastpath=/usr/lib/*linux-gnu |
4351 | +otherpath=${lastpath} |
4352 | + |
4353 | +function copylib() |
4354 | +{ |
4355 | + baselib=$1 |
4356 | + path=$(dirname ${baselib}) |
4357 | + baselib=$(basename ${baselib}) |
4358 | + echo "Found in ${path}." |
4359 | + if test "$lastpath" != "$path"; then |
4360 | + otherpath=$lastpath |
4361 | + fi |
4362 | + lastpath=$path |
4363 | + while test -n "${baselib}"; do |
4364 | + # copy libary |
4365 | + echo Copying ${baselib}... |
4366 | + cp -a "${path}/${baselib}" ${APPDIR}/usr/lib/ |
4367 | + # resolve links |
4368 | + baselib=$(ls -l ${path}/${baselib} | grep -- "->" | sed -e "s,.*-> ,,") |
4369 | + done |
4370 | +} |
4371 | + |
4372 | +# include libraries |
4373 | +mkdir -p ${APPDIR}/usr/lib/ |
4374 | +mkdir -p ${APPDIR}/usr/local/lib/ |
4375 | +for library in \ |
4376 | +libxml2 \ |
4377 | +libZThread \ |
4378 | +libSDL-1 \ |
4379 | +libboost_thread \ |
4380 | +libSDL_image libpng \ |
4381 | +libSDL_mixer \ |
4382 | +libGLEW \ |
4383 | +libfreetype \ |
4384 | +libftgl \ |
4385 | +libprotobuf \ |
4386 | +; do |
4387 | + echo "Checking for library ${library}...." |
4388 | + baselib=$(ldd ${APPDIR}/usr/local/bin/${PACKAGE} | grep "${library}" | sed -e "s,.*=> ,," -e "s, (.*,,") |
4389 | + if test -z "${baselib}"; then |
4390 | + echo "Not linked." |
4391 | + else |
4392 | + copylib ${baselib} |
4393 | + fi |
4394 | +done |
4395 | + |
4396 | +if ! echo ${PACKAGE} | grep dedicated; then |
4397 | +# libraries we know are dynamically loaded later, so they don't appear in ldd's output |
4398 | +for library in \ |
4399 | +libjpeg.so.8 \ |
4400 | +; do |
4401 | + echo "Installing library ${library} anyway, we know it's needed." |
4402 | + if test -r ${lastpath}/${library}; then |
4403 | + copylib ${lastpath}/${library} |
4404 | + else |
4405 | + copylib ${otherpath}/${library} |
4406 | + fi |
4407 | +done |
4408 | +fi |
4409 | + |
4410 | +# more libraries for 0.4, later |
4411 | +#libogg.so \ |
4412 | +#libogg.so.0 \ |
4413 | +#libvorbis.so \ |
4414 | +#libvorbis.so.0 \ |
4415 | +#libvorbisfile.so \ |
4416 | +#libvorbisfile.so.3 \ |
4417 | +#libmikmod.so \ |
4418 | +#libmikmod.so.2 \ |
4419 | + |
4420 | +echo $lastpath |
4421 | |
4422 | === added file 'docker/build/context/portable/fixlinks' |
4423 | --- docker/build/context/portable/fixlinks 1970-01-01 00:00:00 +0000 |
4424 | +++ docker/build/context/portable/fixlinks 2020-07-03 06:03:19 +0000 |
4425 | @@ -0,0 +1,21 @@ |
4426 | +#!/bin/bash |
4427 | +# fixes absolute symbolic links |
4428 | + |
4429 | +set -x |
4430 | + |
4431 | +# correct absolute symlinks |
4432 | +pushd ${APPDIR} |
4433 | +function processlinks() |
4434 | +{ |
4435 | + while read SOURCE; do |
4436 | + TARGET=$(ls -l "${SOURCE}" | sed -e "s,.*-> *,,") |
4437 | + RELATIVEUP=$(dirname ${SOURCE} | sed -e 's,^./,,' -e 's,[^/]*,..,g') |
4438 | + if echo ${TARGET} | grep '^/' > /dev/null; then |
4439 | + NEWTARGET=${RELATIVEUP}${TARGET} |
4440 | + ln -sf ${NEWTARGET} ${SOURCE} |
4441 | + fi |
4442 | + done |
4443 | +} |
4444 | + |
4445 | +find . -type l | processlinks |
4446 | +popd |
4447 | |
4448 | === added file 'docker/build/context/steam.sh' |
4449 | --- docker/build/context/steam.sh 1970-01-01 00:00:00 +0000 |
4450 | +++ docker/build/context/steam.sh 2020-07-03 06:03:19 +0000 |
4451 | @@ -0,0 +1,32 @@ |
4452 | +#!/bin/bash |
4453 | + |
4454 | +# build a portable application dir for the steam runtime |
4455 | +test -x fakerelease.sh && . fakerelease.sh |
4456 | +. version.sh || exit 1 |
4457 | + |
4458 | +set -x |
4459 | + |
4460 | +STEAM_PACKAGE_NAME=`echo ${PACKAGE_NAME} | sed -e s/-.*//` || exit $? |
4461 | +STEAM_PACKAGE_TITLE=`echo ${PACKAGE_TITLE} | sed -e s/-.*// -e "s/ .*//"` || exit $? |
4462 | + |
4463 | +# delegate |
4464 | +./appdir.sh $@ || exit $? |
4465 | + |
4466 | +# move stuff around |
4467 | +sed -i appdir/armagetronad.desktop -e s/armagetronad/${STEAM_PACKAGE_NAME}/g || exit $? |
4468 | +if test `cat serverclient` = client; then |
4469 | + sed -i appdir/AppRun -e s/EXEC=.*\$/EXEC=${PACKAGE_NAME}/g || exit $? |
4470 | + mv appdir/AppRun appdir/${STEAM_PACKAGE_TITLE} || exit $? |
4471 | + mv appdir/armagetronad.desktop appdir/${STEAM_PACKAGE_NAME}.desktop || exit $? |
4472 | +else |
4473 | + sed -i appdir/AppRun -e s/EXEC=.*\$/EXEC=${PACKAGE_NAME}-dedicated/g || exit $? |
4474 | + mv appdir/AppRun appdir/${STEAM_PACKAGE_TITLE}_Dedicated || exit $? |
4475 | + mv appdir/armagetronad.desktop appdir/${STEAM_PACKAGE_NAME}-dedicated.desktop || exit $? |
4476 | +fi |
4477 | + |
4478 | +# all in the steam runtime |
4479 | +rm -f appdir/usr/lib/libSDL* |
4480 | +rm -f appdir/usr/lib/libjpeg* |
4481 | +rm -f appdir/usr/lib/libxml2* |
4482 | +rm -f appdir/usr/lib/libpng* |
4483 | +rm -f appdir/usr/lib/libfreetype* |
4484 | |
4485 | === added file 'docker/build/context/testbuild.sh' |
4486 | --- docker/build/context/testbuild.sh 1970-01-01 00:00:00 +0000 |
4487 | +++ docker/build/context/testbuild.sh 2020-07-03 06:03:19 +0000 |
4488 | @@ -0,0 +1,10 @@ |
4489 | +#!/bin/bash |
4490 | + |
4491 | +# do a simple test server build |
4492 | +test -x fakerelease.sh && . fakerelease.sh |
4493 | + |
4494 | +mkdir build |
4495 | +cd build |
4496 | +../source/configure "$*" |
4497 | +make |
4498 | + |
4499 | |
4500 | === added file 'docker/build/context/version.sh.in' |
4501 | --- docker/build/context/version.sh.in 1970-01-01 00:00:00 +0000 |
4502 | +++ docker/build/context/version.sh.in 2020-07-03 06:03:19 +0000 |
4503 | @@ -0,0 +1,6 @@ |
4504 | +PACKAGE_VERSION=@version@ |
4505 | +PACKAGE_NAME=@prognamebase@ |
4506 | +PACKAGE_TITLE="@progtitle@" |
4507 | + |
4508 | +# depends on whether the current build is configured as client or server, maybe don't use? |
4509 | +# PACKAGE_NAME_FULL=@progname@ |
4510 | |
4511 | === added file 'docker/build/context/winbuild.sh' |
4512 | --- docker/build/context/winbuild.sh 1970-01-01 00:00:00 +0000 |
4513 | +++ docker/build/context/winbuild.sh 2020-07-03 06:03:19 +0000 |
4514 | @@ -0,0 +1,14 @@ |
4515 | +#!/bin/sh |
4516 | +# makes windows build from source |
4517 | + |
4518 | +set -x |
4519 | + |
4520 | +Xvfb :99 -screen 1 640x480x8 -nolisten tcp & |
4521 | +DISPLAY=:99 |
4522 | +sleep 1 |
4523 | +cd winsource |
4524 | +./fromunix.sh || exit $? |
4525 | +cd .. |
4526 | + |
4527 | +# comment out for debugging |
4528 | +rm -rf winsource winlibs debug |
4529 | |
4530 | === added file 'docker/build/context/wininst.sh' |
4531 | --- docker/build/context/wininst.sh 1970-01-01 00:00:00 +0000 |
4532 | +++ docker/build/context/wininst.sh 2020-07-03 06:03:19 +0000 |
4533 | @@ -0,0 +1,22 @@ |
4534 | +#!/bin/sh |
4535 | +# builds windows installer |
4536 | + |
4537 | +set -x |
4538 | + |
4539 | +if test -r ~/.wine/drive_c/Program\ Files\ \(x86\)/NSIS/makensis.exe; then |
4540 | + NSIS="C:\Program Files (x86)\NSIS\makensis.exe" |
4541 | +else |
4542 | + NSIS="C:\Program Files\NSIS\makensis.exe" |
4543 | +fi |
4544 | + |
4545 | +Xvfb :99 -screen 1 640x480x8 -nolisten tcp & |
4546 | +DISPLAY=:99 |
4547 | +sleep 1 |
4548 | +cd dist |
4549 | +wine "$NSIS" gcc.armagetronad.nsi || exit $? |
4550 | +wine "$NSIS" gcc.armagetronad_dedicated.nsi || exit $? |
4551 | +mv *.gcc.win32.exe ../ || exit $? |
4552 | +cd .. |
4553 | + |
4554 | +# comment out for debugging |
4555 | +rm -rf dist |
4556 | |
4557 | === added file 'docker/build/context/winsource.sh' |
4558 | --- docker/build/context/winsource.sh 1970-01-01 00:00:00 +0000 |
4559 | +++ docker/build/context/winsource.sh 2020-07-03 06:03:19 +0000 |
4560 | @@ -0,0 +1,82 @@ |
4561 | +#!/bin/sh |
4562 | +# packs windows sources |
4563 | + |
4564 | +set -x |
4565 | + |
4566 | +. ./version.sh |
4567 | + |
4568 | +WINDIR=winsource |
4569 | +SRCDIR=source |
4570 | +BUILDDIR=build |
4571 | +DOCDIR=build/src/doc |
4572 | +CODEBLOCKS=codeblocks |
4573 | + |
4574 | +# prepare windows sources |
4575 | +rm -rf $WINDIR |
4576 | +cp -a $SRCDIR $WINDIR || exit 1 |
4577 | +rm -rf $WINDIR/src/doc |
4578 | +rm -rf $WINDIR/doc |
4579 | +cp -r $DOCDIR $WINDIR/doc || exit 1 |
4580 | +cp -r $BUILDDIR/language/languages.txt $WINDIR/language || exit 1 |
4581 | +cp -r $BUILDDIR/config/aiplayers.cfg $WINDIR/config || exit 1 |
4582 | + |
4583 | +# rename text files |
4584 | +for f in $WINDIR/INSTALL $WINDIR/COPYING $WINDIR/AUTHORS $WINDIR/NEWS $WINDIR/ChangeLog `find $WINDIR -name "*README*"`; do |
4585 | + mv $f $f.txt || exit 1 |
4586 | +done |
4587 | + |
4588 | +# copy Code::Blocks build files |
4589 | +if test -n "${CODEBLOCKS}" && test -d ${CODEBLOCKS}; then |
4590 | + cp -r ${CODEBLOCKS}/* ${WINDIR}/ || exit 1 |
4591 | + |
4592 | + # adapt relative paths to source |
4593 | + for f in `ls ${CODEBLOCKS} -1 | egrep ".*\.cbp$|.*.\.bat$"`; do |
4594 | + echo $f |
4595 | + sed < ${CODEBLOCKS}/$f > ${WINDIR}/$f -e "s,=\.\.\\\\armagetronad,=.,g" -e "s,\.\./armagetronad[^_],,g" -e "s,\.\.\\\\armagetronad[^_],,g" -e "s,armagetronad,${PACKAGE_NAME},g" |
4596 | + done |
4597 | +fi |
4598 | + |
4599 | +# transcribe nsi scripts |
4600 | +for source in ${CODEBLOCKS}/*.nsi; do |
4601 | + f=`basename ${source}` |
4602 | + #echo Adapting installer script $f... |
4603 | + sed < ${source} > ${WINDIR}/$f \ |
4604 | + -e "s,define PRODUCT_VERSION.*$,define PRODUCT_VERSION \"${PACKAGE_VERSION}\"," \ |
4605 | + -e "s,define PRODUCT_BASENAME.*$,define PRODUCT_BASENAME \"${PACKAGE_TITLE}\"," \ |
4606 | + -e "s,armagetronad,${PACKAGE_NAME},g" || exit 1 |
4607 | + |
4608 | + for suffix in gcc; do |
4609 | + sed < ${source} > ${WINDIR}/${suffix}.$f \ |
4610 | + -e "s,define PRODUCT_VERSION.*$,define PRODUCT_VERSION \"${PACKAGE_VERSION}.${suffix}\"," \ |
4611 | + -e "s,define PRODUCT_BASENAME.*$,define PRODUCT_BASENAME \"${PACKAGE_TITLE}\"," \ |
4612 | + -e "s,armagetronad,${PACKAGE_NAME},g" || exit 1 |
4613 | + |
4614 | + # generate special makedist script that copies only the wanted installer generators |
4615 | + MAKEDIST=${WINDIR}/makedist_${suffix}.bat |
4616 | + echo "call makedist.bat" > ${MAKEDIST} |
4617 | + echo "xcopy dist\\${suffix}.*.nsi . /Y" >> ${MAKEDIST} |
4618 | + echo "del dist\\*.nsi" >> ${MAKEDIST} |
4619 | + echo "xcopy ${suffix}.*.nsi dist /Y" >> ${MAKEDIST} |
4620 | + echo "del ${suffix}*.nsi" >> ${MAKEDIST} |
4621 | + echo "pause" >> ${MAKEDIST} |
4622 | + done |
4623 | +done |
4624 | + |
4625 | +# transcode to windows CR/LF line mode |
4626 | +for suffix in bat nsi nsi.m4 cfg txt dsp dsw h cpp dtd xml; do |
4627 | + find $WINDIR -name "*.$suffix" -exec recode latin1..latin1/CR-LF \{\} \; |
4628 | +done |
4629 | + |
4630 | +rm -rf $WINDIR/config.* $WINDIR/configure* $WINDIR/*.m4 $WINDIR/*.kde* |
4631 | +rm -rf $WINDIR/bootstrap.sh $WINDIR/batch $WINDIR/missing $WINDIR/install-sh $WINDIR/textures/KGN* |
4632 | +find $WINDIR -name "*.in" -exec rm \{\} \; |
4633 | +find $WINDIR -name "*.am" -exec rm \{\} \; |
4634 | +find $WINDIR -name "Makefile*" -exec rm \{\} \; |
4635 | +find $WINDIR -name "*.ghost" -exec rm \{\} \; |
4636 | +find $WINDIR -depth -name "CVS" -exec rm -rf \{\} \; |
4637 | +find $WINDIR -depth -name "*~" -exec rm -rf \{\} \; |
4638 | + |
4639 | +chmod +x winsource/fromunix.sh || exit 1 |
4640 | + |
4641 | +# comment out for debugging |
4642 | +rm -rf ${CODEBLOCKS} ${SRCDIR} ${BUILDDIR} |
4643 | |
4644 | === added file 'docker/build/context_to_result.sh' |
4645 | --- docker/build/context_to_result.sh 1970-01-01 00:00:00 +0000 |
4646 | +++ docker/build/context_to_result.sh 2020-07-03 06:03:19 +0000 |
4647 | @@ -0,0 +1,43 @@ |
4648 | +#!/bin/bash |
4649 | + |
4650 | +# runs a context through dockerbuild |
4651 | +# usage: context_to_result.sh <image> <name> <command> |
4652 | +# takes input: context.<name> |
4653 | +# produces output: result.<name> |
4654 | +# name can also carry a context. or result. prefix, it will be removed |
4655 | + |
4656 | +#echo -e "\e]2;Build $1\a" |
4657 | + |
4658 | +set -x |
4659 | + |
4660 | +wd="`dirname $0`" |
4661 | +bic="`readlink -f ${wd}/build_in_container.sh`" |
4662 | + |
4663 | +name="$1" |
4664 | +shift |
4665 | + |
4666 | +if echo ${name} | grep "^context\." > /dev/null; then |
4667 | + name=`echo ${name} | sed -e s,context\.,,` |
4668 | +fi |
4669 | +if echo ${name} | grep "^result\." > /dev/null; then |
4670 | + name=`echo ${name} | sed -e s,result\.,,` |
4671 | +fi |
4672 | + |
4673 | +rm -rf result.${name} |
4674 | +cd context.${name} || exit $? |
4675 | +image=`cat image` || exit $? |
4676 | + |
4677 | +#sleep 1 |
4678 | + |
4679 | +find . -name "*~" -exec rm \{\} \; |
4680 | + |
4681 | +set +x |
4682 | +echo -e "\n\n********************************************************************" |
4683 | +echo -e "Build ${name}" |
4684 | +echo -e "vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv\n\n" |
4685 | + |
4686 | +${bic} "${image}" ../result.${name} "$@" || exit $? |
4687 | + |
4688 | +echo -e "\n\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" |
4689 | +echo -e "Done building ${name}" |
4690 | +echo -e "********************************************************************" |
4691 | |
4692 | === added file 'docker/build/debian_source.sh' |
4693 | --- docker/build/debian_source.sh 1970-01-01 00:00:00 +0000 |
4694 | +++ docker/build/debian_source.sh 2020-07-03 06:03:19 +0000 |
4695 | @@ -0,0 +1,48 @@ |
4696 | +#!/bin/bash |
4697 | + |
4698 | +# prepares debian sources |
4699 | +# parameters: <series> (unstable/karmic/gutsy...) |
4700 | + |
4701 | +# import gpg keys |
4702 | +EXIT=0 |
4703 | +gpg --import pub.gpg 2>&1 | tee importlog || EXIT=$? |
4704 | +gpg --allow-secret-key-import --import sec.gpg || EXIT=$? |
4705 | +rm -rf *.gpg |
4706 | +test ${EXIT} = 0 || exit ${EXIT} |
4707 | + |
4708 | +set -x |
4709 | + |
4710 | +# determine email of key owner |
4711 | +#grep "public key .* imported" importlog |
4712 | +#grep "public key .* imported" importlog | sed -e 's/>".*$/>/' -e 's/^.*"//' |
4713 | +MAIL=`grep "public key .* imported" importlog | sed -e 's/>".*$/>/' -e 's/^.*"//'` |
4714 | + |
4715 | +SERIES=$1 |
4716 | +test -z ${SERIES} && SERIES=unstable |
4717 | + |
4718 | +. version.sh || exit $? |
4719 | + |
4720 | +DEBIAN_VERSION=`echo ${PACKAGE_VERSION} | sed -e s,_,~,g`~ppa1~${SERIES} |
4721 | + |
4722 | +mv debian/changelog changelog_orig || exit $? |
4723 | +cat > debian/changelog <<EOF |
4724 | +armagetronad (${DEBIAN_VERSION}) ${SERIES}; urgency=medium |
4725 | + |
4726 | + * Updated to new upstream version |
4727 | + |
4728 | + -- ${MAIL} `date -R` |
4729 | + |
4730 | +EOF |
4731 | +cat changelog_orig >> debian/changelog || exit $? |
4732 | + |
4733 | +. `dirname $0`/rebrand_debian_core.sh || exit $? |
4734 | + |
4735 | +mv *${PACKAGE_VERSION}.tar.gz ${PACKAGE_NAME}_${DEBIAN_VERSION}.orig.tar.gz || exit $? |
4736 | + |
4737 | +mv debian source/ || exit $? |
4738 | +pushd source || exit $? |
4739 | +debuild -S -sa || exit $? |
4740 | + |
4741 | +# cleanup (no, required for testing) |
4742 | +#popd |
4743 | +#rm -rf source |
4744 | |
4745 | === added file 'docker/build/fakerelease_proto.sh' |
4746 | --- docker/build/fakerelease_proto.sh 1970-01-01 00:00:00 +0000 |
4747 | +++ docker/build/fakerelease_proto.sh 2020-07-03 06:03:19 +0000 |
4748 | @@ -0,0 +1,3 @@ |
4749 | +# move to fakerelease.sh in configured directory to enable quick |
4750 | +# compilation free test builds |
4751 | +export ARMAGETRONAD_FAKERELEASE=true |
4752 | |
4753 | === added file 'docker/build/make_ci.sh.in' |
4754 | --- docker/build/make_ci.sh.in 1970-01-01 00:00:00 +0000 |
4755 | +++ docker/build/make_ci.sh.in 2020-07-03 06:03:19 +0000 |
4756 | @@ -0,0 +1,34 @@ |
4757 | +#!/bin/bash |
4758 | + |
4759 | +# Helper script for building, just calls make <args> |
4760 | +# Optional first argument: -k, keeps intermediate directories |
4761 | +# (default: delete intermediates) |
4762 | + |
4763 | +set -x |
4764 | + |
4765 | +keep=false |
4766 | +if test "$1" = -k; then |
4767 | + keep=true |
4768 | + shift |
4769 | +fi |
4770 | + |
4771 | +EXIT=0 |
4772 | + |
4773 | +pushd `dirname $0` || exit $? |
4774 | + |
4775 | +# first make run |
4776 | +if ! make $*; then |
4777 | + # try again with better debug output |
4778 | + make -d $* || EXIT=$? |
4779 | +fi |
4780 | + |
4781 | +# remove heavy intermediate directories |
4782 | +if test ${keep} = false; then |
4783 | + make artifactclean |
4784 | +fi |
4785 | + |
4786 | +popd |
4787 | + |
4788 | +# communicate final make return |
4789 | +exit ${EXIT} |
4790 | + |
4791 | |
4792 | === added file 'docker/build/make_deploy.sh' |
4793 | --- docker/build/make_deploy.sh 1970-01-01 00:00:00 +0000 |
4794 | +++ docker/build/make_deploy.sh 2020-07-03 06:03:19 +0000 |
4795 | @@ -0,0 +1,29 @@ |
4796 | +#!/bin/bash |
4797 | + |
4798 | +# Helper script for deployment, used form (un)staged_% make targets |
4799 | +# Usage: make_deploy.sh <target to make> |
4800 | +# usually, <target to make> will be 'deploy' |
4801 | + |
4802 | +set -x |
4803 | + |
4804 | +EXIT=0 |
4805 | + |
4806 | +# first make run |
4807 | +if ! ${MAKE} $*; then |
4808 | + # deployment occasionally fails due to network problems, wait a bit and try again |
4809 | + sleep 300 |
4810 | + if ! ${MAKE} $*; then |
4811 | + sleep 900 |
4812 | + # last run without fancy arguments |
4813 | + make $* || EXIT=$? |
4814 | + fi |
4815 | +fi |
4816 | + |
4817 | +# reset deployment targets |
4818 | +rm -f ../deploy/targets.sh |
4819 | +${MAKE} ../deploy/targets.sh |
4820 | + |
4821 | +# communicate final make return |
4822 | +exit ${EXIT} |
4823 | + |
4824 | + |
4825 | |
4826 | === added file 'docker/build/prepare_context.sh' |
4827 | --- docker/build/prepare_context.sh 1970-01-01 00:00:00 +0000 |
4828 | +++ docker/build/prepare_context.sh 2020-07-03 06:03:19 +0000 |
4829 | @@ -0,0 +1,33 @@ |
4830 | +#!/bin/bash |
4831 | + |
4832 | +# prepares a context for a docker based build |
4833 | +# usage: prepare_context.sh <target_dir> <files and directories> |
4834 | + |
4835 | +target="$1" |
4836 | +shift |
4837 | + |
4838 | +#echo -e "\e]2;Prepare ${target}\a" |
4839 | + |
4840 | +echo -e "\n\n********************************************************************" |
4841 | +echo -e "Prepare ${target} from $1" |
4842 | +echo -e "vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv\n\n" |
4843 | + |
4844 | +set -x |
4845 | + |
4846 | +rm -rf ${target} |
4847 | +mkdir -p ${target} |
4848 | + |
4849 | +if ! cp -lrf context/version.sh $@ ${target}/; then |
4850 | + rm -rf ${target}/version.sh |
4851 | + cp -lrf context/version.sh ${target}/ || { rm -rf ${target}; exit 1; } |
4852 | + |
4853 | + for f in $@; do |
4854 | + rm -rf ${target}/`basename $f` |
4855 | + cp -lrf $f ${target}/ || { rm -rf ${target}; exit 1; } |
4856 | + done |
4857 | +fi |
4858 | + |
4859 | +if test -f fakerelease.sh; then |
4860 | + rm -rf ${target}/fakerelease.sh |
4861 | + cp -lrf fakerelease.sh ${target}/ |
4862 | +fi |
4863 | |
4864 | === added file 'docker/build/rebrand_debian_core.sh' |
4865 | --- docker/build/rebrand_debian_core.sh 1970-01-01 00:00:00 +0000 |
4866 | +++ docker/build/rebrand_debian_core.sh 2020-07-03 06:03:19 +0000 |
4867 | @@ -0,0 +1,24 @@ |
4868 | +#/bin/bash |
4869 | + |
4870 | +#set -x |
4871 | + |
4872 | + |
4873 | + |
4874 | +PACKAGE=${PACKAGE_NAME} |
4875 | +NAME=${PACKAGE_TITLE} |
4876 | + |
4877 | + |
4878 | +pushd debian |
4879 | +sed -i -e "s/Armagetron Advanced/${NAME}/g" rules |
4880 | +for f in * man/* bin/* source/*; do |
4881 | + dest=$(echo $f | sed -e "s,armagetronad,${PACKAGE},g") |
4882 | + if test ! -d $f; then |
4883 | + echo $f "->" $dest |
4884 | + sed -e "s/armagetronad/${PACKAGE}/g" < $f | sed -e "s/${PACKAGE}\.net/armagetronad.net/g" -e "s/${PACKAGE}\.source/armagetronad.source/g" -e "s/${PACKAGE}-armagetronad/armagetronad-armagetronad/g" > $dest.out |
4885 | + rm -f $f $dest |
4886 | + mv $dest.out $dest |
4887 | + fi |
4888 | +done |
4889 | +chmod 755 rules |
4890 | +popd |
4891 | + |
4892 | |
4893 | === added file 'docker/build/setup_ci_test.sh.in' |
4894 | --- docker/build/setup_ci_test.sh.in 1970-01-01 00:00:00 +0000 |
4895 | +++ docker/build/setup_ci_test.sh.in 2020-07-03 06:03:19 +0000 |
4896 | @@ -0,0 +1,45 @@ |
4897 | +# sets up build environemnt to match CI situation |
4898 | + |
4899 | +function test_targets(){ |
4900 | + . ../deploy/targets.sh |
4901 | + echo LP_VERSION=${LP_VERSION} |
4902 | + echo SERIES=${SERIES} |
4903 | + echo SUFFIX=${SUFFIX} |
4904 | + echo SF_DIR=${SF_DIR} |
4905 | + echo LP_SERIES=${LP_SERIES} |
4906 | + echo ZI_SERIES=${ZI_SERIES} |
4907 | + echo STEAM_BRANCH=${STEAM_BRANCH} |
4908 | + echo UBUNTU_PPA=${UBUNTU_PPA} |
4909 | + echo UPLOAD_SCP${UPLOAD_SCP} |
4910 | + echo DOWNLOAD_URI_BASE=${DOWNLOAD_URI_BASE} |
4911 | +} |
4912 | + |
4913 | +if @top_srcdir@/docker/scripts/setup_ci_variables_test.sh $*; then |
4914 | + . @top_srcdir@/docker/scripts/setup_ci_variables_test.sh $* |
4915 | + . @top_srcdir@/docker/scripts/brand.sh @top_srcdir@ |
4916 | + pushd @top_builddir@ |
4917 | + pushd @abs_top_srcdir@ |
4918 | + ./bootstrap.sh |
4919 | + popd |
4920 | + @abs_top_srcdir@/configure --disable-glout progname=${PROGRAM_NAME} progtitle="${PROGRAM_TITLE}" |
4921 | + popd |
4922 | + rm -f CI_INFO |
4923 | + make CI_INFO |
4924 | + echo "" |
4925 | + echo "" |
4926 | + echo '****** CI_INFO ********' |
4927 | + cat CI_INFO |
4928 | + OLD_STAGING=${STAGING} |
4929 | + echo "" |
4930 | + echo '****** STAGING=true ********' |
4931 | + STAGING=true |
4932 | + test_targets |
4933 | + echo "" |
4934 | + echo '****** STAGING=false ********' |
4935 | + STAGING=false |
4936 | + test_targets |
4937 | + |
4938 | + echo "" |
4939 | + STAGING=${OLD_STAGING} |
4940 | +fi |
4941 | + |
4942 | |
4943 | === added directory 'docker/deploy' |
4944 | === added file 'docker/deploy/anonymous_secrets.b64' |
4945 | --- docker/deploy/anonymous_secrets.b64 1970-01-01 00:00:00 +0000 |
4946 | +++ docker/deploy/anonymous_secrets.b64 2020-07-03 06:03:19 +0000 |
4947 | @@ -0,0 +1,104 @@ |
4948 | +QlpoOTFBWSZTWWGRinoADcT/hPiQAQBAG//iP///8H////AAAgAIYBNfb7NNd9PufPe3uu92va77 |
4949 | +d6fW1q29t7yznu689fffa71r1t89e7617fXbMvvfY+e+vb2n3ut9l7X0d3dryvdxviKp41MJiYjC |
4950 | +aaYEwCMJgExMpQgAIqaYIyYCMmIwgwNGgJjUZNSRA0ephqpkyaYnqZI8EwEwTI0xNDRgmpioAAao |
4951 | +Qyap7TADSaYIap+pmgxoBMmik0AAaqE8AmyNE1PIJsCaaaB6mRT9MCJIAAahAENGmmnqGj1J6aZT |
4952 | +NDARop+jRNIT1PU8UtJ+WC/gDtxUipDLEIQA5ymWIQ65SNKpgKEJgIUhHAAlsTALh5Xf7lznHnFL |
4953 | +nm1he8YrQtc3/FAaInXBjztCKwspm5wf/vWdmBV4v5UQfQ46R+9eZ0EjvUYeaIGmcdelrBfatPGi |
4954 | +zlhuyHUy2QlCWB98fBxf3Dz8sY/i5loJSSAhiZwIJAVk5S+QFdu3R9u0OaY/+R7QfQqs1/H3upYv |
4955 | +e8gePI3U7V0exxCYcubWJOT7z1O/Ax5NKFHDBim3aaglT+0Sm7xvn/1UsGUe2sXF9TJP5vxKMnbq |
4956 | +Wg1AA2bgPwMDbFChVvYA1iarb95h86i3rl3ZLP1/B7MqbD4cVUAtYTnP4O0swKQxFqGUNWh76RLW |
4957 | +h6p+3eHwaT1muDT+wl0GUTKKU8hSSaQMLXO4iUrz2jn8CTBG6VgewQZJZcoyElsQn/MQKoBk3jF5 |
4958 | +IAkCMmIYEby+/4j0JZmnrcmNNCuXh6jVlLgjpcYy8le2oejmiTOHB7+ZsMGhXlgWudB9ivr3dkBA |
4959 | +KWgHstX0WkhubAC7plrhG8VFL8vguT4NtRwZY0MkqNiagwYSTjbJwMbg/lS6A4XGQzo+3j6iw/MQ |
4960 | +9Ff0OVeIbGe/rdXb/T901/8/Ze04elAOfR+dHZP6uy1+RLS44KhxGJM4uuGoPDB8/CjxI4RWtaiO |
4961 | +c1nIQ9bl/tJkCDpyMAgHG/mgq3mO6igiDBiRxE0ORFm9jjeEUf0kWUCM/GAUW3fi7gIFFwv1HBSx |
4962 | +eTwD4vcWG45bBVrbuDj3M89m4iENP4U6pDT35Ky1x8CiHIsN14cXlAzRokAoU9DRZtYpwCiJnHK6 |
4963 | +84HUEK8rGeANG7NZ5MnJMSZHcJmkOoNH/AGYIqd/tIJBHtStXeHOHA9kHh+R7kRd8eMXJQMm03Wz |
4964 | +2ExxogvzI0WgmRIbZsmwORDEgXsRBItS4gDlNZveESLunzJn/gHmrjmnyy8c1jLI91zPJgmv+r1X |
4965 | +w5o371jp5xC7pXCivZ/HxZC/jC0PnJ42HEzu77usMqOgzXXg/hG8wJ6SXv+QXTZaiX5K1faPYXW0 |
4966 | +4jwIqGv1Rv0sH8neaZQ2P+hOUGxWLrjT9UQsBg3mJURCGvRZjVPtXPPvpD3E0eUm8+zIesXd07xJ |
4967 | +p6DvJNMBSPdmfxcLcCLr1s/RKN8zfEaH2wtt/HwRR+uj9NnwK97kq6YPjjSHwqubReegLMs1McTr |
4968 | +GaadwPvxH4b5grzNF0e4xto6BCkdbVdx1XwxrGqnv7L3JX6D32OmwL+65dfIF8nMEOti6sPGvvCf |
4969 | +zrKZPQKRWnlx0vjshw7KviHAx573dbPSrZq1eCgROIdbTBL4JO7RvvQnYtB9gmfbsIYRxj30ZzdQ |
4970 | +1rFWHBeZpNs6bP2tkEe3nULqoW7q3JI0ewKzJkOhnyzFefZZCUfCX1pPhUVOBspDuo6D8A0H/fBZ |
4971 | +ylhEqWVfOwcofGe8USnA6vwLH2pR0L03BupPvLeGKxxUXk6ERSidw+1mWGqfgtQeeVc7jzbMl3b1 |
4972 | +i66iiI6zTPfeV/G4XCF3RJU1EkCL9s1AswdFBMCnp+Un6ssereu+WGeOXDFWpKGdQ9LywnIUbV5r |
4973 | +c7vXqcr8V6XTv9JVgYGLdmoWrOPUOUoPvIoK1reynjVjVnWHjRbzZ71izMMTiGrzU6pQlT67m51I |
4974 | +BQkbhUk6IS1rVvJBH77MkHjmsmwijxnYIf8KYKxxO7sK2kkIwikpHGoHkH/HdkzQnSXcxGWYwHp+ |
4975 | +cPcHb4qn5IgDMik/IY+i90uyqRGdj1WBlkqDplc231nz5ZQTd5DuKq8dWtI91Z4NI7x7+nctw6Fl |
4976 | +rlcXeqr+dD/4D8wZMUPry6iWSEgq/IChAX10457GHATQchlPsmaYi8Kl3YUyacZWzaJwTJkeQ7jb |
4977 | +YQVcU0sLTDTKIu/3mmtbwv0N/f2AM785X0Oe8+D1AMofBI4ZyVSmYL4ac9nq1m0HB8X65fqQWgEf |
4978 | +k1ENjdoXzrFQj2iz9hoIwJraJK1LAzITPBb87Hxa4CKSqxUQInbp1lLHOeW9twJ/m64h3fA+M7fX |
4979 | +Ppg+QX5qkh0C2izPBbb4qs84D/4xxRuxjindFOjFFRxISGQMC4Ny8m59MBcHd4sOjlGjiF4WtLp9 |
4980 | +XoSYWjur2nrebbI7AbhfFViEZk7srWF0T5jD+LwnNE2n7ChiSoOiEx4wXkqX8OGc78gwz25z4xP7 |
4981 | +0toRQ7hi1M+eXSlSiTRGsSQrcL3jWmSUhl2uQEuMO36fAI26qYBwADIMi19CKi3mkv0vtALdC1vu |
4982 | +YeT4oMjzvl1NIF0q1VHnUdbQIdIwWa3JXwjzqu+RUmV2gr9T+r5UeWIYaUze2LKJ2GuL+2uiyVB0 |
4983 | +ZZ5b33L0EwJnczRogJxrFBZ1krtrXaIlWzyZ3kvWmsgvUXdELq/T1NFbSpPuZgN4At7FZNTN42Al |
4984 | +9cnyMq3xEQVt8oACKb5yAGkkWmoScx697gt5kN4jcRu8Om4q5Z+0BxItuo54sM2TDaHM6r97Bk4b |
4985 | +sC5uC9mCylhcmpVTLkVGblu0O5u4ISNwyA7bJED2rK3wUvrK5JxlMhy2BU4IHmKNa5YQ3OXM2iVU |
4986 | +KGvrL22mZNku8rCpC7PsoMEqHYezJD2cvPsNxCB1bFJVQ+y3FKy1K4Zgf7loCt6mgFCmqJuD21JY |
4987 | +Dd3q6IoXx8OpG01G3wI5cx2hc1ZT6/GgeII6JyA0nRZiXkdGMDYkE4H5/y6FJIh6C2/UwFaw+iBK |
4988 | +xpitAgwFzAuxsLLyaB+g3L37jWB4SD41tfDa8jCgIFvCjgcmDX5OYaOhOoNqnvvzSDvpQqD9qvnq |
4989 | +mHn0q/ThcqLVV+sx0KYp6palpCHpsuNSVA+ZixwbgegSmM5W+4rkSH3ZjEO5wV5v25DJwCFxQDU3 |
4990 | +353B0PVFzjtDNCfAq7Lz4dXCOYrgGxqmipHsBBfqje6Ml+IT+sX3gm1stgkQbmLIbvwG9AsQiaHU |
4991 | +bQ+D7Lq3cabBfdCGb9tnr4WsnoHuNwRyAr5C+MRr99iB842FXkmsSupIGS9UJQ2Z2rmh6SyDHOEf |
4992 | +Lolsb4x+TubR8Zera8j+1eY4OpDYhOk2+D1mekqg3DQ0MOlAiTZWT8PNTirJaG9A9ahYvHEDTSyj |
4993 | +XDqcn183mTWYJWFkE2uQTvenZk9zRGz0sfrspjf2DnWPl9n/WcMcl6PcY3rMJooLBMOrV3fkXzeG |
4994 | +sWBPD9bO8TSGlA+CquWZxrPZPYL64y+AYhytBONUXR/296AbdM6BgenHpGkld7Zm33EWcRF99MFh |
4995 | +r4xqgQbV5FxZT6j43NfOixSRivI4+BsyXOMj4VjzYwW8Mb4wTR9/kDNZEzcbgOcp/1U+HoeVwxfD |
4996 | +3nqzBgkQvWt9LLentBrHyobYWv1qVYv9Pv9rj4Qe27hTTIVVynPTtwqVV8pYRskhREkwBVfVzWqR |
4997 | +tmZSD5hdzQx/q7EOenyBBz2ahLojO518Li+6kpe6qYPYJsNkL7gPlxQftbltckjupn3NwY2JB6Zd |
4998 | +IWU8HKaRgq6PPaH6m9RRjA8uf5Gsg5BTtcg1wyPupHX2Lk5pb6i51xb5UVRU3vJ3zqUs0JdXN3tO |
4999 | +jttxvlrKn2kEbC9P2vhaTUN2D3FeUJpiBIzhorZO3oAuwXxO7XmsUUJXH1h65k97KCIqUAciLykR |
5000 | +W5ib6aI6ZX6GnIXStWiVzWoLX7Fg0ImskpoFrPY1Q9hxc+l/D8t47VEUqIHE7Lz5hMOfWliCl8gn |