# Maintainer: Alexey Pavlov <alexpux@gmail.com>
# Maintainer: Ray Donnelly <mingw.android@gmail.com>
# Contributor: Saul Ibarra Corretge <saghul@gmail.com>
# Contributor: Frode Solheim <frode@fs-uae.net>

# TODO :: subprocess.Popen .. specifically list2cmdline in subprocess.py
#         needs a fix so it can handle running MSYS2 executables better.
#         Arguments should not be quoted in the Windows fashion as-per:
#         http://www.daviddeley.com/autohotkey/parameters/parameters.htm
#         but instead how Cygwin expects them to be quoted. Checking for
#         {cygwin,msys-2.0}.dll in the executable is the only way that I
#         can think to do this at present.
#         Any double quoted string will cause problems, e.g.
#         -DGNOMELOCALEDIR=\"/mingw64/share/locale\"

_realname=python
pkgbase="mingw-w64-${_realname}"
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}")
_pybasever=3.8
pkgver=${_pybasever}.7
pkgrel=2
provides=("${MINGW_PACKAGE_PREFIX}-python3=${pkgver}")
conflicts=("${MINGW_PACKAGE_PREFIX}-python3"
           "${MINGW_PACKAGE_PREFIX}-python2<2.7.16-7")
replaces=("${MINGW_PACKAGE_PREFIX}-python3")
pkgdesc="A high-level scripting language (mingw-w64)"
arch=('any')
license=('PSF')
url="https://www.python.org/"
depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs"
         "${MINGW_PACKAGE_PREFIX}-expat"
         "${MINGW_PACKAGE_PREFIX}-bzip2"
         "${MINGW_PACKAGE_PREFIX}-libffi"
         "${MINGW_PACKAGE_PREFIX}-mpdecimal"
         "${MINGW_PACKAGE_PREFIX}-ncurses"
         "${MINGW_PACKAGE_PREFIX}-openssl"
         "${MINGW_PACKAGE_PREFIX}-sqlite3"
         "${MINGW_PACKAGE_PREFIX}-tcl"
         "${MINGW_PACKAGE_PREFIX}-tk"
         "${MINGW_PACKAGE_PREFIX}-zlib"
         "${MINGW_PACKAGE_PREFIX}-xz")
