image-linux:
  stage: image
  rules:
    - if: $CI_PIPELINE_SOURCE == 'push' && $CI_PROJECT_PATH == "wine/vkd3d" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
      changes:
        - .gitlab-ci.yml
        - gitlab/image.yml
        - gitlab/image.docker
  image:
    name: gcr.io/kaniko-project/executor:debug
    entrypoint: [""]
  variables:
    IMAGE_SOURCE: "$CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX/debian:bookworm"
    IMAGE_LOCAL: "$CI_REGISTRY_IMAGE:debian-bookworm"
    DOCKER_FILE: "$CI_PROJECT_DIR/gitlab/image.docker"
  script:
    - mkdir -p /kaniko/.docker
    - echo "{\"auths\":{\"$CI_REGISTRY\":{\"auth\":\"$(printf "%s:%s" "$CI_REGISTRY_USER" "$CI_REGISTRY_PASSWORD" | base64 | tr -d '\n')\"},\"$CI_DEPENDENCY_PROXY_SERVER\":{\"auth\":\"$(printf "%s:%s" "$CI_DEPENDENCY_PROXY_USER" "$CI_DEPENDENCY_PROXY_PASSWORD" | base64 | tr -d '\n')\"}}}" > /kaniko/.docker/config.json
    - sed -i "1iFROM $IMAGE_SOURCE" "$DOCKER_FILE"
    - /kaniko/executor --context "$CI_PROJECT_DIR" --dockerfile "$DOCKER_FILE" --destination "$IMAGE_LOCAL"

# Job `image-mac' must be run each time the pipeline is run on a push,
# otherwise macOS artifacts are not regenerated and macOS jobs cannot find them.
# So we add a dependency on image.docker too, even if that file is not really
# used for macOS.
image-mac:
  stage: image
  rules:
    - if: $CI_PIPELINE_SOURCE == 'push' && $CI_PROJECT_PATH == "wine/vkd3d" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
      changes:
        - .gitlab-ci.yml
        - gitlab/image.yml
        - gitlab/image.docker
  interruptible: true
  tags:
    - mac
  script:
    - mkdir image
    - cd image
    - mkdir bin
    - export PATH="/usr/local/opt/bison/bin:/usr/local/opt/flex/bin:$PATH"
    - git clone --depth 1 --branch wine-3.21 https://gitlab.winehq.org/wine/wine.git
    - cd wine
    - mkdir build
    - cd build
    - ../configure --enable-win64 --without-x --without-freetype
    - make tools/widl/widl
    - cd ../..
    - cp wine/build/tools/widl/widl bin
    - rm -fr wine
    - cd ..
  artifacts:
    paths:
      - image