variables:
  GIT_VERSION: "2.46.0"
  PYTHON_VERSION: "3.10.8"
  DEFAULT_HELP_FORMAT: "man"

stages:
  - build
  - test
  - package

workflow:
  rules:
    - if: $CI_PIPELINE_SOURCE == "schedule"
    - if: $CI_PIPELINE_SOURCE == "web"
    - if: $CI_COMMIT_TAG

.build:
  stage: build
  script:
    # Install prerequisite for git-gui and gitk
    - echo "proxy=_none_" | sudo tee -a /etc/yum.conf
    - sudo yum -y install tcl-devel tk-devel
    # Install recent version of python required to build meson that is a requirement for building chain of git
    - curl -s -L -o python.zip https://gitlab.synchrotron-soleil.fr/software-control-system/devtools/python3/-/jobs/artifacts/${PYTHON_VERSION}/download?job=${PLATFORM}
    - unzip -q python.zip
    - rm python.zip
    - export PATH=$(readlink -e .)/python-${PYTHON_VERSION}-${PLATFORM}/bin:${PATH}
    - python --version | grep ${PYTHON_VERSION}
    - python -m pip install --upgrade pip 
    - python -m pip install conan
    # Build git with conan
    - conan profile detect --force
    - conan create . --version ${GIT_VERSION} -s compiler.libcxx=libstdc++11 --build="*" 
    - conan install --requires git/${GIT_VERSION} -s compiler.libcxx=libstdc++11 --deployer=direct_deploy
    - mv direct_deploy/git ${CI_PROJECT_DIR}/${NAME}
  artifacts:
    name: ${NAME}
    paths:
      - ${NAME}

.test:
  stage: test
  script:
    - ${NAME}/bin/git --version | grep ${GIT_VERSION}

.package:
  stage: package
  script:
    - cd ${CI_PROJECT_DIR}/${NAME}
    - zip -r --symlinks ../${NAME}.zip *
    - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file ../${NAME}.zip "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/git/${GIT_VERSION}/"'

linux-x86_64:
  extends: [".build"]
  image: gitlab-registry.synchrotron-soleil.fr/software-control-system/containers/conan-docker-tools/conan-el6-gcc91
  variables:
    PLATFORM: linux-x86_64
    NAME: "git-${GIT_VERSION}-${PLATFORM}"

test-x86_64:
  extends: [".test"]
  image: gitlab-registry.synchrotron-soleil.fr/software-control-system/containers/conan-docker-tools/conan-el6-gcc91
  variables:
    PLATFORM: linux-x86_64
    NAME: "git-${GIT_VERSION}-${PLATFORM}"
  needs:
    - linux-x86_64

package-x86_64:
  extends: [".package"]
  image: gitlab-registry.synchrotron-soleil.fr/software-control-system/containers/conan-docker-tools/conan-el6-gcc91
  variables:
    PLATFORM: linux-x86_64
    NAME: "git-${GIT_VERSION}-${PLATFORM}"
  needs:
    - linux-x86_64
    - test-x86_64

linux-i686:
  extends: [".build"]
  image: gitlab-registry.synchrotron-soleil.fr/software-control-system/containers/conan-docker-tools/conan-el6-gcc91-x86
  variables:
    PLATFORM: linux-i686
    NAME: "git-${GIT_VERSION}-${PLATFORM}"

test-i686:
  extends: [".test"]
  image: gitlab-registry.synchrotron-soleil.fr/software-control-system/containers/conan-docker-tools/conan-el6-gcc91-x86
  variables:
    PLATFORM: linux-i686
    NAME: "git-${GIT_VERSION}-${PLATFORM}"
  needs:
    - linux-i686

package-i686:
  extends: [".package"]
  image: gitlab-registry.synchrotron-soleil.fr/software-control-system/containers/conan-docker-tools/conan-el6-gcc91-x86
  variables:
    PLATFORM: linux-i686
    NAME: "git-${GIT_VERSION}-${PLATFORM}"
  needs:
    - linux-i686
    - test-i686