makedepends=("${MINGW_PACKAGE_PREFIX}-gcc" "${MINGW_PACKAGE_PREFIX}-pkg-config")
options=('makeflags') # 'debug' '!strip' )
source=("https://www.python.org/ftp/python/${pkgver%rc?}/Python-${pkgver}.tar.xz"
        0000-make-_sysconfigdata.py-relocatable.patch
        0001-fix-_nt_quote_args-using-subprocess-list2cmdline.patch
        0002-restore-setup-config.patch
        0100-MINGW-BASE-use-NT-thread-model.patch
        0110-MINGW-translate-gcc-internal-defines-to-python-platf.patch
        0130-MINGW-configure-MACHDEP-and-platform-for-build.patch
        0140-MINGW-preset-configure-defaults.patch
        0150-MINGW-configure-largefile-support-for-windows-builds.patch
        0170-MINGW-add-srcdir-PC-to-CPPFLAGS.patch
        0180-MINGW-init-system-calls.patch
        0200-MINGW-build-in-windows-modules-winreg.patch
        0210-MINGW-determine-if-pwdmodule-should-be-used.patch
        0250-MINGW-compiler-customize-mingw-cygwin-compilers.patch
        0260-MINGW-compiler-enable-new-dtags.patch
        0290-issue6672-v2-Add-Mingw-recognition-to-pyport.h-to-al.patch
        0300-MINGW-configure-for-shared-build.patch
        0310-MINGW-dynamic-loading-support.patch
        0330-MINGW-ignore-main-program-for-frozen-scripts.patch
        0350-MINGW-setup-_multiprocessing-module.patch
        0360-MINGW-setup-select-module.patch
        0370-MINGW-setup-_ctypes-module-with-system-libffi.patch
        0380-MINGW-defect-winsock2-and-setup-_socket-module.patch
        0390-MINGW-exclude-unix-only-modules.patch
        0400-MINGW-setup-msvcrt-and-_winapi-modules.patch
        0410-MINGW-build-extensions-with-GCC.patch
        0420-MINGW-use-Mingw32CCompiler-as-default-compiler-for-m.patch
        0430-MINGW-find-import-library.patch
        0440-MINGW-setup-_ssl-module.patch
        0460-MINGW-generalization-of-posix-build-in-sysconfig.py.patch
        0462-MINGW-support-stdcall-without-underscore.patch
        0464-use-replace-instead-rename-to-avoid-failure-on-windo.patch
        0470-MINGW-avoid-circular-dependency-from-time-module-dur.patch
        0480-MINGW-generalization-of-posix-build-in-distutils-sys.patch
        0490-MINGW-customize-site.patch
        0500-add-python-config-sh.patch
        0510-cross-darwin-feature.patch
        0520-py3k-mingw-ntthreads-vs-pthreads.patch
        0530-mingw-system-libffi.patch
        0555-msys-mingw-prefer-unix-sep-if-MSYSTEM.patch
        0560-mingw-use-posix-getpath.patch
        0565-mingw-add-ModuleFileName-dir-to-PATH.patch
        0570-mingw-add-BUILDIN_WIN32_MODULEs-time-msvcrt.patch
        0610-msys-cygwin-semi-native-build-sysconfig.patch
        0620-mingw-sysconfig-like-posix.patch
        0630-mingw-_winapi_as_builtin_for_Popen_in_cygwinccompiler.patch
        0640-mingw-x86_64-size_t-format-specifier-pid_t.patch
        0650-cross-dont-add-multiarch-paths-if-cross-compiling.patch
        0660-mingw-use-backslashes-in-compileall-py.patch
        0670-msys-convert_path-fix-and-root-hack.patch
        0690-allow-static-tcltk.patch
        0720-mingw-pdcurses_ISPAD.patch
        0740-grammar-fixes.patch
        0750-builddir-fixes.patch
        0760-msys-monkeypatch-os-system-via-sh-exe.patch
        0770-msys-replace-slashes-used-in-io-redirection.patch
        0800-mingw-install-layout-as-posix.patch
        0810-remove_path_max.default.patch
        0820-dont-link-with-gettext.patch
        0830-ctypes-python-dll.patch
        0840-gdbm-module-includes.patch
        0850-use-gnu_printf-in-format.patch
        0870-mingw-fix-ssl-dont-use-enum_certificates.patch
        0890-mingw-build-optimized-ext.patch
        0900-cygwinccompiler-dont-strip-modules-if-pydebug.patch
        0910-fix-using-dllhandle-and-winver-mingw.patch
        0920-mingw-add-LIBPL-to-library-dirs.patch
        0970-Add-AMD64-to-sys-config-so-msvccompiler-get_build_version-works.patch
        0990-MINGW-link-with-additional-library.patch
        1010-install-msilib.patch
        1060-dont-include-system-ncurses-path.patch
        1620-fix-signal-module-build.patch
        1630-build-winconsoleio.patch
        1650-expose-sem_unlink.patch
        1700-cygpty-isatty.patch
        1701-disable-broken-gdbm-module.patch
        1702-default-to-console-cp-for-cygpty.patch
        1800-link-win-resource-files-and-build-pythonw.patch
        1810-3.7-mpdec-mingw.patch
        1850-disable-readline.patch
        1860-fix-isselectable.patch
        1870-use-_wcsnicmp-instead-wcsncasecmp.patch
        1890-_xxsubinterpretersmodule.patch
        2010-configure-have-inet-pton.patch
        2030-fix-msvc9-import.patch
        2051-set-venv-activate-path-unix.patch
        2052-venv-creation-fixes.patch
        2060-pass-gen-profile-ldflags.patch
        2070-distutils-add-windmc-to-cygwinccompiler.patch
        2080-pkg-config-windows-must-link-ext-with-python-lib.patch
        3000-importlib-bootstrap-path-sep.patch
        3001-pathlib-path-sep.patch
        3010-workaround-missing-lconv-members-mingw.patch
        3011-fix-build-testinternalcapi.patch
        5000-warnings-fixes.patch
        smoketests.py)

