stages:
  - build

# with :; prevent from run it on windows
before_script:
  - ":; uname -a"
  - ":; cat /etc/os-release"
  - ":; pwd"
  - ":; cat /proc/sys/kernel/core_pattern"
  - ":; mkdir logs || true"
  - ":; ${UPDATEREPOS}"
  - ":; ${DOCKERRETRY} ${PMUPDATE} >logs/apt.log"
  - ":; ${DOCKERRETRY} ${PMINSTALL} ${PACKAGES} >>logs/apt.log"
  - ":; ./tools/ci/scripts/clonesrc.sh"
  - ":; cd manaplus"

image: debian:unstable
variables:
  GET_SOURCES_ATTEMPTS: "5"
  ARTIFACT_DOWNLOAD_ATTEMPTS: "5"
  UPDATEREPOS: "tools/ci/scripts/updaterepos.sh"
  PMUPDATE: "apt-get update"
  PMINSTALL: "apt-get install -y -qq"
  DOCKERRETRY: "./tools/ci/scripts/dockerretry.sh"
  GIT_DEPTH: "1"

.job-push: &job-push
  artifacts:
    paths:
    - logs
    when: always
    expire_in: 3 week
  dependencies: []

.job-always: &job-always
  artifacts:
    paths:
    - logs
    when: always
    expire_in: 3 week
  dependencies: []

clang-3.9:
  stage: build
  script:
  - ./tools/ci/jobs/clang39.sh
  - ./tools/ci/scripts/runtests.sh
  <<: *job-push
  variables:
    PACKAGES: clang-3.9 libc++-dev libc++abi-dev 
              make autoconf automake autopoint gettext 
              libxml2-dev libcurl4-gnutls-dev libpng-dev 
              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
              git gdb valgrind netcat-openbsd procps

clang-3.0:
  stage: build
  script:
  - ./tools/ci/jobs/clang.sh clang
  - ./tools/ci/scripts/runtests.sh
  image: debian:wheezy
  <<: *job-push
  variables:
    PACKAGES: clang libc++-dev 
              make autoconf automake autopoint gettext 
              libxml2-dev libcurl4-gnutls-dev libpng-dev 
              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
              git gdb valgrind netcat-openbsd procps
  tags:
    - docker

clang-3.0_i386:
  stage: build
  script:
  - ./tools/ci/jobs/clang.sh clang
  - ./tools/ci/scripts/runtests.sh
  image: vicamo/debian:wheezy-i386
  <<: *job-push
  variables:
    PACKAGES: clang libc++-dev 
              make autoconf automake autopoint gettext 
              libxml2-dev libcurl4-gnutls-dev libpng-dev 
              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
              git gdb valgrind netcat-openbsd procps
  tags:
    - docker

clang-3.3:
  stage: build
  script:
  - ./tools/ci/jobs/clang.sh clang-3.3
  - ./tools/ci/scripts/runtests.sh
  image: ubuntu:12.04
  <<: *job-push
  variables:
    PACKAGES: clang-3.3 libc++-dev 
              make autoconf automake autopoint gettext 
              libxml2-dev libcurl4-gnutls-dev libpng-dev 
              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
              git gdb valgrind netcat-openbsd procps
  tags:
    - docker

clang-3.3_i386:
  stage: build
  script:
  - ./tools/ci/jobs/clang.sh clang-3.3
  - ./tools/ci/scripts/runtests.sh
  image: vicamo/ubuntu:precise-i386
  <<: *job-push
  variables:
    PACKAGES: clang-3.3 libc++-dev 
              make autoconf automake autopoint gettext 
              libxml2-dev libcurl4-gnutls-dev libpng-dev 
              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
              git gdb valgrind netcat-openbsd procps
  tags:
    - docker

clang-3.4:
  stage: build
  script:
  - ./tools/ci/jobs/clang34.sh
  - ./tools/ci/scripts/runtests.sh
  image: debian:jessie
  <<: *job-push
  variables:
    PACKAGES: clang-3.4 libc++-dev 
              make autoconf automake autopoint gettext 
              libxml2-dev libcurl4-gnutls-dev libpng-dev 
              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
              git gdb valgrind netcat-openbsd procps

clang-3.4_i386:
  stage: build
  script:
  - ./tools/ci/jobs/clang34.sh
  - ./tools/ci/scripts/runtests.sh
  image: vicamo/debian:jessie-i386
  <<: *job-push
  variables:
    PACKAGES: clang-3.4 libc++-dev 
              make autoconf automake autopoint gettext 
              libxml2-dev libcurl4-gnutls-dev libpng-dev 
              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
              git gdb valgrind netcat-openbsd procps
  tags:
    - docker

clang-3.5:
  stage: build
  script:
  - ./tools/ci/jobs/clang35.sh
  - ./tools/ci/scripts/runtests.sh
  image: debian:jessie
  <<: *job-push
  variables:
    PACKAGES: clang-3.5 libc++-dev 
              make autoconf automake autopoint gettext 
              libxml2-dev libcurl4-gnutls-dev libpng-dev 
              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
              git gdb valgrind netcat-openbsd procps

