forked from Mirrorlandia_minetest/minetest
cf136914cf
With the CMake changes to IrrlichtMt, it's now possible to use a target for IrrlichtMt. Besides greatly improving the ease of setting up IrrlichtMt for users building the client, it removes the need for Minetest's CMake to include transitive dependencies such as image libraries, cleaning it up a tiny bit. The PR works by finding the IrrlichtMt package and linking to the target it provides. If the package isn't found and it isn't building the client, it will still fall back to using just the headers of old Irrlicht or IrrlichtMt.
291 lines
7.0 KiB
YAML
291 lines
7.0 KiB
YAML
---
|
|
# Github repository is cloned every day on Gitlab.com
|
|
# https://gitlab.com/minetest/minetest
|
|
# Pipelines URL: https://gitlab.com/minetest/minetest/pipelines
|
|
|
|
stages:
|
|
- build
|
|
- package
|
|
- deploy
|
|
|
|
variables:
|
|
IRRLICHT_TAG: "1.9.0mt2"
|
|
MINETEST_GAME_REPO: "https://github.com/minetest/minetest_game.git"
|
|
CONTAINER_IMAGE: registry.gitlab.com/$CI_PROJECT_PATH
|
|
|
|
.build_template:
|
|
stage: build
|
|
before_script:
|
|
- apt-get update
|
|
- apt-get -y install build-essential git cmake libpng-dev libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libleveldb-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev zlib1g-dev libgmp-dev libjsoncpp-dev
|
|
script:
|
|
- git clone https://github.com/minetest/irrlicht -b $IRRLICHT_TAG lib/irrlichtmt
|
|
- mkdir cmakebuild
|
|
- cd cmakebuild
|
|
- cmake -DCMAKE_INSTALL_PREFIX=../artifact/minetest/usr/ -DCMAKE_BUILD_TYPE=Release -DRUN_IN_PLACE=FALSE -DENABLE_GETTEXT=TRUE -DBUILD_SERVER=TRUE ..
|
|
- make -j2
|
|
- make install
|
|
artifacts:
|
|
when: on_success
|
|
expire_in: 1h
|
|
paths:
|
|
- artifact/*
|
|
|
|
.debpkg_template:
|
|
stage: package
|
|
before_script:
|
|
- apt-get update
|
|
- apt-get install -y git
|
|
- mkdir -p build/deb/minetest/DEBIAN/
|
|
- cp misc/debpkg-control build/deb/minetest/DEBIAN/control
|
|
- cp -a artifact/minetest/usr build/deb/minetest/
|
|
script:
|
|
- git clone $MINETEST_GAME_REPO build/deb/minetest/usr/share/minetest/games/minetest_game
|
|
- rm -rf build/deb/minetest/usr/share/minetest/games/minetest/.git
|
|
- sed -i 's/DATEPLACEHOLDER/'$(date +%y.%m.%d)'/g' build/deb/minetest/DEBIAN/control
|
|
- sed -i 's/JPEG_PLACEHOLDER/'$JPEG_PKG'/g' build/deb/minetest/DEBIAN/control
|
|
- sed -i 's/LEVELDB_PLACEHOLDER/'$LEVELDB_PKG'/g' build/deb/minetest/DEBIAN/control
|
|
- cd build/deb/ && dpkg-deb -b minetest/ && mv minetest.deb ../../
|
|
artifacts:
|
|
expire_in: 90 day
|
|
paths:
|
|
- ./*.deb
|
|
|
|
.debpkg_install:
|
|
stage: deploy
|
|
before_script:
|
|
- apt-get update
|
|
script:
|
|
- apt-get install -y ./*.deb
|
|
- minetest --version
|
|
|
|
##
|
|
## Debian
|
|
##
|
|
|
|
# Stretch
|
|
|
|
build:debian-9:
|
|
extends: .build_template
|
|
image: debian:9
|
|
|
|
package:debian-9:
|
|
extends: .debpkg_template
|
|
image: debian:9
|
|
needs:
|
|
- build:debian-9
|
|
variables:
|
|
LEVELDB_PKG: libleveldb1v5
|
|
JPEG_PKG: libjpeg62-turbo
|
|
|
|
deploy:debian-9:
|
|
extends: .debpkg_install
|
|
image: debian:9
|
|
needs:
|
|
- package:debian-9
|
|
|
|
# Buster
|
|
|
|
build:debian-10:
|
|
extends: .build_template
|
|
image: debian:10
|
|
|
|
package:debian-10:
|
|
extends: .debpkg_template
|
|
image: debian:10
|
|
needs:
|
|
- build:debian-10
|
|
variables:
|
|
LEVELDB_PKG: libleveldb1d
|
|
JPEG_PKG: libjpeg62-turbo
|
|
|
|
deploy:debian-10:
|
|
extends: .debpkg_install
|
|
image: debian:10
|
|
needs:
|
|
- package:debian-10
|
|
|
|
##
|
|
## Ubuntu
|
|
##
|
|
|
|
# Xenial
|
|
|
|
build:ubuntu-16.04:
|
|
extends: .build_template
|
|
image: ubuntu:xenial
|
|
|
|
package:ubuntu-16.04:
|
|
extends: .debpkg_template
|
|
image: ubuntu:xenial
|
|
needs:
|
|
- build:ubuntu-16.04
|
|
variables:
|
|
LEVELDB_PKG: libleveldb1v5
|
|
JPEG_PKG: libjpeg-turbo8
|
|
|
|
deploy:ubuntu-16.04:
|
|
extends: .debpkg_install
|
|
image: ubuntu:xenial
|
|
needs:
|
|
- package:ubuntu-16.04
|
|
|
|
# Bionic
|
|
|
|
build:ubuntu-18.04:
|
|
extends: .build_template
|
|
image: ubuntu:bionic
|
|
|
|
package:ubuntu-18.04:
|
|
extends: .debpkg_template
|
|
image: ubuntu:bionic
|
|
needs:
|
|
- build:ubuntu-18.04
|
|
variables:
|
|
LEVELDB_PKG: libleveldb1v5
|
|
JPEG_PKG: libjpeg-turbo8
|
|
|
|
deploy:ubuntu-18.04:
|
|
extends: .debpkg_install
|
|
image: ubuntu:bionic
|
|
needs:
|
|
- package:ubuntu-18.04
|
|
|
|
##
|
|
## Fedora
|
|
##
|
|
|
|
# Fedora 28 <-> RHEL 8
|
|
build:fedora-28:
|
|
extends: .build_template
|
|
image: fedora:28
|
|
before_script:
|
|
- dnf -y install make git gcc gcc-c++ kernel-devel cmake libjpeg-devel libpng-devel libcurl-devel openal-soft-devel libvorbis-devel libXxf86vm-devel libogg-devel freetype-devel mesa-libGL-devel zlib-devel jsoncpp-devel gmp-devel sqlite-devel luajit-devel leveldb-devel ncurses-devel spatialindex-devel
|
|
|
|
##
|
|
## MinGW for Windows
|
|
##
|
|
|
|
.generic_win_template:
|
|
image: ubuntu:focal
|
|
before_script:
|
|
- apt-get update
|
|
- DEBIAN_FRONTEND=noninteractive apt-get install -y wget xz-utils unzip git cmake gettext
|
|
- wget -nv http://minetest.kitsunemimi.pw/mingw-w64-${WIN_ARCH}_9.2.0_ubuntu18.04.tar.xz -O mingw.tar.xz
|
|
- tar -xaf mingw.tar.xz -C /usr
|
|
|
|
.build_win_template:
|
|
extends: .generic_win_template
|
|
stage: build
|
|
artifacts:
|
|
expire_in: 1h
|
|
paths:
|
|
- build/build/*.zip
|
|
|
|
.package_win_template:
|
|
extends: .generic_win_template
|
|
stage: package
|
|
script:
|
|
- unzip build/build/*.zip
|
|
- cp -p /usr/${WIN_ARCH}-w64-mingw32/bin/libgcc*.dll minetest-*-win*/bin/
|
|
- cp -p /usr/${WIN_ARCH}-w64-mingw32/bin/libstdc++*.dll minetest-*-win*/bin/
|
|
- cp -p /usr/${WIN_ARCH}-w64-mingw32/bin/libwinpthread*.dll minetest-*-win*/bin/
|
|
artifacts:
|
|
expire_in: 90 day
|
|
paths:
|
|
- minetest-*-win*/*
|
|
|
|
build:win32:
|
|
extends: .build_win_template
|
|
script:
|
|
- EXISTING_MINETEST_DIR=$PWD ./util/buildbot/buildwin32.sh build
|
|
variables:
|
|
WIN_ARCH: "i686"
|
|
|
|
package:win32:
|
|
extends: .package_win_template
|
|
needs:
|
|
- build:win32
|
|
variables:
|
|
WIN_ARCH: "i686"
|
|
|
|
|
|
build:win64:
|
|
extends: .build_win_template
|
|
script:
|
|
- EXISTING_MINETEST_DIR=$PWD ./util/buildbot/buildwin64.sh build
|
|
variables:
|
|
WIN_ARCH: "x86_64"
|
|
|
|
package:win64:
|
|
extends: .package_win_template
|
|
needs:
|
|
- build:win64
|
|
variables:
|
|
WIN_ARCH: "x86_64"
|
|
|
|
##
|
|
## Docker
|
|
##
|
|
|
|
package:docker:
|
|
stage: package
|
|
image: docker:stable
|
|
services:
|
|
- docker:dind
|
|
before_script:
|
|
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.gitlab.com
|
|
script:
|
|
- docker build . -t ${CONTAINER_IMAGE}/server:$CI_COMMIT_SHA -t ${CONTAINER_IMAGE}/server:$CI_COMMIT_REF_NAME -t ${CONTAINER_IMAGE}/server:latest
|
|
- docker push ${CONTAINER_IMAGE}/server:$CI_COMMIT_SHA
|
|
- docker push ${CONTAINER_IMAGE}/server:$CI_COMMIT_REF_NAME
|
|
- docker push ${CONTAINER_IMAGE}/server:latest
|
|
|
|
##
|
|
## Gitlab Pages (Lua API documentation)
|
|
##
|
|
|
|
pages:
|
|
stage: deploy
|
|
image: python:3.8
|
|
before_script:
|
|
- pip install git+https://github.com/Python-Markdown/markdown.git
|
|
- pip install git+https://github.com/mkdocs/mkdocs.git
|
|
- pip install pygments
|
|
script:
|
|
- cd doc/mkdocs && ./build.sh
|
|
artifacts:
|
|
paths:
|
|
- public
|
|
only:
|
|
- master
|
|
|
|
##
|
|
## AppImage
|
|
##
|
|
|
|
package:appimage-client:
|
|
stage: package
|
|
image: appimagecrafters/appimage-builder
|
|
needs:
|
|
- build:ubuntu-18.04
|
|
before_script:
|
|
- apt-get update -y
|
|
- apt-get install -y git
|
|
# Collect files
|
|
- mkdir AppDir
|
|
- cp -a artifact/minetest/usr/ AppDir/usr/
|
|
- rm AppDir/usr/bin/minetestserver
|
|
- cp -a clientmods AppDir/usr/share/minetest
|
|
script:
|
|
- git clone $MINETEST_GAME_REPO AppDir/usr/share/minetest/games/minetest_game
|
|
- rm -rf AppDir/usr/share/minetest/games/minetest/.git
|
|
- export VERSION=$CI_COMMIT_REF_NAME-$CI_COMMIT_SHORT_SHA
|
|
# Remove PrefersNonDefaultGPU property due to validation errors
|
|
- sed -i '/PrefersNonDefaultGPU/d' AppDir/usr/share/applications/net.minetest.minetest.desktop
|
|
- appimage-builder --skip-test
|
|
artifacts:
|
|
expire_in: 90 day
|
|
paths:
|
|
- ./*.AppImage
|