# Helper macros to help make tasks easier #
apply_patch_with_msg() {
  for _patch in "$@"
  do
    msg2 "Applying ${_patch}"
    patch -Nbp1 -i "${srcdir}/${_patch}"
  done
}

del_file_exists() {
  for _fname in "$@"
  do
    if [ -f ${_fname} ]; then
      rm -rf ${_fname}
    fi
  done
}
# =========================================== #

prepare() {
  cd "${srcdir}/Python-${pkgver}"

  plain "Apply Ray Donnelly's should-be-upstreamed patches"
  apply_patch_with_msg \
    0000-make-_sysconfigdata.py-relocatable.patch \
    0001-fix-_nt_quote_args-using-subprocess-list2cmdline.patch \
    0002-restore-setup-config.patch

  plain "Apply Roumen Petrov's core patches (10)"
  apply_patch_with_msg \
    0100-MINGW-BASE-use-NT-thread-model.patch \
    0110-MINGW-translate-gcc-internal-defines-to-python-platf.patch \
    0130-MINGW-configure-MACHDEP-and-platform-for-build.patch \
    0140-MINGW-preset-configure-defaults.patch \
    0150-MINGW-configure-largefile-support-for-windows-builds.patch \
    0170-MINGW-add-srcdir-PC-to-CPPFLAGS.patch \
    0180-MINGW-init-system-calls.patch \
    0200-MINGW-build-in-windows-modules-winreg.patch \
    0210-MINGW-determine-if-pwdmodule-should-be-used.patch

  plain "Apply Roumen Petrov's compiler patch (2)"
  apply_patch_with_msg \
    0250-MINGW-compiler-customize-mingw-cygwin-compilers.patch \
    0260-MINGW-compiler-enable-new-dtags.patch

  plain "Apply Roumen Petrov's extensions patches (21)"
  apply_patch_with_msg \
    0290-issue6672-v2-Add-Mingw-recognition-to-pyport.h-to-al.patch \
    0300-MINGW-configure-for-shared-build.patch \
    0310-MINGW-dynamic-loading-support.patch \
    0330-MINGW-ignore-main-program-for-frozen-scripts.patch \
    0350-MINGW-setup-_multiprocessing-module.patch \
    0360-MINGW-setup-select-module.patch \
    0370-MINGW-setup-_ctypes-module-with-system-libffi.patch \
    0380-MINGW-defect-winsock2-and-setup-_socket-module.patch \
    0390-MINGW-exclude-unix-only-modules.patch \
    0400-MINGW-setup-msvcrt-and-_winapi-modules.patch \
    0410-MINGW-build-extensions-with-GCC.patch \
    0420-MINGW-use-Mingw32CCompiler-as-default-compiler-for-m.patch \
    0430-MINGW-find-import-library.patch \
    0440-MINGW-setup-_ssl-module.patch \
    0460-MINGW-generalization-of-posix-build-in-sysconfig.py.patch \
    0462-MINGW-support-stdcall-without-underscore.patch \
    0464-use-replace-instead-rename-to-avoid-failure-on-windo.patch \
    0470-MINGW-avoid-circular-dependency-from-time-module-dur.patch \
    0480-MINGW-generalization-of-posix-build-in-distutils-sys.patch \
    0490-MINGW-customize-site.patch

  plain "Apply Ray Donnelly's general/cross patches (42)"
  apply_patch_with_msg \
    0500-add-python-config-sh.patch \
    0510-cross-darwin-feature.patch \
    0520-py3k-mingw-ntthreads-vs-pthreads.patch \
    0530-mingw-system-libffi.patch \
    0555-msys-mingw-prefer-unix-sep-if-MSYSTEM.patch \
    0560-mingw-use-posix-getpath.patch \
    0565-mingw-add-ModuleFileName-dir-to-PATH.patch \
    0570-mingw-add-BUILDIN_WIN32_MODULEs-time-msvcrt.patch

  apply_patch_with_msg \
    0610-msys-cygwin-semi-native-build-sysconfig.patch \
    0620-mingw-sysconfig-like-posix.patch \
    0630-mingw-_winapi_as_builtin_for_Popen_in_cygwinccompiler.patch \
    0640-mingw-x86_64-size_t-format-specifier-pid_t.patch \
    0650-cross-dont-add-multiarch-paths-if-cross-compiling.patch \
    0660-mingw-use-backslashes-in-compileall-py.patch \
    0670-msys-convert_path-fix-and-root-hack.patch \
    0690-allow-static-tcltk.patch

  apply_patch_with_msg \
    0720-mingw-pdcurses_ISPAD.patch \
    0740-grammar-fixes.patch \
    0750-builddir-fixes.patch \
    0760-msys-monkeypatch-os-system-via-sh-exe.patch \
    0770-msys-replace-slashes-used-in-io-redirection.patch \
    0800-mingw-install-layout-as-posix.patch \
    0810-remove_path_max.default.patch \
    0820-dont-link-with-gettext.patch \
    0830-ctypes-python-dll.patch \
    0840-gdbm-module-includes.patch \
    0850-use-gnu_printf-in-format.patch \
    0870-mingw-fix-ssl-dont-use-enum_certificates.patch \
    0890-mingw-build-optimized-ext.patch \
    0900-cygwinccompiler-dont-strip-modules-if-pydebug.patch \
    0910-fix-using-dllhandle-and-winver-mingw.patch \
    0920-mingw-add-LIBPL-to-library-dirs.patch \
    0970-Add-AMD64-to-sys-config-so-msvccompiler-get_build_version-works.patch \
    0990-MINGW-link-with-additional-library.patch \
    1010-install-msilib.patch \
    1060-dont-include-system-ncurses-path.patch

  plain "New patches added for the update from 3.5.3 to 3.6.1"
  apply_patch_with_msg \
    1620-fix-signal-module-build.patch \
    1630-build-winconsoleio.patch \
    1650-expose-sem_unlink.patch

  # Extend some isatty calls to check for mintty when checking for
  # a terminal output. And default stdout/in to the console CP for cygpty
  # (once we have conpty this can be removed)
  # https://github.com/Alexpux/MINGW-packages/issues/2645
  # https://github.com/Alexpux/MINGW-packages/issues/2656
  apply_patch_with_msg \
    1700-cygpty-isatty.patch \
    1702-default-to-console-cp-for-cygpty.patch

  # gdbm is broken and as a result breaks dbm/shelve.
  # Don't include it so the dbm.dumb backend is used instead,
  # like with the official CPython build.
  apply_patch_with_msg \
    1701-disable-broken-gdbm-module.patch

  # https://github.com/Alexpux/MINGW-packages/issues/3139
  apply_patch_with_msg \
    1800-link-win-resource-files-and-build-pythonw.patch

  apply_patch_with_msg \
    1810-3.7-mpdec-mingw.patch \
    1850-disable-readline.patch \
    1860-fix-isselectable.patch \
    1870-use-_wcsnicmp-instead-wcsncasecmp.patch \
    1890-_xxsubinterpretersmodule.patch

  # https://github.com/msys2/MINGW-packages/issues/5184
  apply_patch_with_msg 2010-configure-have-inet-pton.patch

  # https://github.com/msys2/MINGW-packages/issues/5155
  apply_patch_with_msg 2030-fix-msvc9-import.patch

  # https://github.com/msys2/MINGW-packages/issues/5001
  apply_patch_with_msg 2051-set-venv-activate-path-unix.patch
  apply_patch_with_msg 2052-venv-creation-fixes.patch

  apply_patch_with_msg 2060-pass-gen-profile-ldflags.patch
  
  apply_patch_with_msg 2070-distutils-add-windmc-to-cygwinccompiler.patch
  apply_patch_with_msg 2080-pkg-config-windows-must-link-ext-with-python-lib.patch

  # https://github.com/msys2/MINGW-packages/issues/6035
  apply_patch_with_msg 3000-importlib-bootstrap-path-sep.patch
  apply_patch_with_msg 3001-pathlib-path-sep.patch

  apply_patch_with_msg 5000-warnings-fixes.patch

  # https://sourceforge.net/p/mingw-w64/bugs/870/
  # This can be skipped with a newer msvcrt
  apply_patch_with_msg 3010-workaround-missing-lconv-members-mingw.patch

  apply_patch_with_msg 3011-fix-build-testinternalcapi.patch

  autoreconf -vfi
}

