# Configuration for Continous Integration # # Copyright (C) 2017 Khanat # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # Example to execute locally: # gitlab-runner exec docker --timeout=3600 'Linux client build' # gitlab-runner exec docker --timeout=3600 'Linux server debian_amd64_strech build' # gitlab-runner exec docker --timeout=3600 'Linux server_static debian_amd64_strech build' # gitlab-runner exec docker --timeout=3600 'Linux server_static_debug debian_amd64_buster build' # gitlab-runner exec docker --timeout=3600 'Linux server debian_amd64_buster build' # gitlab-runner exec docker --timeout=3600 'Linux client debian_amd64_strech build' # gitlab-runner exec docker --timeout=3600 'Linux client_static_debug debian_i386_strech build' # gitlab-runner exec docker --timeout=3600 --docker-volumes $PWD/builds:/builds 'Linux client debian_amd64_buster build' # gitlab-runner exec docker --timeout=3600 --docker-volumes $PWD/builds:/builds 'Linux client_appimage debian_amd64_buster build' # gitlab-runner exec docker --timeout=3600 'Linux client_static debian_amd64_strech build' # gitlab-runner exec docker --kubernetes-memory-limit='10g' --timeout=3600 'Linux client build' # gitlab-runner exec docker --kubernetes-memory-limit='10g' --timeout=3600 'Linux client archlinux build' # gitlab-runner exec docker --kubernetes-memory-limit='10g' --timeout=3600 'Linux client fedora_amd64_27 build' # gitlab-runner exec docker --kubernetes-memory-limit='10g' --timeout=3600 'Linux client ubuntu_amd64_17_10 build' # gitlab-runner exec docker --kubernetes-memory-limit='10g' --timeout=3600 'Windows client build' stages: - build - package - test #- staging #- production ## BUILDS # Job de compilation pour Linux Linux client build: stage: build except: - ryzomcore - mac-ci-build tags: - Docker image: debian:jessie script: - pwd # Calcul le nombre de cpu désactivé (on ne laisse que 4 au maximum) - disableproc=$(( $(nproc) - 4 )) - if [[ $disableproc -le 0 ]] ; then disableproc=0; fi - optionproc="-j$(nproc --ignore=$disableproc)" - echo "disableproc:$disableproc, nb core compile:$(nproc --ignore=$disableproc) optionproc:$optionproc" # Installation des dépendances #- echo "deb http://ftp.debian.org/debian/ jessie-backports non-free contrib main" >> /etc/apt/sources.list - DEBIAN_FRONTEND=noninteractive apt-get update - DEBIAN_FRONTEND=noninteractive apt-get upgrade -y - DEBIAN_FRONTEND=noninteractive apt-get install -y libxml2 libboost1.55-tools-dev dpkg-dev g++ gcc cmake libcurl4-openssl-dev libgl1-mesa-dev libjpeg-dev libpng-dev libopenal-dev libfreetype6-dev libxxf86vm-dev libxrandr-dev libxrender-dev libvorbis-dev libluabind-dev libboost-dev libmysqlclient-dev libssl-dev liblzma-dev libxml2-dev makeself libgif-dev patch xz-utils # Installation des dépendances des dépendances statiques (à commenter si construction de Khanat en mode dynamique) # libxml2 : python-pyicu (support d'unicode), python-dev (support de... python) - apt-get install -y wget python-pyicu python-dev # Apply patch - (for patchfile in $(cat patch/series); do echo "patch patch/$patchfile"; patch -f -Z -t -p 1 -i patch/$patchfile || exit 2; done) # Création de l'environnement de compilation - mkdir -p BUILD/x86_64 - cd BUILD/x86_64 ## Le curl des dépots a trop de dépendances en statique. On le recompile donc, afin d'aléger l'executable # Téléchargement et décompression des dépendances à recompiller - wget -q https://curl.haxx.se/download/curl-7.58.0.tar.gz -O curl.tar.gz - mkdir -p curl/build - tar xvf curl.tar.gz -C curl --strip 1 - (cd curl/build; cmake -DCMAKE_BUILD_TYPE=Release -DCURL_ZLIB=ON -DBUILD_CURL_EXE=OFF -DCURL_STATICLIB=ON -DHTTP_ONLY=ON -DENABLE_IPV6=ON -DCMAKE_USE_OPENSSL=ON -DOPENSSL_SSL_LIBRARIES=/usr/lib/x86_64-linux-gnu/libssl.a -DOPENSSL_CRYPTO_LIBRARIES=/usr/lib/x86_64-linux-gnu/libcrypto.a -DCMAKE_USE_LIBSSH2=OFF -DZLIB_LIBRARY=/usr/lib/x86_64-linux-gnu/libz.a -DCMAKE_C_FLAGS='-fPIC' ..) - (cd curl/build; make -j) - (cd curl/build; make install) # Build luabind - mkdir -p luabind - wget -q http://http.debian.net/debian/pool/main/l/luabind/luabind_0.9.1+dfsg.orig.tar.gz -O luabind.tar.gz - wget -q http://http.debian.net/debian/pool/main/l/luabind/luabind_0.9.1+dfsg-11.debian.tar.xz -O luabind-debian.tar.xz - tar xvf luabind.tar.gz -C luabind --strip 1 || exit 2 - xz -d luabind-debian.tar.xz - tar xvf luabind-debian.tar -C luabind || exit 2 - cd luabind - for file in $(cat debian/patches/series); do patch -p1 < debian/patches/$file; done - export -p DEB_HOST_MULTIARCH=$(dpkg-architecture -qDEB_HOST_MULTIARCH); bjam -d2 release debug install cflags="-fPIC $(dpkg-buildflags --get CFLAGS)" cxxflags="-fPIC $(dpkg-buildflags --get CXXFLAGS) -Wno-deprecated-declarations" linkflags=" $(dpkg-buildflags --get LDFLAGS)" - export -p DEB_HOST_MULTIARCH=$(dpkg-architecture -qDEB_HOST_MULTIARCH); bjam -d2 release debug install link=static cflags="-fPIC $(dpkg-buildflags --get CFLAGS)" cxxflags="-fPIC $(dpkg-buildflags --get CXXFLAGS) -Wno-deprecated-declarations" linkflags=" $(dpkg-buildflags --get LDFLAGS)" - cd .. # Build libogg - mkdir -p libogg/build - wget -q http://http.debian.net/debian/pool/main/libo/libogg/libogg_1.3.2.orig.tar.gz -O libogg.tar.gz - wget -q http://http.debian.net/debian/pool/main/libo/libogg/libogg_1.3.2-1.diff.gz -O libogg.diff.gz - tar xvf libogg.tar.gz -C libogg --strip 1 || exit 2 - gunzip libogg.diff.gz - cd libogg - patch -p1 < ../libogg.diff - cd build - ../configure --disable-maintainer-mode --host=$(dpkg-architecture -qDEB_HOST_GNU_TYPE) --build=$(dpkg-architecture -qDEB_BUILD_GNU_TYPE) --libdir=/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH) --enable-static --prefix=/usr CPPFLAGS="-D_FORTIFY_SOURCE=2" CFLAGS="-Wformat=2 -g -fPIC" CXXFLAGS="-Wformat=2 -g -fPIC" LDFLAGS="-Wl,-z,now" - make -j - make install - cd ../.. # Build libvorbis - mkdir -p libvorbis - wget -q http://security.debian.org/debian-security/pool/updates/main/libv/libvorbis/libvorbis_1.3.5.orig.tar.gz -O libvorbis.tar.gz - tar xvf libvorbis.tar.gz -C libvorbis --strip 1 || exit 2 # Get list package - wget -q http://security.debian.org/debian-security/pool/updates/main/libv/libvorbis -O list_libvorbis # get last patch for our release - line=$(egrep '(libvorbis_1.3.5)(.*)(tar[.]xz)' list_libvorbis | tail -n 1) # get only name of the patch - tmp=${line#*href} ; tmp2=${tmp%%>*} ; tmp3=${tmp2#*\"} ; namepatch=${tmp3%\"*} # download this patch - wget -q http://security.debian.org/debian-security/pool/updates/main/libv/libvorbis/$namepatch -O libvorbis.debian.tar.xz - tar xvf libvorbis.debian.tar.xz -C libvorbis || exit 2 - cd libvorbis - for file in $(cat debian/patches/series); do patch -p1 < debian/patches/$file; done - ./configure --enable-static --with-pic - make -j - make install - cd .. ## Compilation de Khanat # Configuration - cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/ -DCMAKE_BUILD_TYPE=Release -DWITH_RYZOM_SERVER=OFF -DWITH_RYZOM_TOOLS=OFF -DWITH_RYZOM_CLIENT=ON -DWITH_NEL_TESTS=OFF -DWITH_NEL_TOOLS=OFF -DWITH_NEL_SAMPLES=OFF -DWITH_STATIC=ON -DWITH_STATIC_DRIVERS=ON -DWITH_STATIC_EXTERNAL=ON -DWITH_UNIX_STRUCTURE=OFF -DWITH_INSTALL_LIBRARIES=OFF -DWITH_LUA52=ON ../../code # Compilation et installation - make $optionproc khanat_client_patcher khanat_client #- make $optionproc install DESTDIR=../../Linux/x86_64 - mkdir -p ../../Linux/x86_64 - cp bin/* ../../Linux/x86_64 # Packaging - cd ../../ - cp ./dist/khanat/autoextract_script.sh ./Linux/x86_64/ - chmod +x ./Linux/x86_64/autoextract_script.sh - makeself --nox11 --target /tmp/khanat_installer ./Linux/x86_64/ khanat-$(echo $CI_BUILD_REF | head -c 7 )-$CI_PIPELINE_ID-Linux-x86_64.run "Khanat installer" ./autoextract_script.sh - pwd artifacts: name: "khanat-$(echo $CI_BUILD_REF | head -c 7)-$CI_PIPELINE_ID-Linux-x86_64" paths: - khanat-$(echo $CI_BUILD_REF | head -c 7 )-$CI_PIPELINE_ID-Linux-x86_64.run when: manual Linux server debian_amd64_strech build: stage: build except: - mac-ci-build tags: - Docker image: amd64/debian:9 script: # Prepare environment - DEBIAN_FRONTEND=noninteractive apt-get update - DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y - DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server git libcurl4-openssl-dev libfreetype6-dev libx11-dev libgl1-mesa-dev libgnutls28-dev libxxf86vm-dev libxrandr-dev libxrender-dev libopenal-dev libxml2-dev cmake build-essential libpng-dev libjpeg62-turbo-dev rrdtool bison libxmu-dev autoconf automake default-libmysqlclient-dev libgif-dev cpputest libssl-dev liblzma-dev unzip zlib1g-dev libssh2-1-dev libboost-all-dev libopenal-dev libgl1-mesa-dev mercurial wget autogen libtool libtool-bin fakeroot libxml2-dev patch - apt-get install -y liblua5.2-0 liblua5.2-dev libluabind-dev libluabind0.9.1v5 # Apply patch - (for patchfile in $(cat patch/series); do echo "patch patch/$patchfile"; patch -f -Z -t -p 1 -i patch/$patchfile || exit 2; done) # install squish - mkdir -p squish - (cd squish; wget -c https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/libsquish/squish-1.11.zip) - (cd squish; unzip squish-1.11.zip) - (cd squish/squish-1.11; patch -i ../../patch/squish-limit.patch) - (cd squish/squish-1.11; make) - (cd squish/squish-1.11; make install) # Action - mkdir -p code/build - (cd code/build ; cmake -DWITH_LUA52=ON -DWITH_RYZOM_PATCH=ON -DWITH_RYZOM_CUSTOM_PATCH_SERVER=ON -DWITH_NEL_TESTS=OFF -DWITH_RYZOM_CLIENT=OFF -DWITH_DRIVER_OPENGL=OFF -DWITH_DRIVER_OPENAL=OFF -DWITH_NEL_SAMPLES=OFF -DWITH_SOUND=OFF ..) - (cd code/build; make ryzom_admin_service ryzom_ai_service ryzom_backup_service ryzom_dynamic_scenario_service ryzom_entities_game_service ryzom_frontend_service ryzom_general_utilities_service ryzom_gpm_service ryzom_ios_service ryzom_log_analyser_service ryzom_logger_service ryzom_mail_forum_service ryzom_mirror_service ryzom_mission_compiler ryzom_monitor_service ryzom_naming_service ryzom_patchman_service ryzom_pd_support_service ryzom_persistant_data_service ryzom_reference_builder_service ryzom_session_browser_service ryzom_shard_unifier_service ryzom_tick_service ryzom_welcome_service sheets_packer bnp_make make_sheet_id patch_gen) - (cd code/build/bin; ls -lh) artifacts: name: "khanat-server-debian_strech-$CI_COMMIT_REF_NAME" paths: - code/build/bin - code/build/lib - code/ryzom/server/shard.screen.rc - code/web - code/ryzom/server/*.cfg - code/ryzom/server/data_shard - code/ryzom/common/data_common - code/ryzom/common/data_leveldesign - code/ryzom/client/*.cfg - code/ryzom/client/cfg - code/ryzom/client/data - code/ryzom/client/macosx - code/ryzom/client/unix - code/ryzom/client/windows - code/ryzom/tools/scripts/linux # expire_in: 2 week Linux client debian_amd64_strech build: stage: build except: - mac-ci-build tags: - Docker image: amd64/debian:9 script: # Prepare environment - DEBIAN_FRONTEND=noninteractive apt-get update - DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y - apt-get install -y autoconf autogen automake bison build-essential cmake cpputest fakeroot libboost-all-dev libfreetype6-dev libgif-dev libgl1-mesa-dev libgnutls28-dev libjpeg62-turbo-dev liblzma-dev libopenal-dev libpng-dev libssh2-1-dev libssl-dev libtool libtool-bin libx11-dev libxml2-dev libxmu-dev libxrandr-dev libxrender-dev libxxf86vm-dev mercurial rrdtool unzip wget zlib1g-dev patch - apt-get install -y liblua5.2-0 liblua5.2-dev libluabind-dev libluabind0.9.1v5 libogg-dev libvorbis-dev # Apply patch - (for patchfile in $(cat patch/series); do echo "patch patch/$patchfile"; patch -f -Z -t -p 1 -i patch/$patchfile || exit 2; done) # Build Curl - wget -q https://curl.haxx.se/download/curl-7.58.0.tar.gz -O curl.tar.gz - mkdir -p curl/build - tar xvf curl.tar.gz -C curl --strip 1 - (cd curl/build; cmake -DCMAKE_BUILD_TYPE=Release -DCURL_ZLIB=ON -DBUILD_CURL_EXE=OFF -DCURL_STATICLIB=ON -DHTTP_ONLY=ON -DENABLE_IPV6=ON -DCMAKE_USE_OPENSSL=ON -DOPENSSL_SSL_LIBRARIES=/usr/lib/x86_64-linux-gnu/libssl.a -DOPENSSL_CRYPTO_LIBRARIES=/usr/lib/x86_64-linux-gnu/libcrypto.a -DCMAKE_USE_LIBSSH2=OFF -DZLIB_LIBRARY=/usr/lib/x86_64-linux-gnu/libz.a -DCMAKE_C_FLAGS='-fPIC' ..) - (cd curl/build; make) - (cd curl/build; make install) # Action - mkdir -p code/build - (cd code/build ; cmake -DWITH_NEL=ON -DWITH_LUA52=ON -DWITH_RYZOM_PATCH=OFF -DWITH_RYZOM_CUSTOM_PATCH_SERVER=OFF -DWITH_NEL_TESTS=OFF -DWITH_RYZOM_CLIENT=ON -DWITH_DRIVER_OPENGL=ON -DWITH_DRIVER_OPENAL=ON -DWITH_NEL_SAMPLES=OFF -DWITH_SOUND=ON -DWITH_STATIC_CURL=ON ..) - (cd code/build; make khanat_client) - (cd code/build/bin; ls -lh) artifacts: name: "khanat-client-debian_strech-$(echo $CI_BUILD_REF | head -c 7 )-$CI_PIPELINE_ID" paths: - code/build/bin # expire_in: 2 week Linux client_static debian_amd64_strech build: stage: build except: - mac-ci-build tags: - Docker image: amd64/debian:9 script: # Calcul le nombre de cpu désactivé (on ne laisse que 4 au maximum) - disableproc=$(( $(nproc) - 4 )) - if [[ $disableproc -le 0 ]] ; then disableproc=0; fi - optionproc="-j$(nproc --ignore=$disableproc)" # Prepare environment - DEBIAN_FRONTEND=noninteractive apt-get update - DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y - apt-get install -y autoconf autogen automake bison build-essential cmake cpputest fakeroot libboost-all-dev libfreetype6-dev libgif-dev libgl1-mesa-dev libgnutls28-dev libjpeg62-turbo-dev liblzma-dev libopenal-dev libpng-dev libssh2-1-dev libssl-dev libtool libtool-bin libx11-dev libxml2-dev libxmu-dev libxrandr-dev libxrender-dev libxxf86vm-dev mercurial rrdtool unzip wget zlib1g-dev patch - apt-get install -y liblua5.2-0 liblua5.2-dev # Apply patch - (for patchfile in $(cat patch/series); do echo "patch patch/$patchfile"; patch -f -Z -t -p 1 -i patch/$patchfile || exit 2; done) # Build Curl - wget -q https://curl.haxx.se/download/curl-7.58.0.tar.gz -O curl.tar.gz - mkdir -p curl/build - tar xvf curl.tar.gz -C curl --strip 1 - (cd curl/build; cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_CURL_TESTS=OFF -DCURL_ZLIB=ON -DBUILD_CURL_EXE=OFF -DCURL_STATICLIB=ON -DHTTP_ONLY=ON -DENABLE_IPV6=ON -DCMAKE_USE_OPENSSL=ON -DOPENSSL_SSL_LIBRARIES=/usr/lib/x86_64-linux-gnu/libssl.a -DOPENSSL_CRYPTO_LIBRARIES=/usr/lib/x86_64-linux-gnu/libcrypto.a -DCMAKE_USE_LIBSSH2=OFF -DZLIB_LIBRARY=/usr/lib/x86_64-linux-gnu/libz.a -DCMAKE_C_FLAGS='-fPIC' ..) - (cd curl/build; make) - (cd curl/build; make install) # Build luabind - mkdir -p luabind - wget -q http://http.debian.net/debian/pool/main/l/luabind/luabind_0.9.1+dfsg.orig.tar.gz -O luabind.tar.gz - wget -q http://http.debian.net/debian/pool/main/l/luabind/luabind_0.9.1+dfsg-11.debian.tar.xz -O luabind-debian.tar.xz - ls - tar xvf luabind.tar.gz -C luabind --strip 1 || exit 2 - tar xvf luabind-debian.tar.xz -C luabind || exit 2 - cd luabind - for file in $(cat debian/patches/series); do patch -p1 < debian/patches/$file; done - export -p DEB_HOST_MULTIARCH=$(dpkg-architecture -qDEB_HOST_MULTIARCH); bjam -d2 release debug install cflags="-fPIC $(dpkg-buildflags --get CFLAGS)" cxxflags="-fPIC $(dpkg-buildflags --get CXXFLAGS) -Wno-deprecated-declarations" linkflags=" $(dpkg-buildflags --get LDFLAGS)" - export -p DEB_HOST_MULTIARCH=$(dpkg-architecture -qDEB_HOST_MULTIARCH); bjam -d2 release debug install link=static cflags="-fPIC $(dpkg-buildflags --get CFLAGS)" cxxflags="-fPIC $(dpkg-buildflags --get CXXFLAGS) -Wno-deprecated-declarations" linkflags=" $(dpkg-buildflags --get LDFLAGS)" - cd .. # Build libogg - mkdir -p libogg/build - wget -q http://http.debian.net/debian/pool/main/libo/libogg/libogg_1.3.2.orig.tar.gz -O libogg.tar.gz - wget -q http://http.debian.net/debian/pool/main/libo/libogg/libogg_1.3.2-1.diff.gz -O libogg.diff.gz - tar xvf libogg.tar.gz -C libogg --strip 1 || exit 2 - gunzip libogg.diff.gz - cd libogg - patch -p1 < ../libogg.diff - cd build - ../configure --disable-maintainer-mode --host=$(dpkg-architecture -qDEB_HOST_GNU_TYPE) --build=$(dpkg-architecture -qDEB_BUILD_GNU_TYPE) --libdir=/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH) --enable-static --prefix=/usr CPPFLAGS="-D_FORTIFY_SOURCE=2" CFLAGS="-Wformat=2 -g -fPIC" CXXFLAGS="-Wformat=2 -g -fPIC" LDFLAGS="-Wl,-z,now" - make - make install - cd ../.. # Build libvorbis - mkdir -p libvorbis - wget -q http://security.debian.org/debian-security/pool/updates/main/libv/libvorbis/libvorbis_1.3.5.orig.tar.gz -O libvorbis.tar.gz - tar xvf libvorbis.tar.gz -C libvorbis --strip 1 || exit 2 # Get list package - wget -q http://security.debian.org/debian-security/pool/updates/main/libv/libvorbis -O list_libvorbis # get last patch for our release - line=$(egrep '(libvorbis_1.3.5)(.*)(tar[.]xz)' list_libvorbis | tail -n 1) # get only name of the patch - tmp=${line#*href} ; tmp2=${tmp%%>*} ; tmp3=${tmp2#*\"} ; namepatch=${tmp3%\"*} # download this patch - wget -q http://security.debian.org/debian-security/pool/updates/main/libv/libvorbis/$namepatch -O libvorbis.debian.tar.xz - tar xvf libvorbis.debian.tar.xz -C libvorbis || exit 2 - cd libvorbis - for file in $(cat debian/patches/series); do patch -p1 < debian/patches/$file; done - ./configure --enable-static --with-pic - make -j - make install - cd .. # Action - mkdir -p code/build - (cd code/build ; cmake -DWITH_NEL=ON -DWITH_STATIC=ON -DWITH_STATIC_DRIVERS=ON -DWITH_STATIC_EXTERNAL=ON -DWITH_LUA52=ON -DWITH_RYZOM_PATCH=ON -DWITH_RYZOM_CUSTOM_PATCH_SERVER=ON -DWITH_NEL_TESTS=OFF -DWITH_RYZOM_CLIENT=ON -DWITH_DRIVER_OPENGL=ON -DWITH_DRIVER_OPENAL=ON -DWITH_NEL_SAMPLES=ON -DWITH_SOUND=ON -DWITH_STATIC_CURL=ON ..) - (cd code/build; make $optionproc khanat_client) - (cd code/build/bin; ls -lh) artifacts: name: "khanat-client_static-debian_amd64_strech-$CI_COMMIT_REF_NAME" paths: - code/build/bin # expire_in: 2 week Linux client_static_debug debian_amd64_strech build: stage: build except: - mac-ci-build tags: - Docker image: amd64/debian:9 script: # Calcul le nombre de cpu désactivé (on ne laisse que 4 au maximum) - disableproc=$(( $(nproc) - 4 )) - if [[ $disableproc -le 0 ]] ; then disableproc=0; fi - optionproc="-j$(nproc --ignore=$disableproc)" # Prepare environment - DEBIAN_FRONTEND=noninteractive apt-get update - DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y - apt-get install -y autoconf autogen automake bison build-essential cmake cpputest fakeroot libboost-all-dev libfreetype6-dev libgif-dev libgl1-mesa-dev libgnutls28-dev libjpeg62-turbo-dev liblzma-dev libopenal-dev libpng-dev libssh2-1-dev libssl-dev libtool libtool-bin libx11-dev libxml2-dev libxmu-dev libxrandr-dev libxrender-dev libxxf86vm-dev mercurial rrdtool unzip wget zlib1g-dev patch - apt-get install -y liblua5.2-0 liblua5.2-dev # Apply patch - (for patchfile in $(cat patch/series); do echo "patch patch/$patchfile"; patch -f -Z -t -p 1 -i patch/$patchfile || exit 2; done) # Build Curl - wget -q https://curl.haxx.se/download/curl-7.58.0.tar.gz -O curl.tar.gz - mkdir -p curl/build - tar xvf curl.tar.gz -C curl --strip 1 - (cd curl/build; cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_CURL_TESTS=OFF -DCURL_ZLIB=ON -DBUILD_CURL_EXE=OFF -DCURL_STATICLIB=ON -DHTTP_ONLY=ON -DENABLE_IPV6=ON -DCMAKE_USE_OPENSSL=ON -DOPENSSL_SSL_LIBRARIES=/usr/lib/x86_64-linux-gnu/libssl.a -DOPENSSL_CRYPTO_LIBRARIES=/usr/lib/x86_64-linux-gnu/libcrypto.a -DCMAKE_USE_LIBSSH2=OFF -DZLIB_LIBRARY=/usr/lib/x86_64-linux-gnu/libz.a -DCMAKE_C_FLAGS='-fPIC' ..) - (cd curl/build; make) - (cd curl/build; make install) # Build luabind - mkdir -p luabind - wget -q http://http.debian.net/debian/pool/main/l/luabind/luabind_0.9.1+dfsg.orig.tar.gz -O luabind.tar.gz - wget -q http://http.debian.net/debian/pool/main/l/luabind/luabind_0.9.1+dfsg-11.debian.tar.xz -O luabind-debian.tar.xz - tar xvf luabind.tar.gz -C luabind --strip 1 || exit 2 - tar xvf luabind-debian.tar.xz -C luabind || exit 2 - cd luabind - for file in $(cat debian/patches/series); do patch -p1 < debian/patches/$file; done - export -p DEB_HOST_MULTIARCH=$(dpkg-architecture -qDEB_HOST_MULTIARCH); bjam -d2 release debug install cflags="-fPIC $(dpkg-buildflags --get CFLAGS)" cxxflags="-fPIC $(dpkg-buildflags --get CXXFLAGS) -Wno-deprecated-declarations" linkflags=" $(dpkg-buildflags --get LDFLAGS)" - export -p DEB_HOST_MULTIARCH=$(dpkg-architecture -qDEB_HOST_MULTIARCH); bjam -d2 release debug install link=static cflags="-fPIC $(dpkg-buildflags --get CFLAGS)" cxxflags="-fPIC $(dpkg-buildflags --get CXXFLAGS) -Wno-deprecated-declarations" linkflags=" $(dpkg-buildflags --get LDFLAGS)" - cd .. # Build libogg - mkdir -p libogg/build - wget -q http://http.debian.net/debian/pool/main/libo/libogg/libogg_1.3.2.orig.tar.gz -O libogg.tar.gz - wget -q http://http.debian.net/debian/pool/main/libo/libogg/libogg_1.3.2-1.diff.gz -O libogg.diff.gz - tar xvf libogg.tar.gz -C libogg --strip 1 || exit 2 - gunzip libogg.diff.gz - cd libogg - patch -p1 < ../libogg.diff - cd build - ../configure --disable-maintainer-mode --host=$(dpkg-architecture -qDEB_HOST_GNU_TYPE) --build=$(dpkg-architecture -qDEB_BUILD_GNU_TYPE) --libdir=/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH) --enable-static --prefix=/usr CPPFLAGS="-D_FORTIFY_SOURCE=2" CFLAGS="-Wformat=2 -g -fPIC" CXXFLAGS="-Wformat=2 -g -fPIC" LDFLAGS="-Wl,-z,now" - make - make install - cd ../.. # Build libvorbis - mkdir -p libvorbis - wget -q http://security.debian.org/debian-security/pool/updates/main/libv/libvorbis/libvorbis_1.3.5.orig.tar.gz -O libvorbis.tar.gz - tar xvf libvorbis.tar.gz -C libvorbis --strip 1 || exit 2 # Get list package - wget -q http://security.debian.org/debian-security/pool/updates/main/libv/libvorbis -O list_libvorbis # get last patch for our release - line=$(egrep '(libvorbis_1.3.5)(.*)(tar[.]xz)' list_libvorbis | tail -n 1) # get only name of the patch - tmp=${line#*href} ; tmp2=${tmp%%>*} ; tmp3=${tmp2#*\"} ; namepatch=${tmp3%\"*} # download this patch - wget -q http://security.debian.org/debian-security/pool/updates/main/libv/libvorbis/$namepatch -O libvorbis.debian.tar.xz - tar xvf libvorbis.debian.tar.xz -C libvorbis || exit 2 - cd libvorbis - for file in $(cat debian/patches/series); do patch -p1 < debian/patches/$file; done - ./configure --enable-static --with-pic - make - make install - cd .. # Action - mkdir -p code/build - (cd code/build ; cmake -DWITH_NEL=ON -DWITH_STATIC=ON -DWITH_STATIC_DRIVERS=ON -DWITH_STATIC_EXTERNAL=ON -DWITH_LUA52=ON -DWITH_RYZOM_PATCH=ON -DWITH_RYZOM_CUSTOM_PATCH_SERVER=ON -DWITH_NEL_TESTS=OFF -DWITH_RYZOM_CLIENT=ON -DWITH_DRIVER_OPENGL=ON -DWITH_DRIVER_OPENAL=ON -DWITH_NEL_SAMPLES=ON -DWITH_SOUND=ON -DWITH_STATIC_CURL=ON -DWITH_SYMBOLS=ON ..) - (cd code/build; make $optionproc khanat_client) - (cd code/build/bin; ls -lh) artifacts: name: "khanat-client_static_debug-debian_amd64_strech-$CI_COMMIT_REF_NAME" paths: - code/build/bin # expire_in: 2 week Linux server_static debian_amd64_strech build: stage: build except: - mac-ci-build tags: - Docker image: amd64/debian:9 script: # Calcul le nombre de cpu désactivé (on ne laisse que 4 au maximum) - disableproc=$(( $(nproc) - 4 )) - if [[ $disableproc -le 0 ]] ; then disableproc=0; fi - optionproc="-j$(nproc --ignore=$disableproc)" # Prepare environment - DEBIAN_FRONTEND=noninteractive apt-get update - DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y - DEBIAN_FRONTEND=noninteractive apt-get install -y apache2 apache2-utils autoconf autogen automake bison build-essential cmake cpputest default-libmysqlclient-dev fakeroot git libapache2-mod-php libboost-all-dev libfreetype6-dev libgif-dev libgl1-mesa-dev libjpeg62-turbo-dev liblua5.2-0 liblua5.2-dev liblzma-dev libogg-dev libopenal-dev libpng-dev libssh2-1-dev libssl-dev libtool libtool-bin libvorbis-dev libx11-dev libxml2-dev libxmu-dev libxrandr-dev libxrender-dev libxxf86vm-dev mercurial mysql-server php php-gd php-imagick php-mysql python3 python3-pip python3-bcrypt python3-venv rrdtool unzip wget zlib1g-dev libgnutls28-dev # Apply patch - (for patchfile in $(cat patch/series); do echo "patch patch/$patchfile"; patch -f -Z -t -p 1 -i patch/$patchfile || exit 2; done) # Build Curl - wget -q https://curl.haxx.se/download/curl-7.58.0.tar.gz -O curl.tar.gz - mkdir -p curl/build - tar xvf curl.tar.gz -C curl --strip 1 - (cd curl/build; cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_CURL_TESTS=OFF -DCURL_ZLIB=ON -DBUILD_CURL_EXE=OFF -DCURL_STATICLIB=ON -DHTTP_ONLY=ON -DENABLE_IPV6=ON -DCMAKE_USE_OPENSSL=ON -DOPENSSL_SSL_LIBRARIES=/usr/lib/x86_64-linux-gnu/libssl.a -DOPENSSL_CRYPTO_LIBRARIES=/usr/lib/x86_64-linux-gnu/libcrypto.a -DCMAKE_USE_LIBSSH2=OFF -DZLIB_LIBRARY=/usr/lib/x86_64-linux-gnu/libz.a -DCMAKE_C_FLAGS='-fPIC' ..) - (cd curl/build; make -j) - (cd curl/build; make install) # Build luabind - mkdir -p luabind - wget -q http://http.debian.net/debian/pool/main/l/luabind/luabind_0.9.1+dfsg.orig.tar.gz -O luabind.tar.gz - wget -q http://http.debian.net/debian/pool/main/l/luabind/luabind_0.9.1+dfsg-11.debian.tar.xz -O luabind-debian.tar.xz - tar xvf luabind.tar.gz -C luabind --strip 1 || exit 2 - tar xvf luabind-debian.tar.xz -C luabind || exit 2 - cd luabind - for file in $(cat debian/patches/series); do patch -p1 < debian/patches/$file; done - export -p DEB_HOST_MULTIARCH=$(dpkg-architecture -qDEB_HOST_MULTIARCH); bjam -d2 release debug install cflags="-fPIC $(dpkg-buildflags --get CFLAGS)" cxxflags="-fPIC $(dpkg-buildflags --get CXXFLAGS) -Wno-deprecated-declarations" linkflags=" $(dpkg-buildflags --get LDFLAGS)" - export -p DEB_HOST_MULTIARCH=$(dpkg-architecture -qDEB_HOST_MULTIARCH); bjam -d2 release debug install link=static cflags="-fPIC $(dpkg-buildflags --get CFLAGS)" cxxflags="-fPIC $(dpkg-buildflags --get CXXFLAGS) -Wno-deprecated-declarations" linkflags=" $(dpkg-buildflags --get LDFLAGS)" - cd .. # Build libogg - mkdir -p libogg/build - wget -q http://http.debian.net/debian/pool/main/libo/libogg/libogg_1.3.2.orig.tar.gz -O libogg.tar.gz - wget -q http://http.debian.net/debian/pool/main/libo/libogg/libogg_1.3.2-1.diff.gz -O libogg.diff.gz - tar xvf libogg.tar.gz -C libogg --strip 1 || exit 2 - gunzip libogg.diff.gz - cd libogg - patch -p1 < ../libogg.diff - cd build - ../configure --disable-maintainer-mode --host=$(dpkg-architecture -qDEB_HOST_GNU_TYPE) --build=$(dpkg-architecture -qDEB_BUILD_GNU_TYPE) --libdir=/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH) --enable-static --prefix=/usr CPPFLAGS="-D_FORTIFY_SOURCE=2" CFLAGS="-Wformat=2 -g -fPIC" CXXFLAGS="-Wformat=2 -g -fPIC" LDFLAGS="-Wl,-z,now" - make -j - make install - cd ../.. # Build libvorbis - mkdir -p libvorbis - wget -q http://security.debian.org/debian-security/pool/updates/main/libv/libvorbis/libvorbis_1.3.5.orig.tar.gz -O libvorbis.tar.gz - tar xvf libvorbis.tar.gz -C libvorbis --strip 1 || exit 2 # Get list package - wget -q http://security.debian.org/debian-security/pool/updates/main/libv/libvorbis -O list_libvorbis # get last patch for our release - line=$(egrep '(libvorbis_1.3.5)(.*)(tar[.]xz)' list_libvorbis | tail -n 1) # get only name of the patch - tmp=${line#*href} ; tmp2=${tmp%%>*} ; tmp3=${tmp2#*\"} ; namepatch=${tmp3%\"*} # download this patch - wget -q http://security.debian.org/debian-security/pool/updates/main/libv/libvorbis/$namepatch -O libvorbis.debian.tar.xz - tar xvf libvorbis.debian.tar.xz -C libvorbis || exit 2 - cd libvorbis - for file in $(cat debian/patches/series); do patch -p1 < debian/patches/$file; done - ./configure --enable-static --with-pic - make -j - make install - cd .. # Action - mkdir -p code/build - (cd code/build ; cmake -DWITH_NEL=ON -DWITH_STATIC=ON -DWITH_STATIC_DRIVERS=ON -DWITH_STATIC_EXTERNAL=ON -DWITH_LUA52=ON -DWITH_RYZOM_PATCH=ON -DWITH_RYZOM_CUSTOM_PATCH_SERVER=ON -DWITH_NEL_TESTS=OFF ..) - ls -l code - ls -l code/build - (cd code/build; make $optionproc ryzom_admin_service ryzom_ai_service ryzom_backup_service ryzom_dynamic_scenario_service ryzom_entities_game_service ryzom_frontend_service ryzom_general_utilities_service ryzom_gpm_service ryzom_ios_service ryzom_log_analyser_service ryzom_logger_service ryzom_mail_forum_service ryzom_mirror_service ryzom_mission_compiler ryzom_monitor_service ryzom_naming_service ryzom_patchman_service ryzom_pd_support_service ryzom_persistant_data_service ryzom_reference_builder_service ryzom_session_browser_service ryzom_shard_unifier_service ryzom_tick_service ryzom_welcome_service sheets_packer bnp_make make_sheet_id patch_gen) - (cd code/build/bin; ls -lh) artifacts: name: "khanat-server_static-debian_amd64_strech-$CI_COMMIT_REF_NAME" paths: - code/build/bin - code/ryzom/server/shard.screen.rc - code/web - code/ryzom/server/*.cfg - code/ryzom/server/data_shard - code/ryzom/common/data_common - code/ryzom/common/data_leveldesign - code/ryzom/client/*.cfg - code/ryzom/client/cfg - code/ryzom/client/data - code/ryzom/client/macosx - code/ryzom/client/unix - code/ryzom/client/windows - code/ryzom/tools/scripts/linux # expire_in: 2 week Linux server_static_debug debian_amd64_strech build: stage: build except: - mac-ci-build tags: - Docker image: amd64/debian:9 script: # Calcul le nombre de cpu désactivé (on ne laisse que 4 au maximum) - disableproc=$(( $(nproc) - 4 )) - if [[ $disableproc -le 0 ]] ; then disableproc=0; fi - optionproc="-j$(nproc --ignore=$disableproc)" # Prepare environment - DEBIAN_FRONTEND=noninteractive apt-get update - DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y - DEBIAN_FRONTEND=noninteractive apt-get install -y apache2 apache2-utils autoconf autogen automake bison build-essential cmake cpputest default-libmysqlclient-dev fakeroot git libapache2-mod-php libboost-all-dev libfreetype6-dev libgif-dev libgl1-mesa-dev libjpeg62-turbo-dev liblua5.2-0 liblua5.2-dev liblzma-dev libogg-dev libopenal-dev libpng-dev libssh2-1-dev libssl-dev libtool libtool-bin libvorbis-dev libx11-dev libxml2-dev libxmu-dev libxrandr-dev libxrender-dev libxxf86vm-dev mercurial mysql-server php php-gd php-imagick php-mysql python3 python3-pip python3-bcrypt python3-venv rrdtool unzip wget zlib1g-dev libgnutls28-dev # Apply patch - (for patchfile in $(cat patch/series); do echo "patch patch/$patchfile"; patch -f -Z -t -p 1 -i patch/$patchfile || exit 2; done) # Build Curl - wget -q https://curl.haxx.se/download/curl-7.58.0.tar.gz -O curl.tar.gz - mkdir -p curl/build - tar xvf curl.tar.gz -C curl --strip 1 - (cd curl/build; cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_CURL_TESTS=OFF -DCURL_ZLIB=ON -DBUILD_CURL_EXE=OFF -DCURL_STATICLIB=ON -DHTTP_ONLY=ON -DENABLE_IPV6=ON -DCMAKE_USE_OPENSSL=ON -DOPENSSL_SSL_LIBRARIES=/usr/lib/x86_64-linux-gnu/libssl.a -DOPENSSL_CRYPTO_LIBRARIES=/usr/lib/x86_64-linux-gnu/libcrypto.a -DCMAKE_USE_LIBSSH2=OFF -DZLIB_LIBRARY=/usr/lib/x86_64-linux-gnu/libz.a -DCMAKE_C_FLAGS='-fPIC' ..) - (cd curl/build; make -j) - (cd curl/build; make install) # Build luabind - mkdir -p luabind - wget -q http://http.debian.net/debian/pool/main/l/luabind/luabind_0.9.1+dfsg.orig.tar.gz -O luabind.tar.gz - wget -q http://http.debian.net/debian/pool/main/l/luabind/luabind_0.9.1+dfsg-11.debian.tar.xz -O luabind-debian.tar.xz - tar xvf luabind.tar.gz -C luabind --strip 1 || exit 2 - tar xvf luabind-debian.tar.xz -C luabind || exit 2 - cd luabind - for file in $(cat debian/patches/series); do patch -p1 < debian/patches/$file; done - export -p DEB_HOST_MULTIARCH=$(dpkg-architecture -qDEB_HOST_MULTIARCH); bjam -d2 release debug install cflags="-fPIC $(dpkg-buildflags --get CFLAGS)" cxxflags="-fPIC $(dpkg-buildflags --get CXXFLAGS) -Wno-deprecated-declarations" linkflags=" $(dpkg-buildflags --get LDFLAGS)" - export -p DEB_HOST_MULTIARCH=$(dpkg-architecture -qDEB_HOST_MULTIARCH); bjam -d2 release debug install link=static cflags="-fPIC $(dpkg-buildflags --get CFLAGS)" cxxflags="-fPIC $(dpkg-buildflags --get CXXFLAGS) -Wno-deprecated-declarations" linkflags=" $(dpkg-buildflags --get LDFLAGS)" - cd .. # Build libogg - mkdir -p libogg/build - wget -q http://http.debian.net/debian/pool/main/libo/libogg/libogg_1.3.2.orig.tar.gz -O libogg.tar.gz - wget -q http://http.debian.net/debian/pool/main/libo/libogg/libogg_1.3.2-1.diff.gz -O libogg.diff.gz - tar xvf libogg.tar.gz -C libogg --strip 1 || exit 2 - gunzip libogg.diff.gz - cd libogg - patch -p1 < ../libogg.diff - cd build - ../configure --disable-maintainer-mode --host=$(dpkg-architecture -qDEB_HOST_GNU_TYPE) --build=$(dpkg-architecture -qDEB_BUILD_GNU_TYPE) --libdir=/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH) --enable-static --prefix=/usr CPPFLAGS="-D_FORTIFY_SOURCE=2" CFLAGS="-Wformat=2 -g -fPIC" CXXFLAGS="-Wformat=2 -g -fPIC" LDFLAGS="-Wl,-z,now" - make -j - make install - cd ../.. # Build libvorbis - mkdir -p libvorbis - wget -q http://security.debian.org/debian-security/pool/updates/main/libv/libvorbis/libvorbis_1.3.5.orig.tar.gz -O libvorbis.tar.gz - tar xvf libvorbis.tar.gz -C libvorbis --strip 1 || exit 2 # Get list package - wget -q http://security.debian.org/debian-security/pool/updates/main/libv/libvorbis -O list_libvorbis # get last patch for our release - line=$(egrep '(libvorbis_1.3.5)(.*)(tar[.]xz)' list_libvorbis | tail -n 1) # get only name of the patch - tmp=${line#*href} ; tmp2=${tmp%%>*} ; tmp3=${tmp2#*\"} ; namepatch=${tmp3%\"*} # download this patch - wget -q http://security.debian.org/debian-security/pool/updates/main/libv/libvorbis/$namepatch -O libvorbis.debian.tar.xz - tar xvf libvorbis.debian.tar.xz -C libvorbis || exit 2 - cd libvorbis - for file in $(cat debian/patches/series); do patch -p1 < debian/patches/$file; done - ./configure --enable-static --with-pic - make -j - make install - cd .. # Action - mkdir -p code/build - (cd code/build ; cmake -DWITH_NEL=ON -DWITH_STATIC=ON -DWITH_STATIC_DRIVERS=ON -DWITH_STATIC_EXTERNAL=ON -DWITH_LUA52=ON -DWITH_RYZOM_PATCH=ON -DWITH_RYZOM_CUSTOM_PATCH_SERVER=ON -DWITH_NEL_TESTS=OFF -DWITH_SYMBOLS=ON ..) - ls -l code - ls -l code/build - (cd code/build; make $optionproc ryzom_admin_service ryzom_ai_service ryzom_backup_service ryzom_dynamic_scenario_service ryzom_entities_game_service ryzom_frontend_service ryzom_general_utilities_service ryzom_gpm_service ryzom_ios_service ryzom_log_analyser_service ryzom_logger_service ryzom_mail_forum_service ryzom_mirror_service ryzom_mission_compiler ryzom_monitor_service ryzom_naming_service ryzom_patchman_service ryzom_pd_support_service ryzom_persistant_data_service ryzom_reference_builder_service ryzom_session_browser_service ryzom_shard_unifier_service ryzom_tick_service ryzom_welcome_service sheets_packer bnp_make make_sheet_id patch_gen) - (cd code/build/bin; ls -lh) artifacts: name: "khanat-server_static_debug-debian_amd64_strech-$CI_COMMIT_REF_NAME" paths: - code/build/bin - code/ryzom/server/shard.screen.rc - code/web - code/ryzom/server/*.cfg - code/ryzom/server/data_shard - code/ryzom/common/data_common - code/ryzom/common/data_leveldesign - code/ryzom/client/*.cfg - code/ryzom/client/cfg - code/ryzom/client/data - code/ryzom/client/macosx - code/ryzom/client/unix - code/ryzom/client/windows - code/ryzom/tools/scripts/linux # expire_in: 2 week Linux server_static_debug debian_amd64_buster build: stage: build except: - mac-ci-build tags: - Docker image: amd64/debian:10 script: # Calcul le nombre de cpu désactivé (on ne laisse que 4 au maximum) #- disableproc=$(( $(nproc) - 4 )) #- if [[ $disableproc -le 0 ]] ; then disableproc=0; fi #- optionproc="-j$(nproc --ignore=$disableproc)" - optionproc="-j $(nproc)" # Prepare environment - DEBIAN_FRONTEND=noninteractive apt-get update - DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y - DEBIAN_FRONTEND=noninteractive apt-get install -y apache2 apache2-utils autoconf autogen automake bison build-essential cmake cpputest default-libmysqlclient-dev fakeroot git libapache2-mod-php libboost-all-dev libfreetype6-dev libgif-dev libgl1-mesa-dev libjpeg62-turbo-dev liblua5.2-0 liblua5.2-dev liblzma-dev libogg-dev libopenal-dev libpng-dev libssh2-1-dev libssl-dev libtool libtool-bin libvorbis-dev libx11-dev libxml2-dev libxmu-dev libxrandr-dev libxrender-dev libxxf86vm-dev mercurial default-mysql-server php php-gd php-imagick php-mysql python3 python3-pip python3-bcrypt python3-venv rrdtool unzip wget zlib1g-dev python3-coverage python3-pep8 xsltproc rsync libogg-dev libvorbis-dev libgnutls28-dev # Apply patch - (for patchfile in $(cat patch/series); do echo "patch patch/$patchfile"; patch -f -Z -t -p 1 -i patch/$patchfile || exit 2; done) # Build & Install cpptest # Impossible to build release 1.1.0, 1.1.1, 1.1.2 - mkdir -p /opt/src/cpptest - wget -q https://github.com/cpptest/cpptest/archive/1.0.5.tar.gz -O /opt/src/cpptest.tar.gz || exit 2 - tar xf /opt/src/cpptest.tar.gz -C /opt/src --strip 1 || exit 2 - (cd /opt/src/cpptest && ./autogen.sh && ./configure && make -j && make install) || exit 2 # Build debug & install (cpptestd) - (cd /opt/src/cpptest && make clean && CXXFLAGS="-g -O0" ./configure && make && for file in src/.libs/lib*.so* src/.libs/lib*.a;do extension=${file##*/libcpptest} ; cp -L $file /usr/local/lib/libcpptestd${extension}; done) # Build & Install squish - mkdir -p squish - (cd squish; wget -c https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/libsquish/squish-1.11.zip) - (cd squish; unzip squish-1.11.zip) - (cd squish/squish-1.11; patch -i ../../patch/squish-limit.patch) - (cd squish/squish-1.11; make -j) - (cd squish/squish-1.11; make install) # Build & Install CURL - 7.58.0 - wget -q https://curl.haxx.se/download/curl-7.58.0.tar.gz -O curl.tar.gz - mkdir -p curl/build - tar xvf curl.tar.gz -C curl --strip 1 - (cd curl/build; cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_CURL_TESTS=OFF -DCURL_ZLIB=ON -DBUILD_CURL_EXE=OFF -DCURL_STATICLIB=ON -DHTTP_ONLY=ON -DENABLE_IPV6=ON -DCMAKE_USE_OPENSSL=ON -DOPENSSL_SSL_LIBRARIES=/usr/lib/x86_64-linux-gnu/libssl.a -DOPENSSL_CRYPTO_LIBRARIES=/usr/lib/x86_64-linux-gnu/libcrypto.a -DCMAKE_USE_LIBSSH2=OFF -DZLIB_LIBRARY=/usr/lib/x86_64-linux-gnu/libz.a -DCMAKE_C_FLAGS='-fPIC' ..) - (cd curl/build; make -j) - (cd curl/build; make install) # Build & Install luabind - mkdir -p luabind - wget -q http://http.debian.net/debian/pool/main/l/luabind/luabind_0.9.1+dfsg.orig.tar.gz -O luabind.tar.gz - wget -q http://http.debian.net/debian/pool/main/l/luabind/luabind_0.9.1+dfsg-11.debian.tar.xz -O luabind-debian.tar.xz - tar xvf luabind.tar.gz -C luabind --strip 1 || exit 2 - tar xvf luabind-debian.tar.xz -C luabind || exit 2 - cd luabind - for file in $(cat debian/patches/series); do patch -p1 < debian/patches/$file; done - export -p DEB_HOST_MULTIARCH=$(dpkg-architecture -qDEB_HOST_MULTIARCH); bjam -d2 release debug install cflags="-fPIC $(dpkg-buildflags --get CFLAGS)" cxxflags="-fPIC $(dpkg-buildflags --get CXXFLAGS) -Wno-deprecated-declarations" linkflags=" $(dpkg-buildflags --get LDFLAGS)" - export -p DEB_HOST_MULTIARCH=$(dpkg-architecture -qDEB_HOST_MULTIARCH); bjam -d2 release debug install link=static cflags="-fPIC $(dpkg-buildflags --get CFLAGS)" cxxflags="-fPIC $(dpkg-buildflags --get CXXFLAGS) -Wno-deprecated-declarations" linkflags=" $(dpkg-buildflags --get LDFLAGS)" - cd .. # Action - mkdir -p code/build - (cd code/build ; cmake -DWITH_NEL=ON -DWITH_STATIC=ON -DWITH_STATIC_DRIVERS=ON -DWITH_STATIC_EXTERNAL=ON -DWITH_LUA52=ON -DWITH_RYZOM_PATCH=ON -DWITH_RYZOM_CUSTOM_PATCH_SERVER=ON -DWITH_NEL_TESTS=OFF -DWITH_RYZOM_CLIENT=OFF -DWITH_DRIVER_OPENGL=OFF -DWITH_DRIVER_OPENAL=OFF -DWITH_NEL_SAMPLES=OFF -DWITH_SOUND=OFF -DWITH_SYMBOLS=ON ..) - (cd code/build; make $optionproc) - (cd code/build/bin; ls -lh) - tar cvf khanat-server_static_debug-debian_amd64_buster.tar code/build/bin code/ryzom/server/shard.screen.rc code/web code/ryzom/server/*.cfg code/ryzom/server/data_shard code/ryzom/common/data_common code/ryzom/common/data_leveldesign code/ryzom/client/*.cfg code/ryzom/client/cfg code/ryzom/client/data code/ryzom/client/macosx code/ryzom/client/unix code/ryzom/client/windows code/ryzom/tools/scripts/linux - (ls -lh khanat-server_static_debug-debian_amd64_buster.tar) artifacts: name: "khanat-server_static_debug-debian_amd64_buster-$CI_COMMIT_REF_NAME" paths: - code/build/bin # expire_in: 2 week Linux client_static debian_i386_strech build: stage: build except: - mac-ci-build tags: - Docker image: i386/debian:9 script: # Calcul le nombre de cpu désactivé (on ne laisse que 4 au maximum) - disableproc=$(( $(nproc) - 4 )) - if [[ $disableproc -le 0 ]] ; then disableproc=0; fi - optionproc="-j$(nproc --ignore=$disableproc)" # Prepare environment - DEBIAN_FRONTEND=noninteractive apt-get update - DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y - apt-get install -y autoconf autogen automake bison build-essential cmake cpputest fakeroot libboost-all-dev libfreetype6-dev libgif-dev libgl1-mesa-dev libjpeg62-turbo-dev liblzma-dev libopenal-dev libpng-dev libssh2-1-dev libssl-dev libtool libtool-bin libx11-dev libxml2-dev libxmu-dev libxrandr-dev libxrender-dev libxxf86vm-dev mercurial rrdtool unzip wget zlib1g-dev patch - apt-get install -y liblua5.2-0 liblua5.2-dev libgnutls28-dev # Apply patch - (for patchfile in $(cat patch/series); do echo "patch patch/$patchfile"; patch -f -Z -t -p 1 -i patch/$patchfile || exit 2; done) # Build Curl - wget -q https://curl.haxx.se/download/curl-7.58.0.tar.gz -O curl.tar.gz - mkdir -p curl/build - tar xvf curl.tar.gz -C curl --strip 1 - (cd curl/build; cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_CURL_TESTS=OFF -DCURL_ZLIB=ON -DBUILD_CURL_EXE=OFF -DCURL_STATICLIB=ON -DHTTP_ONLY=ON -DENABLE_IPV6=ON -DCMAKE_USE_OPENSSL=ON -DOPENSSL_SSL_LIBRARIES=/usr/lib/i386-linux-gnu/libssl.a -DOPENSSL_CRYPTO_LIBRARIES=/usr/lib/i386-linux-gnu/libcrypto.a -DCMAKE_USE_LIBSSH2=OFF -DZLIB_LIBRARY=/usr/lib/i386-linux-gnu/libz.a -DCMAKE_C_FLAGS='-fPIC' ..) - (cd curl/build; make) - (cd curl/build; make install) # Build luabind - mkdir -p luabind - wget -q http://http.debian.net/debian/pool/main/l/luabind/luabind_0.9.1+dfsg.orig.tar.gz -O luabind.tar.gz - wget -q http://http.debian.net/debian/pool/main/l/luabind/luabind_0.9.1+dfsg-11.debian.tar.xz -O luabind-debian.tar.xz - tar xvf luabind.tar.gz -C luabind --strip 1 || exit 2 - tar xvf luabind-debian.tar.xz -C luabind || exit 2 - cd luabind - for file in $(cat debian/patches/series); do patch -p1 < debian/patches/$file; done - export -p DEB_HOST_MULTIARCH=$(dpkg-architecture -qDEB_HOST_MULTIARCH); bjam -d2 release debug install cflags="-fPIC $(dpkg-buildflags --get CFLAGS)" cxxflags="-fPIC $(dpkg-buildflags --get CXXFLAGS) -Wno-deprecated-declarations" linkflags=" $(dpkg-buildflags --get LDFLAGS)" - export -p DEB_HOST_MULTIARCH=$(dpkg-architecture -qDEB_HOST_MULTIARCH); bjam -d2 release debug install link=static cflags="-fPIC $(dpkg-buildflags --get CFLAGS)" cxxflags="-fPIC $(dpkg-buildflags --get CXXFLAGS) -Wno-deprecated-declarations" linkflags=" $(dpkg-buildflags --get LDFLAGS)" - cd .. # Build libogg - mkdir -p libogg/build - wget -q http://http.debian.net/debian/pool/main/libo/libogg/libogg_1.3.2.orig.tar.gz -O libogg.tar.gz - wget -q http://http.debian.net/debian/pool/main/libo/libogg/libogg_1.3.2-1.diff.gz -O libogg.diff.gz - tar xvf libogg.tar.gz -C libogg --strip 1 || exit 2 - gunzip libogg.diff.gz - cd libogg - patch -p1 < ../libogg.diff - cd build - ../configure --disable-maintainer-mode --host=$(dpkg-architecture -qDEB_HOST_GNU_TYPE) --build=$(dpkg-architecture -qDEB_BUILD_GNU_TYPE) --libdir=/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH) --enable-static --prefix=/usr CPPFLAGS="-D_FORTIFY_SOURCE=2" CFLAGS="-Wformat=2 -g -fPIC" CXXFLAGS="-Wformat=2 -g -fPIC" LDFLAGS="-Wl,-z,now" - make - make install - cd ../.. # Build libvorbis - mkdir -p libvorbis - wget -q http://security.debian.org/debian-security/pool/updates/main/libv/libvorbis/libvorbis_1.3.5.orig.tar.gz -O libvorbis.tar.gz - tar xvf libvorbis.tar.gz -C libvorbis --strip 1 || exit 2 # Get list package - wget -q http://security.debian.org/debian-security/pool/updates/main/libv/libvorbis -O list_libvorbis # get last patch for our release - line=$(egrep '(libvorbis_1.3.5)(.*)(tar[.]xz)' list_libvorbis | tail -n 1) # get only name of the patch - tmp=${line#*href} ; tmp2=${tmp%%>*} ; tmp3=${tmp2#*\"} ; namepatch=${tmp3%\"*} # download this patch - wget -q http://security.debian.org/debian-security/pool/updates/main/libv/libvorbis/$namepatch -O libvorbis.debian.tar.xz - tar xvf libvorbis.debian.tar.xz -C libvorbis || exit 2 - cd libvorbis - for file in $(cat debian/patches/series); do patch -p1 < debian/patches/$file; done - ./configure --enable-static --with-pic - make - make install - cd .. # Action - mkdir -p code/build - (cd code/build ; cmake -DWITH_NEL=ON -DWITH_STATIC=ON -DWITH_STATIC_DRIVERS=ON -DWITH_STATIC_EXTERNAL=ON -DWITH_LUA52=ON -DWITH_RYZOM_PATCH=ON -DWITH_RYZOM_CUSTOM_PATCH_SERVER=ON -DWITH_NEL_TESTS=OFF ..) - (cd code/build; make $optionproc khanat_client) - (cd code/build/bin; ls -lh) artifacts: name: "khanat-client_static-debian_i386_strech-$CI_COMMIT_REF_NAME" paths: - code/build/bin # expire_in: 2 week Linux client_static_debug debian_i386_strech build: stage: build except: - mac-ci-build tags: - Docker image: i386/debian:9 script: # Calcul le nombre de cpu désactivé (on ne laisse que 4 au maximum) - disableproc=$(( $(nproc) - 4 )) - if [[ $disableproc -le 0 ]] ; then disableproc=0; fi - optionproc="-j$(nproc --ignore=$disableproc)" # Prepare environment - DEBIAN_FRONTEND=noninteractive apt-get update - DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y - DEBIAN_FRONTEND=noninteractive apt-get install -y autoconf autogen automake bison build-essential cmake cpputest fakeroot libboost-all-dev libfreetype6-dev libgif-dev libgl1-mesa-dev libjpeg62-turbo-dev liblzma-dev libopenal-dev libpng-dev libssh2-1-dev libssl-dev libtool libtool-bin libx11-dev libxml2-dev libxmu-dev libxrandr-dev libxrender-dev libxxf86vm-dev mercurial rrdtool unzip wget zlib1g-dev patch libgnutls28-dev - apt-get install -y liblua5.2-0 liblua5.2-dev # Apply patch - (for patchfile in $(cat patch/series); do echo "patch patch/$patchfile"; patch -f -Z -t -p 1 -i patch/$patchfile || exit 2; done) # Build Curl - wget -q https://curl.haxx.se/download/curl-7.58.0.tar.gz -O curl.tar.gz - mkdir -p curl/build - tar xvf curl.tar.gz -C curl --strip 1 - (cd curl/build; cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_CURL_TESTS=OFF -DCURL_ZLIB=ON -DBUILD_CURL_EXE=OFF -DCURL_STATICLIB=ON -DHTTP_ONLY=ON -DENABLE_IPV6=ON -DCMAKE_USE_OPENSSL=ON -DOPENSSL_SSL_LIBRARIES=/usr/lib/i386-linux-gnu/libssl.a -DOPENSSL_CRYPTO_LIBRARIES=/usr/lib/i386-linux-gnu/libcrypto.a -DCMAKE_USE_LIBSSH2=OFF -DZLIB_LIBRARY=/usr/lib/i386-linux-gnu/libz.a -DCMAKE_C_FLAGS='-fPIC' ..) - (cd curl/build; make) - (cd curl/build; make install) # Build luabind - mkdir -p luabind - wget -q http://http.debian.net/debian/pool/main/l/luabind/luabind_0.9.1+dfsg.orig.tar.gz -O luabind.tar.gz - wget -q http://http.debian.net/debian/pool/main/l/luabind/luabind_0.9.1+dfsg-11.debian.tar.xz -O luabind-debian.tar.xz - tar xvf luabind.tar.gz -C luabind --strip 1 || exit 2 - tar xvf luabind-debian.tar.xz -C luabind || exit 2 - cd luabind - for file in $(cat debian/patches/series); do patch -p1 < debian/patches/$file; done - export -p DEB_HOST_MULTIARCH=$(dpkg-architecture -qDEB_HOST_MULTIARCH); bjam -d2 release debug install cflags="-fPIC $(dpkg-buildflags --get CFLAGS)" cxxflags="-fPIC $(dpkg-buildflags --get CXXFLAGS) -Wno-deprecated-declarations" linkflags=" $(dpkg-buildflags --get LDFLAGS)" - export -p DEB_HOST_MULTIARCH=$(dpkg-architecture -qDEB_HOST_MULTIARCH); bjam -d2 release debug install link=static cflags="-fPIC $(dpkg-buildflags --get CFLAGS)" cxxflags="-fPIC $(dpkg-buildflags --get CXXFLAGS) -Wno-deprecated-declarations" linkflags=" $(dpkg-buildflags --get LDFLAGS)" - cd .. # Build libogg - mkdir -p libogg/build - wget -q http://http.debian.net/debian/pool/main/libo/libogg/libogg_1.3.2.orig.tar.gz -O libogg.tar.gz - wget -q http://http.debian.net/debian/pool/main/libo/libogg/libogg_1.3.2-1.diff.gz -O libogg.diff.gz - tar xvf libogg.tar.gz -C libogg --strip 1 || exit 2 - gunzip libogg.diff.gz - cd libogg - patch -p1 < ../libogg.diff - cd build - ../configure --disable-maintainer-mode --host=$(dpkg-architecture -qDEB_HOST_GNU_TYPE) --build=$(dpkg-architecture -qDEB_BUILD_GNU_TYPE) --libdir=/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH) --enable-static --prefix=/usr CPPFLAGS="-D_FORTIFY_SOURCE=2" CFLAGS="-Wformat=2 -g -fPIC" CXXFLAGS="-Wformat=2 -g -fPIC" LDFLAGS="-Wl,-z,now" - make - make install - cd ../.. # Build libvorbis - mkdir -p libvorbis - wget -q http://security.debian.org/debian-security/pool/updates/main/libv/libvorbis/libvorbis_1.3.5.orig.tar.gz -O libvorbis.tar.gz - tar xvf libvorbis.tar.gz -C libvorbis --strip 1 || exit 2 # Get list package - wget -q http://security.debian.org/debian-security/pool/updates/main/libv/libvorbis -O list_libvorbis # get last patch for our release - line=$(egrep '(libvorbis_1.3.5)(.*)(tar[.]xz)' list_libvorbis | tail -n 1) # get only name of the patch - tmp=${line#*href} ; tmp2=${tmp%%>*} ; tmp3=${tmp2#*\"} ; namepatch=${tmp3%\"*} # download this patch - wget -q http://security.debian.org/debian-security/pool/updates/main/libv/libvorbis/$namepatch -O libvorbis.debian.tar.xz - tar xvf libvorbis.debian.tar.xz -C libvorbis || exit 2 - cd libvorbis - for file in $(cat debian/patches/series); do patch -p1 < debian/patches/$file; done - ./configure --enable-static --with-pic - make - make install - cd .. # Action - mkdir -p code/build - (cd code/build ; cmake -DWITH_NEL=ON -DWITH_STATIC=ON -DWITH_STATIC_DRIVERS=ON -DWITH_STATIC_EXTERNAL=ON -DWITH_SYMBOLS=ON -DWITH_LUA52=ON -DWITH_RYZOM_PATCH=ON -DWITH_RYZOM_CUSTOM_PATCH_SERVER=ON -DWITH_NEL_TESTS=OFF ..) - (cd code/build; make $optionproc khanat_client) - (cd code/build/bin; ls -lh) artifacts: name: "khanat-client_static_debug-debian_i386_strech-$CI_COMMIT_REF_NAME" paths: - code/build/bin # expire_in: 2 week # Fedora Client Linux client fedora_amd64_27 build: stage: build except: - mac-ci-build tags: - Docker image: amd64/fedora:27 script: # Prepare environment - yum update -y - yum install -y autoconf autogen automake bison boost-devel cmake fakeroot freetype-devel gcc gcc-c++ giflib-devel libcurl-devel libjpeg-turbo-devel libogg-devel libpng-devel libssh2-devel libtool libvorbis-devel libX11-devel libxml2-devel libXmu libXrandr-devel libXrender-devel libXxf86vm-devel luabind-devel lua-devel lzma-devel make mercurial mesa-libGL-devel openal-soft-devel openssl-devel patch rrdtool unzip wget xz zlib-devel patch # Apply patch - (for patchfile in $(cat patch/series); do echo "patch patch/$patchfile"; patch -f -Z -t -p 1 -i patch/$patchfile || exit 2; done) # Action - mkdir -p code/build - (cd code/build ; export -p CPPFLAGS="-Wno-deprecated -Wno-deprecated-declarations"; cmake -G "Unix Makefiles" -DWITH_NEL=ON -DWITH_LUA52=ON -DWITH_RYZOM_PATCH=OFF -DWITH_RYZOM_CUSTOM_PATCH_SERVER=OFF -DWITH_NEL_TESTS=OFF -DWITH_RYZOM_CLIENT=ON -DWITH_DRIVER_OPENGL=ON -DWITH_DRIVER_OPENAL=ON -DWITH_NEL_SAMPLES=OFF -DWITH_SOUND=ON -DWITH_STATIC_CURL=OFF ..) - (cd code/build; make khanat_client) - (cd code/build/bin; ls -lh) artifacts: name: "khanat-client-fedora_27-$CI_COMMIT_REF_NAME" paths: - code/build/bin # expire_in: 2 week when: manual # Ubuntu Client Linux client ubuntu_amd64_17_10 build: stage: build except: - mac-ci-build tags: - Docker image: amd64/ubuntu:17.10 script: # Prepare environment - DEBIAN_FRONTEND=noninteractive apt-get update - DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y - DEBIAN_FRONTEND=noninteractive apt-get install -y autoconf autogen automake bison build-essential cmake cpputest fakeroot libboost-all-dev libcurl4-openssl-dev libfreetype6-dev libgif-dev libgl1-mesa-dev libjpeg62-dev liblzma-dev libopenal-dev libpng-dev libssh2-1-dev libssl-dev libtool libtool-bin libx11-dev libxml2-dev libxmu-dev libxrandr-dev libxrender-dev libxxf86vm-dev mercurial rrdtool unzip wget zlib1g-dev - apt-get install -y liblua5.2-0 liblua5.2-dev libluabind-dev libluabind0.9.1v5 libogg-dev libvorbis-dev # Apply patch - (for patchfile in $(cat patch/series); do echo "patch patch/$patchfile"; patch -f -Z -t -p 1 -i patch/$patchfile || exit 2; done) # Action - mkdir -p code/build - (cd code/build ; export -p CPPFLAGS="-Wno-deprecated -Wno-deprecated-declarations"; cmake -G "Unix Makefiles" -DWITH_NEL=ON -DWITH_LUA52=ON -DWITH_RYZOM_PATCH=OFF -DWITH_RYZOM_CUSTOM_PATCH_SERVER=OFF -DWITH_NEL_TESTS=OFF -DWITH_RYZOM_CLIENT=ON -DWITH_DRIVER_OPENGL=ON -DWITH_DRIVER_OPENAL=ON -DWITH_NEL_SAMPLES=OFF -DWITH_SOUND=ON -DWITH_STATIC_CURL=OFF ..) - (cd code/build; make khanat_client) - (cd code/build/bin; ls -lh) artifacts: name: "khanat-client-ubuntu_17_10-$(echo $CI_BUILD_REF | head -c 7 )-$CI_PIPELINE_ID" paths: - code/build/bin # expire_in: 2 week when: manual # Archlinux Client Linux client archlinux build: stage: build except: - mac-ci-build tags: - Docker image: base/archlinux script: # Prepare environment - pacman -Syyu --noconfirm pacman-contrib - cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.backup - curl -o /etc/pacman.d/mirrorlist.new https://www.archlinux.org/mirrorlist/all/ - sed -i 's/^#Server/Server/' /etc/pacman.d/mirrorlist.new - rankmirrors -n 6 /etc/pacman.d/mirrorlist.new > /etc/pacman.d/mirrorlist - pacman -Syyu - pacman -S --noconfirm autoconf autogen automake binutils boost boost-libs cmake fakeroot gcc giflib git glu libjpeg-turbo libogg libpng libssh libtool libvorbis libx11 libxml2 libxmu libxrandr libxrender libxxf86vm lua make mesa openal openssl patch pkg-config sed unzip wget xorg-xfd xz zlib > pacman.log # Install Yaourt # Disable check root (never do that on real server) - sed -i 's/EUID == 0/EUID == 12345/g' /usr/sbin/makepkg - mkdir -p build - cd build - git clone https://aur.archlinux.org/package-query.git - cd package-query - yes | makepkg -si || echo $? - cd .. - git clone https://aur.archlinux.org/yaourt.git - cd yaourt - yes | makepkg -si || echo $? - cd ../.. - yaourt -Syyu --noconfirm --aur boost-build # Apply patch - (for patchfile in $(cat patch/series); do echo "patch patch/$patchfile"; patch -f -Z -t -p 1 -i patch/$patchfile || exit 2; done) - patch -f -Z -t -p 1 -i patch/02_archlinux_allocator_static_assert_error.patch # Build - mkdir -p luabind - wget -q http://http.debian.net/debian/pool/main/l/luabind/luabind_0.9.1+dfsg.orig.tar.gz -O luabind.tar.gz - wget -q http://http.debian.net/debian/pool/main/l/luabind/luabind_0.9.1+dfsg-11.debian.tar.xz -O luabind-debian.tar.xz - tar xvf luabind.tar.gz -C luabind --strip 1 || exit 2 - tar xvf luabind-debian.tar.xz -C luabind || exit 2 - cd luabind - for file in $(cat debian/patches/series); do patch -p1 < debian/patches/$file; done - export -p DEB_HOST_MULTIARCH="/"; bjam -d2 release debug install cxxflags="-fPIC -Wno-deprecated -Wno-deprecated-declarations" - export -p DEB_HOST_MULTIARCH="/"; bjam -d2 release debug install link=static cxxflags="-fPIC -Wno-deprecated -Wno-deprecated-declarations" - cd .. # Action - mkdir -p code/build - (cd code/build ; export -p CPPFLAGS="-Wno-deprecated -Wno-deprecated-declarations"; cmake -G "Unix Makefiles" -DWITH_NEL=ON -DWITH_STATIC=ON -DWITH_STATIC_DRIVERS=ON -DWITH_STATIC_EXTERNAL=ON -DWITH_LUA52=ON -DWITH_RYZOM_PATCH=OFF -DWITH_RYZOM_CUSTOM_PATCH_SERVER=OFF -DWITH_NEL_TESTS=OFF -DWITH_RYZOM_CLIENT=ON -DWITH_DRIVER_OPENGL=ON -DWITH_DRIVER_OPENAL=ON -DWITH_NEL_SAMPLES=OFF -DWITH_SOUND=ON -DWITH_STATIC_CURL=ON /opt/code ..) - (cd code/build; make khanat_client) - (cd code/build/bin; ls -lh) artifacts: name: "khanat-client-archlinux-$CI_COMMIT_REF_NAME" paths: - code/build/bin # expire_in: 2 week when: manual Linux server debian_amd64_buster build: stage: build except: - mac-ci-build tags: - Docker image: amd64/debian:10 script: # Prepare environment - DEBIAN_FRONTEND=noninteractive apt-get update - DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y - DEBIAN_FRONTEND=noninteractive apt-get install -y default-mysql-server git libcurl4-openssl-dev libfreetype6-dev libx11-dev libgl1-mesa-dev libxxf86vm-dev libxrandr-dev libxrender-dev libopenal-dev libxml2-dev cmake build-essential libpng-dev libjpeg62-turbo-dev rrdtool bison libxmu-dev autoconf automake default-libmysqlclient-dev libgif-dev cpputest libssl-dev liblzma-dev unzip zlib1g-dev libssh2-1-dev libboost-all-dev libopenal-dev libgl1-mesa-dev mercurial wget autogen libtool libtool-bin fakeroot libxml2-dev patch - apt-get install -y liblua5.2-0 liblua5.2-dev libluabind-dev libluabind0.9.1v5 # Apply patch - (for patchfile in $(cat patch/series); do echo "patch patch/$patchfile"; patch -f -Z -t -p 1 -i patch/$patchfile || exit 2; done) # install squish - mkdir -p squish - (cd squish; wget -c https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/libsquish/squish-1.11.zip) - (cd squish; unzip squish-1.11.zip) - (cd squish/squish-1.11; patch -i ../../patch/squish-limit.patch) - (cd squish/squish-1.11; make) - (cd squish/squish-1.11; make install) # Action - mkdir -p code/build - (cd code/build ; cmake -DWITH_LUA52=ON -DWITH_RYZOM_PATCH=ON -DWITH_RYZOM_CUSTOM_PATCH_SERVER=ON -DWITH_NEL_TESTS=OFF -DWITH_RYZOM_CLIENT=OFF -DWITH_DRIVER_OPENGL=OFF -DWITH_DRIVER_OPENAL=OFF -DWITH_NEL_SAMPLES=OFF -DWITH_SOUND=OFF ..) - (cd code/build; make ryzom_admin_service ryzom_ai_service ryzom_backup_service ryzom_dynamic_scenario_service ryzom_entities_game_service ryzom_frontend_service ryzom_general_utilities_service ryzom_gpm_service ryzom_ios_service ryzom_log_analyser_service ryzom_logger_service ryzom_mail_forum_service ryzom_mirror_service ryzom_mission_compiler ryzom_monitor_service ryzom_naming_service ryzom_patchman_service ryzom_pd_support_service ryzom_persistant_data_service ryzom_reference_builder_service ryzom_session_browser_service ryzom_shard_unifier_service ryzom_tick_service ryzom_welcome_service sheets_packer bnp_make make_sheet_id patch_gen) - (cd code/build/bin; ls -lh) artifacts: name: "khanat-server-debian_buster-$CI_COMMIT_REF_NAME" paths: - code/build/bin - code/build/lib - code/ryzom/server/shard.screen.rc - code/web - code/ryzom/server/*.cfg - code/ryzom/server/data_shard - code/ryzom/common/data_common - code/ryzom/common/data_leveldesign - code/ryzom/client/*.cfg - code/ryzom/client/cfg - code/ryzom/client/data - code/ryzom/client/macosx - code/ryzom/client/unix - code/ryzom/client/windows - code/ryzom/tools/scripts/linux # expire_in: 2 week Linux client debian_amd64_buster build: stage: build except: - mac-ci-build tags: - Docker image: amd64/debian:10 script: # Prepare environment - DEBIAN_FRONTEND=noninteractive apt-get update - DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y - apt-get install -y autoconf autogen automake bison build-essential cmake cpputest fakeroot libboost-all-dev libfreetype6-dev libgif-dev libgl1-mesa-dev libgnutls28-dev libjpeg62-turbo-dev liblzma-dev libopenal-dev libpng-dev libssh2-1-dev libssl-dev libtool libtool-bin libx11-dev libxml2-dev libxmu-dev libxrandr-dev libxrender-dev libxxf86vm-dev mercurial rrdtool unzip wget zlib1g-dev patch - apt-get install -y liblua5.2-0 liblua5.2-dev libluabind-dev libluabind0.9.1v5 libogg-dev libvorbis-dev # Apply patch - (for patchfile in $(cat patch/series); do echo "patch patch/$patchfile"; patch -f -Z -t -p 1 -i patch/$patchfile || exit 2; done) # Build Curl - wget -q https://curl.haxx.se/download/curl-7.58.0.tar.gz -O curl.tar.gz - mkdir -p curl/build - tar xvf curl.tar.gz -C curl --strip 1 - (cd curl/build; cmake -DCMAKE_BUILD_TYPE=Release -DCURL_ZLIB=ON -DBUILD_CURL_EXE=OFF -DCURL_STATICLIB=ON -DHTTP_ONLY=ON -DENABLE_IPV6=ON -DCMAKE_USE_OPENSSL=ON -DOPENSSL_SSL_LIBRARIES=/usr/lib/x86_64-linux-gnu/libssl.a -DOPENSSL_CRYPTO_LIBRARIES=/usr/lib/x86_64-linux-gnu/libcrypto.a -DCMAKE_USE_LIBSSH2=OFF -DZLIB_LIBRARY=/usr/lib/x86_64-linux-gnu/libz.a -DCMAKE_C_FLAGS='-fPIC' ..) - (cd curl/build; make -j) - (cd curl/build; make install) # Action - mkdir -p code/build # - (cd code/build ; cmake -DWITH_NEL=ON -DWITH_LUA52=ON -DWITH_RYZOM_PATCH=OFF -DWITH_RYZOM_CUSTOM_PATCH_SERVER=OFF -DWITH_NEL_TESTS=OFF -DWITH_RYZOM_CLIENT=ON -DWITH_DRIVER_OPENGL=ON -DWITH_DRIVER_OPENAL=ON -DWITH_NEL_SAMPLES=OFF -DWITH_SOUND=ON -DWITH_STATIC_CURL=ON ..) # - (cd code/build; make -j khanat_client) - (cd code/build ; cmake -DWITH_INSTALL_LIBRARIES=OFF -DWITH_RYZOM_CLIENT=ON -DWITH_NEL=ON -DWITH_NEL_TOOLS=OFF -DWITH_TOOLS=OFF -DWITH_STUDIO=OFF -DWITH_STATIC=ON -DWITH_RYZOM_TOOLS=OFF -DWITH_LUA52=ON -DWITH_RYZOM_PATCH=ON -DWITH_RYZOM_CUSTOM_PATCH_SERVER=ON -DWITH_NEL_TESTS=OFF -DWITH_RYZOM_CLIENT=ON -DWITH_DRIVER_OPENGL=ON -DWITH_DRIVER_OPENAL=ON -DWITH_NEL_SAMPLES=OFF -DWITH_SOUND=ON -DWITH_STATIC_CURL=ON ..) - (cd code/build; make -j ) - (cd code/build/bin; ls -lh) artifacts: name: "khanat-client-debian_buster-$(echo $CI_BUILD_REF | head -c 7 )-$CI_PIPELINE_ID" paths: - code/build/bin # expire_in: 2 week Linux client_appimage debian_amd64_buster build: stage: build except: - mac-ci-build tags: - Docker image: amd64/debian:10 script: # Prepare environment - DEBIAN_FRONTEND=noninteractive apt-get update - DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y - apt-get install -y autoconf autogen automake bison build-essential cmake cpputest fakeroot libboost-all-dev libfreetype6-dev libgif-dev libgl1-mesa-dev libgnutls28-dev libjpeg62-turbo-dev liblzma-dev libopenal-dev libpng-dev libssh2-1-dev libssl-dev libtool libtool-bin libx11-dev libxml2-dev libxmu-dev libxrandr-dev libxrender-dev libxxf86vm-dev mercurial rrdtool unzip wget zlib1g-dev patch - apt-get install -y liblua5.2-0 liblua5.2-dev libluabind-dev libluabind0.9.1v5 libogg-dev libvorbis-dev # libavcodec-dev libavformat-dev libavdevice-dev libavutil-dev libswscale-dev libswresample-dev libpostproc-dev # Install AppImage / LinuxDeploy - mkdir -p appimage - wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage -O appimage/linuxdeploy-x86_64.AppImage - (cd appimage; chmod +x linuxdeploy-x86_64.AppImage; ./linuxdeploy-x86_64.AppImage --appimage-extract) # Apply patch - (for patchfile in $(cat patch/series); do echo "patch patch/$patchfile"; patch -f -Z -t -p 1 -i patch/$patchfile || exit 2; done) # Build Curl - wget -q https://curl.haxx.se/download/curl-7.58.0.tar.gz -O curl.tar.gz - mkdir -p curl/build - tar xvf curl.tar.gz -C curl --strip 1 - (cd curl/build; cmake -DCMAKE_BUILD_TYPE=Release -DCURL_ZLIB=ON -DBUILD_CURL_EXE=OFF -DCURL_STATICLIB=ON -DHTTP_ONLY=ON -DENABLE_IPV6=ON -DCMAKE_USE_OPENSSL=ON -DOPENSSL_SSL_LIBRARIES=/usr/lib/x86_64-linux-gnu/libssl.a -DOPENSSL_CRYPTO_LIBRARIES=/usr/lib/x86_64-linux-gnu/libcrypto.a -DCMAKE_USE_LIBSSH2=OFF -DZLIB_LIBRARY=/usr/lib/x86_64-linux-gnu/libz.a -DCMAKE_C_FLAGS='-fPIC' ..) - (cd curl/build; make -j) - (cd curl/build; make install) # Build luabind - mkdir -p luabind - wget -q http://http.debian.net/debian/pool/main/l/luabind/luabind_0.9.1+dfsg.orig.tar.gz -O luabind.tar.gz - wget -q http://http.debian.net/debian/pool/main/l/luabind/luabind_0.9.1+dfsg-11.debian.tar.xz -O luabind-debian.tar.xz - tar xvf luabind.tar.gz -C luabind --strip 1 || exit 2 - tar xvf luabind-debian.tar.xz -C luabind || exit 2 - cd luabind - for file in $(cat debian/patches/series); do patch -p1 < debian/patches/$file; done - export -p DEB_HOST_MULTIARCH=$(dpkg-architecture -qDEB_HOST_MULTIARCH); bjam -d2 --prefix=/usr release debug install cflags="-fPIC $(dpkg-buildflags --get CFLAGS)" cxxflags="-fPIC $(dpkg-buildflags --get CXXFLAGS) -Wno-deprecated-declarations" linkflags=" $(dpkg-buildflags --get LDFLAGS)" - export -p DEB_HOST_MULTIARCH=$(dpkg-architecture -qDEB_HOST_MULTIARCH); bjam -d2 --prefix=/usr release debug install link=static cflags="-fPIC $(dpkg-buildflags --get CFLAGS)" cxxflags="-fPIC $(dpkg-buildflags --get CXXFLAGS) -Wno-deprecated-declarations" linkflags=" $(dpkg-buildflags --get LDFLAGS)" - cd .. # Action # / -DWITH_NEL=ON -DWITH_TOOLS=OFF -DWITH_STUDIO=OFF - mkdir -p code/build #- (cd code/build ; cmake -DCMAKE_INSTALL_PREFIX=/usr -DWITH_INSTALL_LIBRARIES=OFF -DWITH_RYZOM_CLIENT=ON -DWITH_NEL=ON -DWITH_NEL_TOOLS=OFF -DWITH_TOOLS=OFF -DWITH_STUDIO=OFF -DWITH_STATIC=ON -DWITH_RYZOM_TOOLS=OFF -DWITH_LUA52=ON -DWITH_RYZOM_PATCH=OFF -DWITH_RYZOM_CUSTOM_PATCH_SERVER=OFF -DWITH_NEL_TESTS=OFF -DWITH_RYZOM_CLIENT=ON -DWITH_DRIVER_OPENGL=ON -DWITH_DRIVER_OPENAL=ON -DWITH_NEL_SAMPLES=OFF -DWITH_SOUND=ON -DWITH_STATIC_CURL=ON ..) - (cd code/build ; cmake -DCMAKE_INSTALL_PREFIX=/usr -DWITH_INSTALL_LIBRARIES=OFF -DWITH_RYZOM_CLIENT=ON -DWITH_NEL=ON -DWITH_NEL_TOOLS=OFF -DWITH_TOOLS=OFF -DWITH_STUDIO=OFF -DWITH_STATIC=ON -DWITH_RYZOM_TOOLS=OFF -DWITH_LUA52=ON -DWITH_RYZOM_PATCH=ON -DWITH_RYZOM_CUSTOM_PATCH_SERVER=ON -DWITH_NEL_TESTS=OFF -DWITH_RYZOM_CLIENT=ON -DWITH_DRIVER_OPENGL=ON -DWITH_DRIVER_OPENAL=ON -DWITH_NEL_SAMPLES=OFF -DWITH_SOUND=ON -DWITH_STATIC_CURL=ON -DWITH_STATIC_DRIVERS=ON -DWITH_STATIC_EXTERNAL=ON ..) - (cd code/build; make -j ) - (cd code/build; make -j install DESTDIR=AppDir) # Generate AppImage - (cd code/build; rm -rf AppDir/usr/bin) - (cd code/build; mv AppDir/usr/games AppDir/usr/bin) - (cd code/build; sed -i 's/Exec=games\//Exec=/g' AppDir/usr/share/applications/khanat_client.desktop) - (cd code/build; sed -i 's/Version=0.1/Version=1.0/g' AppDir/usr/share/applications/khanat_client.desktop) - (cd code/build; ../../appimage/squashfs-root/AppRun --appdir AppDir --output appimage) - (ls -lh code/build/Khanat-x86_64.AppImage) artifacts: name: "khanat-client_appimage-debian_buster-$(echo $CI_BUILD_REF | head -c 7 )-$CI_PIPELINE_ID" paths: - code/build/Khanat-x86_64.AppImage # expire_in: 2 week # Windows Client Windows client build: stage: build except: - mac-ci-build tags: - Docker image: amd64/debian:9 script: # Prepare environment - dpkg --add-architecture i386 - DEBIAN_FRONTEND=noninteractive apt-get update - DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y - DEBIAN_FRONTEND=noninteractive apt-get install -y p7zip-full binfmt-support libc6-i386 libncurses5:i386 libfreetype6:i386 bzip2 wget dos2unix # Action - mkdir -p wincross - source builder/cross_win32.sh - find code -type f -name "*.h*" -exec unix2dos {} \; - find code -type f -name "*.c*" -exec unix2dos {} \; - find code -type f -name "*.txt" -exec unix2dos {} \; - find code -type f -name "*.rc" -exec unix2dos {} \; - mkdir -p build - cd build - wine cmake.exe -DWITH_RYZOM_CUSTOM_PATCH_SERVER=ON -DWITH_RYZOM_SERVER=OFF -DWITH_RYZOM_TOOLS=OFF -DWITH_RYZOM_CLIENT=ON -DWITH_RYZOM_PATCH=ON -DWITH_NEL_TESTS=OFF -DWITH_NEL_TOOLS=OFF -DWITH_TOOLS=OFF -DWITH_NEL_SAMPLES=OFF -DWITH_LUA53=ON -DWITH_LUA51=OFF -DWITH_STLPORT=OFF -DWITH_DRIVER_DSOUND=ON -G "NMake Makefiles JOM" -DWITH_STATIC=ON -DWITH_STATIC_DRIVERS=ON -DWITH_DRIVER_OPENAL=OFF -DWITH_DRIVER_DSOUND=ON -DWITH_DRIVER_XAUDIO2=ON -DWITH_DRIVER_FMOD=ON -DWITH_DRIVER_DIRECT3D=ON ../code - wine jom.exe || wine jom.exe || wine jom.exe artifacts: name: "khanat-client-windows-$CI_COMMIT_REF_NAME" paths: - build/bin # expire_in: 2 week when: manual # Job de compilation pour OSX OSX client build: stage: build only: - tags - mac-ci-build tags: - OSX variables: # Éviter de cloner tout le dépot à chaque fois, à la place juste récuperer les changements GIT_STRATEGY: fetch script: # Création de l'environnement de compilation - mkdir -p BUILD/x86_64 - cd BUILD/x86_64 # Configuration - cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DFINAL_VERSION=ON -DWITH_STATIC=ON -DWITH_STATIC_DRIVERS=ON -DWITH_NEL_TOOLS=OFF -DWITH_NEL_SAMPLES=OFF -DWITH_NEL_TESTS=OFF -DWITH_RYZOM_SERVER=OFF -DWITH_RYZOM_TOOLS=OFF -DWITH_STATIC_EXTERNAL=OFF -DWITH_RYZOM_PATCH=ON -DWITH_RYZOM_CUSTOM_PATCH_SERVER=ON -DWITH_LUA52=ON ../../code # Compilation et installation - make -j$(($(sysctl -n hw.ncpu)/2)) install DESTDIR=../../OSX/x86_64 artifacts: name: "khanat-$(echo $CI_BUILD_REF | head -c 7 )-$CI_PIPELINE_ID-OSX-x86_64" paths: - OSX/x86_64/* when: manual ## Package Linux client package: stage: package except: - mac-ci-build tags: - Docker image: amd64/debian:10 script: # Prepare environment - DEBIAN_FRONTEND=noninteractive apt-get update - DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y - apt-get install -y makeself # Test de l'installation initiale - ls -l - mkdir -p Linux/x86_64 - find code/build/bin - cp code/build/bin/* Linux/x86_64 - cp code/build/Khanat-x86_64.AppImage Linux/x86_64 # Packaging - cp ./dist/khanat/autoextract_script.sh ./Linux/x86_64/ - chmod +x ./Linux/x86_64/autoextract_script.sh - makeself --nox11 --target /tmp/khanat_installer ./Linux/x86_64/ khanat-$(echo $CI_BUILD_REF | head -c 7 )-$CI_PIPELINE_ID-Linux-x86_64.run "Khanat installer" ./autoextract_script.sh - ls -l artifacts: name: "khanat-$(echo $CI_BUILD_REF | head -c 7)-$CI_PIPELINE_ID-Linux-x86_64" paths: - ./khanat-$(echo $CI_BUILD_REF | head -c 7 )-$CI_PIPELINE_ID-Linux-x86_64.run dependencies: - Linux client debian_amd64_buster build - Linux client_appimage debian_amd64_buster build ## TESTS Linux client test: stage: test except: - ryzomcore - mac-ci-build tags: - Docker image: amd64/debian:10 script: # Test de l'installation initiale - ls -l - ./khanat-$(echo $CI_BUILD_REF | head -c 7 )-$CI_PIPELINE_ID-Linux-x86_64.run - ls -l - ls -l /tmp/khanat_installer/ dependencies: - Linux client package .OSX client test: stage: test only: - tags - mac-ci-build tags: - OSX script: - echo "pas encore de test pour le client OSX" dependencies: - OSX client build when: manual ##DEPLOYEMENT TO STAGING (TEST SERVER) # Job de déploiment vers le staging. Inutilisé pour le moment, il pourrait servir à l'avenir pour déployer automatiquement les nouvelles versions du client/serveur vers l'environnement de staging (zone de test) .Deploy to Staging: stage: staging environment: Staging except: - ryzomcore tags: - Docker image: ubuntu:18.04 script: - echo "pas encore de deployment" dependencies: - Linux client build - Linux client test - OSX client build - OSX client test when: manual ##DEPLOYEMENT TO PRODUCTION # Job de déploiment vers la production. Inutilisé pour le moment, il pourrait servir à l'avenir pour déployer automatiquement les nouvelles versions du client/serveur vers l'environnement de production .Release to Production: stage: production environment: Production only: - tags tags: - Docker image: ubuntu:18.04 script: - echo "pas encore de tag" dependencies: - Linux client build - Linux client test - OSX client build - OSX client test - Deploy to Staging when: manual