From: Viktor Szakats Date: Wed, 7 Jan 2026 11:54:35 +0000 (+0100) Subject: GHA/non-native: restore MS-DOS jobs X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1b9f1c2086d2d8db73e6a0d953d872e723952dce;p=thirdparty%2Fcurl.git GHA/non-native: restore MS-DOS jobs In `!ssl` variant. It's useful to catch `uint32_t` mismatches with `unsigned int` or its printf mask. Also add Renovate version bump rule. It takes about 1m (autotools) + 30s (cmake) in CI. Bug: https://github.com/curl/curl/pull/20199#discussion_r2666363334 Follow-up to 8881a52ab0bc7f8cdaad3161e189570d69f0cd3c #20210 Follow-up to e70436a88a7ba16f6a49237054dde41f181fd9c4 #20200 Follow-up to 0630e66cb4044892ec137c3357852fe025746f35 #18338 Closes #20204 --- diff --git a/.github/workflows/non-native.yml b/.github/workflows/non-native.yml index 6c36586982..df06af6bfa 100644 --- a/.github/workflows/non-native.yml +++ b/.github/workflows/non-native.yml @@ -329,3 +329,111 @@ jobs: else make -C bld examples fi + + msdos: + name: "MS-DOS, ${{ matrix.build == 'cmake' && 'CM' || 'AM' }} djgpp !ssl i586" + runs-on: 'ubuntu-latest' + timeout-minutes: 5 + env: + MAKEFLAGS: -j 5 + MATRIX_BUILD: '${{ matrix.build }}' + # renovate: datasource=github-releases depName=andrewwutw/build-djgpp versioning=semver-coerced registryUrl=https://github.com + TOOLCHAIN_VERSION: '3.4' + strategy: + matrix: + build: [autotools, cmake] + fail-fast: false + steps: + - name: 'install packages' + run: | + sudo rm -f /var/lib/man-db/auto-update + sudo apt-get -o Dpkg::Use-Pty=0 install libfl2 + + - name: 'cache compiler (djgpp)' + uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1 + id: cache-compiler + with: + path: ~/djgpp + key: ${{ runner.os }}-djgpp-${{ env.TOOLCHAIN_VERSION }}-amd64 + + - name: 'install compiler (djgpp)' + if: ${{ steps.cache-compiler.outputs.cache-hit != 'true' }} + run: | + cd ~ + curl --disable --fail --silent --show-error --connect-timeout 15 --max-time 120 --retry 3 --retry-connrefused \ + --location "https://github.com/andrewwutw/build-djgpp/releases/download/v${TOOLCHAIN_VERSION}/djgpp-linux64-gcc1220.tar.bz2" | tar -xj + cd djgpp + for f in wat3211b.zip zlb13b.zip; do + curl --disable --fail --silent --show-error --connect-timeout 15 --max-time 60 --retry 3 --retry-connrefused \ + "https://www.delorie.com/pub/djgpp/current/v2tk/$f" --output bin.zip + unzip -q bin.zip + rm -f bin.zip + done + + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + with: + persist-credentials: false + + - name: 'configure' + run: | + if [ "${MATRIX_BUILD}" = 'cmake' ]; then + cmake -B bld -G Ninja \ + -DCMAKE_SYSTEM_NAME=DOS \ + -DCMAKE_SYSTEM_PROCESSOR=x86 \ + -DCMAKE_C_COMPILER_TARGET=i586-pc-msdosdjgpp \ + -DCMAKE_C_COMPILER="$HOME/djgpp/bin/i586-pc-msdosdjgpp-gcc" \ + -DCMAKE_UNITY_BUILD=ON \ + -DCURL_WERROR=ON \ + -DCURL_ENABLE_SSL=OFF -DCURL_USE_LIBPSL=OFF \ + -DZLIB_INCLUDE_DIR="$HOME/djgpp/include" \ + -DZLIB_LIBRARY="$HOME/djgpp/lib/libz.a" \ + -DWATT_ROOT="$HOME/djgpp/net/watt" + else + autoreconf -fi + mkdir bld && cd bld && ../configure --disable-dependency-tracking --enable-unity --enable-warnings --enable-werror --disable-shared \ + CC="$HOME/djgpp/bin/i586-pc-msdosdjgpp-gcc" \ + AR="$HOME/djgpp/bin/i586-pc-msdosdjgpp-ar" \ + RANLIB="$HOME/djgpp/bin/i586-pc-msdosdjgpp-ranlib" \ + WATT_ROOT="$HOME/djgpp/net/watt" \ + --host=i586-pc-msdosdjgpp \ + --without-ssl --without-libpsl \ + --with-zlib="$HOME/djgpp" + fi + + - name: 'configure log' + if: ${{ !cancelled() }} + run: cat bld/config.log bld/CMakeFiles/CMake*.yaml 2>/dev/null || true + + - name: 'curl_config.h' + run: | + echo '::group::raw'; cat bld/lib/curl_config.h || true; echo '::endgroup::' + grep -F '#define' bld/lib/curl_config.h | sort || true + + - name: 'build' + run: | + if [ "${MATRIX_BUILD}" = 'cmake' ]; then + cmake --build bld + else + make -C bld + fi + + - name: 'curl info' + run: find . \( -name '*.exe' -o -name '*.a' \) -exec file '{}' \; + + - name: 'build tests' + if: ${{ matrix.build == 'cmake' }} # skip for autotools to save time + run: | + if [ "${MATRIX_BUILD}" = 'cmake' ]; then + cmake --build bld --target testdeps + else + make -C bld -C tests + fi + + - name: 'build examples' + if: ${{ matrix.build == 'cmake' }} # skip for autotools to save time + run: | + if [ "${MATRIX_BUILD}" = 'cmake' ]; then + cmake --build bld --target curl-examples-build + else + make -C bld examples + fi