check() {
  cd "${srcdir}/build-${CARCH}"

  # Some basic tests to ensure nothing major or MSYS2 specific features are
  # broken
  ./python.exe "${srcdir}/smoketests.py"
  MSYSTEM= ./python.exe "${srcdir}/smoketests.py"

  # make test EXTRATESTOPTS="-v"
}

build() {
  local PREFIX_WIN=$(cygpath -wm ${MINGW_PREFIX})

  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 "

  declare -a _extra_config
  if check_option "strip" "y"; then
    LDFLAGS+=" -s "
  fi
  if check_option "debug" "n"; then
    CFLAGS+=" -DNDEBUG "
    CXXFLAGS+=" -DNDEBUG "
    _extra_config+=("--enable-optimizations")
    _extra_config+=("--with-lto")
  else
    CFLAGS+=" -O0 -ggdb"
    CXXFLAGS+=" -O0 -ggdb"
    _extra_config+=("--with-pydebug")
  fi

  # 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

  [[ -d "${srcdir}/build-${CARCH}" ]] && rm -rf "${srcdir}/build-${CARCH}"
  mkdir -p "${srcdir}/build-${CARCH}" && cd "${srcdir}/build-${CARCH}"

  MSYSTEM=MINGW ../Python-${pkgver}/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[@]}" \
    OPT=""

  # We patch importlib which is embedded in C headers, so regenerate them
  make regen-importlib

  make

  # Add missing venvlauncher files (issue #7014)
  # FIXME: build these from PC/launcher.c instead
  cp python.exe venvlauncher.exe
  cp pythonw.exe venvwlauncher.exe
}

