xref: /curl/.github/workflows/distcheck.yml (revision bba4c313)
1# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
2#
3# SPDX-License-Identifier: curl
4
5name: dist
6
7on:
8  push:
9    branches:
10      - master
11      - '*/ci'
12  pull_request:
13    branches:
14      - master
15
16concurrency:
17  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
18  cancel-in-progress: true
19
20permissions: {}
21
22jobs:
23  maketgz-and-verify-in-tree:
24    runs-on: ubuntu-latest
25    timeout-minutes: 30
26    steps:
27      - uses: actions/checkout@v4
28
29      - run: sudo apt-get purge -y curl libcurl4 libcurl4-doc
30        name: 'remove preinstalled curl libcurl4{-doc}'
31
32      - run: autoreconf -fi
33        name: 'autoreconf'
34
35      - run: ./configure --without-ssl --without-libpsl
36        name: 'configure'
37
38      - run: make V=1 && make V=1 clean
39        name: 'make and clean'
40
41      - name: 'maketgz'
42        run: |
43          SOURCE_DATE_EPOCH=1711526400 ./maketgz 99.98.97
44
45      - name: 'maketgz reproducibility test'
46        run: |
47          mkdir run1; mv ./curl-99.98.97.* run1/
48          make V=1 && make V=1 clean
49          SOURCE_DATE_EPOCH=1711526400 ./maketgz 99.98.97
50          mkdir run2; cp -p ./curl-99.98.97.* run2/
51          diff run1 run2
52
53      - uses: actions/upload-artifact@v4
54        with:
55          name: 'release-tgz'
56          path: 'curl-99.98.97.tar.gz'
57
58      - run: |
59          echo "::stop-commands::$(uuidgen)"
60          tar xvf curl-99.98.97.tar.gz
61          pushd curl-99.98.97
62          ./configure --prefix=$HOME/temp --without-ssl --without-libpsl
63          make -j3
64          make -j3 test-ci
65          make -j3 install
66          popd
67          # basic check of the installed files
68          bash scripts/installcheck.sh $HOME/temp
69          rm -rf curl-99.98.97
70        name: 'verify in-tree configure build including install'
71
72  verify-out-of-tree-docs:
73    runs-on: ubuntu-latest
74    timeout-minutes: 30
75    needs: maketgz-and-verify-in-tree
76    steps:
77      - uses: actions/download-artifact@v4
78        with:
79          name: 'release-tgz'
80
81      - run: |
82          echo "::stop-commands::$(uuidgen)"
83          tar xvf curl-99.98.97.tar.gz
84          touch curl-99.98.97/docs/{cmdline-opts,libcurl}/Makefile.inc
85          mkdir build
86          pushd build
87          ../curl-99.98.97/configure --without-ssl --without-libpsl
88          make -j3
89          make -j3 test-ci
90          popd
91          rm -rf build
92          rm -rf curl-99.98.97
93        name: 'verify out-of-tree configure build including docs'
94
95  verify-out-of-tree-autotools-debug:
96    runs-on: ubuntu-latest
97    timeout-minutes: 30
98    needs: maketgz-and-verify-in-tree
99    steps:
100      - uses: actions/download-artifact@v4
101        with:
102          name: 'release-tgz'
103
104      - run: |
105          echo "::stop-commands::$(uuidgen)"
106          tar xvf curl-99.98.97.tar.gz
107          pushd curl-99.98.97
108          mkdir build
109          pushd build
110          ../configure --without-ssl --enable-debug "--prefix=${PWD}/pkg" --without-libpsl
111          make -j3
112          make -j3 test-ci
113          make -j3 install
114        name: 'verify out-of-tree autotools debug build'
115
116  verify-out-of-tree-cmake:
117    runs-on: ubuntu-latest
118    timeout-minutes: 30
119    needs: maketgz-and-verify-in-tree
120    steps:
121      - uses: actions/download-artifact@v4
122        with:
123          name: 'release-tgz'
124
125      - run: |
126          echo "::stop-commands::$(uuidgen)"
127          tar xvf curl-99.98.97.tar.gz
128          pushd curl-99.98.97
129          cmake -B build -DCURL_WERROR=ON
130          make -C build -j3
131        name: 'verify out-of-tree cmake build'
132