summarylogtreecommitdiffstats
path: root/0096-Add-CI-to-Build-and-Test.patch
diff options
context:
space:
mode:
Diffstat (limited to '0096-Add-CI-to-Build-and-Test.patch')
-rw-r--r--0096-Add-CI-to-Build-and-Test.patch388
1 files changed, 0 insertions, 388 deletions
diff --git a/0096-Add-CI-to-Build-and-Test.patch b/0096-Add-CI-to-Build-and-Test.patch
deleted file mode 100644
index bd3dd00f2b23..000000000000
--- a/0096-Add-CI-to-Build-and-Test.patch
+++ /dev/null
@@ -1,388 +0,0 @@
-From 3a33db28df3b60d7127396f76366e2081eccd386 Mon Sep 17 00:00:00 2001
-From: Naveen M K <naveen521kk@gmail.com>
-Date: Fri, 18 Jun 2021 17:51:59 +0530
-Subject: [PATCH 096/N] Add CI to Build and Test
-
----
- .github/workflows/mingw.yml | 229 ++++++++++++++++++++++++++++++++
- .github/workflows/smoketests.py | 132 ++++++++++++++++++
- 2 files changed, 361 insertions(+)
- create mode 100644 .github/workflows/mingw.yml
- create mode 100644 .github/workflows/smoketests.py
-
-diff --git a/.github/workflows/mingw.yml b/.github/workflows/mingw.yml
-new file mode 100644
-index 0000000..fff5fa5
---- /dev/null
-+++ b/.github/workflows/mingw.yml
-@@ -0,0 +1,229 @@
-+name: Build
-+on: [push, pull_request, workflow_dispatch]
-+
-+jobs:
-+ build:
-+ runs-on: windows-latest
-+ strategy:
-+ fail-fast: false
-+ matrix:
-+ msystem: ['MINGW64','MINGW32','UCRT64','CLANG64']
-+ include:
-+ - msystem: MINGW64
-+ prefix: mingw-w64-x86_64
-+ - msystem: MINGW32
-+ prefix: mingw-w64-i686
-+ - msystem: UCRT64
-+ prefix: mingw-w64-ucrt-x86_64
-+ - msystem: CLANG64
-+ prefix: mingw-w64-clang-x86_64
-+ #- msystem: CLANG32
-+ # prefix: mingw-w64-clang-i686
-+ steps:
-+ - name: Setup git
-+ run: |
-+ git config --global core.autocrlf false
-+ git config --global core.eol lf
-+ - uses: actions/checkout@v2
-+ - uses: msys2/setup-msys2@v2
-+ with:
-+ msystem: ${{ matrix.msystem }}
-+ release: false
-+ install: >-
-+ make
-+ binutils
-+ autoconf-archive
-+ ${{ matrix.prefix }}-toolchain
-+ ${{ matrix.prefix }}-expat
-+ ${{ matrix.prefix }}-bzip2
-+ ${{ matrix.prefix }}-libffi
-+ ${{ matrix.prefix }}-mpdecimal
-+ ${{ matrix.prefix }}-ncurses
-+ ${{ matrix.prefix }}-openssl
-+ ${{ matrix.prefix }}-sqlite3
-+ ${{ matrix.prefix }}-tcl
-+ ${{ matrix.prefix }}-tk
-+ ${{ matrix.prefix }}-zlib
-+ ${{ matrix.prefix }}-xz
-+
-+ - name: Build Python
-+ shell: msys2 {0}
-+ run: |
-+ set -ex
-+ pkgver='3.9.5'
-+ _pybasever='3.9'
-+
-+ PREFIX_WIN=$(cygpath -wm ${MINGW_PREFIX})
-+ if [ ${{ matrix.msystem }} == "CLANG64" ]
-+ then
-+ export CC=clang
-+ export CXX=clang++
-+ fi
-+ autoreconf -vfi
-+ CFLAGS+=" -fwrapv -D__USE_MINGW_ANSI_STDIO=1 -D_WIN32_WINNT=0x0601"
-+ CXXFLAGS+=" -fwrapv -D__USE_MINGW_ANSI_STDIO=1 -D_WIN32_WINNT=0x0601"
-+ CPPFLAGS+=" -I${PREFIX_WIN}/include/ncurses "
-+ CFLAGS+=" -DNDEBUG "
-+ CXXFLAGS+=" -DNDEBUG "
-+ _extra_config+=("--enable-optimizations")
-+ # Fix MS_DLL_ID undeclared in PC/dl_nt.c
-+ f3f=0
-+ re='^[0-9]+$'
-+ part3=${pkgver##*.}
-+ if ! [[ $part3 =~ $re ]]; then
-+ c=
-+ while test -n "$part3"; do
-+ b=${part3:0:1}
-+ if ! [[ $b =~ $re ]]; then
-+ break
-+ fi
-+ c+=${b}
-+ part3=${part3:1}
-+ done
-+ f3f=$((f3f + 1000 * $((${c}))))
-+ part3Len=${#part3}
-+ if [ "$part3Len" -ge "1" ]; then
-+ f3f=$((f3f + 10 * $((0x${part3:0:1}))))
-+ if [ "$part3Len" -ge "2" ]; then
-+ f3f=$((f3f + ${part3:1:1}))
-+ fi
-+ fi
-+ else
-+ f3f=$((f3f + 1000 * ${part3}))
-+ fi
-+ CFLAGS+=" -DMS_DLL_ID=\\\"${_pybasever}\\\""
-+ CFLAGS+=" -DFIELD3=${f3f}"
-+ CFLAGS+=" -DORIGINAL_FILENAME=\\\"libpython${_pybasever}.dll\\\""
-+ rc_flags=" -DMS_DLL_ID=\\\\\\\"${_pybasever}\\\\\\\" -DFIELD3=${f3f} -DORIGINAL_FILENAME=\\\\\\\"libpython${_pybasever}.dll\\\\\\\""
-+
-+ # Workaround for conftest error on 64-bit builds
-+ export ac_cv_working_tzset=no
-+
-+ # Workaround for when dlfcn exists on Windows, which causes
-+ # some conftests to succeed when they shouldn't (we don't use dlfcn).
-+ export ac_cv_header_dlfcn_h=no
-+ export ac_cv_lib_dl_dlopen=no
-+ export ac_cv_have_decl_RTLD_GLOBAL=no
-+ export ac_cv_have_decl_RTLD_LAZY=no
-+ export ac_cv_have_decl_RTLD_LOCAL=no
-+ export ac_cv_have_decl_RTLD_NOW=no
-+ export ac_cv_have_decl_RTLD_DEEPBIND=no
-+ export ac_cv_have_decl_RTLD_MEMBER=no
-+ export ac_cv_have_decl_RTLD_NODELETE=no
-+ export ac_cv_have_decl_RTLD_NOLOAD=no
-+
-+ export CFLAGS
-+ export CXXFLAGS
-+ export CPPFLAGS
-+
-+
-+ MSYSTEM=MINGW ./configure \
-+ --prefix=${MINGW_PREFIX} \
-+ --host=${MINGW_CHOST} \
-+ --build=${MINGW_CHOST} \
-+ --enable-shared \
-+ --with-nt-threads \
-+ --with-system-expat \
-+ --with-system-ffi \
-+ --with-system-libmpdec \
-+ --without-ensurepip \
-+ --without-c-locale-coercion \
-+ --enable-loadable-sqlite-extensions \
-+ "${_extra_config[@]}" \
-+ RCFLAGS="$rc_flags" \
-+ OPT=""
-+ # We patch importlib which is embedded in C headers, so regenerate them
-+ make regen-importlib
-+
-+ make -j8
-+
-+ # Add missing venvlauncher files (issue #7014)
-+ # FIXME: build these from PC/launcher.c instead
-+ cp python.exe venvlauncher.exe
-+ cp pythonw.exe venvwlauncher.exe
-+
-+ - name: Install
-+ shell: msys2 {0}
-+ run: |
-+ set -ex
-+
-+ pkgver='3.9.5'
-+ _pybasever='3.9'
-+ srcdir=.
-+
-+ # now install things
-+
-+ pkgdir=python_pkgdir
-+
-+ PREFIX_WIN=$(cygpath -wm ${MINGW_PREFIX})
-+ MSYSTEM=MINGW \
-+ MSYS2_ARG_CONV_EXCL="--prefix=;--install-scripts=;--install-platlib=" \
-+ make -j1 install DESTDIR="${pkgdir}"
-+ VERABI=${_pybasever}
-+
-+ # gdb pretty printers for debugging Python itself; to use:
-+ # python
-+ # sys.path.append('C:/msys64/mingw64/share/gdb/python3')
-+ # import python_gdb
-+ # reload(python_gdb)
-+ # end
-+
-+ cp -f "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/config-${VERABI}/libpython${VERABI}.dll.a "${pkgdir}${MINGW_PREFIX}"/lib/libpython${VERABI}.dll.a
-+
-+ # Need for building boost python module
-+ cp -f "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/config-${VERABI}/libpython${VERABI}.dll.a "${pkgdir}${MINGW_PREFIX}"/lib/libpython${_pybasever}.dll.a
-+
-+ for fscripts in 2to3 2to3-${_pybasever} idle3 idle${_pybasever} pydoc3 pydoc${_pybasever}; do
-+ sed -i "s|$(cygpath -w ${MINGW_PREFIX} | sed 's|\\|\\\\|g')/bin/python${_pybasever}.exe|/usr/bin/env python${_pybasever}.exe|g" "${pkgdir}${MINGW_PREFIX}"/bin/${fscripts}
-+ done
-+
-+
-+ cp "${pkgdir}${MINGW_PREFIX}"/bin/python3.exe "${pkgdir}${MINGW_PREFIX}"/bin/python.exe
-+ cp "${pkgdir}${MINGW_PREFIX}"/bin/python3w.exe "${pkgdir}${MINGW_PREFIX}"/bin/pythonw.exe
-+ cp "${pkgdir}${MINGW_PREFIX}"/bin/python3-config "${pkgdir}${MINGW_PREFIX}"/bin/python-config
-+ cp "${pkgdir}${MINGW_PREFIX}"/bin/idle3 "${pkgdir}${MINGW_PREFIX}"/bin/idle
-+ cp "${pkgdir}${MINGW_PREFIX}"/bin/pydoc3 "${pkgdir}${MINGW_PREFIX}"/bin/pydoc
-+
-+ sed -i "s|#!${pkgdir}${MINGW_PREFIX}/bin/python${VERABI}.exe|#!/usr/bin/env python${_pybasever}.exe|" "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/config-${VERABI}/python-config.py
-+
-+ # fix permissons
-+ find ${pkgdir}${MINGW_PREFIX} -type f \( -name "*.dll" -o -name "*.exe" \) | xargs chmod 0755
-+
-+ # replace paths in sysconfig
-+ sed -i "s|${pkgdir}${MINGW_PREFIX}|${MINGW_PREFIX}|g" \
-+ "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/lib-dynload/_sysconfigdata*.py \
-+ "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/smtpd.py
-+
-+ # install venv launchers
-+ mkdir -p "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/venv/scripts/nt
-+ cp venvlauncher.exe "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/venv/scripts/nt/python.exe
-+ cp venvwlauncher.exe "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/venv/scripts/nt/pythonw.exe
-+
-+ - name: Run Smoke Test
-+ shell: msys2 {0}
-+ run: |
-+ SMOKETESTS="$(pwd)/.github/workflows/smoketests.py"
-+ cd python_pkgdir/${MINGW_PREFIX}/bin
-+ ./python.exe "$SMOKETESTS"
-+ MSYSTEM= ./python.exe "$SMOKETESTS"
-+
-+ - name: Run tests
-+ continue-on-error: true
-+ shell: msys2 {0}
-+ run: |
-+ cd python_pkgdir/${MINGW_PREFIX}/bin
-+ ./python.exe -m test -j4
-+
-+ - name: Compress
-+ if: always()
-+ shell: msys2 {0}
-+ run: |
-+ tar -I 'zstd --ultra -20' -cf python.tar.zst python_pkgdir/
-+
-+ - name: Upload
-+ uses: actions/upload-artifact@v2
-+ if: always()
-+ with:
-+ name: build-${{ matrix.msystem }}
-+ path: python.tar.zst
-+
-diff --git a/.github/workflows/smoketests.py b/.github/workflows/smoketests.py
-new file mode 100644
-index 0000000..9277c14
---- /dev/null
-+++ b/.github/workflows/smoketests.py
-@@ -0,0 +1,132 @@
-+#!/usr/bin/env python3
-+# Copyright 2017 Christoph Reiter
-+#
-+# Permission is hereby granted, free of charge, to any person obtaining
-+# a copy of this software and associated documentation files (the
-+# "Software"), to deal in the Software without restriction, including
-+# without limitation the rights to use, copy, modify, merge, publish,
-+# distribute, sublicense, and/or sell copies of the Software, and to
-+# permit persons to whom the Software is furnished to do so, subject to
-+# the following conditions:
-+#
-+# The above copyright notice and this permission notice shall be included
-+# in all copies or substantial portions of the Software.
-+#
-+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-+# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-+# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-+# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-+# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-+
-+"""The goal of this test suite is collect tests for update regressions
-+and to test msys2 related modifications like for path handling.
-+Feel free to extend.
-+"""
-+
-+import os
-+import unittest
-+
-+if "MSYSTEM" in os.environ:
-+ SEP = "/"
-+else:
-+ SEP = "\\"
-+
-+
-+class Tests(unittest.TestCase):
-+
-+ def test_sep(self):
-+ self.assertEqual(os.sep, SEP)
-+
-+ def test_module_file_path(self):
-+ import asyncio
-+ import zlib
-+ self.assertEqual(zlib.__file__, os.path.normpath(zlib.__file__))
-+ self.assertEqual(asyncio.__file__, os.path.normpath(asyncio.__file__))
-+
-+ def test_importlib_frozen_path_sep(self):
-+ import importlib._bootstrap_external
-+ self.assertEqual(importlib._bootstrap_external.path_sep, SEP)
-+
-+ def test_os_commonpath(self):
-+ self.assertEqual(
-+ os.path.commonpath(
-+ [os.path.join("C:", os.sep, "foo", "bar"),
-+ os.path.join("C:", os.sep, "foo")]),
-+ os.path.join("C:", os.sep, "foo"))
-+
-+ def test_pathlib(self):
-+ import pathlib
-+
-+ p = pathlib.Path("foo") / pathlib.Path("foo")
-+ self.assertEqual(str(p), os.path.normpath(p))
-+
-+ def test_modules_import(self):
-+ import sqlite3
-+ import ssl
-+ import ctypes
-+
-+ def test_socket_inet_ntop(self):
-+ import socket
-+ self.assertTrue(hasattr(socket, "inet_ntop"))
-+
-+ def test_socket_inet_pton(self):
-+ import socket
-+ self.assertTrue(hasattr(socket, "inet_pton"))
-+
-+ def test_multiprocessing_queue(self):
-+ from multiprocessing import Queue
-+ Queue(0)
-+
-+ #def test_socket_timout_normal_error(self):
-+ # import urllib.request
-+ # from urllib.error import URLError
-+
-+ # try:
-+ # urllib.request.urlopen(
-+ # 'http://localhost', timeout=0.0001).close()
-+ # except URLError:
-+ # pass
-+
-+ def test_threads(self):
-+ from concurrent.futures import ThreadPoolExecutor
-+
-+ with ThreadPoolExecutor(1) as pool:
-+ for res in pool.map(lambda *x: None, range(10000)):
-+ pass
-+
-+ def test_sysconfig(self):
-+ import sysconfig
-+ # This should be able to execute without exceptions
-+ sysconfig.get_config_vars()
-+
-+ def test_sqlite_enable_load_extension(self):
-+ # Make sure --enable-loadable-sqlite-extensions is used
-+ import sqlite3
-+ self.assertTrue(sqlite3.Connection.enable_load_extension)
-+
-+ def test_venv_creation(self):
-+ import tempfile
-+ import venv
-+ import subprocess
-+ import shutil
-+ with tempfile.TemporaryDirectory() as tmp:
-+ builder = venv.EnvBuilder()
-+ builder.create(tmp)
-+ assert os.path.exists(os.path.join(tmp, "bin", "activate"))
-+ assert os.path.exists(os.path.join(tmp, "bin", "python.exe"))
-+ assert os.path.exists(os.path.join(tmp, "bin", "python3.exe"))
-+ subprocess.check_call([shutil.which("bash.exe"), os.path.join(tmp, "bin", "activate")])
-+
-+ def test_has_mktime(self):
-+ from time import mktime, gmtime
-+ mktime(gmtime())
-+
-+
-+def suite():
-+ return unittest.TestLoader().loadTestsFromName(__name__)
-+
-+
-+if __name__ == '__main__':
-+ unittest.main(defaultTest='suite')
---
-2.32.0
-