distcheck.yml 4.6 KB

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