# 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 <http://www.gnu.org/licenses/>.
#
# 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 debian_amd64_buster build'
#   gitlab-runner exec docker --timeout=3600 'Linux client debian_amd64_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
                       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
  when: manual


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
                         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
  when: manual


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
                       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
  when: manual



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
                       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
  when: manual



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
    # 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
  when: manual



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
    # 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
  when: manual



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
    # 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
  when: manual




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
    - 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
  when: manual



# 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
  when: manual



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
                         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_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
                         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
  when: manual




# 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
    - cp code/build/bin/* 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
    - ./khanat-client-debian_buster-$(echo $CI_BUILD_REF | head -c 7 )-$CI_PIPELINE_ID-Linux-x86_64.run
  dependencies:
    - Linux client 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-client-debian_buster-$(echo $CI_BUILD_REF | head -c 7 )-$CI_PIPELINE_ID-Linux-x86_64.run
  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