clang-3.5_i386:
  stage: build
  script:
  - ./tools/ci/jobs/clang35.sh
  - ./tools/ci/scripts/runtests.sh
  image: vicamo/debian:jessie-i386
  <<: *job-push
  variables:
    PACKAGES: clang-3.5 libc++-dev 
              make autoconf automake autopoint gettext 
              libxml2-dev libcurl4-gnutls-dev libpng-dev 
              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
              git gdb valgrind netcat-openbsd procps
  tags:
    - docker

clang-3.6:
  stage: build
  script:
  - ./tools/ci/jobs/clang36.sh
  - ./tools/ci/scripts/runtests.sh
  image: ubuntu:14.04
  <<: *job-push
  variables:
    PACKAGES: clang-3.6 libc++-dev 
              make autoconf automake autopoint gettext 
              libxml2-dev libcurl4-gnutls-dev libpng-dev 
              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
              git gdb valgrind netcat-openbsd procps
  tags:
    - docker

clang-3.6_i386:
  stage: build
  script:
  - ./tools/ci/jobs/clang36.sh
  - ./tools/ci/scripts/runtests.sh
  image: vicamo/ubuntu:trusty-i386
  <<: *job-push
  variables:
    PACKAGES: clang-3.6 libc++-dev 
              make autoconf automake autopoint gettext 
              libxml2-dev libcurl4-gnutls-dev libpng-dev 
              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
              git gdb valgrind netcat-openbsd procps
  tags:
    - docker

clang-3.7:
  stage: build
  script:
  - ./tools/ci/jobs/clang37.sh
  - ./tools/ci/scripts/runtests.sh
  image: ubuntu:16.04
  <<: *job-push
  variables:
    PACKAGES: clang-3.7 libc++-dev 
              make autoconf automake autopoint gettext 
              libxml2-dev libcurl4-gnutls-dev libpng-dev 
              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
              git gdb valgrind netcat-openbsd procps
  tags:
    - docker

clang-3.7_i386:
  stage: build
  script:
  - ./tools/ci/jobs/clang37.sh
  - ./tools/ci/scripts/runtests.sh
  image: vicamo/ubuntu:xenial-i386
  <<: *job-push
  variables:
    PACKAGES: clang-3.7 libc++-dev 
              make autoconf automake autopoint gettext 
              libxml2-dev libcurl4-gnutls-dev libpng-dev 
              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
              git gdb valgrind netcat-openbsd procps
  tags:
    - docker

clang-3.8:
  stage: build
  script:
  - ./tools/ci/jobs/clang38.sh
  - ./tools/ci/scripts/runtests.sh
  image: ubuntu:16.04
  <<: *job-push
  variables:
    PACKAGES: clang-3.8 libc++-dev libc++abi-dev 
              make autoconf automake autopoint gettext 
              libxml2-dev libcurl4-gnutls-dev libpng-dev 
              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
              git gdb valgrind netcat-openbsd procps
  tags:
    - docker

clang-3.8_i386:
  stage: build
  script:
  - ./tools/ci/jobs/clang38.sh
  - ./tools/ci/scripts/runtests.sh
  image: vicamo/ubuntu:xenial-i386
  <<: *job-push
  variables:
    PACKAGES: clang-3.8 libc++-dev libc++abi-dev 
              make autoconf automake autopoint gettext 
              libxml2-dev libcurl4-gnutls-dev libpng-dev 
              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
              git gdb valgrind netcat-openbsd procps
  tags:
    - docker

.clang-3.9_c++11:
  stage: build
  script:
  - ./tools/ci/jobs/clang39.sh_c++11.sh
  - ./tools/ci/scripts/runtests.sh
  <<: *job-push
  variables:
    PACKAGES: clang-3.9 libc++-dev libc++abi-dev 
              make autoconf automake autopoint gettext 
              libxml2-dev libcurl4-gnutls-dev libpng-dev 
              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
              git gdb valgrind netcat-openbsd procps

.clang-3.9_c++11_i386:
  stage: build
  script:
  - ./tools/ci/jobs/clang39.sh_c++11.sh
  - ./tools/ci/scripts/runtests.sh
  image: vicamo/debian:sid-i386
  <<: *job-push
  variables:
    PACKAGES: clang-3.9 libc++-dev libc++abi-dev 
              make autoconf automake autopoint gettext 
              libxml2-dev libcurl4-gnutls-dev libpng-dev 
              libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-ttf2.0-dev
              git gdb valgrind netcat-openbsd procps
  tags:
    - docker

clang-3.9_sdl2:
  stage: build
  script:
  - ./tools/ci/jobs/clang39_sdl2.sh
  - ./tools/ci/scripts/runtests.sh
  <<: *job-push
  variables:
    PACKAGES: clang-3.9 libc++-dev libc++abi-dev 
              make autoconf automake autopoint gettext 
              libxml2-dev libcurl4-gnutls-dev libpng-dev 
              libsdl2-gfx-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-net-dev libsdl2-ttf-dev
              git gdb valgrind netcat-openbsd procps