package() {
  cd "${srcdir}/build-${CARCH}"

  local PREFIX_WIN=$(cygpath -wm ${MINGW_PREFIX})
  MSYSTEM=MINGW \
  MSYS2_ARG_CONV_EXCL="--prefix=;--install-scripts=;--install-platlib=" \
  make -j1 install DESTDIR="${pkgdir}"
  if check_option "debug" "n"; then
    VERABI=${_pybasever}
  else
    VERABI=${_pybasever}d
  fi

  # 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
  [[ -d "${pkgdir}${MINGW_PREFIX}"/share/gdb/python3/ ]] || mkdir -p "${pkgdir}${MINGW_PREFIX}"/share/gdb/python3/
  cp -f python.exe-gdb.py "${pkgdir}${MINGW_PREFIX}"/share/gdb/python3/python_gdb.py

  rm "${pkgdir}${MINGW_PREFIX}"/bin/2to3
  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

  # some useful "stuff"
  install -dm755 "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/Tools/{i18n,scripts}
  install -m755 "${srcdir}/Python-${pkgver}"/Tools/i18n/{msgfmt,pygettext}.py "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/Tools/i18n/
  install -m755 "${srcdir}/Python-${pkgver}"/Tools/scripts/{README,*py} "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/Tools/scripts/

  # clean up #!s
  find "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/ -name '*.py' | \
    xargs sed -i "s|#[ ]*![ ]*/usr/bin/env python$|#!/usr/bin/env python|"

  # clean-up reference to build directory
  sed -i "s#${srcdir}/Python-${pkgver}:##" "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/config-${VERABI}/Makefile

  for fscripts in 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

  # Default names are aliases for Python now
  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
  cp "${pkgdir}${MINGW_PREFIX}"/bin/2to3-${_pybasever} "${pkgdir}${MINGW_PREFIX}"/bin/2to3

  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

  # Fix up two instances of MSYS2 paths in python-config.sh in-case the final consumer of the results are native executables.
  sed -e "s|${MINGW_PREFIX}|${PREFIX_WIN}|" \
    -i "${pkgdir}${MINGW_PREFIX}"/bin/python${VERABI}-config \
    -i "${pkgdir}${MINGW_PREFIX}"/bin/python3-config \
    -i "${pkgdir}${MINGW_PREFIX}"/bin/python-config

  # 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
}

