resources:
  - name: deltachat-core-rust
    type: git
    icon: github
    source:
      branch: main
      uri: https://github.com/deltachat/deltachat-core-rust.git

  - name: deltachat-core-rust-release
    type: git
    icon: github
    source:
      branch: main
      uri: https://github.com/deltachat/deltachat-core-rust.git
      tag_filter: "v*"

jobs:
  - name: python-x86_64
    plan:
      - get: deltachat-core-rust
      - get: deltachat-core-rust-release
        trigger: true

      # Build manylinux image with additional dependencies
      - task: build-coredeps
        privileged: true
        config:
          inputs:
            # Building the latest, not tagged coredeps
            - name: deltachat-core-rust
          image_resource:
            source:
              repository: concourse/oci-build-task
            type: registry-image
          outputs:
            - name: coredeps-image
              path: image
          params:
            CONTEXT: deltachat-core-rust/scripts/coredeps
            UNPACK_ROOTFS: "true"
            BUILD_ARG_BASEIMAGE: quay.io/pypa/manylinux2014_x86_64
          platform: linux
          caches:
            - path: cache
          run:
            path: build

      # Use built image to build python wheels
      - task: build-wheels
        image: coredeps-image
        config:
          inputs:
            - name: deltachat-core-rust-release
              path: .
          outputs:
            # Binary wheels
            - name: py-wheels
              path: ./python/.docker-tox/wheelhouse/
          platform: linux
          run:
            path: bash
            args:
              - -exc
              - |
                scripts/run_all.sh

      # Upload x86_64 wheels and source packages
      - task: upload-wheels
        config:
          inputs:
            - name: py-wheels
          image_resource:
            type: registry-image
            source:
              repository: debian
          platform: linux
          run:
            path: sh
            args:
              - -ec
              - |
                apt-get update -y
                apt-get install -y --no-install-recommends python3-pip python3-setuptools python3-venv
                python3 -m venv env
                env/bin/pip install --upgrade pip
                env/bin/pip install devpi
                env/bin/devpi use https://m.devpi.net/dc/master
                env/bin/devpi login ((devpi.login)) --password ((devpi.password))
                env/bin/devpi upload py-wheels/*manylinux201*

  - name: python-aarch64
    plan:
      - get: deltachat-core-rust
      - get: deltachat-core-rust-release
        trigger: true

      # Build manylinux image with additional dependencies
      - task: build-coredeps
        privileged: true
        config:
          inputs:
            # Building the latest, not tagged coredeps
            - name: deltachat-core-rust
          image_resource:
            source:
              repository: concourse/oci-build-task
            type: registry-image
          outputs:
            - name: coredeps-image
              path: image
          params:
            CONTEXT: deltachat-core-rust/scripts/coredeps
            UNPACK_ROOTFS: "true"
            BUILD_ARG_BASEIMAGE: quay.io/pypa/manylinux2014_aarch64
          platform: linux
          caches:
            - path: cache
          run:
            path: build

      # Use built image to build python wheels
      - task: build-wheels
        image: coredeps-image
        config:
          inputs:
            - name: deltachat-core-rust-release
              path: .
          outputs:
            - name: py-wheels
              path: ./python/.docker-tox/wheelhouse/
          platform: linux
          run:
            path: bash
            args:
              - -exc
              - |
                scripts/run_all.sh

      # Upload aarch64 wheels
      - task: upload-wheels
        config:
          inputs:
            - name: py-wheels
          image_resource:
            type: registry-image
            source:
              repository: debian
          platform: linux
          run:
            path: sh
            args:
              - -ec
              - |
                apt-get update -y
                apt-get install -y --no-install-recommends python3-pip python3-setuptools python3-venv
                python3 -m venv env
                env/bin/pip install --upgrade pip
                env/bin/pip install devpi
                env/bin/devpi use https://m.devpi.net/dc/master
                env/bin/devpi login ((devpi.login)) --password ((devpi.password))
                env/bin/devpi upload py-wheels/*manylinux201*

  - name: python-musl-x86_64
    plan:
      - get: deltachat-core-rust
      - get: deltachat-core-rust-release
        trigger: true

      # Build manylinux image with additional dependencies
      - task: build-coredeps
        privileged: true
        config:
          inputs:
            # Building the latest, not tagged coredeps
            - name: deltachat-core-rust
          image_resource:
            source:
              repository: concourse/oci-build-task
            type: registry-image
          outputs:
            - name: coredeps-image
              path: image
          params:
            CONTEXT: deltachat-core-rust/scripts/coredeps
            UNPACK_ROOTFS: "true"
            BUILD_ARG_BASEIMAGE: quay.io/pypa/musllinux_1_1_x86_64
          platform: linux
          caches:
            - path: cache
          run:
            path: build

      # Use built image to build python wheels
      - task: build-wheels
        image: coredeps-image
        config:
          inputs:
            - name: deltachat-core-rust-release
              path: .
          outputs:
            - name: py-wheels
              path: ./python/.docker-tox/wheelhouse/
          platform: linux
          run:
            path: bash
            args:
              - -exc
              - |
                scripts/run_all.sh

      # Upload musl x86_64 wheels
      - task: upload-wheels
        config:
          inputs:
            - name: py-wheels
          image_resource:
            type: registry-image
            source:
              repository: debian
          platform: linux
          run:
            path: sh
            args:
              - -ec
              - |
                apt-get update -y
                apt-get install -y --no-install-recommends python3-pip python3-setuptools python3-venv
                python3 -m venv env
                env/bin/pip install --upgrade pip
                env/bin/pip install devpi
                env/bin/devpi use https://m.devpi.net/dc/master
                env/bin/devpi login ((devpi.login)) --password ((devpi.password))
                env/bin/devpi upload py-wheels/*musllinux_1_1_x86_64*

  - name: python-musl-aarch64
    plan:
      - get: deltachat-core-rust
      - get: deltachat-core-rust-release
        trigger: true

      # Build manylinux image with additional dependencies
      - task: build-coredeps
        privileged: true
        config:
          inputs:
            # Building the latest, not tagged coredeps
            - name: deltachat-core-rust
          image_resource:
            source:
              repository: concourse/oci-build-task
            type: registry-image
          outputs:
            - name: coredeps-image
              path: image
          params:
            CONTEXT: deltachat-core-rust/scripts/coredeps
            UNPACK_ROOTFS: "true"
            BUILD_ARG_BASEIMAGE: quay.io/pypa/musllinux_1_1_aarch64
          platform: linux
          caches:
            - path: cache
          run:
            path: build

      # Use built image to build python wheels
      - task: build-wheels
        image: coredeps-image
        config:
          inputs:
            - name: deltachat-core-rust-release
              path: .
          outputs:
            - name: py-wheels
              path: ./python/.docker-tox/wheelhouse/
          platform: linux
          run:
            path: bash
            args:
              - -exc
              - |
                scripts/run_all.sh

      # Upload musl aarch64 wheels
      - task: upload-wheels
        config:
          inputs:
            - name: py-wheels
          image_resource:
            type: registry-image
            source:
              repository: debian
          platform: linux
          run:
            path: sh
            args:
              - -ec
              - |
                apt-get update -y
                apt-get install -y --no-install-recommends python3-pip python3-setuptools python3-venv
                python3 -m venv env
                env/bin/pip install --upgrade pip
                env/bin/pip install devpi
                env/bin/devpi use https://m.devpi.net/dc/master
                env/bin/devpi login ((devpi.login)) --password ((devpi.password))
                env/bin/devpi upload py-wheels/*musllinux_1_1_aarch64*
