# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
#
# SPDX-License-Identifier: curl

name: dist

on:
  push:
    branches:
      - master
      - '*/ci'
  pull_request:
    branches:
      - master

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
  cancel-in-progress: true

jobs:
  maketgz-and-verify-in-tree:
    runs-on: ubuntu-latest
    timeout-minutes: 30
    steps:
      - uses: actions/checkout@v4

      - run: sudo apt-get purge -y curl libcurl4 libcurl4-doc
        name: 'remove preinstalled curl libcurl4{-doc}'

      - run: autoreconf -fi
        name: 'autoreconf'

      - run: ./configure --without-ssl --without-libpsl
        name: 'configure'

      - run: make V=1 && make V=1 clean
        name: 'make and clean'

      - run: ./maketgz 99.98.97
        name: 'maketgz'

      - uses: actions/upload-artifact@v4
        with:
          name: 'release-tgz'
          path: 'curl-99.98.97.tar.gz'

      - run: |
          echo "::stop-commands::$(uuidgen)"
          tar xvf curl-99.98.97.tar.gz
          pushd curl-99.98.97
          ./configure --prefix=$HOME/temp --without-ssl --without-libpsl
          make
          make test-ci
          make install
          popd
          # basic check of the installed files
          bash scripts/installcheck.sh $HOME/temp
          rm -rf curl-99.98.97
        name: 'verify in-tree configure build including install'

  verify-out-of-tree-docs:
    runs-on: ubuntu-latest
    timeout-minutes: 30
    needs: maketgz-and-verify-in-tree
    steps:
      - uses: actions/download-artifact@v4
        with:
          name: 'release-tgz'

      - run: |
          echo "::stop-commands::$(uuidgen)"
          tar xvf curl-99.98.97.tar.gz
          touch curl-99.98.97/docs/{cmdline-opts,libcurl}/Makefile.inc
          mkdir build
          pushd build
          ../curl-99.98.97/configure --without-ssl --without-libpsl
          make
          make test-ci
          popd
          rm -rf build
          rm -rf curl-99.98.97
        name: 'verify out-of-tree configure build including docs'

  verify-out-of-tree-autotools-debug:
    runs-on: ubuntu-latest
    timeout-minutes: 30
    needs: maketgz-and-verify-in-tree
    steps:
      - uses: actions/download-artifact@v4
        with:
          name: 'release-tgz'

      - run: |
          echo "::stop-commands::$(uuidgen)"
          tar xvf curl-99.98.97.tar.gz
          pushd curl-99.98.97
          mkdir build
          pushd build
          ../configure --without-ssl --enable-debug "--prefix=${PWD}/pkg" --without-libpsl
          make -j3
          make -j3 test-ci
          make -j3 install
        name: 'verify out-of-tree autotools debug build'

  verify-out-of-tree-cmake:
    runs-on: ubuntu-latest
    timeout-minutes: 30
    needs: maketgz-and-verify-in-tree
    steps:
      - uses: actions/download-artifact@v4
        with:
          name: 'release-tgz'

      - run: |
          echo "::stop-commands::$(uuidgen)"
          tar xvf curl-99.98.97.tar.gz
          pushd curl-99.98.97
          mkdir build
          pushd build
          cmake ..
          make
        name: 'verify out-of-tree cmake build'