sha256sums=('ddcc1df16bb5b87aa42ec5d20a5b902f2d088caa269b28e01590f97a798ec50a'
            '0ee1acf745d38d41fd098487b9595705fd8f6666d7b154d54ddba32d14f1253b'
            '0d27f52bc514dbf2b730f62fa6c18c797a2f4cbad8698d95b15e2774d68e483d'
            'd2d73d9fb9db48fecb3a6856e4606f444eaac7637fd4f65e192701e53ac422eb'
            'abed03b63e0b498804b44d1cdf8b1ff0c3c4329d3ea9c0323b2512adcacb9b57'
            'c2fb01aacfc5d96bdb69ef37282f300ecd8bfa3e11921caa1fce8e871f5a31f8'
            '6446e0a5255d317d93c5c55094d4c797cf68fbd14bb08d38c94d7080837d1380'
            '8e90c38ac27316781f8853fcbce300526d92732edf4cd08d1dc2a0438fd2d694'
            '36f6e8b4320ee79b6ff7e84aefec3aec57293bcbacf08ea7847f3147d459b4a9'
            '0a6a1ee72f3aa050f1ff0b8ff88845189309163ef1a5f70808f1ab351348cdae'
            '56bdf305a3786ae50871045373e89f2e20df3055e1033197f122ee2c6c8b0966'
            '910c84eb01cfe2207ee7fd8549247d9498be8b58c4dbbb6eaa2118037e77730e'
            'da5057e58a4866e20c3c604153febb2b57a089d327a954ee5b51830af8204e17'
            '265a3c99923b76210e0401bc0cafa88b99328343aec43d64aa94cb84fcdda6d8'
            '4f1db216d6a2dad137b07ccdd4b2d71c37169083706addf90c3b0b850312632a'
            'f07fc8cc9030c2adf9d7c301eadb8b182aad7f1f2cde102cce730f51a093bbdd'
            '9f05613753a8b4ad8c5a6b32c257a318e9ff416345f4ebef3e69f56cf9a51578'
            '9269a4d4dab6a0e93b8a0b5ed84c3e93bdfbaf99148e467daf993f6f767c8d45'
            '1e89597d37838ad7c18463b83476b3cc6bec1480a052e757b9fbfb3264d4d890'
            '03891c0fe4ad90a9926c0e04dc7bb0efbf0022cd6d7746cf2d173dbd739f6142'
            '3b85b18922d21e8fc6e07a12e1c8d79c7ec271dddb75ed0fb4f44148b030b360'
            '6d0119cd216b944927254598cfec1b85757000ab39f5ba987a86ed2216d6351b'
            'ee3f515a3e4060b08b106d788039aa0abfb0424fdf09b613dbab06256405b7ef'
            '9c6e64ba27d72e912be3486a0cc65d9f59f5d7ba71fb634fef0860a00311d12c'
            '3842234d2c3aeece0416a670c789801ef76ce31841a9c1bfcbb26340aa346712'
            '194ef359356d4d58bb15bafe8738c0586350d26e85cc39f5db833f428d67b41d'
            'ce63ec2ec57db5fcfae332f8bb413d6c2f8888d29e449b8ae674cbcbe01a5f95'
            'f7729d39c8eadce379b2b21cd253c604bfe3e4293945b4d6def9bf0c9b3c8f4f'
            'be165a89d087dcc1d06b78031d441e7dd1f5d5c2a0a73de49c4c9e211132b97a'
            '85ec670b8c0a8fc7a5dcafc19aa697d358c5bfe67cb3d7e17ec8070d4edb16f3'
            '4804d854bb9fb3e6ff11c23e420b6ff34266bbc93ce33115129bf838171d49ee'
            'a26997445938dd01a03a16a622d19adbc270e679df195407436c97246c96f99a'
            '269fc7d93aeefc286009612604385ac2ec1d0304b97c858ffe123c282be8d94c'
            '17341d1d4f654f8fbaea905dcf0f4091c66eefa6725b592632413fc77498b6c3'
            '47613ba1b262d7c3dbe96ecff5543d0923ad874eec7aa7451e17b0b414691f83'
            '1b3a27ea33b66efe3131dcb9951030aa7d4c18f9ec851e89a4582b69f8e673e7'
            '90719b6f11be4be6e6df37a9699d87da9f5200090baf0276f0d6aeb717b9e06c'
            '840cbf8fafa2cc230dd8a9f667dbad80d54ad573f929f9970252722b9183688b'
            'fbae2e8121a027713ce9cf2197b4d702f512e65d028a2a71d4229a4c70f8410d'
            '95cf0d30ad7f0f171da79187f1564b8b2796e9d76551cfb442c26ae4d9f1aafe'
            '6b37b7d4ecd269abcf92ada988d4be48e0fee1473d6a2cc7d6562812c579095d'
            '4bb617a956b783edfb1a4246580172c4f9eb2728ff14730618854a3be7840dad'
            '65aff7e831f3bb4b37ed5d4db5dfa75ab6bd582d132dd197e658ccb699dbfac7'
            'f2a7b6dce11311e3d318d5729258935a520dcb7ce4dc879ecb1738a2f8bfe434'
            '0a81aa7fd5fa0b511fda81ce3345f3199d3be1c83fc660f7f365ef4ede88f3f7'
            '27122f9db1be8b1efbccd6ab263313aa66c97dfcd0acb9499434a1fa4ecbb2bd'
            '0c93d28bec11968da47b300fe8049d7e32c07c27ccde36ce5f1701306f3cbaf5'
            'cef46c7e1afcaf9b6bacf723d5ae22f3f42045eb93bbd9bf5d2b1dba7638028a'
            '819bd305734a8fe190afdd399e6158c041c5b9912b436375b2d8dc520f7376ba'
            'f33d70071a232a2a3930aa0a2b3f032ef6a17e07acc7412000ceb25bdd339ade'
            '5c56aa13fd3f18bd4b327d8cd540ff7fd9e0145e6358d6330103938655d3dfd7'
            'ca3eea7fac20d160d9aa3a8e17c0b9ab169cfe16a685f78d2c4d1fd52f8f6784'
            '7f2b4c0fcf4a78b983ae3c3a57c47748470370aa4bf17ea9b3ad53802d201afd'
            'a55bd3b222d08dc6bb68d4e30ec3e544b303d93330131a310f3a2e20ca93f4b9'
            '2b4e223aed8ec9df431806c54bd3df923dbd34805e311006aba3f62682eeca56'
            '882d3ac8739184368a30991843db8581e3fd1aee639ddc110ac8cd9e8a89ea1f'
            '5d1a85e93b4c7626aa2cfa68201c2d93574647ab6ef0679d3ff4b4cc5c2ba042'
            'd06065357943599d515b7ea081da99981b68c4c6a9a5e6bb5e0f1019fea80104'
            'b323e44874873591b763b1926cac00d354323d32ff06941eefa415dbdb643cfb'
            '26fe3548c0e3997aa09077a5f4d1b4152c98c6c6e7ed64e26557704cc4758f73'
            '2b33a669fc281b69d6d3683402ea8d83a86f6bf625a14944d0ac553f414688d3'
            '86223efa8b47df1aec5bdecbe5321b29cfbba46e49bf268cf2d646423d8990c2'
            'd817ee8eeb04450de6c313db4cde76cca92236e14b60fb0fdb30014250b76fdb'
            'a8d7416f819963fb7d2e6800d51d27f5fdc74d804d2b559528eb6867c9e3b88a'
            'a492d1366f130122e4e54bee722b65a3d8a2afb30768026e2922edec0d11c9e4'
            '16ab24a074e2e06e6cee4bc06373b2b71e5d7990b71f60fa613a6e9bf55d6c12'
            '3245dc7c2e65e15c981b5a9c6372210dae582e7c7dfee632ec92a40868f3a63b'
            '168172f22ea13879b958179fee20d0b2d78136bc755501f108840a14a0b521f6'
            '5f6de8a7646cf755df9f8666346dbcff1005b5165b7b9aea75921344b3eceee6'
            '84d2457f89057d1f4c48cfe85a1fe4f397eaa6a4f2dd0bad36beccf9dfdb5819'
            '8fe0d9cb7b36faa27d2bb41661f4f9ea0298901d261c5daf702e29e97e46bd4c'
            '7e2652a26a8e7198b9b6fd2bfd476c514362f347ba75b1dd014faac443266fd7'
            '8ea5b335b10bfb4e492646902db043aee06c953941b3eca7fe24603a3238abf8'
            'a9977459a8e6c31f1643da7ede6ac7199dee96559d74188f5c9d3799787ac4fa'
            '7bab1dfb1d5b288e3270a61f9b1892c151f1dd1f8e32c07ae6adc37ef14844bb'
            '551047905350e113384f99e0e929e9381dc0a4ed514ca4ebe279dcdad798edce'
            '5e1ce61087a5f4acbd45cd7afca45744fa7df44b906eaf155dc519f870203360'
            '1da319664d39427156488b9b39ff39e33c53ef608f66319fdf9fb9bcdb29020d'
            'fc6164a90f0ca2a9341aaf4448b4334c3393459ca5cbad6d7149f8bcf70da5fe'
            '181672743d9e2449064a1b18764fa400af5d3cd268098e7b7e5069d0b128caa2'
            '6f2032347bb40e2ebe9b3a03062147ffa2f656d47c87821623c3b7d46dc15ddb'
            'c4670070e546317295071350872e1a00918fd3284609620f84beb44ed54c1ebd'
            '17bf1ea04f476ee66555bc4386ffbebfe6be6f75e67947b7f85511241ac46407'
            '0ded9e2792b95902d898aba91020103875f2987a9566b353f3e6988b08848f4a'
            'd3a0669c83e4df5d33606b4c3443d2c6c71b76cb4f6421d6d54ee630023be6c2'
            'a7fbf65a86889f95138360ca4dbd4e51de2e214384ee39740d9c6c381ff997d9'
            'ac0400fd7c9ceada1356fe4b7eae3892f35652f09f488b31fd011e0642d373a3'
            '6f1a48380445406709ba5c6b4b9c6f0301ea645324feb429f3719dc29b8f28ff'
            'b2f4083ada35c18876edf38220d84ca757cf710bc5c2d80ee8b5083dc6c2609f'
            '487c92837717975ad6c63fe2a1f8e8c5c9e0554e96000102d83c82f4a77fd9bd'
            'f6ecf2edc9468210111d77e396853af49cb8a43d9bc0d20212f88cf2bc33685d'
            '6efc39323d14239f2a55576a8b3f32cb79eeefdd5881ba813493c14be2939f3c'
            'd7bbac08482c68d7c45afb5ab7b76832e93ab0490524238eae5886535f35cb4a'
            '005381222cfef42ccc21151845b6d43d25c861f35c2192e5e23c2a14df7938f0'
            '24151631c3e70306ae92ffb8fea38992a752cd0a76771a5e53445f56c2be1f00'
            '589ad07c257aba8296df4de7f181a91bd498615f02ce5bc85231535cd25ebf3f')
