From 1c3b1ab9bf6eed0742ae53ccca435e8f73b0b362 Mon Sep 17 00:00:00 2001 From: Simon Sobisch Date: Fri, 17 Dec 2021 00:19:26 +0100 Subject: [PATCH 001/226] PDCurses: Update from PDCursesMod 4.1.0 to 4.3.1 * removed unnecessary patch 003-fix-_bool-was-not-declared.patch * integrated patch 004 into 001 while updating * removed install of (now) internal-only header acs_defs.h * create pdcurses.h during package with the necessary arguments to lead to the correct definitions additional: * prepared for building more ports - and added wincon as first one (header and link library are identical) * don't install test executables (which in the meantime are not build by default any more), but generate them in check for manual tests (may be packaged as pdcurses-demos later) --- .../001-mingw-pdcurses-4.1.0-build.patch | 68 --------- .../001-mingw-pdcurses-4.3.1-build.patch | 116 ++++++++++++++++ .../003-fix-_bool-was-not-declared.patch | 53 ------- mingw-w64-pdcurses/004-link-implib.patch | 15 -- mingw-w64-pdcurses/PKGBUILD | 131 ++++++++++++------ 5 files changed, 204 insertions(+), 179 deletions(-) delete mode 100644 mingw-w64-pdcurses/001-mingw-pdcurses-4.1.0-build.patch create mode 100644 mingw-w64-pdcurses/001-mingw-pdcurses-4.3.1-build.patch delete mode 100644 mingw-w64-pdcurses/003-fix-_bool-was-not-declared.patch delete mode 100644 mingw-w64-pdcurses/004-link-implib.patch diff --git a/mingw-w64-pdcurses/001-mingw-pdcurses-4.1.0-build.patch b/mingw-w64-pdcurses/001-mingw-pdcurses-4.1.0-build.patch deleted file mode 100644 index 2224b9ce28..0000000000 --- a/mingw-w64-pdcurses/001-mingw-pdcurses-4.1.0-build.patch +++ /dev/null @@ -1,68 +0,0 @@ -diff -Naur pdcurses-4.1.0-orig/wincon/Makefile.mng pdcurses-4.1.0/wincon/Makefile.mng ---- pdcurses-4.1.0-orig/wincon/Makefile.mng 2019-05-09 02:27:41.000000000 +0300 -+++ pdcurses-4.1.0/wincon/Makefile.mng 2019-05-28 08:49:28.054006700 +0300 -@@ -100,8 +100,9 @@ - ifeq ($(DLL),Y) - CFLAGS += -DPDC_DLL_BUILD - LIBEXE = $(PREFIX)gcc -- LIBFLAGS = -Wl,--out-implib,pdcurses.a -shared -o -- LIBCURSES = pdcurses.dll -+ LIBARCHIVE = libpdcurses.dll.a -+ LIBFLAGS = -Wl,--out-implib,$(LIBARCHIVE) -shared -o -+ LIBCURSES = libpdcurses.dll - LIBDEPS = $(LIBOBJS) $(PDCOBJS) - LIBSADDED = - EXELIBS = -@@ -113,7 +114,8 @@ - else - LIBFLAGS = rv - endif -- LIBCURSES = pdcurses.a -+ LIBARCHIVE = libpdcurses.a -+ LIBCURSES = $(LIBARCHIVE) - LIBDEPS = $(LIBOBJS) $(PDCOBJS) - LIBSADDED = - EXELIBS = -@@ -139,7 +141,7 @@ - - $(LIBCURSES) : $(LIBDEPS) - $(LIBEXE) $(LIBFLAGS) $@ $? $(LIBSADDED) -- $(CP) pdcurses.a panel.a -+ $(CP) $(LIBARCHIVE) libpanel.a - - $(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS) - $(PDCOBJS) : $(PDCURSES_WIN_H) -diff -Naur pdcurses-4.1.0-orig/wingui/Makefile.mng pdcurses-4.1.0/wingui/Makefile.mng ---- pdcurses-4.1.0-orig/wingui/Makefile.mng 2019-05-09 02:27:41.000000000 +0300 -+++ pdcurses-4.1.0/wingui/Makefile.mng 2019-05-28 08:48:33.963930900 +0300 -@@ -98,8 +98,9 @@ - ifeq ($(DLL),Y) - CFLAGS += -DPDC_DLL_BUILD - LIBEXE = $(CC) -- LIBFLAGS = -Wl,--out-implib,pdcurses.a -shared -o -- LIBCURSES = pdcurses.dll -+ LIBARCHIVE = libpdcurses.dll.a -+ LIBFLAGS = -Wl,--out-implib,$(LIBARCHIVE) -shared -o -+ LIBCURSES = libpdcurses.dll - LIBDEPS = $(LIBOBJS) $(PDCOBJS) - LIBSADDED = -lgdi32 -lcomdlg32 - EXELIBS = -@@ -111,7 +112,8 @@ - else - LIBFLAGS = rv - endif -- LIBCURSES = pdcurses.a -+ LIBARCHIVE = libpdcurses.a -+ LIBCURSES = $(LIBARCHIVE) - LIBDEPS = $(LIBOBJS) $(PDCOBJS) - LIBSADDED = - EXELIBS = -lgdi32 -lcomdlg32 -@@ -137,7 +139,7 @@ - - $(LIBCURSES) : $(LIBDEPS) - $(LIBEXE) $(LIBFLAGS) $@ $? $(LIBSADDED) -- $(CP) pdcurses.a panel.a -+ $(CP) $(LIBARCHIVE) libpanel.a - - $(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS) - $(PDCOBJS) : $(PDCURSES_WIN_H) diff --git a/mingw-w64-pdcurses/001-mingw-pdcurses-4.3.1-build.patch b/mingw-w64-pdcurses/001-mingw-pdcurses-4.3.1-build.patch new file mode 100644 index 0000000000..a835430dec --- /dev/null +++ b/mingw-w64-pdcurses/001-mingw-pdcurses-4.3.1-build.patch @@ -0,0 +1,116 @@ +diff -Naur ./wincon/Makefile.orig ./wincon/Makefile +--- ./wincon/Makefile.orig 2021-12-16 23:18:17.855851200 +0100 ++++ ./wincon/Makefile 2021-12-21 18:32:46.983443000 +0100 +@@ -97,12 +97,15 @@ + PDCCFLAGS += -DHAVE_NO_INFOEX + endif + +-LINK = $(CC) ++LINK = $(CC) ++ ++LIBPREFIX = lib + + ifeq ($(DLL),Y) + CFLAGS += -DPDC_DLL_BUILD + LIBEXE = $(CC) +- LIBFLAGS = -Wl,--out-implib,pdcurses.a -shared -o +- LIBCURSES = pdcurses.dll ++ LIBCURSES = $(LIBPREFIX)pdcurses.dll ++ LIBARCHIVE = $(LIBCURSES).a ++ LIBFLAGS = -Wl,--out-implib,$(LIBARCHIVE) -shared -o + LIBDEPS = $(LIBOBJS) $(PDCOBJS) + LIBSADDED = -lwinmm +@@ -115,7 +118,8 @@ + else + LIBFLAGS = rv + endif +- LIBCURSES = pdcurses.a ++ LIBCURSES = $(LIBPREFIX)pdcurses.a ++ LIBARCHIVE = $(LIBCURSES) + LIBDEPS = $(LIBOBJS) $(PDCOBJS) + LIBSADDED = + EXELIBS = -lwinmm +@@ -141,11 +145,11 @@ + + $(LIBCURSES) : $(LIBDEPS) + $(LIBEXE) $(LIBFLAGS) $@ $? $(LIBSADDED) +- $(CP) pdcurses.a panel.a ++ $(CP) $(LIBARCHIVE) $(LIBPREFIX)panel.a + + $(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS) + $(PDCOBJS) : $(PDCURSES_WIN_H) +-$(DEMOS) : $(PDCURSES_CURSES_H) $(LIBCURSES) ++$(DEMOS) : $(PDCURSES_CURSES_H) $(LIBARCHIVE) + panel.o : $(PANEL_HEADER) + + $(LIBOBJS) : %.o: $(srcdir)/%.c +@@ -157,10 +161,10 @@ + firework.exe init_col.exe newtest.exe ozdemo.exe picsview.exe \ + ptest.exe rain.exe speed.exe testcurs.exe test_pan.exe \ + version.exe worm.exe xmas.exe: %.exe: $(demodir)/%.c +- $(CC) $(CFLAGS) -o$@ $< $(LIBCURSES) $(EXELIBS) ++ $(CC) $(CFLAGS) -o$@ $< $(LIBARCHIVE) $(EXELIBS) + + tuidemo.exe: tuidemo.o tui.o +- $(LINK) $(LDFLAGS) -o$@ tuidemo.o tui.o $(LIBCURSES) $(EXELIBS) ++ $(LINK) $(LDFLAGS) -o$@ tuidemo.o tui.o $(LIBARCHIVE) $(EXELIBS) + + tui.o: $(demodir)/tui.c $(demodir)/tui.h $(PDCURSES_CURSES_H) + $(CC) -c $(CFLAGS) -I$(demodir) -o$@ $< +diff -Naur ./wingui/Makefile.orig ./wingui/Makefile +--- ./wingui/Makefile.orig 2021-12-16 23:18:17.870848300 +0100 ++++ ./wingui/Makefile 2021-12-16 23:41:24.693021600 +0100 +@@ -94,11 +94,14 @@ + + LINK = $(CC) + ++LIBPREFIX = lib ++ + ifeq ($(DLL),Y) + CFLAGS += -DPDC_DLL_BUILD + LIBEXE = $(CC) +- LIBFLAGS = -Wl,--out-implib,pdcurses.a -static-libgcc -shared -o +- LIBCURSES = pdcurses.dll ++ LIBCURSES = $(LIBPREFIX)pdcurses.dll ++ LIBARCHIVE = $(LIBCURSES).a ++ LIBFLAGS = -Wl,--out-implib,$(LIBARCHIVE) -static-libgcc -shared -o + LIBDEPS = $(LIBOBJS) $(PDCOBJS) + LIBSADDED = -lgdi32 -lcomdlg32 -lwinmm + EXELIBS = +@@ -110,7 +113,8 @@ + else + LIBFLAGS = rv + endif +- LIBCURSES = pdcurses.a ++ LIBCURSES = $(LIBPREFIX)pdcurses.a ++ LIBARCHIVE = $(LIBCURSES) + LIBDEPS = $(LIBOBJS) $(PDCOBJS) + LIBSADDED = + EXELIBS = -lgdi32 -lcomdlg32 -lwinmm +@@ -136,11 +140,11 @@ + + $(LIBCURSES) : $(LIBDEPS) + $(LIBEXE) $(LIBFLAGS) $@ $? $(LIBSADDED) +- $(CP) pdcurses.a panel.a ++ $(CP) $(LIBARCHIVE) $(LIBPREFIX)panel.a + + $(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS) + $(PDCOBJS) : $(PDCURSES_WIN_H) +-$(DEMOS) : $(PDCURSES_CURSES_H) $(LIBCURSES) ++$(DEMOS) : $(PDCURSES_CURSES_H) $(LIBARCHIVE) + panel.o : $(PANEL_HEADER) + + $(LIBOBJS) : %.o: $(srcdir)/%.c +@@ -152,10 +156,10 @@ + firework.exe init_col.exe newtest.exe ozdemo.exe picsview.exe \ + ptest.exe rain.exe speed.exe testcurs.exe test_pan.exe \ + version.exe worm.exe xmas.exe: %.exe: $(demodir)/%.c +- $(CC) $(CFLAGS) -mwindows -o$@ $< $(LIBCURSES) $(EXELIBS) ++ $(CC) $(CFLAGS) -mwindows -o$@ $< $(LIBARCHIVE) $(EXELIBS) + + tuidemo.exe: tuidemo.o tui.o +- $(LINK) $(LDFLAGS) -mwindows -o$@ tuidemo.o tui.o $(LIBCURSES) $(EXELIBS) ++ $(LINK) $(LDFLAGS) -mwindows -o$@ tuidemo.o tui.o $(LIBARCHIVE) $(EXELIBS) + + tui.o: $(demodir)/tui.c $(demodir)/tui.h $(PDCURSES_CURSES_H) + $(CC) -c $(CFLAGS) -I$(demodir) -o$@ $< diff --git a/mingw-w64-pdcurses/003-fix-_bool-was-not-declared.patch b/mingw-w64-pdcurses/003-fix-_bool-was-not-declared.patch deleted file mode 100644 index 13bb98741b..0000000000 --- a/mingw-w64-pdcurses/003-fix-_bool-was-not-declared.patch +++ /dev/null @@ -1,53 +0,0 @@ ---- pdcurses-4.1.0.orig/curses.h 2019-05-09 07:27:41.000000000 +0800 -+++ pdcurses-4.1.0/curses.h 2019-06-13 21:48:34.230201400 +0800 -@@ -56,6 +56,10 @@ - # include - #endif - -+#if defined(__cplusplus) && __cplusplus >= 199711L -+# define PDC_PP98 1 -+#endif -+ - #if defined(__STDC_VERSION__) && __STDC_VERSION >= 199901L && \ - !defined(__bool_true_false_are_defined) - # include -@@ -64,7 +68,9 @@ - #ifdef __cplusplus - extern "C" - { --# define bool _bool -+# ifndef PDC_PP98 -+# define bool _bool -+# endif - #endif - - /*---------------------------------------------------------------------- -@@ -83,13 +89,15 @@ - - #else - --typedef unsigned char bool; -- - # define FALSE 0 - # define TRUE 1 - - #endif - -+#if !defined(PDC_PP98) && !defined(__bool_true_false_are_defined) -+typedef unsigned char bool; -+#endif -+ - #undef ERR - #define ERR (-1) - -@@ -1840,7 +1848,9 @@ - #define PDC_KEY_MODIFIER_REPEAT 16 - - #ifdef __cplusplus --# undef bool -+# ifndef PDC_PP98 -+# undef bool -+# endif - } - #endif - diff --git a/mingw-w64-pdcurses/004-link-implib.patch b/mingw-w64-pdcurses/004-link-implib.patch deleted file mode 100644 index a8a6cb3fc2..0000000000 --- a/mingw-w64-pdcurses/004-link-implib.patch +++ /dev/null @@ -1,15 +0,0 @@ ---- PDCursesMod-4.1.0/wingui/Makefile.mng.orig 2021-04-30 22:23:42.270025000 -0700 -+++ PDCursesMod-4.1.0/wingui/Makefile.mng 2021-04-30 22:24:54.066906800 -0700 -@@ -155,10 +155,10 @@ - - firework.exe ozdemo.exe newtest.exe ptest.exe rain.exe testcurs.exe \ - version.exe worm.exe xmas.exe: %.exe: $(demodir)/%.c -- $(CC) $(CFLAGS) -mwindows -o$@ $< $(LIBCURSES) $(EXELIBS) -+ $(CC) $(CFLAGS) -mwindows -o$@ $< $(LIBARCHIVE) $(EXELIBS) - - tuidemo.exe: tuidemo.o tui.o -- $(LINK) $(LDFLAGS) -mwindows -o$@ tuidemo.o tui.o $(LIBCURSES) $(EXELIBS) -+ $(LINK) $(LDFLAGS) -mwindows -o$@ tuidemo.o tui.o $(LIBARCHIVE) $(EXELIBS) - - tui.o: $(demodir)/tui.c $(demodir)/tui.h $(PDCURSES_CURSES_H) - $(CC) -c $(CFLAGS) -I$(demodir) -o$@ $< diff --git a/mingw-w64-pdcurses/PKGBUILD b/mingw-w64-pdcurses/PKGBUILD index c90e6514de..4ca083fa47 100644 --- a/mingw-w64-pdcurses/PKGBUILD +++ b/mingw-w64-pdcurses/PKGBUILD @@ -5,11 +5,14 @@ _realname=pdcurses pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" provides=("${MINGW_PACKAGE_PREFIX}-curses") +# No replace or conflict as the installed names are different #replaces=("${MINGW_PACKAGE_PREFIX}-ncurses" "${MINGW_PACKAGE_PREFIX}-termcap") #conflicts=("${MINGW_PACKAGE_PREFIX}-ncurses" "${MINGW_PACKAGE_PREFIX}-termcap") -pkgver=4.1.0 -pkgrel=5 +pkgver=4.3.1 +pkgrel=1 pkgdesc="Curses library on the Win32 API (mingw-w64)" +# ports that are available with this package +pdcports="wincon wingui" # vt is relevant especially for Windows Terminal - look at this later arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') url="https://www.projectpluto.com/win32a.htm" @@ -18,52 +21,79 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-gcc") depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs") options=('staticlibs' 'strip') source=(${_realname}-${pkgver}.tar.gz::"https://github.com/Bill-Gray/PDCursesMod/archive/v${pkgver}.tar.gz" - 001-mingw-pdcurses-4.1.0-build.patch - 002-fix-exports.patch - 003-fix-_bool-was-not-declared.patch - 004-link-implib.patch) -sha256sums=('c6e036c0cb24f7909dbb8fa5011564727cd64a91efd3b7bb3e81c7509d7f5fde' - '913b5aff09d0ab1a2197f66a98657927d85a0dc3577c2b5e69179148fb2b0242' - '246f93facdd2703f8b9d0bcd57e89688fd861d34a30facc60a48892b330b08bc' - '6f6875068a13988988b8b04300636db4c4f9f543632597232cb2b64a2fd1218b' - '39c6488570cd7b492f636b47972d40ec6e809744daeed85ef415df9c1ae6f3ff') + 001-mingw-pdcurses-4.3.1-build.patch + 002-fix-exports.patch) +sha256sums=('d3926643f7bab358ffd87e2c853a4e8f5f7555a01eae7e67256748e6208f8a68' + '9a63f3c561d5a796965f5251e386d47371c0be86d42f97565394a7af930426b0' + '246f93facdd2703f8b9d0bcd57e89688fd861d34a30facc60a48892b330b08bc') prepare() { cd PDCursesMod-${pkgver} - patch -p1 -i ${srcdir}/001-mingw-pdcurses-4.1.0-build.patch - patch -p1 -i ${srcdir}/002-fix-exports.patch - patch -p1 -i ${srcdir}/003-fix-_bool-was-not-declared.patch - patch -p1 -i ${srcdir}/004-link-implib.patch + patch -p1 -i ${srcdir}/001-mingw-pdcurses-4.3.1-build.patch # https://github.com/Bill-Gray/PDCursesMod/issues/222 + patch -p1 -i ${srcdir}/002-fix-exports.patch # https://github.com/Bill-Gray/PDCursesMod/pull/221 } build() { cd "${srcdir}/PDCursesMod-${pkgver}" -# NOte that you should use something like -${CARCH} +# Note that you should use something like -${CARCH} # to prevent building i686 compiled binaries from # being compiled with x86_64 compiled binaries and # vice-versa. That causes build failures - no surpise. - cp -rf wingui wingui-shared-${CARCH} - pushd wingui-shared-${CARCH} - make -f Makefile.mng \ - CC=${MINGW_PREFIX}/bin/gcc \ - STRIP=${MINGW_PREFIX}/bin/strip \ - AR=${MINGW_PREFIX}/bin/ar \ - WIDE=Y \ - UTF8=Y \ - DLL=Y - popd - cp -rf wingui wingui-static-${CARCH} - pushd wingui-static-${CARCH} - make -f Makefile.mng \ - CC=${MINGW_PREFIX}/bin/gcc \ - STRIP=${MINGW_PREFIX}/bin/strip \ - AR=${MINGW_PREFIX}/bin/ar \ - WIDE=Y \ - UTF8=Y - popd - + for pdc_port in ${pdcports}; do + cp -rf ${pdc_port} ${pdc_port}-shared-${CARCH} + pushd ${pdc_port}-shared-${CARCH} + make -f Makefile \ + CC=${MINGW_PREFIX}/bin/gcc \ + STRIP=${MINGW_PREFIX}/bin/strip \ + AR=${MINGW_PREFIX}/bin/ar \ + WIDE=Y \ + UTF8=Y \ + DLL=Y + popd + + cp -rf ${pdc_port} ${pdc_port}-static-${CARCH} + pushd ${pdc_port}-static-${CARCH} + make -f Makefile \ + CC=${MINGW_PREFIX}/bin/gcc \ + STRIP=${MINGW_PREFIX}/bin/strip \ + AR=${MINGW_PREFIX}/bin/ar \ + WIDE=Y \ + UTF8=Y + popd + done +} + +# we use the check target to verify that the demos would link correctly +# and could then (manually) run the tests to verify the results *look* correct +check() { + cd "${srcdir}/PDCursesMod-${pkgver}" + + for pdc_port in ${pdcports}; do + cp -rf ${pdc_port} ${pdc_port}-shared-${CARCH} + pushd ${pdc_port}-shared-${CARCH} + make -f Makefile \ + CC=${MINGW_PREFIX}/bin/gcc \ + STRIP=${MINGW_PREFIX}/bin/strip \ + AR=${MINGW_PREFIX}/bin/ar \ + WIDE=Y \ + UTF8=Y \ + DLL=Y \ + demos + popd + + cp -rf ${pdc_port} ${pdc_port}-static-${CARCH} + pushd ${pdc_port}-static-${CARCH} + make -f Makefile \ + CC=${MINGW_PREFIX}/bin/gcc \ + STRIP=${MINGW_PREFIX}/bin/strip \ + AR=${MINGW_PREFIX}/bin/ar \ + WIDE=Y \ + UTF8=Y \ + demos + popd + done } package() { @@ -71,13 +101,28 @@ package() { mkdir -p ${pkgdir}${MINGW_PREFIX}/{bin,include,lib} mkdir ${pkgdir}${MINGW_PREFIX}/include/pdcurses - - install wingui-shared-${CARCH}/*.exe ${pkgdir}${MINGW_PREFIX}/bin/ - install wingui-shared-${CARCH}/libpdcurses.dll ${pkgdir}${MINGW_PREFIX}/bin/ - install wingui-shared-${CARCH}/libpdcurses.dll.a ${pkgdir}${MINGW_PREFIX}/lib/libpdcurses.dll.a - install wingui-static-${CARCH}/libpdcurses.a ${pkgdir}${MINGW_PREFIX}/lib/libpdcurses.a - echo '#include "pdcurses/curses.h"' > pdcurses.h - install -m 0644 curses.h panel.h term.h acs_defs.h ${pkgdir}${MINGW_PREFIX}/include/pdcurses/ + # no exe - those are only demos and only run for check + #install "wingui-shared-${CARCH}/*.exe ${pkgdir}${MINGW_PREFIX}/bin/ + + # install dll and shared library of the "default port" (as in earlier versions of this package: wingui) + install "wingui-shared-${CARCH}/libpdcurses.dll" "${pkgdir}${MINGW_PREFIX}/bin/" + install "wingui-static-${CARCH}/libpdcurses.a" "${pkgdir}${MINGW_PREFIX}/lib/" + + # as all share the same ABI and the binaries are intended to work only with the basename - only install one link library + install "wingui-shared-${CARCH}/libpdcurses.dll.a" "${pkgdir}${MINGW_PREFIX}/lib/" + + # the additional static libraries and actual dll's go in with a rename + for pdc_port in ${pdcports}; do + install "${pdc_port}-static-${CARCH}/libpdcurses.a" "${pkgdir}${MINGW_PREFIX}/lib/libpdcurses_${pdc_port}.a" + install "${pdc_port}-shared-${CARCH}/libpdcurses.dll" "${pkgdir}${MINGW_PREFIX}/bin/libpdcurses_${pdc_port}.dll" + done + + install -m 0644 curses.h panel.h term.h ${pkgdir}${MINGW_PREFIX}/include/pdcurses/ + # needs defines matching the make step, see https://github.com/Bill-Gray/PDCursesMod/issues/133 + echo '/* if you want to use the DLL one: #define PDC_DLL_BUILD 1 */' > pdcurses.h + echo '#define PDC_WIDE 1' >> pdcurses.h + echo '#define PDC_FORCE_UTF8 1' >> pdcurses.h + echo '#include "pdcurses/curses.h"' >> pdcurses.h install -m 0644 pdcurses.h ${pkgdir}${MINGW_PREFIX}/include/pdcurses.h } From a7da2d545ded0ffdefd1b34ad1a8bc116785b3ca Mon Sep 17 00:00:00 2001 From: pal1000 Date: Fri, 14 Jan 2022 00:35:19 +0200 Subject: [PATCH 002/226] mesa: Update to 21.3.4 SPIRV tools is only used when building Microsoft CLC or clover with SPIR-V binary support. None of these build with MSYS2 due to libclc not being available and possibly other unknown reasons. Vulkan validation layers is only used for debugging and it's not used specifically by Mesa3D. --- mingw-w64-mesa/PKGBUILD | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/mingw-w64-mesa/PKGBUILD b/mingw-w64-mesa/PKGBUILD index 3227bbfb82..750d6a03da 100644 --- a/mingw-w64-mesa/PKGBUILD +++ b/mingw-w64-mesa/PKGBUILD @@ -3,8 +3,8 @@ _realname=mesa pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=21.3.3 -pkgrel=3 +pkgver=21.3.4 +pkgrel=1 pkgdesc="Open-source implementation of the OpenGL specification (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') @@ -12,8 +12,6 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-python-mako" "${MINGW_PACKAGE_PREFIX}-meson" "${MINGW_PACKAGE_PREFIX}-pkg-config" - "${MINGW_PACKAGE_PREFIX}-spirv-tools" - "${MINGW_PACKAGE_PREFIX}-vulkan-validation-layers" "${MINGW_PACKAGE_PREFIX}-libelf" "${MINGW_PACKAGE_PREFIX}-zstd") depends=("${MINGW_PACKAGE_PREFIX}-llvm" @@ -21,7 +19,8 @@ depends=("${MINGW_PACKAGE_PREFIX}-llvm" "${MINGW_PACKAGE_PREFIX}-vulkan-loader" "${MINGW_PACKAGE_PREFIX}-libsystre") optdepends=("${MINGW_PACKAGE_PREFIX}-opengl-man-pages: for the OpenGL API man pages" - "${MINGW_PACKAGE_PREFIX}-zstd: use ZSTD instead of zlib for certain compression tasks") + "${MINGW_PACKAGE_PREFIX}-zstd: use ZSTD instead of zlib for certain compression tasks" + "${MINGW_PACKAGE_PREFIX}-vulkan-validation-layers: to debug applications using Vulkan graphics") url="https://www.mesa3d.org/" license=('MIT') options=('staticlibs' 'strip') @@ -34,7 +33,7 @@ source=(https://mesa.freedesktop.org/archive/${_realname}-${pkgver}.tar.xz{,.sig 0005-win32-The-opengl-headers-should-install-to-mesa-GL-s.patch 0006-win32-Fixes-32-bits-visual-studio-module-definition-.patch 0007-win32-Do-not-use-BUILD_GL32-we-use-def-file-to-expor.patch) -sha256sums=('ad7f4613ea7c5d08d9fcb5025270199e6ceb9aa99fd72ee572b70342240a8121' +sha256sums=('77104fd4a93bce69da3b0982f8ee88ba7c4fb98cfc491a669894339cdcd4a67d' 'SKIP' '69f21522f20c10f5699dfe3e128aa88d4fedde816f6e8df1506d7470c44bf3da' 'e5aa27b6aba3e75335bbd6d989c52dd42a8435ef87a1453267164e9612daee1a' From 24a7311ebf1ed24a24ab678a029ffcd3725f5b1a Mon Sep 17 00:00:00 2001 From: umarcor Date: Sat, 8 Jan 2022 13:43:46 +0100 Subject: [PATCH 003/226] ghdl: update to 1.0.0.r964.g70f3c162b --- mingw-w64-ghdl/PKGBUILD | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/mingw-w64-ghdl/PKGBUILD b/mingw-w64-ghdl/PKGBUILD index 6462258840..399cce25b4 100644 --- a/mingw-w64-ghdl/PKGBUILD +++ b/mingw-w64-ghdl/PKGBUILD @@ -1,7 +1,7 @@ _realname=ghdl pkgbase="mingw-w64-${_realname}" pkgname='__placeholder__' -pkgver=1.0.0.r950.g8d512a44b +pkgver=1.0.0.r964.g70f3c162b pkgrel=1 pkgdesc='GHDL: the open-source analyzer, compiler, simulator and (experimental) synthesizer for VHDL' arch=('any') @@ -12,7 +12,7 @@ groups=("${MINGW_PACKAGE_PREFIX}-eda") checkdepends=("${MINGW_PACKAGE_PREFIX}-python") provides=("${MINGW_PACKAGE_PREFIX}-${_realname}") -_commit="8d512a44" +_commit="70f3c162" source=("${_realname}::git+https://github.com/ghdl/ghdl.git#commit=${_commit}") sha512sums=('SKIP') @@ -75,7 +75,11 @@ _package() { if [ "${CARCH}" = "x86_64" ]; then pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}-llvm") - makedepends=("${MINGW_PACKAGE_PREFIX}-clang" "${MINGW_PACKAGE_PREFIX}-autotools") + makedepends=( + "${MINGW_PACKAGE_PREFIX}-clang" + "${MINGW_PACKAGE_PREFIX}-autotools" + "${MINGW_PACKAGE_PREFIX}-gcc-ada" + ) package() { pkgdesc="$pkgdesc (LLVM backend) (mingw-w64)" depends=( @@ -90,7 +94,11 @@ if [ "${CARCH}" = "x86_64" ]; then fi if [ "${CARCH}" = "i686" ]; then pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}-mcode") - makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-autotools") + makedepends=( + "${MINGW_PACKAGE_PREFIX}-cc" + "${MINGW_PACKAGE_PREFIX}-autotools" + "${MINGW_PACKAGE_PREFIX}-gcc-ada" + ) package() { pkgdesc="$pkgdesc (mcode backend) (mingw-w64)" depends=( From 4a06e49032d38579cc067cd491a943c09525515b Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sat, 15 Jan 2022 09:04:20 +0100 Subject: [PATCH 004/226] libgxps: remove unused makedepends --- mingw-w64-libgxps/PKGBUILD | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/mingw-w64-libgxps/PKGBUILD b/mingw-w64-libgxps/PKGBUILD index 648c6088bc..06de6fd38c 100644 --- a/mingw-w64-libgxps/PKGBUILD +++ b/mingw-w64-libgxps/PKGBUILD @@ -4,7 +4,7 @@ _realname=libgxps pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" pkgver=0.3.2 -pkgrel=1 +pkgrel=2 arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') pkgdesc="A library to handling and rendering XPS documents (mingw-w64)" @@ -20,9 +20,7 @@ depends=("${MINGW_PACKAGE_PREFIX}-glib2" makedepends=("${MINGW_PACKAGE_PREFIX}-meson" "${MINGW_PACKAGE_PREFIX}-ninja" "${MINGW_PACKAGE_PREFIX}-pkg-config" - "${MINGW_PACKAGE_PREFIX}-cc" - "intltool" - "gettext-devel") + "${MINGW_PACKAGE_PREFIX}-cc") options=('strip' 'staticlibs') license=("LGPL 2.1") url="https://www.gnome.org" From 2c778df3f280cbabaed19d3c8618e89f88c9ed3e Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sat, 15 Jan 2022 09:05:33 +0100 Subject: [PATCH 005/226] libgweather: remove install files this is handled by a glib hook now --- mingw-w64-libgweather/PKGBUILD | 3 +-- mingw-w64-libgweather/libgweather-CLANG32.install | 11 ----------- mingw-w64-libgweather/libgweather-CLANG64.install | 11 ----------- mingw-w64-libgweather/libgweather-MINGW32.install | 11 ----------- mingw-w64-libgweather/libgweather-MINGW64.install | 11 ----------- mingw-w64-libgweather/libgweather-UCRT64.install | 11 ----------- 6 files changed, 1 insertion(+), 57 deletions(-) delete mode 100644 mingw-w64-libgweather/libgweather-CLANG32.install delete mode 100644 mingw-w64-libgweather/libgweather-CLANG64.install delete mode 100644 mingw-w64-libgweather/libgweather-MINGW32.install delete mode 100644 mingw-w64-libgweather/libgweather-MINGW64.install delete mode 100644 mingw-w64-libgweather/libgweather-UCRT64.install diff --git a/mingw-w64-libgweather/PKGBUILD b/mingw-w64-libgweather/PKGBUILD index da475ea180..6c294cdc8e 100644 --- a/mingw-w64-libgweather/PKGBUILD +++ b/mingw-w64-libgweather/PKGBUILD @@ -4,7 +4,7 @@ _realname=libgweather pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" pkgver=3.36.1 -pkgrel=2 +pkgrel=3 arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') pkgdesc="GWeather shared library (mingw-w64)" @@ -25,7 +25,6 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-cc" options=('strip' 'staticlibs') license=("LGPL 2.1") url="https://www.gnome.org/" -install=${_realname}-${MSYSTEM}.install source=(https://download.gnome.org/sources/${_realname}/${pkgver%.*}/${_realname}-${pkgver}.tar.xz 001-win.patch 002-relocation.patch diff --git a/mingw-w64-libgweather/libgweather-CLANG32.install b/mingw-w64-libgweather/libgweather-CLANG32.install deleted file mode 100644 index 7eefb084bb..0000000000 --- a/mingw-w64-libgweather/libgweather-CLANG32.install +++ /dev/null @@ -1,11 +0,0 @@ -post_install() { - clang32/bin/glib-compile-schemas /clang32/share/glib-2.0/schemas -} - -post_upgrade() { - post_install $1 -} - -post_remove() { - post_install $1 -} diff --git a/mingw-w64-libgweather/libgweather-CLANG64.install b/mingw-w64-libgweather/libgweather-CLANG64.install deleted file mode 100644 index 98a3820471..0000000000 --- a/mingw-w64-libgweather/libgweather-CLANG64.install +++ /dev/null @@ -1,11 +0,0 @@ -post_install() { - clang64/bin/glib-compile-schemas /clang64/share/glib-2.0/schemas -} - -post_upgrade() { - post_install $1 -} - -post_remove() { - post_install $1 -} diff --git a/mingw-w64-libgweather/libgweather-MINGW32.install b/mingw-w64-libgweather/libgweather-MINGW32.install deleted file mode 100644 index 375e708c36..0000000000 --- a/mingw-w64-libgweather/libgweather-MINGW32.install +++ /dev/null @@ -1,11 +0,0 @@ -post_install() { - mingw32/bin/glib-compile-schemas /mingw32/share/glib-2.0/schemas -} - -post_upgrade() { - post_install $1 -} - -post_remove() { - post_install $1 -} diff --git a/mingw-w64-libgweather/libgweather-MINGW64.install b/mingw-w64-libgweather/libgweather-MINGW64.install deleted file mode 100644 index d43ee14ce7..0000000000 --- a/mingw-w64-libgweather/libgweather-MINGW64.install +++ /dev/null @@ -1,11 +0,0 @@ -post_install() { - mingw64/bin/glib-compile-schemas /mingw64/share/glib-2.0/schemas -} - -post_upgrade() { - post_install $1 -} - -post_remove() { - post_install $1 -} diff --git a/mingw-w64-libgweather/libgweather-UCRT64.install b/mingw-w64-libgweather/libgweather-UCRT64.install deleted file mode 100644 index 5ec9ea658c..0000000000 --- a/mingw-w64-libgweather/libgweather-UCRT64.install +++ /dev/null @@ -1,11 +0,0 @@ -post_install() { - ucrt64/bin/glib-compile-schemas /ucrt64/share/glib-2.0/schemas -} - -post_upgrade() { - post_install $1 -} - -post_remove() { - post_install $1 -} From d6b786a74584b6bde0ef5536e50e9230427272ce Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sat, 15 Jan 2022 09:07:10 +0100 Subject: [PATCH 006/226] libgweather: remove unused makedepends --- mingw-w64-libgweather/PKGBUILD | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/mingw-w64-libgweather/PKGBUILD b/mingw-w64-libgweather/PKGBUILD index 6c294cdc8e..cb1cb73cea 100644 --- a/mingw-w64-libgweather/PKGBUILD +++ b/mingw-w64-libgweather/PKGBUILD @@ -19,9 +19,8 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-meson" "${MINGW_PACKAGE_PREFIX}-pkg-config" "${MINGW_PACKAGE_PREFIX}-ninja" - "${MINGW_PACKAGE_PREFIX}-vala" - "gtk-doc" - "intltool") + "${MINGW_PACKAGE_PREFIX}-gettext" + "${MINGW_PACKAGE_PREFIX}-vala") options=('strip' 'staticlibs') license=("LGPL 2.1") url="https://www.gnome.org/" From b34da25fcfd22ee584aad1e9bf2fcfbf198ef989 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sat, 15 Jan 2022 09:09:09 +0100 Subject: [PATCH 007/226] hexchat: remove unused makedepends --- mingw-w64-hexchat/PKGBUILD | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mingw-w64-hexchat/PKGBUILD b/mingw-w64-hexchat/PKGBUILD index 3bf4a60e63..54ba326276 100644 --- a/mingw-w64-hexchat/PKGBUILD +++ b/mingw-w64-hexchat/PKGBUILD @@ -18,8 +18,7 @@ depends=("${MINGW_PACKAGE_PREFIX}-dbus-glib" "${MINGW_PACKAGE_PREFIX}-libssp" "${MINGW_PACKAGE_PREFIX}-openssl" "${MINGW_PACKAGE_PREFIX}-pango") -makedepends=("intltool" - "${MINGW_PACKAGE_PREFIX}-cc" +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-iso-codes" "${MINGW_PACKAGE_PREFIX}-luajit" "${MINGW_PACKAGE_PREFIX}-meson" From b959dc5d41dae4a82be9221c81da08c4098d4497 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sat, 15 Jan 2022 09:12:47 +0100 Subject: [PATCH 008/226] totem-pl-parser: remove unused makedepends --- mingw-w64-totem-pl-parser/PKGBUILD | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/mingw-w64-totem-pl-parser/PKGBUILD b/mingw-w64-totem-pl-parser/PKGBUILD index 475217e7df..8e19b9afe4 100644 --- a/mingw-w64-totem-pl-parser/PKGBUILD +++ b/mingw-w64-totem-pl-parser/PKGBUILD @@ -4,7 +4,7 @@ _realname=totem-pl-parser pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" pkgver=3.26.3 -pkgrel=2 +pkgrel=3 arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64') pkgdesc="Simple GObject-based library to parse and save a host of playlist formats (mingw-w64)" @@ -19,8 +19,7 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-meson" "${MINGW_PACKAGE_PREFIX}-pkg-config" "${MINGW_PACKAGE_PREFIX}-vala" "${MINGW_PACKAGE_PREFIX}-gobject-introspection" - "${MINGW_PACKAGE_PREFIX}-cc" - "gtk-doc") + "${MINGW_PACKAGE_PREFIX}-cc") license=("LGPL 2") url="https://www.gnome.org" source=(https://download.gnome.org/sources/${_realname}/${pkgver%.*}/${_realname}-${pkgver}.tar.xz @@ -44,7 +43,7 @@ build() { ${MINGW_PREFIX}/bin/meson \ --prefix="${MINGW_PREFIX}" \ --buildtype plain \ - -Dwith_introspection=false \ + -Dintrospection=true \ ../${_realname}-${pkgver} ${MINGW_PREFIX}/bin/ninja From 81f0956f7f196eafdb67860759968f6ed1d96342 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sat, 15 Jan 2022 09:15:01 +0100 Subject: [PATCH 009/226] template-glib: remove unused makedepends --- mingw-w64-template-glib/PKGBUILD | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/mingw-w64-template-glib/PKGBUILD b/mingw-w64-template-glib/PKGBUILD index d5634c46a3..df04f15d7f 100644 --- a/mingw-w64-template-glib/PKGBUILD +++ b/mingw-w64-template-glib/PKGBUILD @@ -4,7 +4,7 @@ _realname=template-glib pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" pkgver=3.34.0 -pkgrel=2 +pkgrel=3 arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') pkgdesc="A templating library for GLib (mingw-w64)" @@ -14,10 +14,8 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-meson" "${MINGW_PACKAGE_PREFIX}-ninja" "${MINGW_PACKAGE_PREFIX}-pkg-config" "${MINGW_PACKAGE_PREFIX}-cc" - "gtk-doc" "flex" - "bison" - "autoconf-archive") + "bison") options=('!strip' 'debug' 'staticlibs') license=("LGPL 2.1") url="https://www.gnome.org/" From d1273791f416480b9b566b96783870ebee637585 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sat, 15 Jan 2022 09:41:17 +0100 Subject: [PATCH 010/226] Remove memphis It's no longer used by libchamplain and long abandoned --- mingw-w64-libchamplain/PKGBUILD | 3 +- mingw-w64-memphis/001-win.patch | 12 ------- mingw-w64-memphis/PKGBUILD | 57 --------------------------------- 3 files changed, 1 insertion(+), 71 deletions(-) delete mode 100644 mingw-w64-memphis/001-win.patch delete mode 100644 mingw-w64-memphis/PKGBUILD diff --git a/mingw-w64-libchamplain/PKGBUILD b/mingw-w64-libchamplain/PKGBUILD index 9b19fb3278..fe11c9dd16 100644 --- a/mingw-w64-libchamplain/PKGBUILD +++ b/mingw-w64-libchamplain/PKGBUILD @@ -4,7 +4,7 @@ _realname=libchamplain pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" pkgver=0.12.20 -pkgrel=2 +pkgrel=3 arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64') pkgdesc="C library providing ClutterActor to display maps (mingw-w64)" @@ -12,7 +12,6 @@ depends=("${MINGW_PACKAGE_PREFIX}-clutter" "${MINGW_PACKAGE_PREFIX}-clutter-gtk" "${MINGW_PACKAGE_PREFIX}-cairo" "${MINGW_PACKAGE_PREFIX}-libsoup" - "${MINGW_PACKAGE_PREFIX}-memphis" "${MINGW_PACKAGE_PREFIX}-sqlite3") makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-gobject-introspection" diff --git a/mingw-w64-memphis/001-win.patch b/mingw-w64-memphis/001-win.patch deleted file mode 100644 index dbbee06c65..0000000000 --- a/mingw-w64-memphis/001-win.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- ./memphis/Makefile.am.orig 2014-10-18 11:58:22.839752500 +0200 -+++ ./memphis/Makefile.am 2014-10-18 11:58:27.805836200 +0200 -@@ -49,7 +49,8 @@ - - libmemphis_0_2_la_LDFLAGS = \ - -version-info $(LIBRARY_VERSION) \ -- -export-symbols-regex ^memphis_.* -+ -export-symbols-regex ^memphis_.* \ -+ -no-undefined - - noinst_HEADERS = \ - memphis-private.h \ diff --git a/mingw-w64-memphis/PKGBUILD b/mingw-w64-memphis/PKGBUILD deleted file mode 100644 index 919660e98d..0000000000 --- a/mingw-w64-memphis/PKGBUILD +++ /dev/null @@ -1,57 +0,0 @@ -# Maintainer: Andrea Zagli - -_realname=memphis -pkgbase=mingw-w64-${_realname} -pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=0.2.3 -pkgrel=4 -arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') -pkgdesc="A map-rendering library for OpenStreetMap (mingw-w64)" -options=(strip staticlibs) -depends=("${MINGW_PACKAGE_PREFIX}-glib2" - "${MINGW_PACKAGE_PREFIX}-cairo" - "${MINGW_PACKAGE_PREFIX}-expat") -makedepends=("${MINGW_PACKAGE_PREFIX}-gobject-introspection" - "${MINGW_PACKAGE_PREFIX}-vala" - "${MINGW_PACKAGE_PREFIX}-autotools" - "${MINGW_PACKAGE_PREFIX}-cc" - "gtk-doc") -options=('strip' 'staticlibs') -license=("GPL 2") -url="https://github.com/jiuka/" -source=(${_realname}-${pkgver}.tar.gz::"https://github.com/jiuka/memphis/archive/${pkgver}.tar.gz" - 001-win.patch) -sha256sums=('10b43b2325ce9937ce33a7afdc247e926cc515ac612b50eb0520e1ac1455e1ab' - '47dc1f857ff09647429e89fdb4dc8ae451e39afa7e3bf960d8bda63bb193fde5') - -prepare() { - cd "${srcdir}"/${_realname}-${pkgver} - patch -p1 -i ${srcdir}/001-win.patch - - libtoolize --copy - aclocal -I m4 - gtkdocize --copy - autoreconf -isf -} - -build() { - [[ -d ${srcdir}/build-${MINGW_CHOST} ]] && rm -rf ${srcdir}/build-${MINGW_CHOST} - mkdir -p build-${MINGW_CHOST} && cd build-${MINGW_CHOST} - - ../${_realname}-${pkgver}/configure \ - --prefix=${MINGW_PREFIX} \ - --libexecdir=${MINGW_PREFIX}/lib \ - --build=${MINGW_CHOST} \ - --host=${MINGW_CHOST} \ - --target=${MINGW_CHOST} \ - --enable-introspection \ - --enable-vala=no - - make -} - -package() { - cd "${srcdir}/build-${MINGW_CHOST}" - make DESTDIR=${pkgdir} install -} From 30201a084c4fabee57c4669d85729e50f49a581b Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sat, 15 Jan 2022 09:34:43 +0100 Subject: [PATCH 011/226] desktop-file-utils: port to meson --- .../002-install.patch | 15 ++++++ mingw-w64-desktop-file-utils/PKGBUILD | 50 +++++++++---------- 2 files changed, 39 insertions(+), 26 deletions(-) create mode 100644 mingw-w64-desktop-file-utils/002-install.patch diff --git a/mingw-w64-desktop-file-utils/002-install.patch b/mingw-w64-desktop-file-utils/002-install.patch new file mode 100644 index 0000000000..4be510cbfd --- /dev/null +++ b/mingw-w64-desktop-file-utils/002-install.patch @@ -0,0 +1,15 @@ +--- desktop-file-utils-0.26/install.py.orig 2022-01-15 09:26:40.590000000 +0100 ++++ desktop-file-utils-0.26/install.py 2022-01-15 09:30:23.249712200 +0100 +@@ -1,8 +1,9 @@ + #!/usr/bin/env python3 + + import os ++import shutil + +-os.symlink( +- 'desktop-file-install', +- os.getenv('MESON_INSTALL_DESTDIR_PREFIX') + '/bin/desktop-file-edit' ++shutil.copy( ++ os.getenv('MESON_INSTALL_DESTDIR_PREFIX') + '/bin/desktop-file-install.exe', ++ os.getenv('MESON_INSTALL_DESTDIR_PREFIX') + '/bin/desktop-file-edit.exe' + ) diff --git a/mingw-w64-desktop-file-utils/PKGBUILD b/mingw-w64-desktop-file-utils/PKGBUILD index c7f9687c0f..8caf9e945d 100644 --- a/mingw-w64-desktop-file-utils/PKGBUILD +++ b/mingw-w64-desktop-file-utils/PKGBUILD @@ -4,51 +4,49 @@ _realname=desktop-file-utils pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" pkgver=0.26 -pkgrel=1 +pkgrel=2 arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') pkgdesc="Utilities for .desktop files (mingw-w64)" -depends=("${MINGW_PACKAGE_PREFIX}-glib2" - "${MINGW_PACKAGE_PREFIX}-gtk3" - "${MINGW_PACKAGE_PREFIX}-libxml2") -makedepends=("gtk-doc" - "${MINGW_PACKAGE_PREFIX}-vala" - "${MINGW_PACKAGE_PREFIX}-gobject-introspection" - "${MINGW_PACKAGE_PREFIX}-cc" - "${MINGW_PACKAGE_PREFIX}-autotools") -options=('!strip' 'debug' 'staticlibs') +depends=("${MINGW_PACKAGE_PREFIX}-glib2") +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" + "${MINGW_PACKAGE_PREFIX}-meson" + "${MINGW_PACKAGE_PREFIX}-pkg-config" + "${MINGW_PACKAGE_PREFIX}-ninja") license=("LGPL 2.1") url="https://www.gnome.org/" source=(https://www.freedesktop.org/software/${_realname}/releases/desktop-file-utils-${pkgver}.tar.xz - 001-win.patch) + 001-win.patch + 002-install.patch) sha256sums=('b26dbde79ea72c8c84fb7f9d870ffd857381d049a86d25e0038c4cef4c747309' - '477686cf08eaf80f5ee7f474cd6fb67361539f625c88fb9483ce600c5c8a73df') + '477686cf08eaf80f5ee7f474cd6fb67361539f625c88fb9483ce600c5c8a73df' + 'd0fb777a741b3fbe1b92ae8b7855bbefb229e244c2c4a3af842f180e610f2fa1') prepare() { cd ${_realname}-${pkgver} patch -b -V simple -p1 -i ${srcdir}/001-win.patch - - autoreconf -fi + patch -b -V simple -p1 -i ${srcdir}/002-install.patch } build() { - [[ -d build-${MINGW_CHOST} ]] && rm -rf build-${MINGW_CHOST} - mkdir -p build-${MINGW_CHOST} - cd build-${MINGW_CHOST} + mkdir -p build-${MSYSTEM} && cd build-${MSYSTEM} - ../${_realname}-${pkgver}/configure \ - --host=${MINGW_CHOST} \ - --target=${MINGW_CHOST} \ - --build=${MINGW_CHOST} \ - --prefix=${MINGW_PREFIX} \ - --libexecdir=${MINGW_PREFIX}/lib - make + MSYS2_ARG_CONV_EXCL="--prefix=" \ + meson \ + --prefix="${MINGW_PREFIX}" \ + --wrap-mode=nodownload \ + --auto-features=enabled \ + --buildtype=plain \ + ../${_realname}-${pkgver} + + meson compile } package() { - cd "$srcdir/build-${MINGW_CHOST}" - make DESTDIR=$pkgdir install + cd "$srcdir/build-${MSYSTEM}" + + DESTDIR="${pkgdir}" meson install install -Dm644 "${srcdir}/${_realname}-${pkgver}/COPYING" "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/COPYING" } From 231d1c51599f171b3d54e0e99c1d73c72721b381 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sat, 15 Jan 2022 11:43:44 +0100 Subject: [PATCH 012/226] meld: drop update-mime-database install files handled by a hook now --- mingw-w64-meld3/PKGBUILD | 3 +-- mingw-w64-meld3/meld-CLANG32.install | 11 ----------- mingw-w64-meld3/meld-CLANG64.install | 11 ----------- mingw-w64-meld3/meld-MINGW32.install | 11 ----------- mingw-w64-meld3/meld-MINGW64.install | 11 ----------- mingw-w64-meld3/meld-UCRT64.install | 11 ----------- 6 files changed, 1 insertion(+), 57 deletions(-) delete mode 100644 mingw-w64-meld3/meld-CLANG32.install delete mode 100644 mingw-w64-meld3/meld-CLANG64.install delete mode 100644 mingw-w64-meld3/meld-MINGW32.install delete mode 100644 mingw-w64-meld3/meld-MINGW64.install delete mode 100644 mingw-w64-meld3/meld-UCRT64.install diff --git a/mingw-w64-meld3/PKGBUILD b/mingw-w64-meld3/PKGBUILD index 9eae2b9511..ddcc3c6171 100644 --- a/mingw-w64-meld3/PKGBUILD +++ b/mingw-w64-meld3/PKGBUILD @@ -5,7 +5,7 @@ _realname=meld pkgbase=mingw-w64-${_realname}3 pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}3" pkgver=3.21.0 -pkgrel=5 +pkgrel=6 pkgdesc="Visual diff and merge tool (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') @@ -22,7 +22,6 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-gcc" "${MINGW_PACKAGE_PREFIX}-pkg-config" "${MINGW_PACKAGE_PREFIX}-itstool" 'intltool') -install=meld-${MSYSTEM}.install source=(https://download.gnome.org/sources/${_realname}/${pkgver%.*}/${_realname}-${pkgver}.tar.xz '0001-fixes-for-MinGW-w64-symlinks-and-use-sh-to-spawn.patch') sha256sums=('b680114d5ab793324549fd58f4eb202d8e280c0633a0b765ede6dfb34160a81b' diff --git a/mingw-w64-meld3/meld-CLANG32.install b/mingw-w64-meld3/meld-CLANG32.install deleted file mode 100644 index 485e76ae2f..0000000000 --- a/mingw-w64-meld3/meld-CLANG32.install +++ /dev/null @@ -1,11 +0,0 @@ -post_install() { - /clang32/bin/update-mime-database /clang32/share/mime -} - -post_upgrade() { - post_install -} - -post_remove() { - post_install -} diff --git a/mingw-w64-meld3/meld-CLANG64.install b/mingw-w64-meld3/meld-CLANG64.install deleted file mode 100644 index 340fb708e1..0000000000 --- a/mingw-w64-meld3/meld-CLANG64.install +++ /dev/null @@ -1,11 +0,0 @@ -post_install() { - /clang64/bin/update-mime-database /clang64/share/mime -} - -post_upgrade() { - post_install -} - -post_remove() { - post_install -} diff --git a/mingw-w64-meld3/meld-MINGW32.install b/mingw-w64-meld3/meld-MINGW32.install deleted file mode 100644 index b461eb4553..0000000000 --- a/mingw-w64-meld3/meld-MINGW32.install +++ /dev/null @@ -1,11 +0,0 @@ -post_install() { - /mingw32/bin/update-mime-database /mingw32/share/mime -} - -post_upgrade() { - post_install -} - -post_remove() { - post_install -} diff --git a/mingw-w64-meld3/meld-MINGW64.install b/mingw-w64-meld3/meld-MINGW64.install deleted file mode 100644 index c1c5bb015d..0000000000 --- a/mingw-w64-meld3/meld-MINGW64.install +++ /dev/null @@ -1,11 +0,0 @@ -post_install() { - /mingw64/bin/update-mime-database /mingw64/share/mime -} - -post_upgrade() { - post_install -} - -post_remove() { - post_install -} diff --git a/mingw-w64-meld3/meld-UCRT64.install b/mingw-w64-meld3/meld-UCRT64.install deleted file mode 100644 index 5672dfcd3a..0000000000 --- a/mingw-w64-meld3/meld-UCRT64.install +++ /dev/null @@ -1,11 +0,0 @@ -post_install() { - /ucrt64/bin/update-mime-database /ucrt64/share/mime -} - -post_upgrade() { - post_install -} - -post_remove() { - post_install -} From 76f3739dfa46d6fb8b496f394a1b51f41fc22277 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sat, 15 Jan 2022 11:40:18 +0100 Subject: [PATCH 013/226] shared-mime-info: add a hook for update-mime-database --- mingw-w64-shared-mime-info/PKGBUILD | 17 ++++++++++++++--- .../shared-mime-info-CLANG32.install | 8 -------- .../shared-mime-info-CLANG64.install | 8 -------- .../shared-mime-info-CLANGARM64.install | 8 -------- .../shared-mime-info-MINGW32.install | 8 -------- .../shared-mime-info-MINGW64.install | 8 -------- .../shared-mime-info-UCRT64.install | 8 -------- .../update-mime-database.hook.in | 11 +++++++++++ 8 files changed, 25 insertions(+), 51 deletions(-) create mode 100644 mingw-w64-shared-mime-info/update-mime-database.hook.in diff --git a/mingw-w64-shared-mime-info/PKGBUILD b/mingw-w64-shared-mime-info/PKGBUILD index 6b11b8e922..84c7d31ac3 100644 --- a/mingw-w64-shared-mime-info/PKGBUILD +++ b/mingw-w64-shared-mime-info/PKGBUILD @@ -5,7 +5,7 @@ _realname=shared-mime-info pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" pkgver=2.1 -pkgrel=3 +pkgrel=4 pkgdesc="Freedesktop.org Shared MIME Info (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') @@ -24,11 +24,13 @@ url="https://freedesktop.org/Software/shared-mime-info" source=(https://gitlab.freedesktop.org/xdg/shared-mime-info/-/archive/${pkgver}/shared-mime-info-${pkgver}.tar.bz2 program.manifest 001-fix-fdo-generate.patch - 002-fix-meson-build.patch) + 002-fix-meson-build.patch + update-mime-database.hook.in) sha256sums=('37df6475da31a8b5fc63a54ba0770a3eefa0a708b778cb6366dccee96393cb60' 'f93191ad3e217ef9939cf16885ffe50ce920a0b639e183e46415f10df4b4db72' 'e49b3232579dad5da4bbdc68980f30f7f9f36f75a32c6b6fe1357a8b788e1935' - 'ce2e34629e742b6d87377d09ae645ea6e19c997fc761c267266e0d0bb5e797d4') + 'ce2e34629e742b6d87377d09ae645ea6e19c997fc761c267266e0d0bb5e797d4' + 'a3f577d2bcfab00f15ae770bc9808953007488498e2d5a25e5f1be3a2479d29e') options=(!makeflags) prepare() { @@ -67,5 +69,14 @@ package() { sed -e "s|%PROGNAME%|GNU.update-mime-database|g" \ -e "s|%ARCH%|${_arch}|g" \ -i ${pkgdir}${MINGW_PREFIX}/bin/update-mime-database.exe.manifest + + for hook in update-mime-database; do + local hook_path="${srcdir}/${MINGW_PACKAGE_PREFIX}-${hook}.hook"; + cp "${srcdir}/${hook}.hook.in" "${hook_path}" + sed -s "s|@MINGW_HOOK_TARGET_PREFIX@|${MINGW_PREFIX:1}|g" -i "${hook_path}" + sed -s "s|@MINGW_PREFIX@|${MINGW_PREFIX}|g" -i "${hook_path}" + install -Dt "$pkgdir/usr/share/libalpm/hooks" -m644 "${hook_path}" + done + install -Dm644 "${srcdir}/${_realname}-${pkgver}/COPYING" "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/COPYING" } diff --git a/mingw-w64-shared-mime-info/shared-mime-info-CLANG32.install b/mingw-w64-shared-mime-info/shared-mime-info-CLANG32.install index 5509276c7a..77134ac8e9 100644 --- a/mingw-w64-shared-mime-info/shared-mime-info-CLANG32.install +++ b/mingw-w64-shared-mime-info/shared-mime-info-CLANG32.install @@ -1,13 +1,5 @@ MINGW_INSTALL=clang32 -post_install() { - XDG_DATA_DIRS=/${MINGW_INSTALL}/share ${MINGW_INSTALL}/bin/update-mime-database ${MINGW_INSTALL}/share/mime > /dev/null 2>&1 -} - -post_upgrade() { - post_install -} - post_remove() { if [ -d ${MINGW_INSTALL}/share/mime ]; then rm -f ${MINGW_INSTALL}/share/mime/{globs,globs2,icons,treemagic,generic-icons,types,magic,XMLnamespaces,subclasses,aliases,mime.cache} diff --git a/mingw-w64-shared-mime-info/shared-mime-info-CLANG64.install b/mingw-w64-shared-mime-info/shared-mime-info-CLANG64.install index 0b3db1d95a..18c71a60db 100644 --- a/mingw-w64-shared-mime-info/shared-mime-info-CLANG64.install +++ b/mingw-w64-shared-mime-info/shared-mime-info-CLANG64.install @@ -1,13 +1,5 @@ MINGW_INSTALL=clang64 -post_install() { - XDG_DATA_DIRS=/${MINGW_INSTALL}/share ${MINGW_INSTALL}/bin/update-mime-database ${MINGW_INSTALL}/share/mime > /dev/null 2>&1 -} - -post_upgrade() { - post_install -} - post_remove() { if [ -d ${MINGW_INSTALL}/share/mime ]; then rm -f ${MINGW_INSTALL}/share/mime/{globs,globs2,icons,treemagic,generic-icons,types,magic,XMLnamespaces,subclasses,aliases,mime.cache} diff --git a/mingw-w64-shared-mime-info/shared-mime-info-CLANGARM64.install b/mingw-w64-shared-mime-info/shared-mime-info-CLANGARM64.install index e5bcb17d53..f864a46b11 100644 --- a/mingw-w64-shared-mime-info/shared-mime-info-CLANGARM64.install +++ b/mingw-w64-shared-mime-info/shared-mime-info-CLANGARM64.install @@ -1,13 +1,5 @@ MINGW_INSTALL=clangarm64 -post_install() { - XDG_DATA_DIRS=/${MINGW_INSTALL}/share ${MINGW_INSTALL}/bin/update-mime-database ${MINGW_INSTALL}/share/mime > /dev/null 2>&1 -} - -post_upgrade() { - post_install -} - post_remove() { if [ -d ${MINGW_INSTALL}/share/mime ]; then rm -f ${MINGW_INSTALL}/share/mime/{globs,globs2,icons,treemagic,generic-icons,types,magic,XMLnamespaces,subclasses,aliases,mime.cache} diff --git a/mingw-w64-shared-mime-info/shared-mime-info-MINGW32.install b/mingw-w64-shared-mime-info/shared-mime-info-MINGW32.install index 4e22a7aaa1..f460cced93 100644 --- a/mingw-w64-shared-mime-info/shared-mime-info-MINGW32.install +++ b/mingw-w64-shared-mime-info/shared-mime-info-MINGW32.install @@ -1,13 +1,5 @@ MINGW_INSTALL=mingw32 -post_install() { - XDG_DATA_DIRS=/${MINGW_INSTALL}/share ${MINGW_INSTALL}/bin/update-mime-database ${MINGW_INSTALL}/share/mime > /dev/null 2>&1 -} - -post_upgrade() { - post_install -} - post_remove() { if [ -d ${MINGW_INSTALL}/share/mime ]; then rm -f ${MINGW_INSTALL}/share/mime/{globs,globs2,icons,treemagic,generic-icons,types,magic,XMLnamespaces,subclasses,aliases,mime.cache} diff --git a/mingw-w64-shared-mime-info/shared-mime-info-MINGW64.install b/mingw-w64-shared-mime-info/shared-mime-info-MINGW64.install index c9678048eb..b7a82d9193 100644 --- a/mingw-w64-shared-mime-info/shared-mime-info-MINGW64.install +++ b/mingw-w64-shared-mime-info/shared-mime-info-MINGW64.install @@ -1,13 +1,5 @@ MINGW_INSTALL=mingw64 -post_install() { - XDG_DATA_DIRS=/${MINGW_INSTALL}/share ${MINGW_INSTALL}/bin/update-mime-database ${MINGW_INSTALL}/share/mime > /dev/null 2>&1 -} - -post_upgrade() { - post_install -} - post_remove() { if [ -d ${MINGW_INSTALL}/share/mime ]; then rm -f ${MINGW_INSTALL}/share/mime/{globs,globs2,icons,treemagic,generic-icons,types,magic,XMLnamespaces,subclasses,aliases,mime.cache} diff --git a/mingw-w64-shared-mime-info/shared-mime-info-UCRT64.install b/mingw-w64-shared-mime-info/shared-mime-info-UCRT64.install index c5b36468f3..c43e0bad64 100644 --- a/mingw-w64-shared-mime-info/shared-mime-info-UCRT64.install +++ b/mingw-w64-shared-mime-info/shared-mime-info-UCRT64.install @@ -1,13 +1,5 @@ MINGW_INSTALL=ucrt64 -post_install() { - XDG_DATA_DIRS=/${MINGW_INSTALL}/share ${MINGW_INSTALL}/bin/update-mime-database ${MINGW_INSTALL}/share/mime > /dev/null 2>&1 -} - -post_upgrade() { - post_install -} - post_remove() { if [ -d ${MINGW_INSTALL}/share/mime ]; then rm -f ${MINGW_INSTALL}/share/mime/{globs,globs2,icons,treemagic,generic-icons,types,magic,XMLnamespaces,subclasses,aliases,mime.cache} diff --git a/mingw-w64-shared-mime-info/update-mime-database.hook.in b/mingw-w64-shared-mime-info/update-mime-database.hook.in new file mode 100644 index 0000000000..1f88758b15 --- /dev/null +++ b/mingw-w64-shared-mime-info/update-mime-database.hook.in @@ -0,0 +1,11 @@ +[Trigger] +Type = Path +Operation = Install +Operation = Upgrade +Operation = Remove +Target = @MINGW_HOOK_TARGET_PREFIX@/share/mime/packages/*.xml + +[Action] +Description = Updating the MIME type database... +When = PostTransaction +Exec = @MINGW_PREFIX@/bin/update-mime-database @MINGW_PREFIX@/share/mime From 49f0922e5247596c50ef1ee8d37666a363547a09 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sat, 15 Jan 2022 12:07:33 +0100 Subject: [PATCH 014/226] pdcurses: prefix custom global with _ --- mingw-w64-pdcurses/PKGBUILD | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mingw-w64-pdcurses/PKGBUILD b/mingw-w64-pdcurses/PKGBUILD index 4ca083fa47..dc84017f38 100644 --- a/mingw-w64-pdcurses/PKGBUILD +++ b/mingw-w64-pdcurses/PKGBUILD @@ -12,7 +12,7 @@ pkgver=4.3.1 pkgrel=1 pkgdesc="Curses library on the Win32 API (mingw-w64)" # ports that are available with this package -pdcports="wincon wingui" # vt is relevant especially for Windows Terminal - look at this later +_pdcports="wincon wingui" # vt is relevant especially for Windows Terminal - look at this later arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') url="https://www.projectpluto.com/win32a.htm" @@ -41,7 +41,7 @@ build() { # being compiled with x86_64 compiled binaries and # vice-versa. That causes build failures - no surpise. - for pdc_port in ${pdcports}; do + for pdc_port in ${_pdcports}; do cp -rf ${pdc_port} ${pdc_port}-shared-${CARCH} pushd ${pdc_port}-shared-${CARCH} make -f Makefile \ @@ -70,7 +70,7 @@ build() { check() { cd "${srcdir}/PDCursesMod-${pkgver}" - for pdc_port in ${pdcports}; do + for pdc_port in ${_pdcports}; do cp -rf ${pdc_port} ${pdc_port}-shared-${CARCH} pushd ${pdc_port}-shared-${CARCH} make -f Makefile \ @@ -113,7 +113,7 @@ package() { install "wingui-shared-${CARCH}/libpdcurses.dll.a" "${pkgdir}${MINGW_PREFIX}/lib/" # the additional static libraries and actual dll's go in with a rename - for pdc_port in ${pdcports}; do + for pdc_port in ${_pdcports}; do install "${pdc_port}-static-${CARCH}/libpdcurses.a" "${pkgdir}${MINGW_PREFIX}/lib/libpdcurses_${pdc_port}.a" install "${pdc_port}-shared-${CARCH}/libpdcurses.dll" "${pkgdir}${MINGW_PREFIX}/bin/libpdcurses_${pdc_port}.dll" done From ac53a12acb32ebdf20779ee90ec37ac041167cc6 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sat, 15 Jan 2022 14:37:17 +0100 Subject: [PATCH 015/226] meld: Port to meson --- ...nGW-w64-symlinks-and-use-sh-to-spawn.patch | 109 ------------------ mingw-w64-meld3/0001-relocate.patch | 11 ++ mingw-w64-meld3/PKGBUILD | 36 +++--- 3 files changed, 32 insertions(+), 124 deletions(-) delete mode 100644 mingw-w64-meld3/0001-fixes-for-MinGW-w64-symlinks-and-use-sh-to-spawn.patch create mode 100644 mingw-w64-meld3/0001-relocate.patch diff --git a/mingw-w64-meld3/0001-fixes-for-MinGW-w64-symlinks-and-use-sh-to-spawn.patch b/mingw-w64-meld3/0001-fixes-for-MinGW-w64-symlinks-and-use-sh-to-spawn.patch deleted file mode 100644 index 32d0b2064c..0000000000 --- a/mingw-w64-meld3/0001-fixes-for-MinGW-w64-symlinks-and-use-sh-to-spawn.patch +++ /dev/null @@ -1,109 +0,0 @@ ---- meld-3.20.2/meld/build_helpers.py.orig 2020-02-15 23:32:20.000000000 +0100 -+++ meld-3.20.2/meld/build_helpers.py 2020-02-16 09:29:41.241211600 +0100 -@@ -29,6 +29,8 @@ - import os.path - import platform - import sys -+import shutil -+from distutils.util import get_platform - from distutils.log import info - - try: -@@ -46,7 +46,7 @@ - - - def has_help(self): -- return "build_help" in self.distribution.cmdclass and not windows_build -+ return "build_help" in self.distribution.cmdclass and (not windows_build or get_platform().startswith('mingw')) - - - def has_icons(self): -@@ -54,7 +54,7 @@ - - - def has_i18n(self): -- return "build_i18n" in self.distribution.cmdclass and not windows_build -+ return "build_i18n" in self.distribution.cmdclass and (not windows_build or get_platform().startswith('mingw')) - - - def has_data(self): -@@ -122,7 +124,7 @@ - - data_files.append(('share/meld', [target])) - -- if windows_build: -+ if windows_build and not get_platform().startswith('mingw'): - gschemas = self.frozen_gschemas - else: - gschemas = self.gschemas -@@ -196,14 +196,19 @@ - self.spawn(msgfmt) - for page in self.C_PAGES: - itstool = [ -- 'itstool', '-m', mo_file, '-o', build_path, page] -+ 'sh', '-c', -+ "itstool -m %s -o %s %s" % (mo_file, build_path, page)] - self.spawn(itstool) - for extra in self.C_EXTRA: - extra_path = os.path.join( - build_path, os.path.basename(extra)) - if os.path.exists(extra_path): - os.unlink(extra_path) -- os.symlink(os.path.relpath(extra, source_path), extra_path) -+ # symlinks require special privileges on Windows :-( -+ if os.name == 'nt': -+ shutil.copy(extra, extra_path) -+ else: -+ os.symlink(os.path.relpath(extra, source_path), extra_path) - else: - distutils.dir_util.copy_tree(source_path, build_path) - -@@ -314,17 +314,14 @@ - - # If we're on Windows, assume we're building frozen and make a bunch - # of insane assumptions. -- if windows_build: -+ if windows_build and not get_platform().startswith('mingw'): - msgfmt = "C:\\Python27\\Tools\\i18n\\msgfmt" - else: - msgfmt = "msgfmt" - - # Update po(t) files and print a report - # We have to change the working dir to the po dir for intltool -- cmd = [ -- "intltool-update", -- (self.merge_po and "-r" or "-p"), "-g", self.domain -- ] -+ cmd = ["sh", "-c", "intltool-update %s -g %s" % ((self.merge_po and "-r" or "-p"), self.domain)] - wd = os.getcwd() - os.chdir(self.po_dir) - self.spawn(cmd) -@@ -335,7 +335,7 @@ - mo_file = os.path.join(mo_dir, "%s.mo" % self.domain) - if not os.path.exists(mo_dir): - os.makedirs(mo_dir) -- cmd = [msgfmt, po_file, "-o", mo_file] -+ cmd = ["sh", "-c", "%s %s -o %s" % (msgfmt, po_file, mo_file)] - po_mtime = os.path.getmtime(po_file) - mo_mtime = ( - os.path.exists(mo_file) and os.path.getmtime(mo_file) or 0) -@@ -385,8 +385,8 @@ - if file_merged.endswith(".in"): - file_merged = file_merged[:-3] - file_merged = os.path.join(build_target, file_merged) -- cmd = ["intltool-merge", switch, self.po_dir, file, -- file_merged] -+ cmd = ["sh", "-c", "intltool-merge %s %s %s %s" % (switch, self.po_dir, file, -+ file_merged)] - mtime_merged = (os.path.exists(file_merged) and - os.path.getmtime(file_merged) or 0) - mtime_file = os.path.getmtime(file) -@@ -431,7 +431,7 @@ - elif line.startswith('# END'): - end = i - -- if start and end: -+ if start and end and not get_platform().startswith('mingw'): - lines[start:end + 1] = [ - self.data_line % datadir, - self.locale_line % localedir, diff --git a/mingw-w64-meld3/0001-relocate.patch b/mingw-w64-meld3/0001-relocate.patch new file mode 100644 index 0000000000..b30e7d0e7c --- /dev/null +++ b/mingw-w64-meld3/0001-relocate.patch @@ -0,0 +1,11 @@ +--- meld-3.21.0/meld/meson.build.orig 2022-01-15 14:17:00.473000000 +0100 ++++ meld-3.21.0/meld/meson.build 2022-01-15 14:17:32.105354000 +0100 +@@ -90,7 +90,7 @@ + app_config.set('resource_base_id', resource_base_id) + app_config.set('localedir', localedir) + app_config.set('pkgdatadir', pkgdatadir) +-app_config.set('configured', 'True') ++app_config.set('configured', 'False') + + configure_file( + input: 'conf.py.in', diff --git a/mingw-w64-meld3/PKGBUILD b/mingw-w64-meld3/PKGBUILD index ddcc3c6171..3d063a9c29 100644 --- a/mingw-w64-meld3/PKGBUILD +++ b/mingw-w64-meld3/PKGBUILD @@ -10,8 +10,7 @@ pkgdesc="Visual diff and merge tool (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') url="https://meldmerge.org/" -license=("GPL" "LGPL") -options=('strip' 'staticlibs') +license=("spdx:GPL-2.0-or-later") depends=("${MINGW_PACKAGE_PREFIX}-gtk3" "${MINGW_PACKAGE_PREFIX}-gtksourceview4" "${MINGW_PACKAGE_PREFIX}-adwaita-icon-theme" @@ -20,32 +19,39 @@ depends=("${MINGW_PACKAGE_PREFIX}-gtk3" "${MINGW_PACKAGE_PREFIX}-python-gobject") makedepends=("${MINGW_PACKAGE_PREFIX}-gcc" "${MINGW_PACKAGE_PREFIX}-pkg-config" + "${MINGW_PACKAGE_PREFIX}-ninja" "${MINGW_PACKAGE_PREFIX}-itstool" - 'intltool') + "${MINGW_PACKAGE_PREFIX}-meson") source=(https://download.gnome.org/sources/${_realname}/${pkgver%.*}/${_realname}-${pkgver}.tar.xz - '0001-fixes-for-MinGW-w64-symlinks-and-use-sh-to-spawn.patch') + '0001-relocate.patch') sha256sums=('b680114d5ab793324549fd58f4eb202d8e280c0633a0b765ede6dfb34160a81b' - 'dd6bab18d62698b442af7addb27f1e8d2166b68605dedc410da86d56d4d4e96c') + 'e39b45a26867c8233cdf4427ae67deb028bcbfb92321976ca0aaf7c1cbd38f45') prepare() { cd "${srcdir}/${_realname}-${pkgver}" - patch -p1 -i "${srcdir}/0001-fixes-for-MinGW-w64-symlinks-and-use-sh-to-spawn.patch" + + patch -p1 -i "${srcdir}/0001-relocate.patch" } build() { - cd "${srcdir}/${_realname}-${pkgver}" + mkdir -p build-${MSYSTEM} && cd build-${MSYSTEM} - ${MINGW_PREFIX}/bin/python setup.py build + MSYS2_ARG_CONV_EXCL="--prefix=" \ + meson \ + --prefix="${MINGW_PREFIX}" \ + --wrap-mode=nodownload \ + --auto-features=enabled \ + --buildtype=plain \ + ../${_realname}-${pkgver} + + meson compile } package() { - cd "${srcdir}/${_realname}-${pkgver}" + cd "${srcdir}/build-${MSYSTEM}" - MSYS2_ARG_CONV_EXCL="--prefix=;--install-scripts=;--install-platlib=" \ - ${MINGW_PREFIX}/bin/python3 setup.py --no-update-icon-cache --no-compile-schemas \ - install --prefix=${MINGW_PREFIX} --root="${pkgdir}" + DESTDIR="${pkgdir}" meson install - PREFIX_WIN=$(cygpath -m ${MINGW_PREFIX}) - sed -s "s|${PREFIX_WIN}|${MINGW_PREFIX}|g" \ - -i ${pkgdir}${MINGW_PREFIX}/bin/meld + MSYS2_ARG_CONV_EXCL="-d" \ + python -m compileall -q -d"${MINGW_PREFIX}" "${pkgdir}${MINGW_PREFIX}" } From e40e078c76863f325135d547773cb313ad48f22f Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sat, 15 Jan 2022 15:18:30 +0100 Subject: [PATCH 016/226] meld: rebuild --- mingw-w64-meld3/PKGBUILD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mingw-w64-meld3/PKGBUILD b/mingw-w64-meld3/PKGBUILD index 3d063a9c29..ebcab564af 100644 --- a/mingw-w64-meld3/PKGBUILD +++ b/mingw-w64-meld3/PKGBUILD @@ -5,7 +5,7 @@ _realname=meld pkgbase=mingw-w64-${_realname}3 pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}3" pkgver=3.21.0 -pkgrel=6 +pkgrel=7 pkgdesc="Visual diff and merge tool (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') From a3ab9145b70a1a0ca333ffdac21b5e89a1c15fb7 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sat, 15 Jan 2022 20:37:05 +0530 Subject: [PATCH 017/226] bat: update to 0.19.0 --- mingw-w64-bat/PKGBUILD | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mingw-w64-bat/PKGBUILD b/mingw-w64-bat/PKGBUILD index de96db4997..9b4112a8eb 100644 --- a/mingw-w64-bat/PKGBUILD +++ b/mingw-w64-bat/PKGBUILD @@ -3,7 +3,7 @@ _realname=bat pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=0.18.3 +pkgver=0.19.0 pkgrel=1 pkgdesc="Cat clone with syntax highlighting and git integration (mingw-w64)" arch=('any') @@ -16,7 +16,7 @@ makedepends=( depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs") options=('staticlibs' 'strip') source=("${_realname}-${pkgver}.tar.gz::https://github.com/sharkdp/bat/archive/refs/tags/v${pkgver}.tar.gz") -sha256sums=('dff7fa5222f40c7b3c783d3ceb0c3ffb35662f1198b00d785f80f3f1523399dd') +sha256sums=('6a920cad1e7ae069eb9393f5b6883e0a7f2c957186b1075976331daaa5e0468a') prepare() { cp -r ${_realname}-${pkgver} build-${MSYSTEM} @@ -28,11 +28,13 @@ prepare() { build() { ${MINGW_PREFIX}/bin/cargo build \ --release \ + --frozen \ --manifest-path build-${MSYSTEM}/Cargo.toml } package() { ${MINGW_PREFIX}/bin/cargo install \ + --frozen \ --offline \ --no-track \ --path build-${MSYSTEM} \ From b2d46493f832fff3703b972f5d805b3629838eb5 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sat, 15 Jan 2022 20:43:00 +0530 Subject: [PATCH 018/226] delta: update to 0.11.3 --- mingw-w64-delta/PKGBUILD | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/mingw-w64-delta/PKGBUILD b/mingw-w64-delta/PKGBUILD index e198bed3b7..ea81ef59d3 100644 --- a/mingw-w64-delta/PKGBUILD +++ b/mingw-w64-delta/PKGBUILD @@ -3,7 +3,7 @@ _realname=delta pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}") -pkgver=0.7.1 +pkgver=0.11.3 pkgrel=1 pkgdesc='A syntax-highlighting pager for git and diff output (mingw-w64)' arch=('any') @@ -13,27 +13,27 @@ license=('MIT') depends=('git') makedepends=("${MINGW_PACKAGE_PREFIX}-rust") source=("https://github.com/dandavison/delta/archive/refs/tags/$pkgver.tar.gz") -sha256sums=('f432335361088c37f8aa4bb747ba12e1f8eddbbc3ed5c51fdd52d9b96eb22227') +sha256sums=('cf68f43d4d26c10551c0137a7e718719958e52267d83f29a8f7794af12095b9e') prepare() { - cp -r ${_realname}-${pkgver} build-${CARCH} + cp -r ${_realname}-${pkgver} build-${MSYSTEM} ${MINGW_PREFIX}/bin/cargo fetch \ --locked \ - --manifest-path build-${CARCH}/Cargo.toml + --manifest-path build-${MSYSTEM}/Cargo.toml } build() { ${MINGW_PREFIX}/bin/cargo build \ --release \ --frozen \ - --manifest-path build-${CARCH}/Cargo.toml + --manifest-path build-${MSYSTEM}/Cargo.toml } check() { ${MINGW_PREFIX}/bin/cargo test \ --release \ --frozen \ - --manifest-path build-${CARCH}/Cargo.toml + --manifest-path build-${MSYSTEM}/Cargo.toml } package() { @@ -41,7 +41,7 @@ package() { --frozen \ --offline \ --no-track \ - --path build-${CARCH} \ + --path build-${MSYSTEM} \ --root ${pkgdir}${MINGW_PREFIX} install -Dm644 ${_realname}-${pkgver}/LICENSE "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE" From 64b25c715ec0b6222cecc91143afe8e814c1b681 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sat, 15 Jan 2022 20:47:37 +0530 Subject: [PATCH 019/226] dust: update to 0.7.5 --- mingw-w64-dust/PKGBUILD | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mingw-w64-dust/PKGBUILD b/mingw-w64-dust/PKGBUILD index 9dfdec4ca3..afaaf73143 100644 --- a/mingw-w64-dust/PKGBUILD +++ b/mingw-w64-dust/PKGBUILD @@ -3,7 +3,7 @@ _realname=dust pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=0.5.4 +pkgver=0.7.5 pkgrel=1 pkgdesc="A more intuitive version of du in rust (mingw-w64)" arch=('any') @@ -16,7 +16,7 @@ makedepends=( depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs") options=('staticlibs' 'strip') source=("${_realname}-${pkgver}.tar.gz::${url}/archive/refs/tags/v${pkgver}.tar.gz") -sha256sums=('395f0d5f44d5000468dc51a195e4b8e8c0b710a1c75956fb1f9ad08f2fbbc935') +sha256sums=('f892aaf7a0a7852e12d01b2ced6c2484fb6dc5fe7562abdf0c44a2d08aa52618') prepare() { cp -r ${_realname}-${pkgver} build-${CARCH} @@ -28,11 +28,13 @@ prepare() { build() { ${MINGW_PREFIX}/bin/cargo build \ --release \ + --frozen \ --manifest-path build-${CARCH}/Cargo.toml } package() { ${MINGW_PREFIX}/bin/cargo install \ + --frozen \ --offline \ --no-track \ --path build-${CARCH} \ From 2b69bc6a48197c858bdd12f353a7eb288dcb118d Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sat, 15 Jan 2022 20:51:41 +0530 Subject: [PATCH 020/226] hexyl: update to 0.9.0 --- mingw-w64-hexyl/PKGBUILD | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/mingw-w64-hexyl/PKGBUILD b/mingw-w64-hexyl/PKGBUILD index d0f22c6ff5..c5585ded3f 100644 --- a/mingw-w64-hexyl/PKGBUILD +++ b/mingw-w64-hexyl/PKGBUILD @@ -3,7 +3,7 @@ _realname=hexyl pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=0.8.0 +pkgver=0.9.0 pkgrel=1 pkgdesc="A command-line hex viewer" arch=('any') @@ -15,12 +15,8 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-rust") source=( "${url}/archive/v${pkgver}/${_realname}-${pkgver}.tar.gz" ) -sha512sums=( - '9695b57d11b58da3987475982622a19e5a576f2b05df141dc133e0cddf2cf37e37c995ed4b32c8020a7ec08a0c101e7ea3aa6a19a3a21510cffaa033401a8c34' -) -b2sums=( - 'f06101d27956e746e2ac794fc94b5ae7dd98b970b9a4060b6af375365838228a4580c464a7d5edf37ccb2326c1242f43aabee277d3fdfdbe274b73b55f2185ff' -) +sha512sums=('a6fc8315dd115ac4b3e3717ffc6e218bf587749149405250796a435834252382fe51c613688729d7de6911340bf6f2002ae945c0f19b499dacc767e995958ce6') +b2sums=('244c133a06e6432937803e84b2b64cd762a75c05490189533271522a069b68b639e7517904e5585d8b617b68885da1a092d6bdae2d6c15bd53d38bb89d96517f') build() { cd "${srcdir}/${_realname}-${pkgver}" From c2a25d487be38576183cc0da31e64fe546accedb Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sun, 16 Jan 2022 10:45:02 +0100 Subject: [PATCH 021/226] autotools: depend on autoconf-wrapper --- mingw-w64-autotools/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mingw-w64-autotools/PKGBUILD b/mingw-w64-autotools/PKGBUILD index 9a3f386207..d65f15eea7 100644 --- a/mingw-w64-autotools/PKGBUILD +++ b/mingw-w64-autotools/PKGBUILD @@ -3,7 +3,7 @@ _realname=autotools pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=2021.12.15 +pkgver=2022.01.16 pkgrel=1 pkgdesc="A meta package for the GNU autotools build system (mingw-w64)" arch=('any') @@ -11,7 +11,7 @@ mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') license=('GPL') url="https://www.gnu.org/software/automake/manual/html_node/Autotools-Introduction.html" depends=( - 'autoconf' + 'autoconf-wrapper' 'automake-wrapper' 'make' 'libtool' From 7a3ba4f3ef766260af0affbe3e9dd7b4199c2051 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sun, 16 Jan 2022 10:57:10 +0100 Subject: [PATCH 022/226] libbacktrace: use autoconf-wrapper --- mingw-w64-libbacktrace/PKGBUILD | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/mingw-w64-libbacktrace/PKGBUILD b/mingw-w64-libbacktrace/PKGBUILD index 2ed96777aa..7d1691a4c3 100644 --- a/mingw-w64-libbacktrace/PKGBUILD +++ b/mingw-w64-libbacktrace/PKGBUILD @@ -3,7 +3,7 @@ pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}") _commit='1da441c1b020bef75d040dd300814b1a49e0e529' pkgver=r53.1da441c -pkgrel=2 +pkgrel=3 pkgdesc="Library to produce symbolic backtraces (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') @@ -27,8 +27,7 @@ prepare () { # dont allow undefined symbols to build the dll sed -i "87ilibbacktrace_la_LDFLAGS = -no-undefined" Makefile.am - sed -i "s/2.69/2.71/g" config/override.m4 - autoreconf -vfi + WANT_AUTOCONF=2.69 autoreconf -vfi } build() { From b6ce1801d770b2ecb45dfc737c9d5939f96f6388 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sun, 16 Jan 2022 11:00:08 +0100 Subject: [PATCH 023/226] uhttpmock: use autoconf-wrapper --- mingw-w64-uhttpmock/PKGBUILD | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/mingw-w64-uhttpmock/PKGBUILD b/mingw-w64-uhttpmock/PKGBUILD index b53f88d95e..9d714aad38 100644 --- a/mingw-w64-uhttpmock/PKGBUILD +++ b/mingw-w64-uhttpmock/PKGBUILD @@ -4,7 +4,7 @@ _realname=uhttpmock pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" pkgver=0.5.3 -pkgrel=3 +pkgrel=4 arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') pkgdesc="uhttpmock is a HTTP web service mocking project for projects which use libsoup (mingw-w64)" @@ -14,8 +14,7 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-gobject-introspection" "${MINGW_PACKAGE_PREFIX}-vala" "${MINGW_PACKAGE_PREFIX}-autotools" - "${MINGW_PACKAGE_PREFIX}-gtk-doc" - "autoconf2.69") + "${MINGW_PACKAGE_PREFIX}-gtk-doc") options=('strip' 'staticlibs' '!debug') license=("LGPL 2.1") url="https://tecnocode.co.uk/" @@ -31,7 +30,7 @@ prepare() { patch -p1 -i ${srcdir}/0001-wsock.patch patch -p1 -i ${srcdir}/0002-give-cc-to-gir-scanner.all.patch - autoreconf-2.69 -fiv + WANT_AUTOCONF=2.69 autoreconf -fiv } build() { From 5c17a11c24593408caec05d0d34716e991047fba Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sun, 16 Jan 2022 11:40:56 +0100 Subject: [PATCH 024/226] ghdl: makedepend on git --- mingw-w64-ghdl/PKGBUILD | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mingw-w64-ghdl/PKGBUILD b/mingw-w64-ghdl/PKGBUILD index 399cce25b4..d9c78d9be2 100644 --- a/mingw-w64-ghdl/PKGBUILD +++ b/mingw-w64-ghdl/PKGBUILD @@ -2,7 +2,7 @@ _realname=ghdl pkgbase="mingw-w64-${_realname}" pkgname='__placeholder__' pkgver=1.0.0.r964.g70f3c162b -pkgrel=1 +pkgrel=2 pkgdesc='GHDL: the open-source analyzer, compiler, simulator and (experimental) synthesizer for VHDL' arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64') @@ -79,6 +79,7 @@ if [ "${CARCH}" = "x86_64" ]; then "${MINGW_PACKAGE_PREFIX}-clang" "${MINGW_PACKAGE_PREFIX}-autotools" "${MINGW_PACKAGE_PREFIX}-gcc-ada" + "git" ) package() { pkgdesc="$pkgdesc (LLVM backend) (mingw-w64)" @@ -98,6 +99,7 @@ if [ "${CARCH}" = "i686" ]; then "${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-autotools" "${MINGW_PACKAGE_PREFIX}-gcc-ada" + "git" ) package() { pkgdesc="$pkgdesc (mcode backend) (mingw-w64)" From b70f1742d50261cc5c0957d26cbf397119718ea4 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sun, 16 Jan 2022 20:13:55 +0530 Subject: [PATCH 025/226] lsd: update to 0.21.0 --- mingw-w64-lsd/PKGBUILD | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mingw-w64-lsd/PKGBUILD b/mingw-w64-lsd/PKGBUILD index 7c9b5aef40..12b07b6b92 100644 --- a/mingw-w64-lsd/PKGBUILD +++ b/mingw-w64-lsd/PKGBUILD @@ -5,7 +5,7 @@ _realname=lsd pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}") -pkgver=0.20.1 +pkgver=0.21.0 pkgrel=1 pkgdesc="The next gen ls command (mingw-w64)" arch=('any') @@ -16,8 +16,8 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-rust") #depends=() #optdepends=('powerline-fonts: powerline symbols for terminals' # 'nerd-fonts-complete: popular collections such as Font Awesome & fonts such as Hack') -source=("https://github.com/Peltoche/lsd/archive/refs/tags/${pkgver}.tar.gz") -sha256sums=('a2086aa049b8bd21c880f23b21b0e9ef21d3c3829d40641aa8810c08be936c19') +source=("${_realname}-${pkgver}.tar.gz::https://github.com/Peltoche/lsd/archive/refs/tags/${pkgver}.tar.gz") +sha256sums=('f500c18221f9c3fd45f88f6f764001e99cf9d6d74af9172cbb9a9ff32f3e5c7d') prepare() { cd "${srcdir}/${_realname}-${pkgver}" From cb9b9261a1ba29018b507415aa56f8e26afb69a3 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sun, 16 Jan 2022 20:17:45 +0530 Subject: [PATCH 026/226] python-maturin: update to 0.12.6 --- mingw-w64-python-maturin/PKGBUILD | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mingw-w64-python-maturin/PKGBUILD b/mingw-w64-python-maturin/PKGBUILD index 9d9480f3fb..4783fdb00f 100644 --- a/mingw-w64-python-maturin/PKGBUILD +++ b/mingw-w64-python-maturin/PKGBUILD @@ -3,7 +3,7 @@ _realname=maturin pkgbase=mingw-w64-python-${_realname} pkgname=${MINGW_PACKAGE_PREFIX}-python-${_realname} -pkgver=0.12.3 +pkgver=0.12.6 pkgrel=1 pkgdesc='Build and publish crates with pyo3, rust-cpython and cffi bindings as well as rust binaries as python packages (mingw-w64)' url='https://github.com/pyo3/maturin' @@ -16,8 +16,8 @@ depends=( makedepends=( ${MINGW_PACKAGE_PREFIX}-python-setuptools ${MINGW_PACKAGE_PREFIX}-rust) -source=(https://github.com/pyo3/${_realname}/archive/v${pkgver}.tar.gz) -sha256sums=('9a6ee17bdee33aa319941ca5000016397a2d5343a17341406150c4015aa81b75') +source=("${_realname}-${pkgver}.tar.gz::https://github.com/pyo3/${_realname}/archive/v${pkgver}.tar.gz") +sha256sums=('8642e6a64bd088930e666e930102db57b13bc652cc3498f5c2ddebd6359d059a') prepare() { rm -rf python-build-${MSYSTEM} | true From a8d909330956877869ea58d82ee6c9e5afc05966 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sun, 16 Jan 2022 20:22:26 +0530 Subject: [PATCH 027/226] starship: update to 1.2.1 Add libgit2 as dependency Use ZIP file as source --- mingw-w64-starship/PKGBUILD | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/mingw-w64-starship/PKGBUILD b/mingw-w64-starship/PKGBUILD index d6aa66a5b9..74f407c80c 100644 --- a/mingw-w64-starship/PKGBUILD +++ b/mingw-w64-starship/PKGBUILD @@ -3,21 +3,23 @@ _realname=starship pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=1.0.0 +pkgver=1.2.1 pkgrel=1 pkgdesc="The cross-shell prompt for astronauts (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64') url="https://starship.rs" license=(ISC) -depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs") -makedepends=("${MINGW_PACKAGE_PREFIX}-rust") +depends=("${MINGW_PACKAGE_PREFIX}-libgit2") +makedepends=("unzip" "${MINGW_PACKAGE_PREFIX}-rust") options=('staticlibs' 'strip') -source=(git+https://github.com/starship/starship.git#tag=v$pkgver) -sha256sums=('SKIP') +source=("${_realname}-${pkgver}.zip::https://github.com/starship/starship/archive/refs/tags/v${pkgver}.zip") +sha256sums=('18dcbbb15a8e2a6717e245f34f2a86458193b40ec33f461bb09574232362a464') +noextract=("${_realname}-${pkgver}.zip") prepare() { - cp -r ${_realname} build-${MSYSTEM} + unzip -q "${_realname}-${pkgver}.zip" + cp -r ${_realname}-${pkgver} build-${MSYSTEM} ${MINGW_PREFIX}/bin/cargo fetch \ --locked \ --manifest-path build-${MSYSTEM}/Cargo.toml From ca9c783b6975d9d29468867a9efcb3e2ad4afa46 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sun, 16 Jan 2022 20:26:08 +0530 Subject: [PATCH 028/226] tree-sitter: update to 0.20.2 --- mingw-w64-tree-sitter/PKGBUILD | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/mingw-w64-tree-sitter/PKGBUILD b/mingw-w64-tree-sitter/PKGBUILD index 470d7911af..9bdc26692d 100644 --- a/mingw-w64-tree-sitter/PKGBUILD +++ b/mingw-w64-tree-sitter/PKGBUILD @@ -3,7 +3,7 @@ _realname=tree-sitter pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=0.20.1 +pkgver=0.20.2 pkgrel=1 pkgdesc="An incremental parsing system for programming tools (mingw-w64)" arch=('any') @@ -13,14 +13,13 @@ license=('MIT') makedepends=("unzip" "${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-rust") source=("${_realname}-${pkgver}.zip::https://github.com/tree-sitter/tree-sitter/archive/v${pkgver}.zip" 001-mingw-build.patch) -sha256sums=('22d27a22579523fcad4de5fedb83b9a38b7225262b5e8b0ced19247da1d9abab' +sha256sums=('a542f8b3dc73bcf6d4f23c09fd022ec579d0acdb27a3f02b62c75da533adcbc3' '19d2a1608ca5c6138c228b97815c48ac95be2bec1265c207fdc0950a65b8ebad') noextract=("${_realname}-${pkgver}.zip") prepare() { - cd "${srcdir}" [[ -d ${_realname}-${pkgver} ]] && rm -rf ${_realname}-${pkgver} - unzip "${_realname}-${pkgver}.zip" + unzip -q "${_realname}-${pkgver}.zip" cd "${srcdir}/${_realname}-${pkgver}" patch -p1 -i ${srcdir}/001-mingw-build.patch From f8013627e6c6a7f95fe98ae5dc6df2d7b9dd8510 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sun, 16 Jan 2022 19:59:45 +0100 Subject: [PATCH 029/226] expat: Update to 2.4.3 Remove patch, fixed in this new release --- mingw-w64-expat/002-fix-tests.patch | 15 --------------- mingw-w64-expat/PKGBUILD | 10 ++++------ 2 files changed, 4 insertions(+), 21 deletions(-) delete mode 100644 mingw-w64-expat/002-fix-tests.patch diff --git a/mingw-w64-expat/002-fix-tests.patch b/mingw-w64-expat/002-fix-tests.patch deleted file mode 100644 index 5e428f5a41..0000000000 --- a/mingw-w64-expat/002-fix-tests.patch +++ /dev/null @@ -1,15 +0,0 @@ ---- expat-2.2.1/run.sh.in.orig 2017-06-26 02:47:32.339456800 -0400 -+++ expat-2.2.1/run.sh.in 2017-06-26 02:55:25.747253400 -0400 -@@ -4,7 +4,11 @@ - - case "@host@" in - *-mingw*) -- exec wine "$@" -+ if [ "$(uname -o)"=="Msys" ]; then -+ exec "$@" -+ else -+ exec wine "$@" -+ fi - ;; - *) - exec "$@" diff --git a/mingw-w64-expat/PKGBUILD b/mingw-w64-expat/PKGBUILD index 598c63cb97..6900e69506 100644 --- a/mingw-w64-expat/PKGBUILD +++ b/mingw-w64-expat/PKGBUILD @@ -4,7 +4,7 @@ _realname=expat pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=2.4.2 +pkgver=2.4.3 pkgrel=1 pkgdesc="An XML parser library (mingw-w64)" arch=('any') @@ -13,14 +13,12 @@ url="https://libexpat.github.io/" license=(MIT) makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-autotools") options=('strip' 'staticlibs') -source=("https://github.com/libexpat/libexpat/releases/download/R_${pkgver//./_}/expat-${pkgver}.tar.xz" - 002-fix-tests.patch) -sha256sums=('bc2ff58f49c29aac7bff705a6c167a821f26c512079ff08ac432fd0fdc9bb199' - 'abcf34b90ed801cc2810f6d333bca2997aadfe95dbedd1509bd54c14ecca1042') +source=("https://github.com/libexpat/libexpat/releases/download/R_${pkgver//./_}/expat-${pkgver}.tar.xz") +sha256sums=('b1f9f1b1a5ebb0acaa88c9ff79bfa4e145823b78aa5185e5c5d85f060824778a') prepare() { cd "${srcdir}/${_realname}-${pkgver}" - patch -p1 -i "${srcdir}/002-fix-tests.patch" + autoreconf -fiv } From 8c3eb73c11efd6a9ead5f74e4ca8f1e46f96a77e Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sun, 16 Jan 2022 20:09:22 +0100 Subject: [PATCH 030/226] expat: add validpgpkeys --- mingw-w64-expat/PKGBUILD | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mingw-w64-expat/PKGBUILD b/mingw-w64-expat/PKGBUILD index 6900e69506..081df1ab0e 100644 --- a/mingw-w64-expat/PKGBUILD +++ b/mingw-w64-expat/PKGBUILD @@ -13,8 +13,10 @@ url="https://libexpat.github.io/" license=(MIT) makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-autotools") options=('strip' 'staticlibs') -source=("https://github.com/libexpat/libexpat/releases/download/R_${pkgver//./_}/expat-${pkgver}.tar.xz") -sha256sums=('b1f9f1b1a5ebb0acaa88c9ff79bfa4e145823b78aa5185e5c5d85f060824778a') +source=("https://github.com/libexpat/libexpat/releases/download/R_${pkgver//./_}/expat-${pkgver}.tar.xz"{,.asc}) +sha256sums=('b1f9f1b1a5ebb0acaa88c9ff79bfa4e145823b78aa5185e5c5d85f060824778a' + 'SKIP') +validpgpkeys=('3176EF7DB2367F1FCA4F306B1F9B0E909AF37285') # Sebastian Pipping prepare() { cd "${srcdir}/${_realname}-${pkgver}" From 50864c7b5f1994d972ac29f06ffcd7dd31ea8751 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sun, 16 Jan 2022 20:10:10 +0100 Subject: [PATCH 031/226] expat: set an spdx license --- mingw-w64-expat/PKGBUILD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mingw-w64-expat/PKGBUILD b/mingw-w64-expat/PKGBUILD index 081df1ab0e..faa91e8d9c 100644 --- a/mingw-w64-expat/PKGBUILD +++ b/mingw-w64-expat/PKGBUILD @@ -10,7 +10,7 @@ pkgdesc="An XML parser library (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') url="https://libexpat.github.io/" -license=(MIT) +license=('spdx:MIT') makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-autotools") options=('strip' 'staticlibs') source=("https://github.com/libexpat/libexpat/releases/download/R_${pkgver//./_}/expat-${pkgver}.tar.xz"{,.asc}) From f26e5a179a14fa4b5ec7981be05f352262dbac59 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Mon, 17 Jan 2022 13:00:43 +0530 Subject: [PATCH 032/226] totem-pl-parser: Fix clang build Check version script linker option in meson --- .../002-meson-check-version-script.patch | 39 +++++++++++++++++++ mingw-w64-totem-pl-parser/PKGBUILD | 11 ++++-- 2 files changed, 46 insertions(+), 4 deletions(-) create mode 100644 mingw-w64-totem-pl-parser/002-meson-check-version-script.patch diff --git a/mingw-w64-totem-pl-parser/002-meson-check-version-script.patch b/mingw-w64-totem-pl-parser/002-meson-check-version-script.patch new file mode 100644 index 0000000000..5ce6e1f080 --- /dev/null +++ b/mingw-w64-totem-pl-parser/002-meson-check-version-script.patch @@ -0,0 +1,39 @@ +From f4f69c9b99095416aaed18a73f7486ad9eb04aa9 Mon Sep 17 00:00:00 2001 +From: Biswapriyo Nath +Date: Mon, 17 Jan 2022 06:24:32 +0000 +Subject: [PATCH] meson: Check version-script linker option before using + +clang in mingw does not support version script linker option +--- + plparse/meson.build | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/plparse/meson.build b/plparse/meson.build +index cc3b221..eb37956 100644 +--- a/plparse/meson.build ++++ b/plparse/meson.build +@@ -60,7 +60,9 @@ libexecdir = join_paths(get_option('prefix'), get_option('libexecdir')) + plparser_cflags = extra_warning_cflags + ['-DLIBEXECDIR="@0@"'.format(libexecdir)] + + symbol_map = 'plparser.map' +-symbol_link_args = '-Wl,--version-script,@0@/@1@'.format(meson.current_source_dir(), symbol_map) ++symbol_link_args = cc.get_supported_link_arguments([ ++ '-Wl,--version-script,@0@/@1@'.format(meson.current_source_dir(), symbol_map) ++ ]) + + plparser_lib = library('totem-plparser', + plparser_sources, features_h, +@@ -96,7 +98,9 @@ plparser_mini_sources = [ + ] + + mini_symbol_map = 'plparser-mini.map' +-mini_symbol_link_args = '-Wl,--version-script,@0@/@1@'.format(meson.current_source_dir(), mini_symbol_map) ++mini_symbol_link_args = cc.get_supported_link_arguments([ ++ '-Wl,--version-script,@0@/@1@'.format(meson.current_source_dir(), mini_symbol_map) ++ ]) + + plparser_mini_lib = library('totem-plparser-mini', + plparser_mini_sources, +-- +GitLab + diff --git a/mingw-w64-totem-pl-parser/PKGBUILD b/mingw-w64-totem-pl-parser/PKGBUILD index 8e19b9afe4..d5f2b13b3c 100644 --- a/mingw-w64-totem-pl-parser/PKGBUILD +++ b/mingw-w64-totem-pl-parser/PKGBUILD @@ -4,9 +4,9 @@ _realname=totem-pl-parser pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" pkgver=3.26.3 -pkgrel=3 +pkgrel=4 arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') pkgdesc="Simple GObject-based library to parse and save a host of playlist formats (mingw-w64)" options=(strip staticlibs) depends=("${MINGW_PACKAGE_PREFIX}-glib2" @@ -23,9 +23,11 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-meson" license=("LGPL 2") url="https://www.gnome.org" source=(https://download.gnome.org/sources/${_realname}/${pkgver%.*}/${_realname}-${pkgver}.tar.xz - 001-win.patch) + 001-win.patch + 002-meson-check-version-script.patch) sha256sums=('0efd01b8a0a9770d52fe7354d298874ed845449b88f3f78f49290729fc2d448d' - '370eabf2ec0b4d8182e4e5a474c0b63665bc278343243b6ad59f20dc94723771') + '370eabf2ec0b4d8182e4e5a474c0b63665bc278343243b6ad59f20dc94723771' + 'de8c897a3e3d3596b16eace85eee88c67f823c1d1b5dfa31ae9456bccf0ecb0a') noextract=(${_realname}-${pkgver}.tar.xz) prepare() { @@ -33,6 +35,7 @@ prepare() { cd "${srcdir}"/${_realname}-${pkgver} patch -p1 -i ${srcdir}/001-win.patch + patch -p1 -i ${srcdir}/002-meson-check-version-script.patch } build() { From 88e022af7472022b512b2db421c22be21dffaec6 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Mon, 17 Jan 2022 21:53:35 +0530 Subject: [PATCH 033/226] ebook-tools: Add package --- mingw-w64-ebook-tools/PKGBUILD | 56 +++++++++++++++++++++++++++ mingw-w64-ebook-tools/crash-fix.patch | 51 ++++++++++++++++++++++++ 2 files changed, 107 insertions(+) create mode 100644 mingw-w64-ebook-tools/PKGBUILD create mode 100644 mingw-w64-ebook-tools/crash-fix.patch diff --git a/mingw-w64-ebook-tools/PKGBUILD b/mingw-w64-ebook-tools/PKGBUILD new file mode 100644 index 0000000000..6f5a15b076 --- /dev/null +++ b/mingw-w64-ebook-tools/PKGBUILD @@ -0,0 +1,56 @@ +# Maintainer: Biswapriyo Nath + +_realname=ebook-tools +pkgbase=mingw-w64-${_realname} +pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" +pkgver=0.2.2 +pkgrel=1 +pkgdesc="Tools for accessing and converting various ebook file formats (mingw-w64)" +arch=('any') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') +url="https://sourceforge.net/projects/ebook-tools/" +license=('spdx:MIT') +depends=("${MINGW_PACKAGE_PREFIX}-libzip" + "${MINGW_PACKAGE_PREFIX}-libxml2") +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" + "${MINGW_PACKAGE_PREFIX}-cmake" + "${MINGW_PACKAGE_PREFIX}-ninja") +source=("https://downloads.sourceforge.net/${_realname}/${_realname}-${pkgver}.tar.gz" + crash-fix.patch) +sha256sums=('cbc35996e911144fa62925366ad6a6212d6af2588f1e39075954973bbee627ae' + 'ad556ce08909727a6022c9f1632086ccb8623a81a4f39cd34722e22116e14527') + +prepare() { + cd "${_realname}-${pkgver}" + + # https://sourceforge.net/p/ebook-tools/bugs/8/ + patch -p2 -i "${srcdir}/crash-fix.patch" +} + +build() { + declare -a _extra_config + if check_option "debug" "n"; then + _extra_config+=("-DCMAKE_BUILD_TYPE=Release") + else + _extra_config+=("-DCMAKE_BUILD_TYPE=Debug") + fi + + [[ -d "${srcdir}/build-${MSYSTEM}" ]] && rm -rf "${srcdir}/build-${MSYSTEM}" + mkdir -p "${srcdir}/build-${MSYSTEM}" && cd "${srcdir}/build-${MSYSTEM}" + + MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \ + ${MINGW_PREFIX}/bin/cmake.exe \ + -G "Ninja" \ + "${_extra_config[@]}" \ + -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \ + ../${_realname}-${pkgver} + + ${MINGW_PREFIX}/bin/cmake.exe --build ./ +} + +package() { + cd "${srcdir}/build-${MSYSTEM}" + DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake.exe --install ./ + + install -Dm644 "${srcdir}/${_realname}-${pkgver}/LICENSE" "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE" +} diff --git a/mingw-w64-ebook-tools/crash-fix.patch b/mingw-w64-ebook-tools/crash-fix.patch new file mode 100644 index 0000000000..2389d299cf --- /dev/null +++ b/mingw-w64-ebook-tools/crash-fix.patch @@ -0,0 +1,51 @@ +From 93ebf942a90f9c95797838f9adab94bc0378671c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Stefan=20Br=C3=BCns?= +Date: Tue, 30 Apr 2019 16:36:09 +0200 +Subject: [PATCH] Avoid crash on toc.ncx navPoint without navLabel + +Althoug at least one navLabel is required per navPoint, there is no +guarantee it actually exists. + +Avoid crashes due to invalid accesses of a null label in case the toc is +broken, and spew a warning. + +Fixes #8 epub_tit_next crashes on navPoint without navLabel. +--- + ebook-tools/src/libepub/epub.c | 5 +++-- + ebook-tools/src/libepub/opf.c | 4 ++++ + 2 files changed, 7 insertions(+), 2 deletions(-) + +diff --git a/ebook-tools/src/libepub/epub.c b/ebook-tools/src/libepub/epub.c +index d085503..a259d9d 100644 +--- a/ebook-tools/src/libepub/epub.c ++++ b/ebook-tools/src/libepub/epub.c +@@ -469,8 +469,9 @@ int epub_tit_next(struct titerator *tit) { + case TITERATOR_NAVMAP: + case TITERATOR_PAGES: + ti = GetNodeData(curr); +- tit->cache.label = +- (char *)_opf_label_get_by_doc_lang(tit->epub->opf, ti->label); ++ if (ti->label) ++ tit->cache.label = ++ (char *)_opf_label_get_by_doc_lang(tit->epub->opf, ti->label); + + if (! tit->cache.label) + tit->cache.label = (char *)ti->id; +diff --git a/ebook-tools/src/libepub/opf.c b/ebook-tools/src/libepub/opf.c +index 6851db2..09bce9e 100644 +--- a/ebook-tools/src/libepub/opf.c ++++ b/ebook-tools/src/libepub/opf.c +@@ -398,6 +398,10 @@ void _opf_parse_navmap(struct opf *opf, xmlTextReaderPtr reader) { + + } else if (xmlTextReaderNodeType(reader) == 15) { + if (item) { ++ if (! item->label) { ++ _epub_print_debug(opf->epub, DEBUG_WARNING, ++ "- missing navlabel for nav point element"); ++ } + _epub_print_debug(opf->epub, DEBUG_INFO, + "adding nav point item->%s %s (d:%d,p:%d)", + item->id, item->src, item->depth, item->playOrder); +-- +2.21.0 + From ceecae2d3a5c924a740e6eddfe27da39c97f8b0f Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Tue, 18 Jan 2022 01:49:06 +0530 Subject: [PATCH 034/226] uchardet: Fix pkgconfig file This enables relocated directories in pkg-config output. e.g. from -I/mingw64/include/uchardet to -IC:/msys64/mingw64/include/uchardet Also use ninja instead of make. And install license file. --- .../0001-fix-pkgconfig-files.patch | 11 ++++++ mingw-w64-uchardet/PKGBUILD | 35 ++++++++++++------- 2 files changed, 34 insertions(+), 12 deletions(-) create mode 100644 mingw-w64-uchardet/0001-fix-pkgconfig-files.patch diff --git a/mingw-w64-uchardet/0001-fix-pkgconfig-files.patch b/mingw-w64-uchardet/0001-fix-pkgconfig-files.patch new file mode 100644 index 0000000000..5b0257008d --- /dev/null +++ b/mingw-w64-uchardet/0001-fix-pkgconfig-files.patch @@ -0,0 +1,11 @@ +--- a/uchardet.pc.in ++++ b/uchardet.pc.in +@@ -1,5 +1,6 @@ +-libdir=@CMAKE_INSTALL_FULL_LIBDIR@ +-includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ ++prefix=@CMAKE_INSTALL_PREFIX@ ++libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@ ++includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ + + Name: uchardet + Description: An encoding detector library ported from Mozilla diff --git a/mingw-w64-uchardet/PKGBUILD b/mingw-w64-uchardet/PKGBUILD index 249dcf266c..052f22d538 100644 --- a/mingw-w64-uchardet/PKGBUILD +++ b/mingw-w64-uchardet/PKGBUILD @@ -4,32 +4,43 @@ _realname=uchardet pkgbase="mingw-w64-${_realname}" pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" pkgver=0.0.7 -pkgrel=1 +pkgrel=2 pkgdesc="An encoding detector library ported from Mozilla (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') url='https://www.freedesktop.org/wiki/Software/uchardet/' license=('MPL') depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs") -makedepends=("${MINGW_PACKAGE_PREFIX}-cmake" - "${MINGW_PACKAGE_PREFIX}-cc") -source=("https://www.freedesktop.org/software/uchardet/releases/${_realname}-${pkgver}.tar.xz") -sha256sums=('3fc79408ae1d84b406922fa9319ce005631c95ca0f34b205fad867e8b30e45b1') +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" + "${MINGW_PACKAGE_PREFIX}-cmake" + "${MINGW_PACKAGE_PREFIX}-ninja") +source=("https://www.freedesktop.org/software/uchardet/releases/${_realname}-${pkgver}.tar.xz" + 0001-fix-pkgconfig-files.patch) +sha256sums=('3fc79408ae1d84b406922fa9319ce005631c95ca0f34b205fad867e8b30e45b1' + 'c26a5ebdbeea80f7f28d6ea2405ad86a0a7ceb0782f88bd511c05058b81829d7') + +prepare() { + cd "${_realname}-${pkgver}" + patch -p1 -i "${srcdir}/0001-fix-pkgconfig-files.patch" +} build() { - [[ -d "${srcdir}/build-${MINGW_CHOST}" ]] && rm -r "${srcdir}/build-${MINGW_CHOST}" - mkdir "${srcdir}/build-${MINGW_CHOST}" && cd "${srcdir}/build-${MINGW_CHOST}" + [[ -d "${srcdir}/build-${MSYSTEM}" ]] && rm -r "${srcdir}/build-${MSYSTEM}" + mkdir "${srcdir}/build-${MSYSTEM}" && cd "${srcdir}/build-${MSYSTEM}" MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \ - ${MINGW_PREFIX}/bin/cmake \ - -G"MSYS Makefiles" \ + ${MINGW_PREFIX}/bin/cmake.exe \ + -G"Ninja" \ -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \ -DCMAKE_BUILD_TYPE=Release \ ../${_realname}-${pkgver} - make + + ${MINGW_PREFIX}/bin/cmake.exe --build ./ } package() { - cd "${srcdir}/build-${MINGW_CHOST}" - make DESTDIR="$pkgdir" install + cd "${srcdir}/build-${MSYSTEM}" + DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake.exe --install ./ + + install -Dm644 "${srcdir}/${_realname}-${pkgver}/COPYING" "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/COPYING" } From e104dc719dd5714be8fb3ecbe5f00f7386bc14fb Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Tue, 18 Jan 2022 09:48:54 +0100 Subject: [PATCH 035/226] meson: Update to 0.61.1 --- mingw-w64-meson/PKGBUILD | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mingw-w64-meson/PKGBUILD b/mingw-w64-meson/PKGBUILD index 1c9e825f2a..dfd41c2c46 100644 --- a/mingw-w64-meson/PKGBUILD +++ b/mingw-w64-meson/PKGBUILD @@ -3,13 +3,13 @@ _realname=meson pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=0.60.3 +pkgver=0.61.1 pkgrel=1 pkgdesc="High-productivity build system (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') url="https://mesonbuild.com/" -license=("Apache 2") +license=("spdx:Apache-2.0") options=('strip' 'staticlibs') depends=("${MINGW_PACKAGE_PREFIX}-python" "${MINGW_PACKAGE_PREFIX}-ninja") @@ -19,7 +19,7 @@ source=("https://github.com/mesonbuild/${_realname}/releases/download/${pkgver}/ '0002-Default-to-sys.prefix-as-the-default-prefix.patch' '0004-fix-gtk-doc.patch' 'install-man.patch') -sha256sums=('87ca5fa9358a01864529392bd64e027158eb94afca7c7766b1866ef27eccb98e' +sha256sums=('feb2cefb325b437dbf36146df7c6b87688ddff0b0205caa31dc64055c6da410c' '5805aed0a117536eb16dd8eef978c6be57c2471b655ede63e25517c28b4f4cf0' '675e79a0fc78b4236f5b803ffd2e745cb2ff125c9b4a03657773915183a4e19a' '0f9177102976bbcbdf50c1da49842783a0c77be939e839f1bf91dcaba6a5cdee' From 0049ddcce970a65c047f75d740a0c18d99896909 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Tue, 18 Jan 2022 15:45:10 +0530 Subject: [PATCH 036/226] gexiv2: update to 0.14.0 Remove unknown meson option python2_girdir --- mingw-w64-gegl/PKGBUILD | 2 +- mingw-w64-gexiv2/PKGBUILD | 5 ++--- mingw-w64-gimp/PKGBUILD | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/mingw-w64-gegl/PKGBUILD b/mingw-w64-gegl/PKGBUILD index 353345880b..899e09968e 100644 --- a/mingw-w64-gegl/PKGBUILD +++ b/mingw-w64-gegl/PKGBUILD @@ -5,7 +5,7 @@ _realname=gegl pkgbase="mingw-w64-${_realname}" pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" pkgver=0.4.34 -pkgrel=2 +pkgrel=3 pkgdesc="Generic Graphics Library (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') diff --git a/mingw-w64-gexiv2/PKGBUILD b/mingw-w64-gexiv2/PKGBUILD index 57eb059232..56fc11ee0e 100644 --- a/mingw-w64-gexiv2/PKGBUILD +++ b/mingw-w64-gexiv2/PKGBUILD @@ -3,7 +3,7 @@ _realname=gexiv2 pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=0.12.3 +pkgver=0.14.0 pkgrel=1 arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') @@ -21,7 +21,7 @@ options=('strip' 'staticlibs') license=("LGPL 2.1") url="https://wiki.gnome.org/Projects/gexiv2" source=(https://download.gnome.org/sources/${_realname}/${pkgver%.*}/${_realname}-${pkgver}.tar.xz) -sha256sums=('d23b7972a2fc6f840150bad1ed79c1cbec672951e180c1e1ec33ca6c730c59f3') +sha256sums=('e58279a6ff20b6f64fa499615da5e9b57cf65ba7850b72fafdf17221a9d6d69e') prepare() { cd ${_realname}-${pkgver} @@ -40,7 +40,6 @@ build() { ${MINGW_PREFIX}/bin/meson.exe \ --prefix="${MINGW_PREFIX}" \ --buildtype plain \ - -Dpython2_girdir=no \ -Dpython3_girdir="${_overrides}" \ -Dgtk_doc=true \ ../${_realname}-${pkgver} diff --git a/mingw-w64-gimp/PKGBUILD b/mingw-w64-gimp/PKGBUILD index 26f7654c60..c35d550df0 100644 --- a/mingw-w64-gimp/PKGBUILD +++ b/mingw-w64-gimp/PKGBUILD @@ -4,7 +4,7 @@ _realname=gimp pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}") pkgver=2.10.30 -pkgrel=1 +pkgrel=2 pkgdesc="GNU Image Manipulation Program (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') From e2f8a57addb1bdcd26700e4497cbf634d13c56aa Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Tue, 18 Jan 2022 21:48:59 +0100 Subject: [PATCH 037/226] dosbox: Update to 0.78.1 --- mingw-w64-dosbox/PKGBUILD | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mingw-w64-dosbox/PKGBUILD b/mingw-w64-dosbox/PKGBUILD index 41cb95b01b..8159f805b0 100644 --- a/mingw-w64-dosbox/PKGBUILD +++ b/mingw-w64-dosbox/PKGBUILD @@ -4,13 +4,13 @@ _realname=dosbox _forkname=dosbox-staging pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}") -pkgver=0.77.0 +pkgver=0.78.1 pkgrel=1 pkgdesc="Emulator with builtin DOS for running DOS Games (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') url='https://github.com/dosbox-staging/dosbox-staging' -license=('GPL2') +license=('spdx:GPL-2.0-or-later') depends=( "${MINGW_PACKAGE_PREFIX}-fluidsynth" "${MINGW_PACKAGE_PREFIX}-libpng" @@ -18,6 +18,7 @@ depends=( "${MINGW_PACKAGE_PREFIX}-SDL2" "${MINGW_PACKAGE_PREFIX}-SDL2_net" "${MINGW_PACKAGE_PREFIX}-zlib" + "${MINGW_PACKAGE_PREFIX}-libslirp" "${MINGW_PACKAGE_PREFIX}-munt-mt32emu" ) makedepends=("${MINGW_PACKAGE_PREFIX}-meson" @@ -25,7 +26,7 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-meson" "${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-pkg-config") source=("https://github.com/dosbox-staging/dosbox-staging/archive/refs/tags/v${pkgver}.tar.gz") -sha256sums=('85e1739f5dfd7d96b752b2b0e12aad6f95c7770b47fcdaf978d4128d7890d986') +sha256sums=('dcd93ce27f5f3f31e7022288f7cbbc1f1f6eb7cc7150c2c085eeff8ba76c3690') prepare() { cd "${srcdir}/${_forkname}-${pkgver}" From a92f50f7441a8d85eb243f80640562f4546d16a2 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Wed, 19 Jan 2022 11:16:43 +0530 Subject: [PATCH 038/226] gegl: Add openmp makedepends --- mingw-w64-gegl/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mingw-w64-gegl/PKGBUILD b/mingw-w64-gegl/PKGBUILD index 899e09968e..22bb8514f4 100644 --- a/mingw-w64-gegl/PKGBUILD +++ b/mingw-w64-gegl/PKGBUILD @@ -5,7 +5,7 @@ _realname=gegl pkgbase="mingw-w64-${_realname}" pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" pkgver=0.4.34 -pkgrel=3 +pkgrel=4 pkgdesc="Generic Graphics Library (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') @@ -20,7 +20,7 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-asciidoc" "${MINGW_PACKAGE_PREFIX}-ruby" "${MINGW_PACKAGE_PREFIX}-vala" "${MINGW_PACKAGE_PREFIX}-meson" - "${MINGW_PACKAGE_PREFIX}-ninja") + "${MINGW_PACKAGE_PREFIX}-openmp") depends=("${MINGW_PACKAGE_PREFIX}-babl" "${MINGW_PACKAGE_PREFIX}-cairo" "${MINGW_PACKAGE_PREFIX}-exiv2" From ef882dc829545ff8b041d152dcefff46f7ca3637 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Wed, 19 Jan 2022 09:12:59 +0100 Subject: [PATCH 039/226] python-lxml: Update to 4.7.1 --- mingw-w64-python-lxml/PKGBUILD | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mingw-w64-python-lxml/PKGBUILD b/mingw-w64-python-lxml/PKGBUILD index 58a7269ea6..92ba6a35de 100644 --- a/mingw-w64-python-lxml/PKGBUILD +++ b/mingw-w64-python-lxml/PKGBUILD @@ -4,8 +4,8 @@ _realname=lxml pkgbase=mingw-w64-python-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") -pkgver=4.6.2 -pkgrel=2 +pkgver=4.7.1 +pkgrel=1 provides=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}=${pkgver}" "${MINGW_PACKAGE_PREFIX}-python-${_realname}-docs") conflicts=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}" @@ -33,7 +33,7 @@ source=("https://github.com/lxml/lxml/archive/${_realname}-${pkgver}.tar.gz" "mingw-python-fix.patch" "use-distutils-get_platform.patch" "allow-pass-path-to-rst2s5.patch") -sha256sums=('31eff968b5fb7f0dc6f2dedff071f179c17df5ada2c3fd613f79a5f14a94490a' +sha256sums=('c495545191397b26ce33a2749e13a64bc2b44894e39fd92c4243922e36f7d5a9' '032bbca0c8cb4d24665162722736e7afcc3c49b84d0bc3d4996a5c9089bd24b4' 'd50fefc47295d8c6eecf1ca42d03af43dc79d3debb52caf8edbed3b56df2f672' 'ec4de74d02cc4f0d09c029c7e36063ff833e378b36993e8bb57b852ac5648b7c') From 51d5e2ea82a7540d91cc4161e890bc19eab85bf3 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Wed, 19 Jan 2022 09:26:23 +0100 Subject: [PATCH 040/226] libxml2: backport fix for lxml Fixes #10576 Fixes #8864 --- .../0028-work-around-lxml-api-abuse.patch | 211 ++++++++++++++++++ mingw-w64-libxml2/PKGBUILD | 9 +- 2 files changed, 219 insertions(+), 1 deletion(-) create mode 100644 mingw-w64-libxml2/0028-work-around-lxml-api-abuse.patch diff --git a/mingw-w64-libxml2/0028-work-around-lxml-api-abuse.patch b/mingw-w64-libxml2/0028-work-around-lxml-api-abuse.patch new file mode 100644 index 0000000000..8a9de7fc2b --- /dev/null +++ b/mingw-w64-libxml2/0028-work-around-lxml-api-abuse.patch @@ -0,0 +1,211 @@ +From 7955b0d6fbbe49392ccc2e511edd00fbbfcb5a10 Mon Sep 17 00:00:00 2001 +From: Nick Wellnhofer +Date: Tue, 18 May 2021 20:08:28 +0200 +Subject: [PATCH] Work around lxml API abuse + +Make xmlNodeDumpOutput and htmlNodeDumpFormatOutput work with corrupted +parent pointers. This used to work with the old recursive code but the +non-recursive rewrite required parent pointers to be set correctly. + +Unfortunately, lxml relies on the old behavior and passes subtrees with +a corrupted structure. Fall back to a recursive function call if an +invalid parent pointer is detected. + +Fixes #255. +--- + HTMLtree.c | 46 ++++++++++++++++++++++++++++------------------ + xmlsave.c | 31 +++++++++++++++++++++---------- + 2 files changed, 49 insertions(+), 28 deletions(-) + +diff --git a/HTMLtree.c b/HTMLtree.c +index 24434d453..bdd639c7f 100644 +--- a/HTMLtree.c ++++ b/HTMLtree.c +@@ -744,7 +744,7 @@ void + htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, + xmlNodePtr cur, const char *encoding ATTRIBUTE_UNUSED, + int format) { +- xmlNodePtr root; ++ xmlNodePtr root, parent; + xmlAttrPtr attr; + const htmlElemDesc * info; + +@@ -755,6 +755,7 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, + } + + root = cur; ++ parent = cur->parent; + while (1) { + switch (cur->type) { + case XML_HTML_DOCUMENT_NODE: +@@ -762,13 +763,25 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, + if (((xmlDocPtr) cur)->intSubset != NULL) { + htmlDtdDumpOutput(buf, (xmlDocPtr) cur, NULL); + } +- if (cur->children != NULL) { ++ /* Always validate cur->parent when descending. */ ++ if ((cur->parent == parent) && (cur->children != NULL)) { ++ parent = cur; + cur = cur->children; + continue; + } + break; + + case XML_ELEMENT_NODE: ++ /* ++ * Some users like lxml are known to pass nodes with a corrupted ++ * tree structure. Fall back to a recursive call to handle this ++ * case. ++ */ ++ if ((cur->parent != parent) && (cur->children != NULL)) { ++ htmlNodeDumpFormatOutput(buf, doc, cur, encoding, format); ++ break; ++ } ++ + /* + * Get specific HTML info for that node. + */ +@@ -817,6 +830,7 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, + (cur->name != NULL) && + (cur->name[0] != 'p')) /* p, pre, param */ + xmlOutputBufferWriteString(buf, "\n"); ++ parent = cur; + cur = cur->children; + continue; + } +@@ -825,9 +839,9 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, + (info != NULL) && (!info->isinline)) { + if ((cur->next->type != HTML_TEXT_NODE) && + (cur->next->type != HTML_ENTITY_REF_NODE) && +- (cur->parent != NULL) && +- (cur->parent->name != NULL) && +- (cur->parent->name[0] != 'p')) /* p, pre, param */ ++ (parent != NULL) && ++ (parent->name != NULL) && ++ (parent->name[0] != 'p')) /* p, pre, param */ + xmlOutputBufferWriteString(buf, "\n"); + } + +@@ -842,9 +856,9 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, + break; + if (((cur->name == (const xmlChar *)xmlStringText) || + (cur->name != (const xmlChar *)xmlStringTextNoenc)) && +- ((cur->parent == NULL) || +- ((xmlStrcasecmp(cur->parent->name, BAD_CAST "script")) && +- (xmlStrcasecmp(cur->parent->name, BAD_CAST "style"))))) { ++ ((parent == NULL) || ++ ((xmlStrcasecmp(parent->name, BAD_CAST "script")) && ++ (xmlStrcasecmp(parent->name, BAD_CAST "style"))))) { + xmlChar *buffer; + + buffer = xmlEncodeEntitiesReentrant(doc, cur->content); +@@ -902,13 +916,9 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, + break; + } + +- /* +- * The parent should never be NULL here but we want to handle +- * corrupted documents gracefully. +- */ +- if (cur->parent == NULL) +- return; +- cur = cur->parent; ++ cur = parent; ++ /* cur->parent was validated when descending. */ ++ parent = cur->parent; + + if ((cur->type == XML_HTML_DOCUMENT_NODE) || + (cur->type == XML_DOCUMENT_NODE)) { +@@ -939,9 +949,9 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, + (cur->next != NULL)) { + if ((cur->next->type != HTML_TEXT_NODE) && + (cur->next->type != HTML_ENTITY_REF_NODE) && +- (cur->parent != NULL) && +- (cur->parent->name != NULL) && +- (cur->parent->name[0] != 'p')) /* p, pre, param */ ++ (parent != NULL) && ++ (parent->name != NULL) && ++ (parent->name[0] != 'p')) /* p, pre, param */ + xmlOutputBufferWriteString(buf, "\n"); + } + } +diff --git a/xmlsave.c b/xmlsave.c +index 61a40459b..aedbd5e70 100644 +--- a/xmlsave.c ++++ b/xmlsave.c +@@ -847,7 +847,7 @@ htmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) { + static void + xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) { + int format = ctxt->format; +- xmlNodePtr tmp, root, unformattedNode = NULL; ++ xmlNodePtr tmp, root, unformattedNode = NULL, parent; + xmlAttrPtr attr; + xmlChar *start, *end; + xmlOutputBufferPtr buf; +@@ -856,6 +856,7 @@ xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) { + buf = ctxt->buf; + + root = cur; ++ parent = cur->parent; + while (1) { + switch (cur->type) { + case XML_DOCUMENT_NODE: +@@ -868,7 +869,9 @@ xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) { + break; + + case XML_DOCUMENT_FRAG_NODE: +- if (cur->children != NULL) { ++ /* Always validate cur->parent when descending. */ ++ if ((cur->parent == parent) && (cur->children != NULL)) { ++ parent = cur; + cur = cur->children; + continue; + } +@@ -887,7 +890,18 @@ xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) { + break; + + case XML_ELEMENT_NODE: +- if ((cur != root) && (ctxt->format == 1) && (xmlIndentTreeOutput)) ++ /* ++ * Some users like lxml are known to pass nodes with a corrupted ++ * tree structure. Fall back to a recursive call to handle this ++ * case. ++ */ ++ if ((cur->parent != parent) && (cur->children != NULL)) { ++ xmlNodeDumpOutputInternal(ctxt, cur); ++ break; ++ } ++ ++ if ((ctxt->level > 0) && (ctxt->format == 1) && ++ (xmlIndentTreeOutput)) + xmlOutputBufferWrite(buf, ctxt->indent_size * + (ctxt->level > ctxt->indent_nr ? + ctxt->indent_nr : ctxt->level), +@@ -942,6 +956,7 @@ xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) { + xmlOutputBufferWrite(buf, 1, ">"); + if (ctxt->format == 1) xmlOutputBufferWrite(buf, 1, "\n"); + if (ctxt->level >= 0) ctxt->level++; ++ parent = cur; + cur = cur->children; + continue; + } +@@ -1058,13 +1073,9 @@ xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) { + break; + } + +- /* +- * The parent should never be NULL here but we want to handle +- * corrupted documents gracefully. +- */ +- if (cur->parent == NULL) +- return; +- cur = cur->parent; ++ cur = parent; ++ /* cur->parent was validated when descending. */ ++ parent = cur->parent; + + if (cur->type == XML_ELEMENT_NODE) { + if (ctxt->level > 0) ctxt->level--; +-- +GitLab + diff --git a/mingw-w64-libxml2/PKGBUILD b/mingw-w64-libxml2/PKGBUILD index 131b562970..305f3e6213 100644 --- a/mingw-w64-libxml2/PKGBUILD +++ b/mingw-w64-libxml2/PKGBUILD @@ -6,7 +6,7 @@ _realname=libxml2 pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" pkgver=2.9.12 -pkgrel=3 +pkgrel=4 arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') pkgdesc="XML parsing library, version 2 (mingw-w64)" @@ -33,6 +33,7 @@ source=("http://xmlsoft.org/sources/${_realname}-${pkgver}.tar.gz" 0026-mingw-relocate.patch libxml2-2.9.9-python.patch 0027-decoding-segfault.patch + 0028-work-around-lxml-api-abuse.patch libxml2-disable-version-script.patch) sha256sums=('c8d6681e38c56f172892c85ddc0852e1fd4b53b4209e7f4ebf17f7e2eae71d92' '9b61db9f5dbffa545f4b8d78422167083a8568c59bd1129f94138f936cf6fc1f' @@ -46,6 +47,7 @@ sha256sums=('c8d6681e38c56f172892c85ddc0852e1fd4b53b4209e7f4ebf17f7e2eae71d92' 'e98c2f5ae8cdbcf54354a833c550c26563c1ebdfbf92cc790d40eafadb72f985' '7b9bc59b174da93a547429b2f751047c758657953f6e2fb398e73b5ebf0f55e3' '0391a4b267ba7251ca74ff2e98bf4c0332a14b618e8147a9341ec5617e45d9d9' + '6af21506236a16c154d1e72f987e8a0fb1bc2ea01f0fd6911eda1191df4f544c' '96f5b4de10b56563da0cb3c8b9ee9a88f89e5385acd66cadf4acab9628dc9848') # Helper macros to help make tasks easier # @@ -82,6 +84,11 @@ prepare() { apply_patch_with_msg \ 0027-decoding-segfault.patch + # https://gitlab.gnome.org/nwellnhof/libxml2/-/commit/7955b0d6fbbe49392ccc + # https://github.com/msys2/MINGW-packages/issues/10576 + apply_patch_with_msg \ + 0028-work-around-lxml-api-abuse.patch + libtoolize --copy --force aclocal automake --add-missing From c84c00ce1bb0d71c5fb35672dc9a7bedd14e13eb Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Wed, 19 Jan 2022 15:08:19 +0530 Subject: [PATCH 041/226] libxml2: Fix xml2-config to return Windows style path --- mingw-w64-libxml2/0029-xml2-config-win-paths.patch | 10 ++++++++++ mingw-w64-libxml2/PKGBUILD | 8 +++++++- 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 mingw-w64-libxml2/0029-xml2-config-win-paths.patch diff --git a/mingw-w64-libxml2/0029-xml2-config-win-paths.patch b/mingw-w64-libxml2/0029-xml2-config-win-paths.patch new file mode 100644 index 0000000000..61bb70e4b2 --- /dev/null +++ b/mingw-w64-libxml2/0029-xml2-config-win-paths.patch @@ -0,0 +1,10 @@ +--- a/xml2-config.in ++++ b/xml2-config.in +@@ -1,6 +1,6 @@ + #! /bin/sh + +-prefix=@prefix@ ++prefix="$(cygpath -m "@prefix@")" + exec_prefix=@exec_prefix@ + includedir=@includedir@ + libdir=@libdir@ diff --git a/mingw-w64-libxml2/PKGBUILD b/mingw-w64-libxml2/PKGBUILD index 305f3e6213..12a10f2ccd 100644 --- a/mingw-w64-libxml2/PKGBUILD +++ b/mingw-w64-libxml2/PKGBUILD @@ -6,7 +6,7 @@ _realname=libxml2 pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" pkgver=2.9.12 -pkgrel=4 +pkgrel=5 arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') pkgdesc="XML parsing library, version 2 (mingw-w64)" @@ -34,6 +34,7 @@ source=("http://xmlsoft.org/sources/${_realname}-${pkgver}.tar.gz" libxml2-2.9.9-python.patch 0027-decoding-segfault.patch 0028-work-around-lxml-api-abuse.patch + 0029-xml2-config-win-paths.patch libxml2-disable-version-script.patch) sha256sums=('c8d6681e38c56f172892c85ddc0852e1fd4b53b4209e7f4ebf17f7e2eae71d92' '9b61db9f5dbffa545f4b8d78422167083a8568c59bd1129f94138f936cf6fc1f' @@ -48,6 +49,7 @@ sha256sums=('c8d6681e38c56f172892c85ddc0852e1fd4b53b4209e7f4ebf17f7e2eae71d92' '7b9bc59b174da93a547429b2f751047c758657953f6e2fb398e73b5ebf0f55e3' '0391a4b267ba7251ca74ff2e98bf4c0332a14b618e8147a9341ec5617e45d9d9' '6af21506236a16c154d1e72f987e8a0fb1bc2ea01f0fd6911eda1191df4f544c' + '278b4531da3d2aabda080c412c5122b471202dd6df67768b38bb0c31c7a0e508' '96f5b4de10b56563da0cb3c8b9ee9a88f89e5385acd66cadf4acab9628dc9848') # Helper macros to help make tasks easier # @@ -89,6 +91,10 @@ prepare() { apply_patch_with_msg \ 0028-work-around-lxml-api-abuse.patch + # https://github.com/msys2/MINGW-packages/issues/10577 + apply_patch_with_msg \ + 0029-xml2-config-win-paths.patch + libtoolize --copy --force aclocal automake --add-missing From 784e3507bb8b895c627986a4e7751739c036691a Mon Sep 17 00:00:00 2001 From: Richard Copley Date: Wed, 19 Jan 2022 11:56:28 +0000 Subject: [PATCH 042/226] cppcoro: Fix sed invocation --- mingw-w64-cppcoro/PKGBUILD | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/mingw-w64-cppcoro/PKGBUILD b/mingw-w64-cppcoro/PKGBUILD index d825cebfd0..ac20eb7f69 100644 --- a/mingw-w64-cppcoro/PKGBUILD +++ b/mingw-w64-cppcoro/PKGBUILD @@ -3,7 +3,7 @@ _realname=cppcoro pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" pkgver=r390.a87e97f -pkgrel=1 +pkgrel=2 pkgdesc=" A library of C++ coroutine abstractions for the coroutines TS (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') @@ -21,19 +21,9 @@ pkgver() { build(){ # replace all std::experimental with std -function scan_dir(){ - for file in `ls $1` - do - if [ -d $1"/"$file ] - then - scan_dir $1"/"$file - else - sed 's/std::experimental/std/g' $1"/"$file | sed 's/experimental\///g' > $1"/"$file - fi - done -} -scan_dir "${srcdir}/cppcoro/include/cppcoro/" + find "${srcdir}/cppcoro/include/cppcoro/" -type f -exec sed -e 's/std::experimental/std/g' -e 's|experimental/||g' -i \{\} \+ } + package() { mkdir -p "${pkgdir}${MINGW_PREFIX}/" cp -r "${srcdir}/cppcoro/include/" "${pkgdir}${MINGW_PREFIX}/include/" From 3324624ff91ad8b13f8f4a15148c38d3d1ed09c0 Mon Sep 17 00:00:00 2001 From: Tao Zuhong Date: Wed, 19 Jan 2022 20:30:32 +0800 Subject: [PATCH 043/226] Add Libadwaita 1.0 --- mingw-w64-libadwaita/PKGBUILD | 48 +++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 mingw-w64-libadwaita/PKGBUILD diff --git a/mingw-w64-libadwaita/PKGBUILD b/mingw-w64-libadwaita/PKGBUILD new file mode 100644 index 0000000000..04921022d0 --- /dev/null +++ b/mingw-w64-libadwaita/PKGBUILD @@ -0,0 +1,48 @@ +# Maintainer: Taozuhong + +_realname=libadwaita +pkgbase=mingw-w64-${_realname} +pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" +pkgver=1.0.0 +pkgrel=1 +pkgdesc="Building blocks for modern GNOME applications (mingw-w64)" +url="https://gitlab.gnome.org/GNOME/libadwaita" +license=("LGPL2.1+") +arch=('any') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') +depends=("${MINGW_PACKAGE_PREFIX}-glib2" + "${MINGW_PACKAGE_PREFIX}-gtk4") +makedepends=("${MINGW_PACKAGE_PREFIX}-glade" + "${MINGW_PACKAGE_PREFIX}-meson" + "${MINGW_PACKAGE_PREFIX}-ninja" + "${MINGW_PACKAGE_PREFIX}-pkg-config" + "${MINGW_PACKAGE_PREFIX}-vala" + "${MINGW_PACKAGE_PREFIX}-gobject-introspection") +options=('strip' 'staticlibs' '!debug') +source=("https://download.gnome.org/sources/libadwaita/${pkgver:0:3}/libadwaita-${pkgver}.tar.xz") +sha256sums=('722d316492f7d80b66cbc97e95ce07c0ef2bfd6500a8ffe44b89070b06eefba3') + +prepare() { + cd "${srcdir}/${_realname}-${pkgver}" +} + +build() { + [[ -d "${srcdir}"/build-${CARCH} ]] && rm -rf "${srcdir}"/build-${CARCH} + mkdir "${srcdir}"/build-${CARCH} && cd "${srcdir}"/build-${CARCH} + + MSYS2_ARG_CONV_EXCL="--prefix=" \ + ${MINGW_PREFIX}/bin/meson \ + --prefix="${MINGW_PREFIX}" \ + --buildtype=plain \ + -Dexamples=true \ + -Dgtk_doc=false \ + -Dtests=false \ + ../${_realname}-${pkgver} + + ${MINGW_PREFIX}/bin/ninja +} + +package() { + cd "${srcdir}"/build-${CARCH} + DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/ninja install +} From 12bfb0543794dc57b3e32bd90752c7e986640260 Mon Sep 17 00:00:00 2001 From: Naveen M K Date: Wed, 19 Jan 2022 16:47:45 +0530 Subject: [PATCH 044/226] vapoursynth: use setup.py for building python extension Fixes https://github.com/msys2/MINGW-packages/issues/10528 --- .../0003-no-registry-setup-py.patch | 20 +++++++++++++++++++ mingw-w64-vapoursynth/PKGBUILD | 19 +++++++++++------- 2 files changed, 32 insertions(+), 7 deletions(-) create mode 100644 mingw-w64-vapoursynth/0003-no-registry-setup-py.patch diff --git a/mingw-w64-vapoursynth/0003-no-registry-setup-py.patch b/mingw-w64-vapoursynth/0003-no-registry-setup-py.patch new file mode 100644 index 0000000000..8207f99e86 --- /dev/null +++ b/mingw-w64-vapoursynth/0003-no-registry-setup-py.patch @@ -0,0 +1,20 @@ +--- a/setup.py.orig 2022-01-19 16:37:13.715599300 +0530 ++++ b/setup.py 2022-01-19 16:37:53.038319700 +0530 +@@ -1,5 +1,6 @@ + #!/usr/bin/env python + ++import sys + from platform import architecture + from shutil import which + from os import curdir +@@ -14,7 +15,7 @@ + library_dirs = [curdir, "build"] + + is_portable = False +-if is_win: ++if is_win and "gcc" not in sys.version.lower(): + if is_64: + library_dirs.append(join("msvc_project", "x64", "Release")) + lib_suffix = "lib64" + + diff --git a/mingw-w64-vapoursynth/PKGBUILD b/mingw-w64-vapoursynth/PKGBUILD index a2260c14a7..c361cedcab 100644 --- a/mingw-w64-vapoursynth/PKGBUILD +++ b/mingw-w64-vapoursynth/PKGBUILD @@ -4,7 +4,7 @@ _realname=vapoursynth pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}") pkgver=57 -pkgrel=3 +pkgrel=4 pkgdesc="A video processing framework with simplicity in mind (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') @@ -20,10 +20,12 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-cc" options=(!strip staticlibs) source=("vapoursynth-${pkgver}.tar.gz::https://github.com/vapoursynth/vapoursynth/archive/R${pkgver}.tar.gz" "0001-wrong-arguments-to-Mem32-constructor.patch" - "0002-prevent-portable-python.patch") + "0002-prevent-portable-python.patch" + "0003-no-registry-setup-py.patch") sha256sums=('9bed2ab1823050cfcbdbb1a57414e39507fd6c73f07ee4b5986fcbf0f6cb2d07' '085331d7c81da760b66864ec34647094384514689e7ea9895e7bd34ed9ce9831' - 'bc75208eb672446a23535455040d0f5a7e49e19e8276773dd9bc30ee87da2e27') + 'bc75208eb672446a23535455040d0f5a7e49e19e8276773dd9bc30ee87da2e27' + '7b902630104322c9e78cc937cc050a85888bf40e184c6b0cd34d1872aff3674e') prepare() { cd "${srcdir}/${_realname}-R${pkgver}" @@ -32,6 +34,7 @@ prepare() { # Upstream does not support mingw, see # https://github.com/vapoursynth/vapoursynth/pull/841 patch -p1 -i "${srcdir}/0002-prevent-portable-python.patch" + patch -p1 -i "${srcdir}/0003-no-registry-setup-py.patch" autoreconf -vfi } @@ -45,7 +48,7 @@ build() { --host=${MINGW_CHOST} \ --build=${MINGW_CHOST} \ --target=${MINGW_CHOST} \ - --enable-python-module=yes + --enable-python-module=no make } @@ -66,7 +69,9 @@ package() { rm -f ${pkgdir}${MINGW_PREFIX}/lib/vapoursynth/*.dll.a rm -f ${pkgdir}${MINGW_PREFIX}/lib/python${_py3ver}/site-packages/*.dll.a - # Temporary fix - cp ${pkgdir}${MINGW_PREFIX}/lib/python${_py3ver}/site-packages/vapoursynth.dll \ - ${pkgdir}${MINGW_PREFIX}/lib/python${_py3ver}/site-packages/vapoursynth.pyd + export CFLAGS="-L$(cygpath -wm $pkgdir)/${MINGW_PREFIX}/lib $CFLAGS" + cd "${srcdir}/${_realname}-R${pkgver}" + MSYS2_ARG_CONV_EXCL="--prefix=;--install-scripts=;--install-platlib=" \ + ${MINGW_PREFIX}/bin/python setup.py install --prefix=${MINGW_PREFIX} \ + --root="${pkgdir}" --optimize=1 } From 17205790f25459e8886b1ae0b6c5f06b49e96a9a Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Wed, 19 Jan 2022 20:00:55 +0530 Subject: [PATCH 045/226] libxslt: Fix xslt-config to return Windows style path --- .../0010-xslt-config-win-paths.patch | 10 +++++++++ mingw-w64-libxslt/PKGBUILD | 21 +++++++++++++++---- 2 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 mingw-w64-libxslt/0010-xslt-config-win-paths.patch diff --git a/mingw-w64-libxslt/0010-xslt-config-win-paths.patch b/mingw-w64-libxslt/0010-xslt-config-win-paths.patch new file mode 100644 index 0000000000..95bd08914e --- /dev/null +++ b/mingw-w64-libxslt/0010-xslt-config-win-paths.patch @@ -0,0 +1,10 @@ +--- a/xslt-config.in ++++ b/xslt-config.in +@@ -1,6 +1,6 @@ + #! /bin/sh + +-prefix=@prefix@ ++prefix="$(cygpath -m @prefix@)" + exec_prefix=@exec_prefix@ + exec_prefix_set=no + includedir=@includedir@ diff --git a/mingw-w64-libxslt/PKGBUILD b/mingw-w64-libxslt/PKGBUILD index f03820f3d6..89d0db167d 100644 --- a/mingw-w64-libxslt/PKGBUILD +++ b/mingw-w64-libxslt/PKGBUILD @@ -4,7 +4,7 @@ _realname=libxslt pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" pkgver=1.1.34 -pkgrel=4 +pkgrel=5 pkgdesc="XML stylesheet transformation library (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') @@ -24,7 +24,8 @@ source=("http://xmlsoft.org/sources/${_realname}-${pkgver}.tar.gz" '0003-fix-concurrent-directory-creation.all.patch' '0004-add-missing-include-for-python.all.patch' '0008-fix-warnings.patch' - '0009-fix-xml2-config-check-in-configure.patch') + '0009-fix-xml2-config-check-in-configure.patch' + '0010-xslt-config-win-paths.patch') sha256sums=('98b1bd46d6792925ad2dfe9a87452ea2adebf69dcb9919ffd55bf926a7f93f7f' '3d56e8ae1fbf817f495ecb0afe223d7a001ef4787ce52e1c57cc7b32499e95d6' '76029b76c6a1670f85ecb3db6b299cfe468a65b1718880cb8b82c6813cc63ea9' @@ -33,7 +34,8 @@ sha256sums=('98b1bd46d6792925ad2dfe9a87452ea2adebf69dcb9919ffd55bf926a7f93f7f' 'fc23bd3c9e62a28cb1c020cebc83ca7532a5a7a21c2e4748b72d13ac7716a851' '1da234751e2bd337a0991a0f90272bbf83b6cbd8945208825fa3d9dd580020e6' '7578654016d89e9a292860201199e8bffeb78b3aa819e8baecad7cf9305bdb67' - '27bd05d3dab2a9848fc70e6894e904b15f260d3ced6ae4e0f4a616711f87c1c3') + '27bd05d3dab2a9848fc70e6894e904b15f260d3ced6ae4e0f4a616711f87c1c3' + '9e7a75d479e5cd799b52ccfe5762c18f4d9af0dc687fab257ef2dec6e71a08f1') # Helper macros to help make tasks easier # apply_patch_with_msg() { @@ -64,7 +66,8 @@ prepare() { "0003-fix-concurrent-directory-creation.all.patch" \ "0004-add-missing-include-for-python.all.patch" \ "0008-fix-warnings.patch" \ - "0009-fix-xml2-config-check-in-configure.patch" + "0009-fix-xml2-config-check-in-configure.patch" \ + "0010-xslt-config-win-paths.patch" autoreconf -fi } @@ -91,7 +94,17 @@ package() { cd "${srcdir}/build-${CARCH}" make DESTDIR="${pkgdir}" install + # Remove hard coded library path from xslt-config and xsltConf.sh files local PREFIX_DEPS=$(cygpath -am ${MINGW_PREFIX}) + pushd "${pkgdir}${MINGW_PREFIX}/bin" > /dev/null + sed -s "s|${PREFIX_DEPS}\/include|\${includedir}|g" -i ./xslt-config + sed -s "s|${PREFIX_DEPS}\/lib|\${libdir}|g" -i ./xslt-config + popd > /dev/null + + pushd "${pkgdir}${MINGW_PREFIX}/lib" > /dev/null + sed -s "s|${PREFIX_DEPS}|${MINGW_PREFIX}|g" -i ./xsltConf.sh + popd > /dev/null + pushd "${pkgdir}${MINGW_PREFIX}/lib/pkgconfig" > /dev/null sed -s "s|${PREFIX_DEPS}|${MINGW_PREFIX}|g" -i ./libexslt.pc sed -s "s|${PREFIX_DEPS}|${MINGW_PREFIX}|g" -i ./libxslt.pc From cc5afebc7f5b3a4c89fb2ce5ec4fd445e6dc6d31 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Wed, 19 Jan 2022 17:34:28 +0100 Subject: [PATCH 046/226] libadwaita: depend on cc --- mingw-w64-libadwaita/PKGBUILD | 1 + 1 file changed, 1 insertion(+) diff --git a/mingw-w64-libadwaita/PKGBUILD b/mingw-w64-libadwaita/PKGBUILD index 04921022d0..e8dbc36ca0 100644 --- a/mingw-w64-libadwaita/PKGBUILD +++ b/mingw-w64-libadwaita/PKGBUILD @@ -17,6 +17,7 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-glade" "${MINGW_PACKAGE_PREFIX}-ninja" "${MINGW_PACKAGE_PREFIX}-pkg-config" "${MINGW_PACKAGE_PREFIX}-vala" + "${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-gobject-introspection") options=('strip' 'staticlibs' '!debug') source=("https://download.gnome.org/sources/libadwaita/${pkgver:0:3}/libadwaita-${pkgver}.tar.xz") From 7636a2f14facede38fa77067ec73f7e3adc727bd Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Wed, 19 Jan 2022 17:54:13 +0100 Subject: [PATCH 047/226] python-lxml: use pkg-config and clean things up --- mingw-w64-python-lxml/PKGBUILD | 53 +++---------------- .../allow-pass-path-to-rst2s5.patch | 16 ------ mingw-w64-python-lxml/mingw-python-fix.patch | 11 ---- 3 files changed, 7 insertions(+), 73 deletions(-) delete mode 100644 mingw-w64-python-lxml/allow-pass-path-to-rst2s5.patch delete mode 100644 mingw-w64-python-lxml/mingw-python-fix.patch diff --git a/mingw-w64-python-lxml/PKGBUILD b/mingw-w64-python-lxml/PKGBUILD index 92ba6a35de..4e2dd8c5b7 100644 --- a/mingw-w64-python-lxml/PKGBUILD +++ b/mingw-w64-python-lxml/PKGBUILD @@ -5,7 +5,7 @@ _realname=lxml pkgbase=mingw-w64-python-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") pkgver=4.7.1 -pkgrel=1 +pkgrel=2 provides=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}=${pkgver}" "${MINGW_PACKAGE_PREFIX}-python-${_realname}-docs") conflicts=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}" @@ -15,7 +15,7 @@ replaces=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}" pkgdesc="Python binding for the libxml2 and libxslt libraries (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') -license=('BSD' 'custom') +license=('spdx:BSD-3-Clause') url="https://lxml.de/" depends=("${MINGW_PACKAGE_PREFIX}-libxml2" "${MINGW_PACKAGE_PREFIX}-libxslt" @@ -28,29 +28,17 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-cython" "${MINGW_PACKAGE_PREFIX}-python-beautifulsoup4" "${MINGW_PACKAGE_PREFIX}-python-cssselect" "${MINGW_PACKAGE_PREFIX}-python-html5lib" + "${MINGW_PACKAGE_PREFIX}-pkg-config" "${MINGW_PACKAGE_PREFIX}-cc") source=("https://github.com/lxml/lxml/archive/${_realname}-${pkgver}.tar.gz" - "mingw-python-fix.patch" - "use-distutils-get_platform.patch" - "allow-pass-path-to-rst2s5.patch") + "use-distutils-get_platform.patch") sha256sums=('c495545191397b26ce33a2749e13a64bc2b44894e39fd92c4243922e36f7d5a9' - '032bbca0c8cb4d24665162722736e7afcc3c49b84d0bc3d4996a5c9089bd24b4' - 'd50fefc47295d8c6eecf1ca42d03af43dc79d3debb52caf8edbed3b56df2f672' - 'ec4de74d02cc4f0d09c029c7e36063ff833e378b36993e8bb57b852ac5648b7c') - -apply_patch_with_msg() { - for _patch in "$@" - do - msg2 "Applying $_patch" - patch -Nbp1 -i "${srcdir}/$_patch" - done -} + 'd50fefc47295d8c6eecf1ca42d03af43dc79d3debb52caf8edbed3b56df2f672') prepare() { cd "${srcdir}/${_realname}-${_realname}-${pkgver}" - apply_patch_with_msg mingw-python-fix.patch \ - use-distutils-get_platform.patch \ - allow-pass-path-to-rst2s5.patch + + patch -Nbp1 -i "${srcdir}/use-distutils-get_platform.patch" cd "${srcdir}" rm -rf python-build-${CARCH} | true @@ -58,32 +46,10 @@ prepare() { } build() { - # It seems to me that CFLAGS and LDFLAGS aren't getting - # converted to Windows versions when calling Python for - # some reason? - - # Tried $(cygpath -m) to get -IC:/msys64/mingw32/ - # but that gets mangled to -IC;C:msys64msys64mingw32 - # PREFIX_WIN=$(cygpath -m $MINGW_PREFIX) - # CPPFLAGS="$CPPFLAGS -I${PREFIX_WIN}/include/libxml2" - # LDFLAGS="$LDFLAGS -L${PREFIX_WIN}/lib" - - # This horrible version works; needs the right amount of \\ to - # escape the escapes. This stuff makes some of xslt-config - # redundant (xslt-config *should* return C:/ paths but doesn't) - PREFIX_WIN=$(cygpath -w $MINGW_PREFIX) - PREFIX_WIN=${PREFIX_WIN//\\/\\\\} - CPPFLAGS="$CPPFLAGS -I${PREFIX_WIN}\\\\include\\\\libxml2" - LDFLAGS="$LDFLAGS -L${PREFIX_WIN}\\\\lib" - msg "Python build for ${CARCH}" cd "${srcdir}/python-build-${CARCH}" ${MINGW_PREFIX}/bin/python setup.py build \ - --with-xslt-config=${MINGW_PREFIX}/bin/xslt-config \ - --with-xml2-config=${MINGW_PREFIX}/bin/xml2-config \ --with-cython --with-unicode-strings - - #make PYTHON=${MINGW_PREFIX}/bin/python RST2S5=${MINGW_PREFIX}/bin/rst2s5.py html } package() { @@ -91,8 +57,6 @@ package() { MSYS2_ARG_CONV_EXCL="--prefix=;--install-scripts=;--install-platlib=" \ ${MINGW_PREFIX}/bin/python setup.py install --prefix=${MINGW_PREFIX#\/} \ --root="${pkgdir}" --optimize=1 --skip-build \ - --with-xslt-config=${MINGW_PREFIX}/bin/xslt-config \ - --with-xml2-config=${MINGW_PREFIX}/bin/xml2-config \ --with-cython --with-unicode-strings install -Dm644 LICENSES.txt \ @@ -101,7 +65,4 @@ package() { "${pkgdir}${MINGW_PREFIX}"/share/licenses/python-${_realname}/BSD.txt install -Dm644 doc/licenses/elementtree.txt \ "${pkgdir}${MINGW_PREFIX}"/share/licenses/python-${_realname}/elementtree.txt - - #install -d "${pkgdir}${MINGW_PREFIX}"/share/doc/${_realname} - #cp -r doc/html "${pkgdir}${MINGW_PREFIX}"/share/doc/${_realname} } diff --git a/mingw-w64-python-lxml/allow-pass-path-to-rst2s5.patch b/mingw-w64-python-lxml/allow-pass-path-to-rst2s5.patch deleted file mode 100644 index ba1588c5a8..0000000000 --- a/mingw-w64-python-lxml/allow-pass-path-to-rst2s5.patch +++ /dev/null @@ -1,16 +0,0 @@ ---- a/doc/s5/Makefile.orig 2019-06-10 15:00:18.102431700 +0300 -+++ b/doc/s5/Makefile 2019-06-10 15:00:46.868882300 +0300 -@@ -1,11 +1,12 @@ - PYTHON?=python -+RST2S5?=rst2s5.py - - SLIDES=$(subst .txt,.html,$(wildcard *.txt)) - - slides: $(SLIDES) - - %.html: %.txt -- $(PYTHON) rst2s5.py --current-slide --language=en $< $@ -+ $(PYTHON) $(RST2S5) --current-slide --language=en $< $@ - - clean: - rm -f *~ $(SLIDES) diff --git a/mingw-w64-python-lxml/mingw-python-fix.patch b/mingw-w64-python-lxml/mingw-python-fix.patch deleted file mode 100644 index a407cc2c04..0000000000 --- a/mingw-w64-python-lxml/mingw-python-fix.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- lxml-4.6.1/setupinfo.py.orig 2017-06-16 21:11:57.898800000 +0400 -+++ lxml-4.6.1/setupinfo.py 2017-06-16 21:41:20.905000000 +0400 -@@ -356,7 +356,7 @@ - if not cmd: - return '' - if args: -- cmd = ' '.join((cmd,) + args) -+ cmd = 'sh -c "'+' '.join((cmd,) + args)+'"' - - p = subprocess.Popen(cmd, shell=True, - stdout=subprocess.PIPE, stderr=subprocess.PIPE) From 549b322a34ecaa1e783e8475e7d1fd75c70e0606 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Wed, 19 Jan 2022 18:03:48 +0100 Subject: [PATCH 048/226] libadwaita: missing deps --- mingw-w64-libadwaita/PKGBUILD | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mingw-w64-libadwaita/PKGBUILD b/mingw-w64-libadwaita/PKGBUILD index e8dbc36ca0..57ab3e1ccb 100644 --- a/mingw-w64-libadwaita/PKGBUILD +++ b/mingw-w64-libadwaita/PKGBUILD @@ -17,6 +17,7 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-glade" "${MINGW_PACKAGE_PREFIX}-ninja" "${MINGW_PACKAGE_PREFIX}-pkg-config" "${MINGW_PACKAGE_PREFIX}-vala" + "${MINGW_PACKAGE_PREFIX}-sassc" "${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-gobject-introspection") options=('strip' 'staticlibs' '!debug') @@ -35,6 +36,7 @@ build() { ${MINGW_PREFIX}/bin/meson \ --prefix="${MINGW_PREFIX}" \ --buildtype=plain \ + --wrap-mode=nodownload \ -Dexamples=true \ -Dgtk_doc=false \ -Dtests=false \ From 03a576d00540599aca005a543d7e47ed135b83e7 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Wed, 19 Jan 2022 18:08:06 +0100 Subject: [PATCH 049/226] libadwaita: set spdx license --- mingw-w64-libadwaita/PKGBUILD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mingw-w64-libadwaita/PKGBUILD b/mingw-w64-libadwaita/PKGBUILD index 57ab3e1ccb..9954b36599 100644 --- a/mingw-w64-libadwaita/PKGBUILD +++ b/mingw-w64-libadwaita/PKGBUILD @@ -7,7 +7,7 @@ pkgver=1.0.0 pkgrel=1 pkgdesc="Building blocks for modern GNOME applications (mingw-w64)" url="https://gitlab.gnome.org/GNOME/libadwaita" -license=("LGPL2.1+") +license=("spdx:LGPL-2.1-or-later") arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') depends=("${MINGW_PACKAGE_PREFIX}-glib2" From aa2ea7abdaf4a3b4e1c61fb9a299a0255163ace0 Mon Sep 17 00:00:00 2001 From: Konstantin Podsvirov Date: Wed, 19 Jan 2022 21:06:32 +0300 Subject: [PATCH 050/226] binaryen: Update to 105 --- mingw-w64-binaryen/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mingw-w64-binaryen/PKGBUILD b/mingw-w64-binaryen/PKGBUILD index f513d24cf5..1e8026dca1 100644 --- a/mingw-w64-binaryen/PKGBUILD +++ b/mingw-w64-binaryen/PKGBUILD @@ -4,7 +4,7 @@ _realname=binaryen pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=104 +pkgver=105 pkgrel=1 pkgdesc="Compiler infrastructure and toolchain library for WebAssembly, in C++ (mingw-w64)" arch=('any') @@ -15,7 +15,7 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-cmake" "${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-ninja") source=("${_realname}-${pkgver}.tar.gz::https://github.com/WebAssembly/binaryen/archive/version_${pkgver}.tar.gz") -sha256sums=('a6acabb159fcc5b1d8c9506f5036dcd1e4446952b572903b256af955e959780d') +sha256sums=('c5ec27c157d3b33ce4360607cc6afe565fa490094237895db2162b3a7d667da2') build() { declare -a extra_config From 14dac2f11966f91a17b8deeda50643cdc087422e Mon Sep 17 00:00:00 2001 From: Konstantin Podsvirov Date: Wed, 19 Jan 2022 21:12:48 +0300 Subject: [PATCH 051/226] python-nuitka: Update to 0.6.19.3 --- mingw-w64-python-nuitka/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mingw-w64-python-nuitka/PKGBUILD b/mingw-w64-python-nuitka/PKGBUILD index b75b9dac7b..78caf4195e 100644 --- a/mingw-w64-python-nuitka/PKGBUILD +++ b/mingw-w64-python-nuitka/PKGBUILD @@ -6,7 +6,7 @@ pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") provides=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") conflicts=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") replaces=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") -pkgver=0.6.18.6 +pkgver=0.6.19.3 pkgrel=1 pkgdesc="Python to native compiler (mingw-w64)" arch=('any') @@ -17,7 +17,7 @@ depends=("${MINGW_PACKAGE_PREFIX}-python") makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools") source=("https://nuitka.net/releases/Nuitka-${pkgver}.tar.gz") noextract=(Nuitka-$pkgver.tar.gz) -sha256sums=('51df34c59c0ebc0384b852daed7ed7818803eee1b4a89f103042f2e6be4e2040') +sha256sums=('4899ee17143344cdd35f3fbd15c09dd2cbfd5f8dabb04548c18018c2d1c492fc') prepare() { [[ -d $srcdir/${_realname}-${pkgver} ]] && rm -rf ${srcdir}/${_realname}-${pkgver} From fe8bdb75aeb8e40fec82dff0c78854f02bf19f8f Mon Sep 17 00:00:00 2001 From: umarcor Date: Tue, 18 Jan 2022 12:11:57 +0100 Subject: [PATCH 052/226] verilator: update to 4.218 --- .../0001-Fix-MSWIN-compile-error-2681.patch | 29 ------------------- mingw-w64-verilator/PKGBUILD | 7 ++--- 2 files changed, 2 insertions(+), 34 deletions(-) delete mode 100644 mingw-w64-verilator/0001-Fix-MSWIN-compile-error-2681.patch diff --git a/mingw-w64-verilator/0001-Fix-MSWIN-compile-error-2681.patch b/mingw-w64-verilator/0001-Fix-MSWIN-compile-error-2681.patch deleted file mode 100644 index 0d2c37524d..0000000000 --- a/mingw-w64-verilator/0001-Fix-MSWIN-compile-error-2681.patch +++ /dev/null @@ -1,29 +0,0 @@ -diff --git a/Changes b/Changes -index 0cc1c41b..4f1a4c16 100644 ---- a/Changes -+++ b/Changes -@@ -13,6 +13,8 @@ Verilator 4.217 devel - - **Minor:** - -+* Fix MSWIN compile error (#2681). [Unai Martinez-Corral] -+ - - Verilator 4.216 2021-12-05 - ========================== -diff --git a/src/V3File.cpp b/src/V3File.cpp -index 47cc857d..19a777b2 100644 ---- a/src/V3File.cpp -+++ b/src/V3File.cpp -@@ -335,7 +335,7 @@ class VInFilterImp final { - #ifdef INFILTER_PIPE - pid_t m_pid = 0; // fork() process id - #else -- const int m_pid = 0; // fork() process id - always zero as disabled -+ int m_pid = 0; // fork() process id - always zero as disabled - #endif - bool m_pidExited = false; - int m_pidStatus = 0; --- -2.34.1 - diff --git a/mingw-w64-verilator/PKGBUILD b/mingw-w64-verilator/PKGBUILD index 13fc702f56..28fbb48842 100644 --- a/mingw-w64-verilator/PKGBUILD +++ b/mingw-w64-verilator/PKGBUILD @@ -3,7 +3,7 @@ _realname=verilator pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=4.216 +pkgver=4.218 pkgrel=1 pkgdesc="The fastest free Verilog HDL simulator (mingw-w64)" arch=('any') @@ -16,18 +16,15 @@ depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs") source=( "${_realname}::https://codeload.github.com/${_realname}/${_realname}/tar.gz/v${pkgver}" - '0001-Fix-MSWIN-compile-error-2681.patch' ) sha256sums=( - '64e5093b629a7e96178e3b2494f208955f218dfac6f310a91e4fc07d050c980b' - '9a38ccf4f492d804e49cf764e1ada9bbcceccfdba54161af2538ce5d856e6385' + 'ef7b1e6ddb715ddb3cc998fcbefc7150cfa2efc5118cf43ddb594bf41ea41cc7' ) prepare() { [[ -d "${srcdir}/build-${MINGW_CHOST}" ]] && rm -rf "${srcdir}/build-${MINGW_CHOST}" cp -rf "${srcdir}/${_realname}-${pkgver}" "${srcdir}/build-${MINGW_CHOST}" cd "${srcdir}/build-${MINGW_CHOST}" - patch -p1 -i "${srcdir}"/0001-Fix-MSWIN-compile-error-2681.patch sh autoconf } From 9083cbfa5bdc518d78440939e08491b5dd1ca48d Mon Sep 17 00:00:00 2001 From: umarcor Date: Tue, 18 Jan 2022 12:02:16 +0100 Subject: [PATCH 053/226] prjtrellis: don't force clang --- mingw-w64-prjtrellis/PKGBUILD | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/mingw-w64-prjtrellis/PKGBUILD b/mingw-w64-prjtrellis/PKGBUILD index ed74632c92..6949b3036e 100644 --- a/mingw-w64-prjtrellis/PKGBUILD +++ b/mingw-w64-prjtrellis/PKGBUILD @@ -4,7 +4,7 @@ _realname=prjtrellis pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" pkgver=1.0.r1031.2f06397 -pkgrel=1 +pkgrel=2 pkgdesc="Documenting the Lattice ECP5 bit-stream format (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') @@ -17,8 +17,8 @@ depends=( ) makedepends=( "${MINGW_PACKAGE_PREFIX}-boost" + "${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-cmake" - "${MINGW_PACKAGE_PREFIX}-clang" "git" ) @@ -45,8 +45,6 @@ build() { MSYS2_ARG_CONV_EXCL='-DCMAKE_INSTALL_PREFIX=' cmake \ -G "MSYS Makefiles" \ - -DCMAKE_C_COMPILER=clang \ - -DCMAKE_CXX_COMPILER=clang++ \ -DCMAKE_PREFIX_PATH=${MINGW_PREFIX} \ -DCMAKE_INSTALL_PREFIX="${MINGW_PREFIX}" \ . From a05115dfed60fa5181374bcb6ea69a8ae62a05e2 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Thu, 20 Jan 2022 15:25:57 +0530 Subject: [PATCH 054/226] cppcheck: update to 2.6.3 --- mingw-w64-cppcheck/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mingw-w64-cppcheck/PKGBUILD b/mingw-w64-cppcheck/PKGBUILD index ee2dbd83cf..a0ff65c159 100644 --- a/mingw-w64-cppcheck/PKGBUILD +++ b/mingw-w64-cppcheck/PKGBUILD @@ -3,7 +3,7 @@ _realname=cppcheck pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}") -pkgver=2.6 +pkgver=2.6.3 pkgrel=1 pkgdesc="static analysis of C/C++ code (mingw-w64)" arch=('any') @@ -25,7 +25,7 @@ optdepends=("${MINGW_PACKAGE_PREFIX}-qt5-base: cppcheck-gui" source=(${_realname}-${pkgver}.tar.gz::"https://github.com/danmar/cppcheck/archive/${pkgver}.tar.gz" '001-cppcheck-2.2-change-language-files-path.patch' '002-cppcheck-2.2-change-cfg-path.patch') -sha256sums=('99f0c5cf58a0072876c4deb114f3f5f798c933b8e459cddb00a061c8bb4dd765' +sha256sums=('7a49ebb7a54356ade09867f466cb41ee4020ebf3732582762669e5c8903f16c8' 'e741bfafbeb3ade454a42563a1c4617ae3dc87fd6a6f409e1ae4b735b68997d3' '6f53ad14361717b3f994033483c14ad35c5790f703e03fe8aebaca83936ea61b') From 7f629496d41199b3a3bcaf63ec2d8c0b0500251d Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Thu, 20 Jan 2022 15:29:08 +0530 Subject: [PATCH 055/226] gnutls: update to 3.7.3 --- mingw-w64-gnutls/PKGBUILD | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mingw-w64-gnutls/PKGBUILD b/mingw-w64-gnutls/PKGBUILD index 4bbd509006..8bef2067c7 100644 --- a/mingw-w64-gnutls/PKGBUILD +++ b/mingw-w64-gnutls/PKGBUILD @@ -3,9 +3,9 @@ _realname=gnutls pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -_pkgver=3.7.2 +_pkgver=3.7.3 pkgver=${_pkgver} -pkgrel=5 +pkgrel=1 pkgdesc="A library which provides a secure layer over a reliable transport layer (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') @@ -31,7 +31,7 @@ source=(https://www.gnupg.org/ftp/gcrypt/gnutls/v${_pkgver%.*}/${_realname}-${pk 0003-gnutls-fix-external-libtasn1-detection.patch 0004-disable-broken-examples.patch 0005-remove-coverage-rules.patch) -sha256sums=('646e6c5a9a185faa4cea796d378a1ba8e1148dbb197ca6605f95986a25af2752' +sha256sums=('fc59c43bc31ab20a6977ff083029277a31935b8355ce387b634fa433f8f6c49a' 'SKIP' '6493f69e782d60fe04de4b0040987e99851c522d0baf2fe25d10b85b63e97863' 'cbf9e59fb2432d4ac1edcb70734023e074b8058fa4c010a036a40de8449f67fb' From 87b3a9e6230219b976a0377fa6d5442c0c30c8f3 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Thu, 20 Jan 2022 15:32:52 +0530 Subject: [PATCH 056/226] libwebsockets: update to 4.3.1 --- mingw-w64-libwebsockets/PKGBUILD | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mingw-w64-libwebsockets/PKGBUILD b/mingw-w64-libwebsockets/PKGBUILD index 7b9dfa607d..f8d1e32149 100644 --- a/mingw-w64-libwebsockets/PKGBUILD +++ b/mingw-w64-libwebsockets/PKGBUILD @@ -3,10 +3,10 @@ _realname=libwebsockets pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=4.3.0 +pkgver=4.3.1 pkgrel=1 arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') pkgdesc="C library for websocket clients and servers (mingw-w64)" url='https://libwebsockets.org/' license=('LGPL2.1') @@ -19,7 +19,7 @@ source=("${_realname}-${pkgver}.tar.gz::https://github.com/warmcat/${_realname}/ 001-posix-layout.patch 002-cmake-remove-build-hash.patch) options=(!strip !buildflags staticlibs) -sha256sums=('ceef46e3bffb368efe4959202f128fd93d74e10cd2e6c3ac289a33b075645c3b' +sha256sums=('8fdb1454a1b34cd9a6351beaab237a485e6853806101de7e62bd2bc250bb50af' '9bdfdffc74e348692b20b08881ec682ee7aa7ba65b370199dd52f99331013cdc' '90ad5e561980d820ffe2c84823e4da16bfb875d205cfedab221543436ab702b7') From 65b6286fa4baa9e0c9b24c3ca8305171e0d46f92 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Thu, 20 Jan 2022 20:38:55 +0100 Subject: [PATCH 057/226] gcc: backport (unmerged) fix for wrong printf format warnings with ucrt --- .../0300-override-builtin-printf-format.patch | 122 ++++++++++++++++++ mingw-w64-gcc/PKGBUILD | 13 +- 2 files changed, 132 insertions(+), 3 deletions(-) create mode 100644 mingw-w64-gcc/0300-override-builtin-printf-format.patch diff --git a/mingw-w64-gcc/0300-override-builtin-printf-format.patch b/mingw-w64-gcc/0300-override-builtin-printf-format.patch new file mode 100644 index 0000000000..76ef4920fc --- /dev/null +++ b/mingw-w64-gcc/0300-override-builtin-printf-format.patch @@ -0,0 +1,122 @@ +>From 4db4e6b35be5793902d8820d2c8e4d1f1cbba80d Mon Sep 17 00:00:00 2001 +From: Tomas Kalibera +Date: Thu, 13 Jan 2022 05:25:32 -0500 +Subject: [PATCH] c-family: Let stdio.h override built in printf format + [PR95130,PR92292] + +Mingw32 targets use ms_printf format for printf, but mingw-w64 when +configured for UCRT uses gnu_format (via stdio.h). GCC then checks both +formats, which means that one cannot print a 64-bit integer without a +warning. All these lines issue a warning: + + printf("Hello %"PRIu64"\n", x); + printf("Hello %I64u\n", x); + printf("Hello %llu\n", x); + +because each of them violates one of the formats. Also, one gets a warning +twice if the format string violates both formats. + +Fixed by disabling the built in format in case there are additional ones. + +gcc/c-family/ChangeLog: + + PR c/95130 + PR c/92292 + + * c-common.c (check_function_arguments): Pass also function + declaration to check_function_format. + + * c-common.h (check_function_format): Extra argument - function + declaration. + + * c-format.c (check_function_format): For builtin functions with a + built in format and at least one more, do not check the first one. +--- + gcc/c-family/c-common.c | 2 +- + gcc/c-family/c-common.h | 2 +- + gcc/c-family/c-format.c | 32 ++++++++++++++++++++++++++++++-- + 3 files changed, 32 insertions(+), 4 deletions(-) + +diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c +index 4a6a4edb763..00fc734d28e 100644 +--- a/gcc/c-family/c-common.c ++++ b/gcc/c-family/c-common.c +@@ -6064,7 +6064,7 @@ check_function_arguments (location_t loc, const_tree fndecl, const_tree fntype, + /* Check for errors in format strings. */ + + if (warn_format || warn_suggest_attribute_format) +- check_function_format (fntype, TYPE_ATTRIBUTES (fntype), nargs, argarray, ++ check_function_format (fndecl, fntype, TYPE_ATTRIBUTES (fntype), nargs, argarray, + arglocs); + + if (warn_format) +diff --git a/gcc/c-family/c-common.h b/gcc/c-family/c-common.h +index 8b7bf35e888..ee370eafbbc 100644 +--- a/gcc/c-family/c-common.h ++++ b/gcc/c-family/c-common.h +@@ -856,7 +856,7 @@ extern void check_function_arguments_recurse (void (*) + unsigned HOST_WIDE_INT); + extern bool check_builtin_function_arguments (location_t, vec, + tree, tree, int, tree *); +-extern void check_function_format (const_tree, tree, int, tree *, ++extern void check_function_format (const_tree, const_tree, tree, int, tree *, + vec *); + extern bool attribute_fallthrough_p (tree); + extern tree handle_format_attribute (tree *, tree, tree, int, bool *); +diff --git a/gcc/c-family/c-format.c b/gcc/c-family/c-format.c +index afa77810a5c..bc2abee5146 100644 +--- a/gcc/c-family/c-format.c ++++ b/gcc/c-family/c-format.c +@@ -1160,12 +1160,13 @@ decode_format_type (const char *s, bool *is_raw /* = NULL */) + attribute themselves. */ + + void +-check_function_format (const_tree fntype, tree attrs, int nargs, ++check_function_format (const_tree fndecl, const_tree fntype, tree attrs, int nargs, + tree *argarray, vec *arglocs) + { +- tree a; ++ tree a, aa; + + tree atname = get_identifier ("format"); ++ bool skipped_default_format = false; + + /* See if this function has any format attributes. */ + for (a = attrs; a; a = TREE_CHAIN (a)) +@@ -1176,6 +1177,33 @@ check_function_format (const_tree fntype, tree attrs, int nargs, + function_format_info info; + decode_format_attr (fntype, atname, TREE_VALUE (a), &info, + /*validated=*/true); ++ ++ /* Mingw32 targets have traditionally used ms_printf format for the ++ printf function, and this format is built in GCC. But nowadays, ++ if mingw-w64 is configured to target UCRT, the printf function ++ uses the gnu_printf format (specified in the stdio.h header). This ++ causes GCC to check both formats, which means that there is no way ++ to e.g. print a long long unsigned without a warning (ms_printf ++ warns for %llu and gnu_printf warns for %I64u). Also, GCC would warn ++ twice about the same issue when both formats are violated, e.g. ++ for %lu used to print long long unsigned. ++ ++ Hence, if there are multiple format specifiers, we skip the first ++ one. See PR 95130, PR 92292. */ ++ ++ if (!skipped_default_format && fndecl) ++ { ++ for(aa = TREE_CHAIN (a); aa; aa = TREE_CHAIN(aa)) ++ if (is_attribute_p ("format", get_attribute_name (aa)) && ++ fndecl && fndecl_built_in_p (fndecl, BUILT_IN_NORMAL)) ++ { ++ skipped_default_format = true; ++ break; ++ } ++ if (skipped_default_format) ++ continue; ++ } ++ + if (warn_format) + { + /* FIXME: Rewrite all the internal functions in this file +-- +2.25.1 + diff --git a/mingw-w64-gcc/PKGBUILD b/mingw-w64-gcc/PKGBUILD index 4a6bbd5cb7..94e5d16547 100644 --- a/mingw-w64-gcc/PKGBUILD +++ b/mingw-w64-gcc/PKGBUILD @@ -24,7 +24,7 @@ pkgver=11.2.0 #_majorver=${pkgver:0:1} #_sourcedir=${_realname}-${_majorver}-${_snapshot} _sourcedir=${_realname}-${pkgver} -pkgrel=6 +pkgrel=7 pkgdesc="GCC for the MinGW-w64" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64') @@ -65,7 +65,8 @@ source=("https://ftp.gnu.org/gnu/gcc/${_realname}-${pkgver%%+*}/${_realname}-${p 0021-fix-ada-exception-propagation.patch 0140-gcc-8.2.0-diagnostic-color.patch 0150-gcc-10.2.0-libgcc-ldflags.patch - 0200-add-m-no-align-vector-insn-option-for-i386.patch) + 0200-add-m-no-align-vector-insn-option-for-i386.patch + 0300-override-builtin-printf-format.patch) sha256sums=('d08edc536b54c372a1010ff6619dd274c0f1603aa49212ba20f7aa2cda36fa8b' 'SKIP' 'bce81824fc89e5e62cca350de4c17a27e27a18a1a1ad5ca3492aec1fc5af3234' @@ -84,7 +85,8 @@ sha256sums=('d08edc536b54c372a1010ff6619dd274c0f1603aa49212ba20f7aa2cda36fa8b' 'bbd1374f4fccaadd641959725f222acab789f4bead9718d04f7e500885a14f30' '5240a9e731b45c17a164066c7eb193c1fbee9fd8d9a2a5afa2edbcde9510da47' '7f0b4e45d933e18c9d8bd2afcd83e4f52e97e2e25dd41bfa0cba755c70e591c7' - '75c4f764741a1f5ed29adbed1b7085bf4a12a3dd6fb19347f5f63c3831a51953') + '75c4f764741a1f5ed29adbed1b7085bf4a12a3dd6fb19347f5f63c3831a51953' + 'b6c401790fce1f5e57a479d7820b11bd13b5711c28d263a25852cee68bcf8fd1') validpgpkeys=(F3691687D867B81B51CE07D9BBE43771487328A9 # bpiotrowski@archlinux.org 86CFFCA918CF3AF47147588051E8B148A9999C34 # evangelos@foutrelis.com 13975A70E63C361C73AE69EF6EEB81F8981C74C7 # richard.guenther@gmail.com @@ -150,6 +152,11 @@ prepare() { apply_patch_with_msg \ 0200-add-m-no-align-vector-insn-option-for-i386.patch + # Patch from https://gcc.gnu.org/pipermail/gcc-patches/2022-January/588341.html + # Related bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95130 + apply_patch_with_msg \ + 0300-override-builtin-printf-format.patch + # do not expect ${prefix}/mingw symlink - this should be superceded by # 0005-Windows-Don-t-ignore-native-system-header-dir.patch .. but isn't! sed -i 's/${prefix}\/mingw\//${prefix}\//g' configure From 53b559893d92bc71767ddaa002c08e898307712c Mon Sep 17 00:00:00 2001 From: Jeremy Drake Date: Thu, 20 Jan 2022 15:53:34 -0800 Subject: [PATCH 058/226] verilator: makedepend on python It's apparently not present anymore by default in autobuild either in msys2 or mingw variant. --- mingw-w64-verilator/PKGBUILD | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/mingw-w64-verilator/PKGBUILD b/mingw-w64-verilator/PKGBUILD index 28fbb48842..53cc36dde3 100644 --- a/mingw-w64-verilator/PKGBUILD +++ b/mingw-w64-verilator/PKGBUILD @@ -4,18 +4,21 @@ _realname=verilator pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" pkgver=4.218 -pkgrel=1 +pkgrel=2 pkgdesc="The fastest free Verilog HDL simulator (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') url="https://www.veripool.org/projects/verilator/wiki/Intro" license=("LGPL") groups=("${MINGW_PACKAGE_PREFIX}-eda") -makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "flex" "${MINGW_PACKAGE_PREFIX}-autotools") +makedepends=("${MINGW_PACKAGE_PREFIX}-autotools" + "${MINGW_PACKAGE_PREFIX}-cc" + "${MINGW_PACKAGE_PREFIX}-python" + "flex") depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs") source=( - "${_realname}::https://codeload.github.com/${_realname}/${_realname}/tar.gz/v${pkgver}" + "${_realname}.tar.gz::https://codeload.github.com/${_realname}/${_realname}/tar.gz/v${pkgver}" ) sha256sums=( 'ef7b1e6ddb715ddb3cc998fcbefc7150cfa2efc5118cf43ddb594bf41ea41cc7' From 8b157013a779393e295535c254b8a5d6281f8f3c Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Fri, 21 Jan 2022 19:31:35 +0530 Subject: [PATCH 059/226] p11-kit: update to 0.24.1 --- mingw-w64-p11-kit/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mingw-w64-p11-kit/PKGBUILD b/mingw-w64-p11-kit/PKGBUILD index 95c44f6327..cd4baed258 100644 --- a/mingw-w64-p11-kit/PKGBUILD +++ b/mingw-w64-p11-kit/PKGBUILD @@ -5,7 +5,7 @@ _realname=p11-kit pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=0.24.0 +pkgver=0.24.1 pkgrel=1 pkgdesc="Library to work with PKCS#11 modules (mingw-w64)" arch=('any') @@ -39,7 +39,7 @@ source=(https://github.com/p11-glue/p11-kit/releases/download/${pkgver}/${_realn 0014-meson-build.patch) validpgpkeys=('C0F67099B808FB063E2C81117BFB1108D92765AF' '462225C3B46F34879FC8496CD605848ED7E69871') -sha256sums=('81e6140584f635e4e956a1b93a32239acf3811ff5b2d3a5c6094e94e99d2c685' +sha256sums=('d8be783efd5cd4ae534cee4132338e3f40f182c3205d23b200094ec85faaaef8' 'SKIP' '195b2e8695f701caf545e2a468383ad29457febd9b1ee57de1986de04ad3c31c' 'aa92f986d3f7dfc119e86f9a8f3987e6ac2562149921820eadbe09218c4df99c' From 0bf56fc853fa2fbcdbc6d6b06901677165f0b447 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Fri, 21 Jan 2022 19:35:08 +0530 Subject: [PATCH 060/226] rubberband: update to 2.0.1 Remove two upstream patches --- mingw-w64-rubberband/PKGBUILD | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/mingw-w64-rubberband/PKGBUILD b/mingw-w64-rubberband/PKGBUILD index 5b8dd6c7e4..8ba92e68ea 100644 --- a/mingw-w64-rubberband/PKGBUILD +++ b/mingw-w64-rubberband/PKGBUILD @@ -3,7 +3,7 @@ _realname=rubberband pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=2.0.0 +pkgver=2.0.1 pkgrel=1 pkgdesc="High quality software library for audio time-stretching and pitch-shifting. (mingw-w64)" arch=('any') @@ -19,17 +19,12 @@ depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs" "${MINGW_PACKAGE_PREFIX}-libsndfile" "${MINGW_PACKAGE_PREFIX}-ladspa-sdk" "${MINGW_PACKAGE_PREFIX}-vamp-plugin-sdk") -source=("https://breakfastquay.com/files/releases/${_realname}-${pkgver}.tar.bz2" - "https://github.com/breakfastquay/rubberband/commit/b3c920a.patch" - "https://github.com/breakfastquay/rubberband/commit/3a6d8a8.patch") -sha256sums=('eccbf0545496ce3386a2433ceec31e6576a76ed6884310e4b465003bfe260286' - '632f484fd16807f3fce251163bef4287be2d0c26a11f31c1750290afa21c0bb8' - 'f3d77ed80de0a4c52642a1f060eaece4b9f0d88009121b844d92a9ba286d8185') +source=("https://breakfastquay.com/files/releases/${_realname}-${pkgver}.tar.bz2") +sha256sums=('dc1b8b775f1717b21e35a11842b00d63beaaf9255b304dee7bb0413568ad80e8') prepare() { cd ${srcdir}/${_realname}-${pkgver} - patch -p1 -i "${srcdir}/b3c920a.patch" - patch -p1 -i "${srcdir}/3a6d8a8.patch" + } build() { From ee912a4651ba6cd51984653901b8fb31246466ff Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Fri, 21 Jan 2022 19:40:56 +0530 Subject: [PATCH 061/226] zstd: update to 1.5.2 Add pgp key --- mingw-w64-zstd/PKGBUILD | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/mingw-w64-zstd/PKGBUILD b/mingw-w64-zstd/PKGBUILD index a64c1e9768..0be9b429d2 100644 --- a/mingw-w64-zstd/PKGBUILD +++ b/mingw-w64-zstd/PKGBUILD @@ -3,7 +3,7 @@ _realname=zstd pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=1.5.1 +pkgver=1.5.2 pkgrel=1 pkgdesc="Zstandard - Fast real-time compression algorithm (mingw-w64)" arch=('any') @@ -13,10 +13,12 @@ license=('BSD') makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-ninja" "${MINGW_PACKAGE_PREFIX}-cmake") -source=("https://github.com/facebook/zstd/releases/download/v${pkgver}/${_realname}-${pkgver}.tar.gz" +source=("https://github.com/facebook/zstd/releases/download/v${pkgver}/${_realname}-${pkgver}.tar.gz"{,.sig} zstd-1.4.0-fileio-mingw.patch) -sha256sums=('e28b2f2ed5710ea0d3a1ecac3f6a947a016b972b9dd30242369010e5f53d7002' +sha256sums=('7c42d56fac126929a6a85dbc73ff1db2411d04f104fae9bdea51305663a83fd0' + 'SKIP' '210e57fc4bff62e1af1ca8a3da3960de32a91255ba62b057c6bed5b3a7ebb3d5') +validpgpkeys=('4EF4AC63455FC9F4545D9B7DEF8FE99528B52FFD') # Zstandard Release Signing Key prepare() { cd "${srcdir}/${_realname}-${pkgver}" From cd9ce76d46f71d5d00c490cabb6763ac66f04c14 Mon Sep 17 00:00:00 2001 From: Naveen M K Date: Fri, 21 Jan 2022 21:39:24 +0530 Subject: [PATCH 062/226] mingw-w64-python3.10: new package --- mingw-w64-python3.10/.gitignore | 2 + ...g-make-_sysconfigdata.py-relocatable.patch | 61 + .../0002-restore-setup-config.patch | 83 + ...t-threads-and-make-it-default-on-min.patch | 290 + ...gcc-internal-defines-to-python-platf.patch | 45 + ...igure-MACHDEP-and-platform-for-build.patch | 64 + ...0006-MINGW-preset-configure-defaults.patch | 91 + ...largefile-support-for-windows-builds.patch | 44 + ...0008-MINGW-add-srcdir-PC-to-CPPFLAGS.patch | 44 + .../0009-MINGW-init-system-calls.patch | 125 + ...INGW-build-in-windows-modules-winreg.patch | 80 + ...etermine-if-pwdmodule-should-be-used.patch | 66 + ...-Mingw-recognition-to-pyport.h-to-al.patch | 83 + ...013-MINGW-configure-for-shared-build.patch | 70 + .../0014-MINGW-dynamic-loading-support.patch | 105 + ...nore-main-program-for-frozen-scripts.patch | 53 + ...-MINGW-setup-_multiprocessing-module.patch | 35 + .../0017-MINGW-setup-select-module.patch | 61 + ...up-_ctypes-module-with-system-libffi.patch | 46 + ...ct-winsock2-and-setup-_socket-module.patch | 158 + ...0020-MINGW-exclude-unix-only-modules.patch | 94 + ...NGW-setup-msvcrt-and-_winapi-modules.patch | 94 + ...nfig-MINGW-build-extensions-with-GCC.patch | 26 + .../0023-MINGW-setup-_ssl-module.patch | 31 + ...ation-of-posix-build-in-sysconfig.py.patch | 90 + ...W-support-stdcall-without-underscore.patch | 55 + ...ead-rename-to-avoid-failure-on-windo.patch | 32 + .../0027-MINGW-customize-site.patch | 63 + .../0028-add-python-config-sh.patch | 163 + .../0029-cross-darwin-feature.patch | 139 + .../0030-mingw-system-libffi.patch | 31 + ...sys-mingw-prefer-unix-sep-if-MSYSTEM.patch | 398 ++ .../0032-mingw-use-posix-getpath.patch | 505 ++ ...mingw-add-ModuleFileName-dir-to-PATH.patch | 59 + ...dd-BUILDIN_WIN32_MODULEs-time-msvcrt.patch | 28 + ...s-cygwin-semi-native-build-sysconfig.patch | 127 + ...sysconfig-mingw-sysconfig-like-posix.patch | 66 + ...rlier-so-we-can-use-it-in-distutils-.patch | 40 + ...d-multiarch-paths-if-cross-compiling.patch | 34 + ...ngw-use-backslashes-in-compileall-py.patch | 31 + ...-msys-convert_path-fix-and-root-hack.patch | 43 + .../0041-allow-static-tcltk.patch | 88 + .../0042-mingw-pdcurses_ISPAD.patch | 36 + .../0043-builddir-fixes.patch | 71 + ...sys-monkeypatch-os-system-via-sh-exe.patch | 40 + ...place-slashes-used-in-io-redirection.patch | 74 + .../0046-remove_path_max.default.patch | 30 + .../0047-dont-link-with-gettext.patch | 61 + .../0048-ctypes-python-dll.patch | 34 + .../0049-gdbm-module-includes.patch | 31 + .../0050-use-gnu_printf-in-format.patch | 86 + ...w-fix-ssl-dont-use-enum_certificates.patch | 40 + ...fix-using-dllhandle-and-winver-mingw.patch | 40 + ...-config-so-msvccompiler-get_build_ve.patch | 43 + ...4-MINGW-link-with-additional-library.patch | 34 + .../0055-install-msilib.patch | 31 + .../0056-fix-signal-module-build.patch | 30 + ...-build-winconsoleio-and-_testconsole.patch | 45 + .../0058-expose-sem_unlink.patch | 30 + mingw-w64-python3.10/0059-cygpty-isatty.patch | 462 ++ .../0060-disable-broken-gdbm-module.patch | 30 + ...win-resource-files-and-build-pythonw.patch | 148 + .../0062-disable-readline.patch | 30 + .../0063-fix-isselectable.patch | 30 + ...64-use-_wcsnicmp-instead-wcsncasecmp.patch | 27 + .../0065-_xxsubinterpretersmodule.patch | 27 + .../0066-sqlite3-module-defines.patch | 25 + ...067-configure.ac-fix-inet_pton-check.patch | 36 + .../0068-set-venv-activate-path-unix.patch | 30 + .../0069-venv-creation-fixes.patch | 72 + .../0070-pass-gen-profile-ldflags.patch | 30 + ...indows-must-link-ext-with-python-lib.patch | 39 + .../0072-importlib-bootstrap-path-sep.patch | 33 + .../0073-pathlib-path-sep.patch | 26 + .../0074-warnings-fixes.patch | 132 + .../0075-fix-build-testinternalcapi.patch | 29 + .../0076-extend-MS_WINDOWS-flag.patch | 26 + mingw-w64-python3.10/0077-clang-arm64.patch | 51 + ...configure.ac-set-MINGW-stack-reserve.patch | 29 + ...079-Don-t-use-os.pathsep-to-find-EOF.patch | 28 + ...ion-suffix-for-c-extensions-on-mingw.patch | 182 + ...the-get_platform-method-in-sysconfig.patch | 64 + ...ler-customize-mingw-cygwin-compilers.patch | 44 + ...-distutils-compiler-enable-new-dtags.patch | 38 + ...tils-MINGW-build-extensions-with-GCC.patch | 61 + ...ngw32CCompiler-as-default-compiler-f.patch | 74 + .../0086-distutils-find-import-library.patch | 30 + ...circular-dependency-from-time-module.patch | 39 + ...lization-of-posix-build-in-distutils.patch | 63 + ...distutils-mingw-sysconfig-like-posix.patch | 29 + .../0090-distutils-get_versions-fixes.patch | 57 + ...91-distutils-install-layout-as-posix.patch | 30 + ...-msys-convert_path-fix-and-root-hack.patch | 81 + ...-distutils-mingw-build-optimized-ext.patch | 35 + ...ccompiler-dont-strip-modules-if-pyde.patch | 31 + ...istutils-get-compilers-from-env-vars.patch | 163 + ...tutils-add-windmc-to-cygwinccompiler.patch | 59 + .../0097-distutils-fix-msvc9-import.patch | 39 + ...tils-mingw-add-LIBPL-to-library-dirs.patch | 27 + ...-the-get_platform-method-in-distutil.patch | 44 + ...00-build-Fix-ncursesw-include-lookup.patch | 67 + .../0101-tests-fix-test_bytes.patch | 29 + ...e-not-raising-for-invalid-year-value.patch | 30 + ...brary-c-should-return-None-with-ucrt.patch | 43 + ...uild-Disable-checks-for-dlopen-dlfcn.patch | 68 + ...stall-location-of-the-import-library.patch | 26 + ...NV_EXCL-for-the-shared-Python-module.patch | 28 + ...venvlauncher-build-installation-into.patch | 81 + ...onfigure.ac-set-_WIN32_WINNT-version.patch | 29 + ....ac-don-t-check-for-clock_-functions.patch | 38 + ...-normpath-paths-coming-from-env-vars.patch | 37 + ...Add-support-for-Windows-7-Python-3.9.patch | 177 + ...ld-and-add-some-mingw-specific-tests.patch | 590 ++ ...smoketests-test-that-_decimal-exists.patch | 27 + .../0114-Prefer-sysconfig.python_build.patch | 26 + ...0115-Define-PY3_DLLNAME-to-fix-build.patch | 29 + .../0116-Commit-regenerated-importlib.patch | 5509 +++++++++++++++++ mingw-w64-python3.10/PKGBUILD | 507 ++ mingw-w64-python3.10/README.md | 4 + mingw-w64-python3.10/update-patches.sh | 79 + 120 files changed, 14553 insertions(+) create mode 100644 mingw-w64-python3.10/.gitignore create mode 100644 mingw-w64-python3.10/0001-sysconfig-make-_sysconfigdata.py-relocatable.patch create mode 100644 mingw-w64-python3.10/0002-restore-setup-config.patch create mode 100644 mingw-w64-python3.10/0003-build-add-with-nt-threads-and-make-it-default-on-min.patch create mode 100644 mingw-w64-python3.10/0004-MINGW-translate-gcc-internal-defines-to-python-platf.patch create mode 100644 mingw-w64-python3.10/0005-MINGW-configure-MACHDEP-and-platform-for-build.patch create mode 100644 mingw-w64-python3.10/0006-MINGW-preset-configure-defaults.patch create mode 100644 mingw-w64-python3.10/0007-MINGW-configure-largefile-support-for-windows-builds.patch create mode 100644 mingw-w64-python3.10/0008-MINGW-add-srcdir-PC-to-CPPFLAGS.patch create mode 100644 mingw-w64-python3.10/0009-MINGW-init-system-calls.patch create mode 100644 mingw-w64-python3.10/0010-MINGW-build-in-windows-modules-winreg.patch create mode 100644 mingw-w64-python3.10/0011-MINGW-determine-if-pwdmodule-should-be-used.patch create mode 100644 mingw-w64-python3.10/0012-issue6672-v2-Add-Mingw-recognition-to-pyport.h-to-al.patch create mode 100644 mingw-w64-python3.10/0013-MINGW-configure-for-shared-build.patch create mode 100644 mingw-w64-python3.10/0014-MINGW-dynamic-loading-support.patch create mode 100644 mingw-w64-python3.10/0015-MINGW-ignore-main-program-for-frozen-scripts.patch create mode 100644 mingw-w64-python3.10/0016-MINGW-setup-_multiprocessing-module.patch create mode 100644 mingw-w64-python3.10/0017-MINGW-setup-select-module.patch create mode 100644 mingw-w64-python3.10/0018-MINGW-setup-_ctypes-module-with-system-libffi.patch create mode 100644 mingw-w64-python3.10/0019-MINGW-defect-winsock2-and-setup-_socket-module.patch create mode 100644 mingw-w64-python3.10/0020-MINGW-exclude-unix-only-modules.patch create mode 100644 mingw-w64-python3.10/0021-MINGW-setup-msvcrt-and-_winapi-modules.patch create mode 100644 mingw-w64-python3.10/0022-sysconfig-MINGW-build-extensions-with-GCC.patch create mode 100644 mingw-w64-python3.10/0023-MINGW-setup-_ssl-module.patch create mode 100644 mingw-w64-python3.10/0024-MINGW-generalization-of-posix-build-in-sysconfig.py.patch create mode 100644 mingw-w64-python3.10/0025-MINGW-support-stdcall-without-underscore.patch create mode 100644 mingw-w64-python3.10/0026-use-replace-instead-rename-to-avoid-failure-on-windo.patch create mode 100644 mingw-w64-python3.10/0027-MINGW-customize-site.patch create mode 100644 mingw-w64-python3.10/0028-add-python-config-sh.patch create mode 100644 mingw-w64-python3.10/0029-cross-darwin-feature.patch create mode 100644 mingw-w64-python3.10/0030-mingw-system-libffi.patch create mode 100644 mingw-w64-python3.10/0031-msys-mingw-prefer-unix-sep-if-MSYSTEM.patch create mode 100644 mingw-w64-python3.10/0032-mingw-use-posix-getpath.patch create mode 100644 mingw-w64-python3.10/0033-mingw-add-ModuleFileName-dir-to-PATH.patch create mode 100644 mingw-w64-python3.10/0034-mingw-add-BUILDIN_WIN32_MODULEs-time-msvcrt.patch create mode 100644 mingw-w64-python3.10/0035-msys-cygwin-semi-native-build-sysconfig.patch create mode 100644 mingw-w64-python3.10/0036-sysconfig-mingw-sysconfig-like-posix.patch create mode 100644 mingw-w64-python3.10/0037-build-_winapi-earlier-so-we-can-use-it-in-distutils-.patch create mode 100644 mingw-w64-python3.10/0038-cross-dont-add-multiarch-paths-if-cross-compiling.patch create mode 100644 mingw-w64-python3.10/0039-mingw-use-backslashes-in-compileall-py.patch create mode 100644 mingw-w64-python3.10/0040-msys-convert_path-fix-and-root-hack.patch create mode 100644 mingw-w64-python3.10/0041-allow-static-tcltk.patch create mode 100644 mingw-w64-python3.10/0042-mingw-pdcurses_ISPAD.patch create mode 100644 mingw-w64-python3.10/0043-builddir-fixes.patch create mode 100644 mingw-w64-python3.10/0044-msys-monkeypatch-os-system-via-sh-exe.patch create mode 100644 mingw-w64-python3.10/0045-msys-replace-slashes-used-in-io-redirection.patch create mode 100644 mingw-w64-python3.10/0046-remove_path_max.default.patch create mode 100644 mingw-w64-python3.10/0047-dont-link-with-gettext.patch create mode 100644 mingw-w64-python3.10/0048-ctypes-python-dll.patch create mode 100644 mingw-w64-python3.10/0049-gdbm-module-includes.patch create mode 100644 mingw-w64-python3.10/0050-use-gnu_printf-in-format.patch create mode 100644 mingw-w64-python3.10/0051-mingw-fix-ssl-dont-use-enum_certificates.patch create mode 100644 mingw-w64-python3.10/0052-fix-using-dllhandle-and-winver-mingw.patch create mode 100644 mingw-w64-python3.10/0053-Add-AMD64-to-sys-config-so-msvccompiler-get_build_ve.patch create mode 100644 mingw-w64-python3.10/0054-MINGW-link-with-additional-library.patch create mode 100644 mingw-w64-python3.10/0055-install-msilib.patch create mode 100644 mingw-w64-python3.10/0056-fix-signal-module-build.patch create mode 100644 mingw-w64-python3.10/0057-build-build-winconsoleio-and-_testconsole.patch create mode 100644 mingw-w64-python3.10/0058-expose-sem_unlink.patch create mode 100644 mingw-w64-python3.10/0059-cygpty-isatty.patch create mode 100644 mingw-w64-python3.10/0060-disable-broken-gdbm-module.patch create mode 100644 mingw-w64-python3.10/0061-build-link-win-resource-files-and-build-pythonw.patch create mode 100644 mingw-w64-python3.10/0062-disable-readline.patch create mode 100644 mingw-w64-python3.10/0063-fix-isselectable.patch create mode 100644 mingw-w64-python3.10/0064-use-_wcsnicmp-instead-wcsncasecmp.patch create mode 100644 mingw-w64-python3.10/0065-_xxsubinterpretersmodule.patch create mode 100644 mingw-w64-python3.10/0066-sqlite3-module-defines.patch create mode 100644 mingw-w64-python3.10/0067-configure.ac-fix-inet_pton-check.patch create mode 100644 mingw-w64-python3.10/0068-set-venv-activate-path-unix.patch create mode 100644 mingw-w64-python3.10/0069-venv-creation-fixes.patch create mode 100644 mingw-w64-python3.10/0070-pass-gen-profile-ldflags.patch create mode 100644 mingw-w64-python3.10/0071-pkg-config-windows-must-link-ext-with-python-lib.patch create mode 100644 mingw-w64-python3.10/0072-importlib-bootstrap-path-sep.patch create mode 100644 mingw-w64-python3.10/0073-pathlib-path-sep.patch create mode 100644 mingw-w64-python3.10/0074-warnings-fixes.patch create mode 100644 mingw-w64-python3.10/0075-fix-build-testinternalcapi.patch create mode 100644 mingw-w64-python3.10/0076-extend-MS_WINDOWS-flag.patch create mode 100644 mingw-w64-python3.10/0077-clang-arm64.patch create mode 100644 mingw-w64-python3.10/0078-configure.ac-set-MINGW-stack-reserve.patch create mode 100644 mingw-w64-python3.10/0079-Don-t-use-os.pathsep-to-find-EOF.patch create mode 100644 mingw-w64-python3.10/0080-Fix-extension-suffix-for-c-extensions-on-mingw.patch create mode 100644 mingw-w64-python3.10/0081-Change-the-get_platform-method-in-sysconfig.patch create mode 100644 mingw-w64-python3.10/0082-distutils-compiler-customize-mingw-cygwin-compilers.patch create mode 100644 mingw-w64-python3.10/0083-distutils-compiler-enable-new-dtags.patch create mode 100644 mingw-w64-python3.10/0084-distutils-MINGW-build-extensions-with-GCC.patch create mode 100644 mingw-w64-python3.10/0085-distutils-use-Mingw32CCompiler-as-default-compiler-f.patch create mode 100644 mingw-w64-python3.10/0086-distutils-find-import-library.patch create mode 100644 mingw-w64-python3.10/0087-distutils-avoid-circular-dependency-from-time-module.patch create mode 100644 mingw-w64-python3.10/0088-distutils-generalization-of-posix-build-in-distutils.patch create mode 100644 mingw-w64-python3.10/0089-distutils-mingw-sysconfig-like-posix.patch create mode 100644 mingw-w64-python3.10/0090-distutils-get_versions-fixes.patch create mode 100644 mingw-w64-python3.10/0091-distutils-install-layout-as-posix.patch create mode 100644 mingw-w64-python3.10/0092-distutils-msys-convert_path-fix-and-root-hack.patch create mode 100644 mingw-w64-python3.10/0093-distutils-mingw-build-optimized-ext.patch create mode 100644 mingw-w64-python3.10/0094-distutils-cygwinccompiler-dont-strip-modules-if-pyde.patch create mode 100644 mingw-w64-python3.10/0095-distutils-get-compilers-from-env-vars.patch create mode 100644 mingw-w64-python3.10/0096-distutils-add-windmc-to-cygwinccompiler.patch create mode 100644 mingw-w64-python3.10/0097-distutils-fix-msvc9-import.patch create mode 100644 mingw-w64-python3.10/0098-distutils-mingw-add-LIBPL-to-library-dirs.patch create mode 100644 mingw-w64-python3.10/0099-distutils-Change-the-get_platform-method-in-distutil.patch create mode 100644 mingw-w64-python3.10/0100-build-Fix-ncursesw-include-lookup.patch create mode 100644 mingw-w64-python3.10/0101-tests-fix-test_bytes.patch create mode 100644 mingw-w64-python3.10/0102-time-fix-strftime-not-raising-for-invalid-year-value.patch create mode 100644 mingw-w64-python3.10/0103-ctypes-find_library-c-should-return-None-with-ucrt.patch create mode 100644 mingw-w64-python3.10/0104-build-Disable-checks-for-dlopen-dlfcn.patch create mode 100644 mingw-w64-python3.10/0105-Fix-install-location-of-the-import-library.patch create mode 100644 mingw-w64-python3.10/0106-Set-MSYS2_ARG_CONV_EXCL-for-the-shared-Python-module.patch create mode 100644 mingw-w64-python3.10/0107-build-Integrate-venvlauncher-build-installation-into.patch create mode 100644 mingw-w64-python3.10/0108-configure.ac-set-_WIN32_WINNT-version.patch create mode 100644 mingw-w64-python3.10/0109-configure.ac-don-t-check-for-clock_-functions.patch create mode 100644 mingw-w64-python3.10/0110-expanduser-normpath-paths-coming-from-env-vars.patch create mode 100644 mingw-w64-python3.10/0111-Add-support-for-Windows-7-Python-3.9.patch create mode 100644 mingw-w64-python3.10/0112-CI-test-the-build-and-add-some-mingw-specific-tests.patch create mode 100644 mingw-w64-python3.10/0113-smoketests-test-that-_decimal-exists.patch create mode 100644 mingw-w64-python3.10/0114-Prefer-sysconfig.python_build.patch create mode 100644 mingw-w64-python3.10/0115-Define-PY3_DLLNAME-to-fix-build.patch create mode 100644 mingw-w64-python3.10/0116-Commit-regenerated-importlib.patch create mode 100644 mingw-w64-python3.10/PKGBUILD create mode 100644 mingw-w64-python3.10/README.md create mode 100644 mingw-w64-python3.10/update-patches.sh diff --git a/mingw-w64-python3.10/.gitignore b/mingw-w64-python3.10/.gitignore new file mode 100644 index 0000000000..90fadbd318 --- /dev/null +++ b/mingw-w64-python3.10/.gitignore @@ -0,0 +1,2 @@ +cpython/ + diff --git a/mingw-w64-python3.10/0001-sysconfig-make-_sysconfigdata.py-relocatable.patch b/mingw-w64-python3.10/0001-sysconfig-make-_sysconfigdata.py-relocatable.patch new file mode 100644 index 0000000000..2b41f07518 --- /dev/null +++ b/mingw-w64-python3.10/0001-sysconfig-make-_sysconfigdata.py-relocatable.patch @@ -0,0 +1,61 @@ +From 1cb98a152bd4e35adf1cc415e2ecd7151bf8949e Mon Sep 17 00:00:00 2001 +From: Ray Donnelly +Date: Thu, 17 Jun 2021 18:51:10 +0530 +Subject: [PATCH 001/N] sysconfig: make _sysconfigdata.py relocatable +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Co-authored-by: lovetox <8661218+lovetox@users.noreply.github.com> +Signed-off-by: Naveen M K +--- + Lib/sysconfig.py | 20 ++++++++++++++++++++ + 1 file changed, 20 insertions(+) + +diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py +index 95b48f6..b1c59c1 100644 +--- a/Lib/sysconfig.py ++++ b/Lib/sysconfig.py +@@ -2,6 +2,7 @@ + + import os + import sys ++import textwrap + from os.path import pardir, realpath + + __all__ = [ +@@ -460,11 +461,30 @@ def _generate_posix_vars(): + os.makedirs(pybuilddir, exist_ok=True) + destfile = os.path.join(pybuilddir, name + '.py') + ++ replacement = """ ++ keys_to_replace = [ ++ 'BINDIR', 'BINLIBDEST', 'CONFINCLUDEDIR', ++ 'CONFINCLUDEPY', 'DESTDIRS', 'DESTLIB', 'DESTSHARED', ++ 'INCLDIRSTOMAKE', 'INCLUDEDIR', 'INCLUDEPY', ++ 'LIBDEST', 'LIBDIR', 'LIBPC', 'LIBPL', 'MACHDESTLIB', ++ 'MANDIR', 'SCRIPTDIR', 'datarootdir', 'exec_prefix', ++ 'TZPATH', ++ ] ++ ++ prefix = build_time_vars['BINDIR'][:-4] ++ ++ for key in keys_to_replace: ++ value = build_time_vars[key] ++ build_time_vars[key] = value.replace(prefix, sys.prefix) ++ """ ++ + with open(destfile, 'w', encoding='utf8') as f: ++ f.write('import sys\n') + f.write('# system configuration generated and used by' + ' the sysconfig module\n') + f.write('build_time_vars = ') + pprint.pprint(vars, stream=f) ++ f.write('\n%s' % textwrap.dedent(replacement)) + + # Create file used for sys.path fixup -- see Modules/getpath.c + with open('pybuilddir.txt', 'w', encoding='utf8') as f: +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0002-restore-setup-config.patch b/mingw-w64-python3.10/0002-restore-setup-config.patch new file mode 100644 index 0000000000..29b339ec83 --- /dev/null +++ b/mingw-w64-python3.10/0002-restore-setup-config.patch @@ -0,0 +1,83 @@ +From 2df5b8d470b56352fa8eb8bbf86e1947753afdac Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:12 +0530 +Subject: [PATCH 002/N] restore setup config + +Signed-off-by: Naveen M K +--- + Makefile.pre.in | 4 ++++ + Modules/Setup.config.in | 5 +++++ + configure.ac | 4 ++-- + 3 files changed, 11 insertions(+), 2 deletions(-) + create mode 100644 Modules/Setup.config.in + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index 790d974..712cb0b 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -711,10 +711,12 @@ oldsharedmods: $(SHAREDMODS) + Makefile Modules/config.c: Makefile.pre \ + $(srcdir)/Modules/config.c.in \ + $(MAKESETUP) \ ++ Modules/Setup.config \ + $(srcdir)/Modules/Setup \ + Modules/Setup.local + $(SHELL) $(MAKESETUP) -c $(srcdir)/Modules/config.c.in \ + -s Modules \ ++ Modules/Setup.config \ + Modules/Setup.local \ + $(srcdir)/Modules/Setup + @mv config.c Modules +@@ -1722,6 +1724,7 @@ libainstall: @DEF_MAKE_RULE@ python-config + $(INSTALL_DATA) Makefile $(DESTDIR)$(LIBPL)/Makefile + $(INSTALL_DATA) $(srcdir)/Modules/Setup $(DESTDIR)$(LIBPL)/Setup + $(INSTALL_DATA) Modules/Setup.local $(DESTDIR)$(LIBPL)/Setup.local ++ $(INSTALL_DATA) Modules/Setup.config $(DESTDIR)$(LIBPL)/Setup.config + $(INSTALL_DATA) Misc/python.pc $(DESTDIR)$(LIBPC)/python-$(VERSION).pc + $(INSTALL_DATA) Misc/python-embed.pc $(DESTDIR)$(LIBPC)/python-$(VERSION)-embed.pc + $(INSTALL_SCRIPT) $(srcdir)/Modules/makesetup $(DESTDIR)$(LIBPL)/makesetup +@@ -1948,6 +1951,7 @@ distclean: clobber + if test "$$file" != "$(srcdir)/Lib/test/data/README"; then rm "$$file"; fi; \ + done + -rm -f core Makefile Makefile.pre config.status Modules/Setup.local \ ++ Modules/Setup.config \ + Modules/ld_so_aix Modules/python.exp Misc/python.pc \ + Misc/python-embed.pc Misc/python-config.sh + -rm -f python*-gdb.py +diff --git a/Modules/Setup.config.in b/Modules/Setup.config.in +new file mode 100644 +index 0000000..5c1299d +--- /dev/null ++++ b/Modules/Setup.config.in +@@ -0,0 +1,5 @@ ++# This file is transmogrified into Setup.config by config.status. ++ ++# The purpose of this file is to conditionally enable certain modules ++# based on configure-time options. ++ +diff --git a/configure.ac b/configure.ac +index 3e6c07c..358784f 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -5938,7 +5938,7 @@ AC_SUBST(TEST_MODULES) + + + # generate output files +-AC_CONFIG_FILES(Makefile.pre Misc/python.pc Misc/python-embed.pc Misc/python-config.sh) ++AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc Misc/python-embed.pc Misc/python-config.sh) + AC_CONFIG_FILES([Modules/ld_so_aix], [chmod +x Modules/ld_so_aix]) + AC_OUTPUT + +@@ -5950,7 +5950,7 @@ fi + + echo "creating Makefile" >&AS_MESSAGE_FD + $SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \ +- -s Modules \ ++ -s Modules Modules/Setup.config \ + Modules/Setup.local $srcdir/Modules/Setup + mv config.c Modules + +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0003-build-add-with-nt-threads-and-make-it-default-on-min.patch b/mingw-w64-python3.10/0003-build-add-with-nt-threads-and-make-it-default-on-min.patch new file mode 100644 index 0000000000..313bd2bedc --- /dev/null +++ b/mingw-w64-python3.10/0003-build-add-with-nt-threads-and-make-it-default-on-min.patch @@ -0,0 +1,290 @@ +From 5807031b08c69e13f1279046ebf67eeb20264d00 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:12 +0530 +Subject: [PATCH 003/N] build: add --with-nt-threads and make it default on + mingw +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Co-authored-by: Christoph Reiter +Signed-off-by: Naveen M K +--- + Include/internal/pycore_condvar.h | 10 ++ + Include/pythread.h | 6 ++ + Modules/_multiprocessing/multiprocessing.h | 3 + + configure.ac | 101 ++++++++++++++++++++- + pyconfig.h.in | 3 + + 5 files changed, 121 insertions(+), 2 deletions(-) + +diff --git a/Include/internal/pycore_condvar.h b/Include/internal/pycore_condvar.h +index 8b89d70..dd98245 100644 +--- a/Include/internal/pycore_condvar.h ++++ b/Include/internal/pycore_condvar.h +@@ -5,6 +5,12 @@ + # error "this header requires Py_BUILD_CORE define" + #endif + ++#ifdef __MINGW32__ ++# if !defined(HAVE_PTHREAD_H) || defined(NT_THREADS) ++# undef _POSIX_THREADS ++# endif ++#endif ++ + #ifndef _POSIX_THREADS + /* This means pthreads are not implemented in libc headers, hence the macro + not present in unistd.h. But they still can be implemented as an external +@@ -37,6 +43,10 @@ + /* include windows if it hasn't been done before */ + #define WIN32_LEAN_AND_MEAN + #include ++/* winpthreads are involved via windows header, so need undef _POSIX_THREADS after header include */ ++#if defined(_POSIX_THREADS) ++#undef _POSIX_THREADS ++#endif + + /* options */ + /* non-emulated condition variables are provided for those that want +diff --git a/Include/pythread.h b/Include/pythread.h +index bb9d864..f1e52c6 100644 +--- a/Include/pythread.h ++++ b/Include/pythread.h +@@ -8,6 +8,12 @@ typedef void *PyThread_type_lock; + extern "C" { + #endif + ++#ifdef __MINGW32__ ++# if !defined(HAVE_PTHREAD_H) || defined(NT_THREADS) ++# undef _POSIX_THREADS ++# endif ++#endif ++ + /* Return status codes for Python lock acquisition. Chosen for maximum + * backwards compatibility, ie failure -> 0, success -> 1. */ + typedef enum PyLockStatus { +diff --git a/Modules/_multiprocessing/multiprocessing.h b/Modules/_multiprocessing/multiprocessing.h +index 277963b..07bb047 100644 +--- a/Modules/_multiprocessing/multiprocessing.h ++++ b/Modules/_multiprocessing/multiprocessing.h +@@ -21,6 +21,9 @@ + # endif + # define SEM_HANDLE HANDLE + # define SEM_VALUE_MAX LONG_MAX ++# if defined(HAVE_SEM_OPEN) && defined(_POSIX_THREADS) ++# include ++# endif + #else + # include /* O_CREAT and O_EXCL */ + # if defined(HAVE_SEM_OPEN) && !defined(POSIX_SEMAPHORES_NOT_ENABLED) +diff --git a/configure.ac b/configure.ac +index 358784f..380e64b 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2037,6 +2037,53 @@ then + BASECFLAGS="$BASECFLAGS $ac_arch_flags" + fi + ++dnl NOTE: ++dnl - GCC 4.4+ for mingw* require and use posix threads(pthreads-w32) ++dnl - Host may contain installed pthreads-w32. ++dnl - On windows platform only NT-thread model is supported. ++dnl To avoid miss detection scipt first will check for NT-thread model ++dnl and if is not found will try to detect build options for pthread ++dnl model. Autodetection could be overiden if variable with_nt_threads ++dnl is set in "Site Configuration" (see autoconf manual). ++dnl If NT-thread model is enabled script skips some checks that ++dnl impact build process. When a new functionality is added, developers ++dnl are responsible to update configure script to avoid thread models ++dnl to be mixed. ++ ++AC_MSG_CHECKING([for --with-nt-threads]) ++AC_ARG_WITH(nt-threads, ++ AS_HELP_STRING([--with-nt-threads], [build with windows threads (default is system-dependent)]), ++[ ++ case $withval in ++ no) with_nt_threads=no;; ++ yes) with_nt_threads=yes;; ++ *) with_nt_threads=yes;; ++ esac ++], [ ++ case $host in ++ *-*-mingw*) with_nt_threads=yes;; ++ *) with_nt_threads=no;; ++ esac ++]) ++AC_MSG_RESULT([$with_nt_threads]) ++ ++if test $with_nt_threads = yes ; then ++AC_MSG_CHECKING([whether linking with nt-threads work]) ++AC_LINK_IFELSE([ ++ AC_LANG_PROGRAM([[]],[[_beginthread(0, 0, 0);]]) ++ ], ++ [AC_MSG_RESULT([yes])], ++ [AC_MSG_ERROR([failed to link with nt-threads])]) ++fi ++ ++if test $with_nt_threads = yes ; then ++ dnl temporary default flag to avoid additional pthread checks ++ dnl and initilize other ac..thread flags to no ++ ac_cv_pthread_is_default=no ++ ac_cv_kthread=no ++ ac_cv_pthread=no ++ dnl ac_cv_kpthread is set to no if default is yes (see below) ++else + # On some compilers, pthreads are available without further options + # (e.g. MacOS X). On some of these systems, the compiler will not + # complain if unaccepted options are passed (e.g. gcc on Mac OS X). +@@ -2155,6 +2202,8 @@ CC="$ac_save_cc"]) + AC_MSG_RESULT($ac_cv_pthread) + fi + ++fi ++ + # If we have set a CC compiler flag for thread support then + # check if it works for CXX, too. + ac_cv_cxx_thread=no +@@ -2175,6 +2224,10 @@ elif test "$ac_cv_pthread" = "yes" + then + CXX="$CXX -pthread" + ac_cv_cxx_thread=yes ++elif test $with_nt_threads = yes ++then ++ dnl set to always to skip extra pthread check below ++ ac_cv_cxx_thread=always + fi + + if test $ac_cv_cxx_thread = yes +@@ -2207,8 +2260,8 @@ dnl AC_MSG_RESULT($cpp_type) + AC_HEADER_STDC + AC_CHECK_HEADERS(asm/types.h crypt.h conio.h direct.h dlfcn.h errno.h \ + fcntl.h grp.h \ +-ieeefp.h io.h langinfo.h libintl.h process.h pthread.h \ +-sched.h shadow.h signal.h stropts.h termios.h \ ++ieeefp.h io.h langinfo.h libintl.h process.h \ ++shadow.h signal.h stropts.h termios.h \ + utime.h \ + poll.h sys/devpoll.h sys/epoll.h sys/poll.h \ + sys/audioio.h sys/xattr.h sys/bsdtty.h sys/event.h sys/file.h sys/ioctl.h \ +@@ -2223,6 +2276,14 @@ sys/mman.h sys/eventfd.h) + AC_HEADER_DIRENT + AC_HEADER_MAJOR + ++# If using nt threads, don't look for pthread.h or thread.h ++if test "x$with_nt_threads" = xno ; then ++AC_HEADER_STDC ++AC_CHECK_HEADERS(pthread.h sched.h thread.h) ++AC_HEADER_DIRENT ++AC_HEADER_MAJOR ++fi ++ + # bluetooth/bluetooth.h has been known to not compile with -std=c99. + # http://permalink.gmane.org/gmane.linux.bluez.kernel/22294 + SAVE_CFLAGS=$CFLAGS +@@ -2422,6 +2483,10 @@ fi + + AC_MSG_CHECKING(for pthread_t) + have_pthread_t=no ++if test $with_nt_threads = yes ; then ++ dnl skip check for pthread_t if NT-thread model is enabled ++ have_pthread_t=skip ++else + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([[#include ]], [[pthread_t x; x = *(pthread_t*)0;]]) + ],[have_pthread_t=yes],[]) +@@ -2452,6 +2517,7 @@ if test "$ac_cv_sizeof_pthread_key_t" -eq "$ac_cv_sizeof_int" ; then + else + AC_MSG_RESULT(no) + fi ++fi + CC="$ac_save_cc" + + AC_SUBST(OTHER_LIBTOOL_OPT) +@@ -2885,10 +2951,15 @@ void *x = uuid_enc_be + [AC_MSG_RESULT(no)] + ) + ++if test $with_nt_threads = yes ; then ++ dnl do not search for sem_init if NT-thread model is enabled ++ : ++else + # 'Real Time' functions on Solaris + # posix4 on Solaris 2.6 + # pthread (first!) on Linux + AC_SEARCH_LIBS(sem_init, pthread rt posix4) ++fi + + # check if we need libintl for locale functions + AC_CHECK_LIB(intl, textdomain, +@@ -3225,6 +3296,11 @@ then + CXX="$CXX -pthread" + fi + posix_threads=yes ++elif test $with_nt_threads = yes ++then ++ posix_threads=no ++ AC_DEFINE(NT_THREADS, 1, ++ [Define to 1 if you want to use native NT threads]) + else + if test ! -z "$withval" -a -d "$withval" + then LDFLAGS="$LDFLAGS -L$withval" +@@ -3679,6 +3755,15 @@ else + fi + + # checks for library functions ++if test $with_nt_threads = yes ; then ++ dnl GCC(mingw) 4.4+ require and use posix threads(pthreads-w32) ++ dnl and host may contain installed pthreads-w32. ++ dnl Skip checks for some functions declared in pthreads-w32 if ++ dnl NT-thread model is enabled. ++ ac_cv_func_pthread_kill=skip ++ ac_cv_func_sem_open=skip ++ ac_cv_func_sched_setscheduler=skip ++fi + AC_CHECK_FUNCS(alarm accept4 setitimer getitimer bind_textdomain_codeset chown \ + clock confstr close_range copy_file_range ctermid dup3 execv explicit_bzero \ + explicit_memset faccessat fchmod fchmodat fchown fchownat \ +@@ -4611,6 +4696,10 @@ AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include ]]) + # the kernel module that provides POSIX semaphores + # isn't loaded by default, so an attempt to call + # sem_open results in a 'Signal 12' error. ++if test $with_nt_threads = yes ; then ++ dnl skip posix semaphores test if NT-thread model is enabled ++ ac_cv_posix_semaphores_enabled=no ++fi + AC_MSG_CHECKING(whether POSIX semaphores are enabled) + AC_CACHE_VAL(ac_cv_posix_semaphores_enabled, + AC_RUN_IFELSE([AC_LANG_SOURCE([[ +@@ -4644,6 +4733,14 @@ fi + + # Multiprocessing check for broken sem_getvalue + AC_MSG_CHECKING(for broken sem_getvalue) ++if test $with_nt_threads = yes ; then ++ dnl Skip test if NT-thread model is enabled. ++ dnl NOTE the test case below fail for pthreads-w32 as: ++ dnl - SEM_FAILED is not defined; ++ dnl - sem_open is a stub; ++ dnl - sem_getvalue work(!). ++ ac_cv_broken_sem_getvalue=skip ++fi + AC_CACHE_VAL(ac_cv_broken_sem_getvalue, + AC_RUN_IFELSE([AC_LANG_SOURCE([[ + #include +diff --git a/pyconfig.h.in b/pyconfig.h.in +index 63438d8..fb0999e 100644 +--- a/pyconfig.h.in ++++ b/pyconfig.h.in +@@ -1377,6 +1377,9 @@ + /* Define if mvwdelch in curses.h is an expression. */ + #undef MVWDELCH_IS_EXPRESSION + ++/* Define to 1 if you want to use native NT threads */ ++#undef NT_THREADS ++ + /* Define to the address where bug reports for this package should be sent. */ + #undef PACKAGE_BUGREPORT + +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0004-MINGW-translate-gcc-internal-defines-to-python-platf.patch b/mingw-w64-python3.10/0004-MINGW-translate-gcc-internal-defines-to-python-platf.patch new file mode 100644 index 0000000000..d17723add6 --- /dev/null +++ b/mingw-w64-python3.10/0004-MINGW-translate-gcc-internal-defines-to-python-platf.patch @@ -0,0 +1,45 @@ +From 709e6d27593b34ee67d06f3e47b9853164c15bd3 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:13 +0530 +Subject: [PATCH 004/N] MINGW translate gcc internal defines to python platf +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Co-authored-by: Christoph Reiter +Signed-off-by: Naveen M K +--- + Include/pyport.h | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +diff --git a/Include/pyport.h b/Include/pyport.h +index 6ab0ae4..a27bedf 100644 +--- a/Include/pyport.h ++++ b/Include/pyport.h +@@ -26,6 +26,21 @@ + #endif + + ++#ifdef __MINGW32__ ++/* Translate GCC[mingw*] platform specific defines to those ++ * used in python code. ++ */ ++#if !defined(MS_WIN64) && defined(_WIN64) ++# define MS_WIN64 ++#endif ++#if !defined(MS_WIN32) && defined(_WIN32) ++# define MS_WIN32 ++#endif ++#if !defined(MS_WINDOWS) && defined(MS_WIN32) ++# define MS_WINDOWS ++#endif ++#endif /* __MINGW32__*/ ++ + /************************************************************************** + Symbols and macros to supply platform-independent interfaces to basic + C language & library operations whose spellings vary across platforms. +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0005-MINGW-configure-MACHDEP-and-platform-for-build.patch b/mingw-w64-python3.10/0005-MINGW-configure-MACHDEP-and-platform-for-build.patch new file mode 100644 index 0000000000..cc2e779d17 --- /dev/null +++ b/mingw-w64-python3.10/0005-MINGW-configure-MACHDEP-and-platform-for-build.patch @@ -0,0 +1,64 @@ +From ebf4ba240c20f555afa85a8d9d8b8b0e50038e47 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:14 +0530 +Subject: [PATCH 005/N] MINGW configure MACHDEP and platform for build +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + configure.ac | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 380e64b..3e9fd12 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -400,6 +400,9 @@ then + *-*-cygwin*) + ac_sys_system=Cygwin + ;; ++ *-*-mingw*) ++ ac_sys_system=MINGW ++ ;; + *-*-vxworks*) + ac_sys_system=VxWorks + ;; +@@ -429,6 +432,7 @@ then + linux*) MACHDEP="linux";; + cygwin*) MACHDEP="cygwin";; + darwin*) MACHDEP="darwin";; ++ mingw*) MACHDEP="win32";; + '') MACHDEP="unknown";; + esac + fi +@@ -452,12 +456,23 @@ if test "$cross_compiling" = yes; then + *-*-vxworks*) + _host_cpu=$host_cpu + ;; ++ *-*-mingw*) ++ _host_cpu= ++ ;; + *) + # for now, limit cross builds to known configurations + MACHDEP="unknown" + AC_MSG_ERROR([cross build not supported for $host]) + esac + _PYTHON_HOST_PLATFORM="$MACHDEP${_host_cpu:+-$_host_cpu}" ++ ++ case "$host_os" in ++ mingw*) ++ # As sys.platform() return 'win32' to build python and extantions ++ # we will use 'mingw' (in setup.py and etc.) ++ _PYTHON_HOST_PLATFORM=mingw ++ ;; ++ esac + fi + + # Some systems cannot stand _XOPEN_SOURCE being defined at all; they +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0006-MINGW-preset-configure-defaults.patch b/mingw-w64-python3.10/0006-MINGW-preset-configure-defaults.patch new file mode 100644 index 0000000000..45040d39c9 --- /dev/null +++ b/mingw-w64-python3.10/0006-MINGW-preset-configure-defaults.patch @@ -0,0 +1,91 @@ +From d9039731ee7a77d03c41a807e95ab009e8d53e1d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:15 +0530 +Subject: [PATCH 006/N] MINGW preset configure defaults +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Co-authored-by: Christoph Reiter +Signed-off-by: Naveen M K +--- + Misc/config_mingw | 12 ++++++++++++ + Misc/cross_mingw32 | 11 +++++++++++ + configure.ac | 22 ++++++++++++++++++++++ + 3 files changed, 45 insertions(+) + create mode 100644 Misc/config_mingw + create mode 100644 Misc/cross_mingw32 + +diff --git a/Misc/config_mingw b/Misc/config_mingw +new file mode 100644 +index 0000000..513065d +--- /dev/null ++++ b/Misc/config_mingw +@@ -0,0 +1,12 @@ ++# configure defaults for mingw* hosts ++ ++# mingw functions to ignore ++ac_cv_func_ftruncate=ignore # implement it as _chsize ++ ++# mingw-w64 functions to ignore ++ac_cv_func_truncate=ignore ++ac_cv_func_alarm=ignore ++ ++# files to ignore ++ac_cv_file__dev_ptmx=ignore #NOTE: under MSYS environment device exist ++ac_cv_file__dev_ptc=no +diff --git a/Misc/cross_mingw32 b/Misc/cross_mingw32 +new file mode 100644 +index 0000000..03fde9e +--- /dev/null ++++ b/Misc/cross_mingw32 +@@ -0,0 +1,11 @@ ++# configure defaults for mingw32 host if cross-build ++ ++ac_cv_little_endian_double=yes ++ac_cv_big_endian_double=no ++ac_cv_mixed_endian_double=no ++ ++ac_cv_tanh_preserves_zero_sign=yes ++ ++ac_cv_wchar_t_signed=no ++ ++ac_cv_have_size_t_format=no +diff --git a/configure.ac b/configure.ac +index 3e9fd12..e646e14 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -903,6 +903,28 @@ if test x$MULTIARCH != x; then + fi + AC_SUBST(MULTIARCH_CPPFLAGS) + ++# initialize default configuration ++py_config= ++case $host in ++ *-*-mingw*) py_config=mingw ;; ++esac ++if test -n "$py_config" ; then ++ AC_MSG_NOTICE([loading configure defaults from .../Misc/config_$py_config"]) ++ . "$srcdir/Misc/config_$py_config" ++fi ++ ++# initialize defaults for cross-builds ++if test "$cross_compiling" = yes; then ++ py_config=$host_os ++ case $py_config in ++ mingw32*) py_config=mingw32 ;; ++ esac ++ if test -f "$srcdir/Misc/cross_$py_config" ; then ++ AC_MSG_NOTICE([loading cross defaults from .../Misc/cross_$py_config"]) ++ . "$srcdir/Misc/cross_$py_config" ++ fi ++fi ++ + AC_MSG_CHECKING([for -Wl,--no-as-needed]) + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -Wl,--no-as-needed" +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0007-MINGW-configure-largefile-support-for-windows-builds.patch b/mingw-w64-python3.10/0007-MINGW-configure-largefile-support-for-windows-builds.patch new file mode 100644 index 0000000000..c72a09d16b --- /dev/null +++ b/mingw-w64-python3.10/0007-MINGW-configure-largefile-support-for-windows-builds.patch @@ -0,0 +1,44 @@ +From 59ec39b94843b3c62518a22ba604b87ab3538d23 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:16 +0530 +Subject: [PATCH 007/N] MINGW configure largefile support for windows builds +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Co-authored-by: Christoph Reiter +Signed-off-by: Naveen M K +--- + configure.ac | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/configure.ac b/configure.ac +index e646e14..2562d56 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2487,8 +2487,20 @@ AC_CHECK_SIZEOF(off_t, [], [ + ]) + + AC_MSG_CHECKING(whether to enable large file support) ++have_largefile_support=no + if test "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \ + "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then ++ have_largefile_support=yes ++else ++ case $host in ++ *-*-mingw*) ++ dnl Activate on windows platforms (32&64-bit) where off_t(4) < fpos_t(8) ++ have_largefile_support=yes ++ ;; ++ esac ++fi ++ ++if test $have_largefile_support = yes ; then + AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1, + [Defined to enable large file support when an off_t is bigger than a long + and long long is at least as big as an off_t. You may need +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0008-MINGW-add-srcdir-PC-to-CPPFLAGS.patch b/mingw-w64-python3.10/0008-MINGW-add-srcdir-PC-to-CPPFLAGS.patch new file mode 100644 index 0000000000..582c683778 --- /dev/null +++ b/mingw-w64-python3.10/0008-MINGW-add-srcdir-PC-to-CPPFLAGS.patch @@ -0,0 +1,44 @@ +From 3b04dfe2ddbe743c498510fc7d7630a76307c5be Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:18 +0530 +Subject: [PATCH 008/N] MINGW add srcdir PC to CPPFLAGS +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + configure.ac | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 2562d56..8d4589a 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -5688,8 +5688,21 @@ do + THREADHEADERS="$THREADHEADERS \$(srcdir)/$h" + done + ++case $host in ++ *-*-mingw*) ++ dnl Required for windows builds as Objects/exceptions.c require ++ dnl "errmap.h" from $srcdir/PC. ++ dnl Note we cannot use BASECPPFLAGS as autogenerated pyconfig.h ++ dnl has to be before customized located in ../PC. ++ CPPFLAGS="-I\$(srcdir)/PC $CPPFLAGS" ++ ;; ++esac ++ + AC_SUBST(SRCDIRS) + SRCDIRS="Parser Objects Python Modules Modules/_io Programs" ++case $host in ++ *-*-mingw*) SRCDIRS="$SRCDIRS PC";; ++esac + AC_MSG_CHECKING(for build directories) + for dir in $SRCDIRS; do + if test ! -d $dir; then +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0009-MINGW-init-system-calls.patch b/mingw-w64-python3.10/0009-MINGW-init-system-calls.patch new file mode 100644 index 0000000000..ac05182e36 --- /dev/null +++ b/mingw-w64-python3.10/0009-MINGW-init-system-calls.patch @@ -0,0 +1,125 @@ +From dd953baf4b3615810a06c5f52257ebdc9516e00d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:19 +0530 +Subject: [PATCH 009/N] MINGW init system calls +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + Modules/Setup | 1 - + Modules/Setup.config.in | 3 +++ + Modules/posixmodule.c | 29 +++++++++++++++++++++++++---- + configure.ac | 8 ++++++++ + 4 files changed, 36 insertions(+), 5 deletions(-) + +diff --git a/Modules/Setup b/Modules/Setup +index 87c6a15..34d98e5 100644 +--- a/Modules/Setup ++++ b/Modules/Setup +@@ -101,7 +101,6 @@ PYTHONPATH=$(COREPYTHONPATH) + # This only contains the minimal set of modules required to run the + # setup.py script in the root of the Python source tree. + +-posix -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal posixmodule.c # posix (UNIX) system calls + errno errnomodule.c # posix (UNIX) errno values + pwd pwdmodule.c # this is needed to find out the user's home dir + # if $HOME is not set +diff --git a/Modules/Setup.config.in b/Modules/Setup.config.in +index 5c1299d..9b364fe 100644 +--- a/Modules/Setup.config.in ++++ b/Modules/Setup.config.in +@@ -3,3 +3,6 @@ + # The purpose of this file is to conditionally enable certain modules + # based on configure-time options. + ++# init system calls(posix/nt/...) for INITFUNC (used by makesetup) ++@INITSYS@ -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal posixmodule.c ++ +diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c +index 25ddc82..d54994d 100644 +--- a/Modules/posixmodule.c ++++ b/Modules/posixmodule.c +@@ -316,6 +316,27 @@ corresponding Unix manual entries for more information on calls."); + # define HAVE_CWAIT 1 + # define HAVE_FSYNC 1 + # define fsync _commit ++# elif defined(__MINGW32__) /* GCC for windows hosts */ ++/* getlogin is detected by configure on mingw-w64 */ ++# undef HAVE_GETLOGIN ++/*# define HAVE_GETCWD 1 - detected by configure*/ ++# define HAVE_GETPPID 1 ++# define HAVE_GETLOGIN 1 ++# define HAVE_SPAWNV 1 ++# define HAVE_WSPAWNV 1 ++# define HAVE_WEXECV 1 ++/*# define HAVE_EXECV 1 - detected by configure*/ ++# define HAVE_PIPE 1 ++# define HAVE_POPEN 1 ++# define HAVE_SYSTEM 1 ++# define HAVE_CWAIT 1 ++# define HAVE_FSYNC 1 ++# define fsync _commit ++# include ++# include ++# ifndef _MAX_ENV ++# define _MAX_ENV 32767 ++# endif + # else + /* Unix functions that the configure script doesn't check for */ + # ifndef __VXWORKS__ +@@ -416,7 +437,7 @@ extern char *ctermid_r(char *); + # endif + #endif + +-#ifdef _MSC_VER ++#ifdef MS_WINDOWS + # ifdef HAVE_DIRECT_H + # include + # endif +@@ -438,7 +459,7 @@ extern char *ctermid_r(char *); + # include // ShellExecute() + # include // UNLEN + # define HAVE_SYMLINK +-#endif /* _MSC_VER */ ++#endif /* MS_WINDOWS */ + + #ifndef MAXPATHLEN + # if defined(PATH_MAX) && PATH_MAX > 1024 +@@ -1587,9 +1608,9 @@ win32_get_reparse_tag(HANDLE reparse_point_handle, ULONG *reparse_tag) + ** man environ(7). + */ + #include +-#elif !defined(_MSC_VER) && (!defined(__WATCOMC__) || defined(__QNX__) || defined(__VXWORKS__)) ++#elif !defined(MS_WINDOWS) && (!defined(__WATCOMC__) || defined(__QNX__) || defined(__VXWORKS__)) + extern char **environ; +-#endif /* !_MSC_VER */ ++#endif /* !MS_WINDOWS */ + + static PyObject * + convertenviron(void) +diff --git a/configure.ac b/configure.ac +index 8d4589a..22fcd16 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -584,6 +584,14 @@ then + AC_DEFINE(_INCLUDE__STDC_A1_SOURCE, 1, Define to include mbstate_t for mbrtowc) + fi + ++AC_MSG_CHECKING([for init system calls]) ++AC_SUBST(INITSYS) ++case $host in ++ *-*-mingw*) INITSYS=nt;; ++ *) INITSYS=posix;; ++esac ++AC_MSG_RESULT([$INITSYS]) ++ + # Record the configure-time value of MACOSX_DEPLOYMENT_TARGET, + # it may influence the way we can build extensions, so distutils + # needs to check it +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0010-MINGW-build-in-windows-modules-winreg.patch b/mingw-w64-python3.10/0010-MINGW-build-in-windows-modules-winreg.patch new file mode 100644 index 0000000000..ddfabb0b63 --- /dev/null +++ b/mingw-w64-python3.10/0010-MINGW-build-in-windows-modules-winreg.patch @@ -0,0 +1,80 @@ +From 3c73f5750360bc841913844c113322e8898e6ae6 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:20 +0530 +Subject: [PATCH 010/N] MINGW build in windows modules winreg +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Co-authored-by: Christoph Reiter +Signed-off-by: Naveen M K +--- + Modules/Setup.config.in | 3 +++ + PC/winreg.c | 19 +++++++++++++++++++ + configure.ac | 7 +++++++ + 3 files changed, 29 insertions(+) + +diff --git a/Modules/Setup.config.in b/Modules/Setup.config.in +index 9b364fe..612cabd 100644 +--- a/Modules/Setup.config.in ++++ b/Modules/Setup.config.in +@@ -6,3 +6,6 @@ + # init system calls(posix/nt/...) for INITFUNC (used by makesetup) + @INITSYS@ -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal posixmodule.c + ++# build-in modules for windows platform: ++@USE_WIN32_MODULE@winreg ../PC/winreg.c ++ +diff --git a/PC/winreg.c b/PC/winreg.c +index 004a89a..fbcd2c4 100644 +--- a/PC/winreg.c ++++ b/PC/winreg.c +@@ -18,6 +18,25 @@ + #include "structmember.h" // PyMemberDef + #include + ++#ifndef SIZEOF_HKEY ++/* used only here */ ++#if defined(MS_WIN64) ++# define SIZEOF_HKEY 8 ++#elif defined(MS_WIN32) ++# define SIZEOF_HKEY 4 ++#else ++# error "SIZEOF_HKEY is not defined" ++#endif ++#endif ++ ++#ifndef REG_LEGAL_CHANGE_FILTER ++#define REG_LEGAL_CHANGE_FILTER (\ ++ REG_NOTIFY_CHANGE_NAME |\ ++ REG_NOTIFY_CHANGE_ATTRIBUTES |\ ++ REG_NOTIFY_CHANGE_LAST_SET |\ ++ REG_NOTIFY_CHANGE_SECURITY ) ++#endif ++ + static BOOL PyHKEY_AsHKEY(PyObject *ob, HKEY *pRes, BOOL bNoneOK); + static BOOL clinic_HKEY_converter(PyObject *ob, void *p); + static PyObject *PyHKEY_FromHKEY(HKEY h); +diff --git a/configure.ac b/configure.ac +index 22fcd16..0b702b7 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3319,6 +3319,13 @@ else + fi]) + AC_MSG_RESULT($with_dbmliborder) + ++# Determine if windows modules should be used. ++AC_SUBST(USE_WIN32_MODULE) ++USE_WIN32_MODULE='#' ++case $host in ++ *-*-mingw*) USE_WIN32_MODULE=;; ++esac ++ + # Templates for things AC_DEFINEd more than once. + # For a single AC_DEFINE, no template is needed. + AH_TEMPLATE(_REENTRANT, +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0011-MINGW-determine-if-pwdmodule-should-be-used.patch b/mingw-w64-python3.10/0011-MINGW-determine-if-pwdmodule-should-be-used.patch new file mode 100644 index 0000000000..73e0d43f7a --- /dev/null +++ b/mingw-w64-python3.10/0011-MINGW-determine-if-pwdmodule-should-be-used.patch @@ -0,0 +1,66 @@ +From dbf09c9037cb36f2388009012043147d5f93c9db Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:21 +0530 +Subject: [PATCH 011/N] MINGW determine if pwdmodule should be used +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Co-authored-by: Christoph Reiter +Signed-off-by: Naveen M K +--- + Modules/Setup | 2 -- + Modules/Setup.config.in | 3 +++ + configure.ac | 7 +++++++ + 3 files changed, 10 insertions(+), 2 deletions(-) + +diff --git a/Modules/Setup b/Modules/Setup +index 34d98e5..e765e05 100644 +--- a/Modules/Setup ++++ b/Modules/Setup +@@ -102,8 +102,6 @@ PYTHONPATH=$(COREPYTHONPATH) + # setup.py script in the root of the Python source tree. + + errno errnomodule.c # posix (UNIX) errno values +-pwd pwdmodule.c # this is needed to find out the user's home dir +- # if $HOME is not set + _sre -DPy_BUILD_CORE_BUILTIN _sre.c # Fredrik Lundh's new regular expressions + _codecs _codecsmodule.c # access to the builtin codecs and codec registry + _weakref _weakref.c # weak references +diff --git a/Modules/Setup.config.in b/Modules/Setup.config.in +index 612cabd..d071a74 100644 +--- a/Modules/Setup.config.in ++++ b/Modules/Setup.config.in +@@ -6,6 +6,9 @@ + # init system calls(posix/nt/...) for INITFUNC (used by makesetup) + @INITSYS@ -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal posixmodule.c + ++# This is needed to find out the user's home dir if $HOME is not set ++@USE_PWD_MODULE@pwd pwdmodule.c ++ + # build-in modules for windows platform: + @USE_WIN32_MODULE@winreg ../PC/winreg.c + +diff --git a/configure.ac b/configure.ac +index 0b702b7..6245530 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3326,6 +3326,13 @@ case $host in + *-*-mingw*) USE_WIN32_MODULE=;; + esac + ++# Determine if pwdmodule should be used. ++AC_SUBST(USE_PWD_MODULE) ++USE_PWD_MODULE= ++case $host in ++ *-*-mingw*) USE_PWD_MODULE='#';; ++esac ++ + # Templates for things AC_DEFINEd more than once. + # For a single AC_DEFINE, no template is needed. + AH_TEMPLATE(_REENTRANT, +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0012-issue6672-v2-Add-Mingw-recognition-to-pyport.h-to-al.patch b/mingw-w64-python3.10/0012-issue6672-v2-Add-Mingw-recognition-to-pyport.h-to-al.patch new file mode 100644 index 0000000000..1d30c0281d --- /dev/null +++ b/mingw-w64-python3.10/0012-issue6672-v2-Add-Mingw-recognition-to-pyport.h-to-al.patch @@ -0,0 +1,83 @@ +From ebe0f8b477a7500980b61a30d2d48cbe3749df9b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:23 +0530 +Subject: [PATCH 012/N] issue6672 v2 Add Mingw recognition to pyport.h to al +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + Include/pyport.h | 20 +++++++++++--------- + setup.py | 3 +++ + 2 files changed, 14 insertions(+), 9 deletions(-) + +diff --git a/Include/pyport.h b/Include/pyport.h +index a27bedf..dedc3b8 100644 +--- a/Include/pyport.h ++++ b/Include/pyport.h +@@ -669,12 +669,12 @@ extern char * _getpty(int *, int, mode_t, int); + */ + + /* +- All windows ports, except cygwin, are handled in PC/pyconfig.h. ++ Only MSVC windows ports is handled in PC/pyconfig.h. + +- Cygwin is the only other autoconf platform requiring special ++ Cygwin and Mingw is the only other autoconf platform requiring special + linkage handling and it uses __declspec(). + */ +-#if defined(__CYGWIN__) ++#if defined(__CYGWIN__) || defined(__MINGW32__) + # define HAVE_DECLSPEC_DLL + #endif + +@@ -687,21 +687,23 @@ extern char * _getpty(int *, int, mode_t, int); + # define PyAPI_FUNC(RTYPE) Py_EXPORTED_SYMBOL RTYPE + # define PyAPI_DATA(RTYPE) extern Py_EXPORTED_SYMBOL RTYPE + /* module init functions inside the core need no external linkage */ +- /* except for Cygwin to handle embedding */ +-# if defined(__CYGWIN__) ++ /* except for Cygwin/Mingw to handle embedding */ ++# if defined(__CYGWIN__) || defined(__MINGW32__) + # define PyMODINIT_FUNC Py_EXPORTED_SYMBOL PyObject* +-# else /* __CYGWIN__ */ ++# else /* __CYGWIN__ || __MINGW32__*/ + # define PyMODINIT_FUNC PyObject* +-# endif /* __CYGWIN__ */ ++# endif /* __CYGWIN__ || __MINGW32__*/ + # else /* Py_BUILD_CORE */ + /* Building an extension module, or an embedded situation */ + /* public Python functions and data are imported */ + /* Under Cygwin, auto-import functions to prevent compilation */ + /* failures similar to those described at the bottom of 4.1: */ + /* http://docs.python.org/extending/windows.html#a-cookbook-approach */ +-# if !defined(__CYGWIN__) ++# if defined(__CYGWIN__) || defined(__MINGW32__) ++# define PyAPI_FUNC(RTYPE) RTYPE ++# else + # define PyAPI_FUNC(RTYPE) Py_IMPORTED_SYMBOL RTYPE +-# endif /* !__CYGWIN__ */ ++# endif /* __CYGWIN__ || __MINGW32__*/ + # define PyAPI_DATA(RTYPE) extern Py_IMPORTED_SYMBOL RTYPE + /* module init functions outside the core must be exported */ + # if defined(__cplusplus) +diff --git a/setup.py b/setup.py +index 3d250e7..5270469 100644 +--- a/setup.py ++++ b/setup.py +@@ -468,6 +468,9 @@ class PyBuildExt(build_ext): + def build_extensions(self): + self.set_srcdir() + ++ if MS_WINDOWS: ++ self.compiler.define_macro("Py_BUILD_CORE_MODULE") ++ + # Detect which modules should be compiled + self.detect_modules() + +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0013-MINGW-configure-for-shared-build.patch b/mingw-w64-python3.10/0013-MINGW-configure-for-shared-build.patch new file mode 100644 index 0000000000..7004f21e1a --- /dev/null +++ b/mingw-w64-python3.10/0013-MINGW-configure-for-shared-build.patch @@ -0,0 +1,70 @@ +From e0901ec1d73b317b0b5a1930b4c3a16581a933c0 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:24 +0530 +Subject: [PATCH 013/N] MINGW configure for shared build +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + configure.ac | 20 +++++++++++++++++++- + 1 file changed, 19 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 6245530..4d59547 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1220,6 +1220,13 @@ if test $enable_shared = "yes"; then + ;; + + esac ++ case $host in ++ *-*-mingw*) ++ LDLIBRARY='libpython$(LDVERSION).dll.a' ++ DLLLIBRARY='libpython$(LDVERSION).dll' ++ BLDLIBRARY='-L. -lpython$(LDVERSION)' ++ ;; ++ esac + else # shared is disabled + PY_ENABLE_SHARED=0 + case $ac_sys_system in +@@ -1228,6 +1235,10 @@ else # shared is disabled + LDLIBRARY='libpython$(LDVERSION).dll.a' + ;; + esac ++ case $host in ++ *-*-mingw*) ++ LDLIBRARY='libpython$(LDVERSION).a';; ++ esac + fi + + if test "$cross_compiling" = yes; then +@@ -2831,6 +2842,12 @@ then + LDCXXSHARED="g++ -shared -Wl,--enable-auto-image-base";; + *) LDSHARED="ld";; + esac ++ case $host in ++ *-*-mingw*) ++ LDSHARED='$(CC) -shared -Wl,--enable-auto-image-base' ++ LDCXXSHARED='$(CXX) -shared -Wl,--enable-auto-image-base' ++ ;; ++ esac + fi + AC_MSG_RESULT($LDSHARED) + LDCXXSHARED=${LDCXXSHARED-$LDSHARED} +@@ -5716,7 +5733,8 @@ case $host in + dnl "errmap.h" from $srcdir/PC. + dnl Note we cannot use BASECPPFLAGS as autogenerated pyconfig.h + dnl has to be before customized located in ../PC. +- CPPFLAGS="-I\$(srcdir)/PC $CPPFLAGS" ++ dnl (-I. at end is workaround for setup.py logic) ++ CPPFLAGS="-I\$(srcdir)/PC $CPPFLAGS -I." + ;; + esac + +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0014-MINGW-dynamic-loading-support.patch b/mingw-w64-python3.10/0014-MINGW-dynamic-loading-support.patch new file mode 100644 index 0000000000..0be8c88bd4 --- /dev/null +++ b/mingw-w64-python3.10/0014-MINGW-dynamic-loading-support.patch @@ -0,0 +1,105 @@ +From 4a4fe925bcfd177cc3c00ee2599a56398e22238b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:25 +0530 +Subject: [PATCH 014/N] MINGW dynamic loading support +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + Makefile.pre.in | 6 ++++++ + Python/dynload_win.c | 9 +++++++-- + configure.ac | 16 ++++++++++++++++ + 3 files changed, 29 insertions(+), 2 deletions(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index 712cb0b..9839951 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -826,6 +826,12 @@ Python/dynload_hpux.o: $(srcdir)/Python/dynload_hpux.c Makefile + -DSHLIB_EXT='"$(EXT_SUFFIX)"' \ + -o $@ $(srcdir)/Python/dynload_hpux.c + ++Python/dynload_win.o: $(srcdir)/Python/dynload_win.c Makefile ++ $(CC) -c $(PY_CORE_CFLAGS) \ ++ -DSHLIB_SUFFIX='"$(SHLIB_SUFFIX)"' \ ++ -DEXT_SUFFIX='"$(EXT_SUFFIX)"' \ ++ -o $@ $(srcdir)/Python/dynload_win.c ++ + Python/sysmodule.o: $(srcdir)/Python/sysmodule.c Makefile $(srcdir)/Include/pydtrace.h + $(CC) -c $(PY_CORE_CFLAGS) \ + -DABIFLAGS='"$(ABIFLAGS)"' \ +diff --git a/Python/dynload_win.c b/Python/dynload_win.c +index 5702ab2..6b53780 100644 +--- a/Python/dynload_win.c ++++ b/Python/dynload_win.c +@@ -27,6 +27,12 @@ + #define PYD_UNTAGGED_SUFFIX PYD_DEBUG_SUFFIX ".pyd" + + const char *_PyImport_DynLoadFiletab[] = { ++#ifdef EXT_SUFFIX ++ EXT_SUFFIX, /* include SOABI flags where is encoded debug */ ++#endif ++#ifdef SHLIB_SUFFIX ++ "-abi" PYTHON_ABI_STRING SHLIB_SUFFIX, ++#endif + PYD_TAGGED_SUFFIX, + PYD_UNTAGGED_SUFFIX, + NULL +@@ -192,8 +198,7 @@ dl_funcptr _PyImport_FindSharedFuncptrWindows(const char *prefix, + ensure DLLs adjacent to the PYD are preferred. */ + Py_BEGIN_ALLOW_THREADS + hDLL = LoadLibraryExW(wpathname, NULL, +- LOAD_LIBRARY_SEARCH_DEFAULT_DIRS | +- LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR); ++ LOAD_WITH_ALTERED_SEARCH_PATH); + Py_END_ALLOW_THREADS + #if !USE_UNICODE_WCHAR_CACHE + PyMem_Free(wpathname); +diff --git a/configure.ac b/configure.ac +index 4d59547..7f024d0 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2718,6 +2718,9 @@ if test -z "$SHLIB_SUFFIX"; then + CYGWIN*) SHLIB_SUFFIX=.dll;; + *) SHLIB_SUFFIX=.so;; + esac ++ case $host_os in ++ mingw*) SHLIB_SUFFIX=.dll;; ++ esac + fi + AC_MSG_RESULT($SHLIB_SUFFIX) + +@@ -3818,6 +3821,13 @@ then + fi + ;; + esac ++ case $host in ++ *-*-mingw*) ++ DYNLOADFILE="dynload_win.o" ++ extra_machdep_objs="$extra_machdep_objs PC/dl_nt.o" ++ CFLAGS_NODIST="$CFLAGS_NODIST -DMS_DLL_ID='\"$VERSION\"'" ++ ;; ++ esac + fi + AC_MSG_RESULT($DYNLOADFILE) + if test "$DYNLOADFILE" != "dynload_stub.o" +@@ -5713,6 +5723,12 @@ case "$ac_cv_computed_gotos" in yes*) + AC_DEFINE(HAVE_COMPUTED_GOTOS, 1, + [Define if the C compiler supports computed gotos.]) + esac ++case $host_os in ++ mingw*) ++ dnl Synchronized with _PyImport_DynLoadFiletab (dynload_win.c) ++ dnl Do not use more then one dot on this platform ! ++ EXT_SUFFIX=-$SOABI$SHLIB_SUFFIX;; ++esac + + case $ac_sys_system in + AIX*) +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0015-MINGW-ignore-main-program-for-frozen-scripts.patch b/mingw-w64-python3.10/0015-MINGW-ignore-main-program-for-frozen-scripts.patch new file mode 100644 index 0000000000..736b8fc848 --- /dev/null +++ b/mingw-w64-python3.10/0015-MINGW-ignore-main-program-for-frozen-scripts.patch @@ -0,0 +1,53 @@ +From 294d164d1217634344f6d26128f40a02f537e050 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:26 +0530 +Subject: [PATCH 015/N] MINGW ignore main program for frozen scripts +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + Makefile.pre.in | 2 +- + configure.ac | 10 ++++++++++ + 2 files changed, 11 insertions(+), 1 deletion(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index 9839951..432d0ac 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -350,7 +350,7 @@ PYTHON_OBJS= \ + Python/context.o \ + Python/dynamic_annotations.o \ + Python/errors.o \ +- Python/frozenmain.o \ ++ @PYTHON_OBJS_FROZENMAIN@ \ + Python/future.o \ + Python/getargs.o \ + Python/getcompiler.o \ +diff --git a/configure.ac b/configure.ac +index 7f024d0..b1d5078 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -5754,6 +5754,16 @@ case $host in + ;; + esac + ++dnl Python interpreter main program for frozen scripts ++AC_SUBST(PYTHON_OBJS_FROZENMAIN) ++PYTHON_OBJS_FROZENMAIN="Python/frozenmain.o" ++case $host in ++ *-*-mingw*) ++ dnl 'PC/frozen_dllmain.c' - not yet ++ PYTHON_OBJS_FROZENMAIN= ++ ;; ++esac ++ + AC_SUBST(SRCDIRS) + SRCDIRS="Parser Objects Python Modules Modules/_io Programs" + case $host in +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0016-MINGW-setup-_multiprocessing-module.patch b/mingw-w64-python3.10/0016-MINGW-setup-_multiprocessing-module.patch new file mode 100644 index 0000000000..fc85382c3c --- /dev/null +++ b/mingw-w64-python3.10/0016-MINGW-setup-_multiprocessing-module.patch @@ -0,0 +1,35 @@ +From b0bb46047d6a57bc810155084276762f51599d9e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:26 +0530 +Subject: [PATCH 016/N] MINGW setup _multiprocessing module +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + setup.py | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/setup.py b/setup.py +index 5270469..7d259be 100644 +--- a/setup.py ++++ b/setup.py +@@ -1832,7 +1832,12 @@ class PyBuildExt(build_ext): + if (sysconfig.get_config_var('HAVE_SEM_OPEN') and not + sysconfig.get_config_var('POSIX_SEMAPHORES_NOT_ENABLED')): + multiprocessing_srcs.append('_multiprocessing/semaphore.c') ++ multiprocessing_libs = [] ++ if MS_WINDOWS: ++ multiprocessing_libs += ['ws2_32'] + self.add(Extension('_multiprocessing', multiprocessing_srcs, ++ define_macros={}, ++ libraries=multiprocessing_libs, + include_dirs=["Modules/_multiprocessing"])) + + if (not MS_WINDOWS and +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0017-MINGW-setup-select-module.patch b/mingw-w64-python3.10/0017-MINGW-setup-select-module.patch new file mode 100644 index 0000000000..3ed15ffb14 --- /dev/null +++ b/mingw-w64-python3.10/0017-MINGW-setup-select-module.patch @@ -0,0 +1,61 @@ +From 75fe2f8665412374a3908ea35082522b5c89507a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:29 +0530 +Subject: [PATCH 017/N] MINGW setup select module +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + Modules/selectmodule.c | 6 +++--- + setup.py | 6 +++++- + 2 files changed, 8 insertions(+), 4 deletions(-) + +diff --git a/Modules/selectmodule.c b/Modules/selectmodule.c +index 3ecd0c3..1bf55cc 100644 +--- a/Modules/selectmodule.c ++++ b/Modules/selectmodule.c +@@ -136,9 +136,9 @@ seq2set(PyObject *seq, fd_set *set, pylist fd2obj[FD_SETSIZE + 1]) + v = PyObject_AsFileDescriptor( o ); + if (v == -1) goto finally; + +-#if defined(_MSC_VER) ++#if defined(MS_WIN32) + max = 0; /* not used for Win32 */ +-#else /* !_MSC_VER */ ++#else /* !MS_WIN32 */ + if (!_PyIsSelectable_fd(v)) { + PyErr_SetString(PyExc_ValueError, + "filedescriptor out of range in select()"); +@@ -146,7 +146,7 @@ seq2set(PyObject *seq, fd_set *set, pylist fd2obj[FD_SETSIZE + 1]) + } + if (v > max) + max = v; +-#endif /* _MSC_VER */ ++#endif /* MS_WIN32 */ + FD_SET(v, set); + + /* add object and its file descriptor to the list */ +diff --git a/setup.py b/setup.py +index 7d259be..4086f15 100644 +--- a/setup.py ++++ b/setup.py +@@ -990,7 +990,11 @@ class PyBuildExt(build_ext): + self.missing.append('spwd') + + # select(2); not on ancient System V +- self.add(Extension('select', ['selectmodule.c'])) ++ select_libs = [] ++ if MS_WINDOWS: ++ select_libs += ['ws2_32'] ++ self.add(Extension('select', ['selectmodule.c'], ++ libraries=select_libs)) + + # Memory-mapped files (also works on Win32). + self.add(Extension('mmap', ['mmapmodule.c'])) +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0018-MINGW-setup-_ctypes-module-with-system-libffi.patch b/mingw-w64-python3.10/0018-MINGW-setup-_ctypes-module-with-system-libffi.patch new file mode 100644 index 0000000000..90b17d8658 --- /dev/null +++ b/mingw-w64-python3.10/0018-MINGW-setup-_ctypes-module-with-system-libffi.patch @@ -0,0 +1,46 @@ +From 8909f15653c2f05dba1cac74b92e06dd7becc30c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:30 +0530 +Subject: [PATCH 018/N] MINGW setup _ctypes module with system libffi +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Co-authored-by: Christoph Reiter +Signed-off-by: Naveen M K +--- + setup.py | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/setup.py b/setup.py +index 4086f15..d90de4f 100644 +--- a/setup.py ++++ b/setup.py +@@ -2262,9 +2262,12 @@ class PyBuildExt(build_ext): + self.add(ext) + if TEST_EXTENSIONS: + # function my_sqrt() needs libm for sqrt() ++ ffi_test_libs = ['m'] ++ if MS_WINDOWS: ++ ffi_test_libs += ['oleaut32'] + self.add(Extension('_ctypes_test', + sources=['_ctypes/_ctypes_test.c'], +- libraries=['m'])) ++ libraries=ffi_test_libs)) + + ffi_inc = sysconfig.get_config_var("LIBFFI_INCLUDEDIR") + ffi_lib = None +@@ -2309,6 +2312,8 @@ class PyBuildExt(build_ext): + + ext.include_dirs.append(ffi_inc) + ext.libraries.append(ffi_lib) ++ if MS_WINDOWS: ++ ext.libraries.extend(['ole32', 'oleaut32', 'uuid']) + self.use_system_libffi = True + + if sysconfig.get_config_var('HAVE_LIBDL'): +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0019-MINGW-defect-winsock2-and-setup-_socket-module.patch b/mingw-w64-python3.10/0019-MINGW-defect-winsock2-and-setup-_socket-module.patch new file mode 100644 index 0000000000..5f980b1920 --- /dev/null +++ b/mingw-w64-python3.10/0019-MINGW-defect-winsock2-and-setup-_socket-module.patch @@ -0,0 +1,158 @@ +From 5841494ecb8bbb05a8eb5e873d645f229992b7fb Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:30 +0530 +Subject: [PATCH 019/N] MINGW defect winsock2 and setup _socket module +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + Misc/config_mingw | 3 +++ + Modules/socketmodule.c | 8 ++++++-- + configure.ac | 28 +++++++++++++++++++++++----- + pyconfig.h.in | 4 ++-- + setup.py | 2 ++ + 5 files changed, 36 insertions(+), 9 deletions(-) + +diff --git a/Misc/config_mingw b/Misc/config_mingw +index 513065d..9be43fd 100644 +--- a/Misc/config_mingw ++++ b/Misc/config_mingw +@@ -10,3 +10,6 @@ ac_cv_func_alarm=ignore + # files to ignore + ac_cv_file__dev_ptmx=ignore #NOTE: under MSYS environment device exist + ac_cv_file__dev_ptc=no ++ ++# force detection of winsock2 functionality - require wxp or newer ++ac_cv_func_getpeername=yes +diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c +index 898ec05..1c918c1 100644 +--- a/Modules/socketmodule.c ++++ b/Modules/socketmodule.c +@@ -265,7 +265,7 @@ shutdown(how) -- shut down traffic in one or both directions\n\ + # endif + + /* Macros based on the IPPROTO enum, see: https://bugs.python.org/issue29515 */ +-#ifdef MS_WINDOWS ++#ifdef _MSC_VER + #define IPPROTO_ICMP IPPROTO_ICMP + #define IPPROTO_IGMP IPPROTO_IGMP + #define IPPROTO_GGP IPPROTO_GGP +@@ -296,7 +296,7 @@ shutdown(how) -- shut down traffic in one or both directions\n\ + #define IPPROTO_PGM IPPROTO_PGM // WinSock2 only + #define IPPROTO_L2TP IPPROTO_L2TP // WinSock2 only + #define IPPROTO_SCTP IPPROTO_SCTP // WinSock2 only +-#endif /* MS_WINDOWS */ ++#endif /* _MSC_VER */ + + /* Provides the IsWindows7SP1OrGreater() function */ + #include +@@ -389,6 +389,10 @@ remove_unusable_flags(PyObject *m) + /* Do not include addrinfo.h for MSVC7 or greater. 'addrinfo' and + * EAI_* constants are defined in (the already included) ws2tcpip.h. + */ ++#elif defined(__MINGW32__) ++ /* Do not include addrinfo.h as minimum supported version is ++ * _WIN32_WINNT >= WindowsXP(0x0501) ++ */ + #else + # include "addrinfo.h" + #endif +diff --git a/configure.ac b/configure.ac +index b1d5078..897bb5c 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -4441,21 +4441,36 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + ],[]) + AC_MSG_RESULT($was_it_defined) + ++AC_CHECK_HEADERS([ws2tcpip.h]) + AC_MSG_CHECKING(for addrinfo) + AC_CACHE_VAL(ac_cv_struct_addrinfo, +-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[struct addrinfo a]])], ++AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ ++#ifdef HAVE_WS2TCPIP_H ++# include ++#else ++# include ++#endif]], ++ [[struct addrinfo a]])], + [ac_cv_struct_addrinfo=yes], + [ac_cv_struct_addrinfo=no])) + AC_MSG_RESULT($ac_cv_struct_addrinfo) + if test $ac_cv_struct_addrinfo = yes; then +- AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo (netdb.h)]) ++ AC_DEFINE(HAVE_ADDRINFO, 1, [struct addrinfo]) + fi + + AC_MSG_CHECKING(for sockaddr_storage) + AC_CACHE_VAL(ac_cv_struct_sockaddr_storage, + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +-# include +-# include ]], [[struct sockaddr_storage s]])], ++#ifdef HAVE_WS2TCPIP_H ++#include ++#endif ++#ifdef HAVE_SYS_TYPES_H ++#include ++#endif ++#ifdef HAVE_SYS_SOCKET_H ++#include ++#endif]], ++ [[struct sockaddr_storage s]])], + [ac_cv_struct_sockaddr_storage=yes], + [ac_cv_struct_sockaddr_storage=no])) + AC_MSG_RESULT($ac_cv_struct_sockaddr_storage) +@@ -5644,7 +5659,10 @@ fi + + AC_CHECK_TYPE(socklen_t,, + AC_DEFINE(socklen_t,int, +- [Define to `int' if does not define.]),[ ++ [Define to `int' if or does not define.]),[ ++#ifdef HAVE_WS2TCPIP_H ++#include ++#endif + #ifdef HAVE_SYS_TYPES_H + #include + #endif +diff --git a/pyconfig.h.in b/pyconfig.h.in +index fb0999e..ed8b19c 100644 +--- a/pyconfig.h.in ++++ b/pyconfig.h.in +@@ -63,7 +63,7 @@ + /* Define to 1 if you have the `acosh' function. */ + #undef HAVE_ACOSH + +-/* struct addrinfo (netdb.h) */ ++/* struct addrinfo */ + #undef HAVE_ADDRINFO + + /* Define to 1 if you have the `alarm' function. */ +@@ -1679,7 +1679,7 @@ + /* Define to `unsigned int' if does not define. */ + #undef size_t + +-/* Define to `int' if does not define. */ ++/* Define to `int' if or does not define. */ + #undef socklen_t + + /* Define to `int' if doesn't define. */ +diff --git a/setup.py b/setup.py +index d90de4f..0fcf8af 100644 +--- a/setup.py ++++ b/setup.py +@@ -1233,6 +1233,8 @@ class PyBuildExt(build_ext): + if MACOS: + # Issue #35569: Expose RFC 3542 socket options. + kwargs['extra_compile_args'] = ['-D__APPLE_USE_RFC_3542'] ++ if MS_WINDOWS: ++ kwargs['libraries'] = ['ws2_32', 'iphlpapi'] + + self.add(Extension('_socket', ['socketmodule.c'], **kwargs)) + +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0020-MINGW-exclude-unix-only-modules.patch b/mingw-w64-python3.10/0020-MINGW-exclude-unix-only-modules.patch new file mode 100644 index 0000000000..9331683bec --- /dev/null +++ b/mingw-w64-python3.10/0020-MINGW-exclude-unix-only-modules.patch @@ -0,0 +1,94 @@ +From 082275b5ae3215d36680c9b21d070735ee203e75 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:31 +0530 +Subject: [PATCH 020/N] MINGW exclude unix only modules +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + setup.py | 39 ++++++++++++++++++++++++++++----------- + 1 file changed, 28 insertions(+), 11 deletions(-) + +diff --git a/setup.py b/setup.py +index 0fcf8af..681a98e 100644 +--- a/setup.py ++++ b/setup.py +@@ -973,13 +973,21 @@ class PyBuildExt(build_ext): + if (self.config_h_vars.get('FLOCK_NEEDS_LIBBSD', False)): + # May be necessary on AIX for flock function + libs = ['bsd'] +- self.add(Extension('fcntl', ['fcntlmodule.c'], +- libraries=libs)) ++ if not MS_WINDOWS: ++ self.add(Extension('fcntl', ['fcntlmodule.c'], ++ libraries=libs)) ++ else: ++ self.missing.append('fcntl') + # pwd(3) +- self.add(Extension('pwd', ['pwdmodule.c'])) ++ if not MS_WINDOWS: ++ self.add(Extension('pwd', ['pwdmodule.c'])) ++ else: ++ self.missing.append('pwd') + # grp(3) +- if not VXWORKS: ++ if not VXWORKS and not MS_WINDOWS: + self.add(Extension('grp', ['grpmodule.c'])) ++ else: ++ self.missing.append('grp') + # spwd, shadow passwords + if (self.config_h_vars.get('HAVE_GETSPNAM', False) or + self.config_h_vars.get('HAVE_GETSPENT', False)): +@@ -1001,7 +1009,10 @@ class PyBuildExt(build_ext): + + # Lance Ellinghaus's syslog module + # syslog daemon interface +- self.add(Extension('syslog', ['syslogmodule.c'])) ++ if not MS_WINDOWS: ++ self.add(Extension('syslog', ['syslogmodule.c'])) ++ else: ++ self.missing.append('syslog') + + # Python interface to subinterpreter C-API. + self.add(Extension('_xxsubinterpreters', ['_xxsubinterpretersmodule.c'])) +@@ -1027,8 +1038,11 @@ class PyBuildExt(build_ext): + self.add(Extension('_csv', ['_csv.c'])) + + # POSIX subprocess module helper. +- self.add(Extension('_posixsubprocess', ['_posixsubprocess.c'], ++ if not MS_WINDOWS: ++ self.add(Extension('_posixsubprocess', ['_posixsubprocess.c'], + extra_compile_args=['-DPy_BUILD_CORE_MODULE'])) ++ else: ++ self.missing.append('_posixsubprocess') + + def detect_test_extensions(self): + # Python C API test module +@@ -1220,12 +1234,15 @@ class PyBuildExt(build_ext): + self.missing.append('_crypt') + return + +- if self.compiler.find_library_file(self.lib_dirs, 'crypt'): +- libs = ['crypt'] +- else: +- libs = [] ++ if not MS_WINDOWS: ++ if self.compiler.find_library_file(self.lib_dirs, 'crypt'): ++ libs = ['crypt'] ++ else: ++ libs = [] + +- self.add(Extension('_crypt', ['_cryptmodule.c'], libraries=libs)) ++ self.add(Extension('_crypt', ['_cryptmodule.c'], libraries=libs)) ++ else: ++ self.missing.append('_crypt') + + def detect_socket(self): + # socket(2) +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0021-MINGW-setup-msvcrt-and-_winapi-modules.patch b/mingw-w64-python3.10/0021-MINGW-setup-msvcrt-and-_winapi-modules.patch new file mode 100644 index 0000000000..fbb3bb9980 --- /dev/null +++ b/mingw-w64-python3.10/0021-MINGW-setup-msvcrt-and-_winapi-modules.patch @@ -0,0 +1,94 @@ +From c277710a518eff8dca3df40e749a0200d48e70dc Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:33 +0530 +Subject: [PATCH 021/N] MINGW setup msvcrt and _winapi modules +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + Modules/_winapi.c | 2 ++ + PC/msvcrtmodule.c | 2 ++ + Python/dynamic_annotations.c | 2 +- + setup.py | 21 +++++++++++++++++++++ + 4 files changed, 26 insertions(+), 1 deletion(-) + +diff --git a/Modules/_winapi.c b/Modules/_winapi.c +index 3e24d51..e7e8c6a 100644 +--- a/Modules/_winapi.c ++++ b/Modules/_winapi.c +@@ -41,7 +41,9 @@ + + #define WINDOWS_LEAN_AND_MEAN + #include "windows.h" ++#if defined(Py_DEBUG) + #include ++#endif + #include "winreparse.h" + + #if defined(MS_WIN32) && !defined(MS_WIN64) +diff --git a/PC/msvcrtmodule.c b/PC/msvcrtmodule.c +index 0591497..74a4131 100644 +--- a/PC/msvcrtmodule.c ++++ b/PC/msvcrtmodule.c +@@ -21,7 +21,9 @@ + #include + #include + #include ++#ifdef _DEBUG + #include ++#endif + #include + + #ifdef _MSC_VER +diff --git a/Python/dynamic_annotations.c b/Python/dynamic_annotations.c +index 7febaa0..70d5b3d 100644 +--- a/Python/dynamic_annotations.c ++++ b/Python/dynamic_annotations.c +@@ -27,7 +27,7 @@ + * Author: Kostya Serebryany + */ + +-#ifdef _MSC_VER ++#ifdef MS_WINDOWS + # include + #endif + +diff --git a/setup.py b/setup.py +index 681a98e..c3f109b 100644 +--- a/setup.py ++++ b/setup.py +@@ -1683,6 +1683,27 @@ class PyBuildExt(build_ext): + '-framework', 'SystemConfiguration', + '-framework', 'CoreFoundation'])) + ++ # Modules with some Windows dependencies: ++ if MS_WINDOWS: ++ srcdir = sysconfig.get_config_var('srcdir') ++ pc_srcdir = os.path.abspath(os.path.join(srcdir, 'PC')) ++ ++ self.add(Extension('msvcrt', [os.path.join(pc_srcdir, p) ++ for p in ['msvcrtmodule.c']])) ++ ++ self.add(Extension('_winapi', ['_winapi.c'])) ++ ++ self.add(Extension('_msi', [os.path.join(pc_srcdir, p) ++ for p in ['_msi.c']], ++ libraries=['msi','cabinet','rpcrt4'])) # To link with lib(msi|cabinet|rpcrt4).a ++ ++ self.add(Extension('winsound', [os.path.join(pc_srcdir, p) ++ for p in ['winsound.c']], ++ libraries=['winmm'])) ++ ++ self.add(Extension('_overlapped', ['overlapped.c'], ++ libraries=['ws2_32'])) ++ + def detect_compress_exts(self): + # Andrew Kuchling's zlib module. Note that some versions of zlib + # 1.1.3 have security problems. See CERT Advisory CA-2002-07: +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0022-sysconfig-MINGW-build-extensions-with-GCC.patch b/mingw-w64-python3.10/0022-sysconfig-MINGW-build-extensions-with-GCC.patch new file mode 100644 index 0000000000..b7e4162e39 --- /dev/null +++ b/mingw-w64-python3.10/0022-sysconfig-MINGW-build-extensions-with-GCC.patch @@ -0,0 +1,26 @@ +From 19fdfa0a755c062dd5cfe9a4ade0399dc04d0b20 Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Tue, 21 Sep 2021 20:52:42 +0200 +Subject: [PATCH 022/N] sysconfig: MINGW build extensions with GCC + +Signed-off-by: Naveen M K +--- + Lib/sysconfig.py | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py +index b1c59c1..2d09446 100644 +--- a/Lib/sysconfig.py ++++ b/Lib/sysconfig.py +@@ -709,6 +709,8 @@ def get_platform(): + + """ + if os.name == 'nt': ++ if 'GCC' in sys.version: ++ return 'mingw' + if 'amd64' in sys.version.lower(): + return 'win-amd64' + if '(arm)' in sys.version.lower(): +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0023-MINGW-setup-_ssl-module.patch b/mingw-w64-python3.10/0023-MINGW-setup-_ssl-module.patch new file mode 100644 index 0000000000..d80674b5c5 --- /dev/null +++ b/mingw-w64-python3.10/0023-MINGW-setup-_ssl-module.patch @@ -0,0 +1,31 @@ +From 269009f193f34d0af6e07385b152448344a5afc9 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:37 +0530 +Subject: [PATCH 023/N] MINGW setup _ssl module +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + setup.py | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/setup.py b/setup.py +index c3f109b..1bbdfdd 100644 +--- a/setup.py ++++ b/setup.py +@@ -2495,6 +2495,8 @@ class PyBuildExt(build_ext): + openssl_libdirs = split_var('OPENSSL_LDFLAGS', '-L') + openssl_libs = split_var('OPENSSL_LIBS', '-l') + openssl_rpath = config_vars.get('OPENSSL_RPATH') ++ if MS_WINDOWS: ++ openssl_libs += tuple(['ws2_32']) + if not openssl_libs: + # libssl and libcrypto not found + self.missing.extend(['_ssl', '_hashlib']) +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0024-MINGW-generalization-of-posix-build-in-sysconfig.py.patch b/mingw-w64-python3.10/0024-MINGW-generalization-of-posix-build-in-sysconfig.py.patch new file mode 100644 index 0000000000..3132a296bc --- /dev/null +++ b/mingw-w64-python3.10/0024-MINGW-generalization-of-posix-build-in-sysconfig.py.patch @@ -0,0 +1,90 @@ +From 3ca50850b90b65b825149b1611a3c587d82e9eee Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:38 +0530 +Subject: [PATCH 024/N] MINGW generalization of posix build in sysconfig.py +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + Lib/sysconfig.py | 18 +++++++++++------- + 1 file changed, 11 insertions(+), 7 deletions(-) + +diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py +index 2d09446..09469ef 100644 +--- a/Lib/sysconfig.py ++++ b/Lib/sysconfig.py +@@ -59,6 +59,11 @@ _INSTALL_SCHEMES = { + }, + } + ++# GCC[mingw*] use posix build system ++_POSIX_BUILD = os.name == 'posix' or \ ++ (os.name == "nt" and 'GCC' in sys.version) ++ ++ + + # NOTE: site.py has copy of this function. + # Sync it when modify this function. +@@ -74,7 +79,7 @@ def _getuserbase(): + def joinuser(*args): + return os.path.expanduser(os.path.join(*args)) + +- if os.name == "nt": ++ if os.name == "nt" and not _POSIX_BUILD: + base = os.environ.get("APPDATA") or "~" + return joinuser(base, "Python") + +@@ -137,7 +142,6 @@ _variable_rx = r"([a-zA-Z][a-zA-Z0-9_]+)\s*=\s*(.*)" + _findvar1_rx = r"\$\(([A-Za-z][A-Za-z0-9_]*)\)" + _findvar2_rx = r"\${([A-Za-z][A-Za-z0-9_]*)}" + +- + def _safe_realpath(path): + try: + return realpath(path) +@@ -226,7 +230,7 @@ def _expand_vars(scheme, vars): + + + def _get_preferred_schemes(): +- if os.name == 'nt': ++ if os.name == 'nt' and not _POSIX_BUILD: + return { + 'prefix': 'nt', + 'home': 'posix_home', +@@ -553,7 +557,7 @@ def parse_config_h(fp, vars=None): + def get_config_h_filename(): + """Return the path of pyconfig.h.""" + if _PYTHON_BUILD: +- if os.name == "nt": ++ if os.name == "nt" and not _POSIX_BUILD: + inc_dir = os.path.join(_sys_home or _PROJECT_BASE, "PC") + else: + inc_dir = _sys_home or _PROJECT_BASE +@@ -629,9 +633,9 @@ def get_config_vars(*args): + except AttributeError: + _CONFIG_VARS['py_version_nodot_plat'] = '' + +- if os.name == 'nt': ++ if os.name == 'nt' and not _POSIX_BUILD: + _init_non_posix(_CONFIG_VARS) +- if os.name == 'posix': ++ if _POSIX_BUILD: + _init_posix(_CONFIG_VARS) + # For backward compatibility, see issue19555 + SO = _CONFIG_VARS.get('EXT_SUFFIX') +@@ -645,7 +649,7 @@ def get_config_vars(*args): + + # Always convert srcdir to an absolute path + srcdir = _CONFIG_VARS.get('srcdir', _PROJECT_BASE) +- if os.name == 'posix': ++ if _POSIX_BUILD: + if _PYTHON_BUILD: + # If srcdir is a relative path (typically '.' or '..') + # then it should be interpreted relative to the directory +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0025-MINGW-support-stdcall-without-underscore.patch b/mingw-w64-python3.10/0025-MINGW-support-stdcall-without-underscore.patch new file mode 100644 index 0000000000..492e8845c6 --- /dev/null +++ b/mingw-w64-python3.10/0025-MINGW-support-stdcall-without-underscore.patch @@ -0,0 +1,55 @@ +From 5ad01e32d72217f8fc7947063e689c45f0d29a8a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:39 +0530 +Subject: [PATCH 025/N] MINGW support stdcall without underscore +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + Modules/_ctypes/_ctypes.c | 19 +++++++++++++++++++ + 1 file changed, 19 insertions(+) + +diff --git a/Modules/_ctypes/_ctypes.c b/Modules/_ctypes/_ctypes.c +index 5f8a723..e24bd44 100644 +--- a/Modules/_ctypes/_ctypes.c ++++ b/Modules/_ctypes/_ctypes.c +@@ -3403,6 +3403,18 @@ static PPROC FindAddress(void *handle, const char *name, PyObject *type) + mangled_name = alloca(strlen(name) + 1 + 1 + 1 + 3); /* \0 _ @ %d */ + if (!mangled_name) + return NULL; ++ /* Issue: for stdcall decorated export functions MSVC compiler adds ++ * underscore, but GCC compiler create them without. This is ++ * visible by example for _ctypes_test.pyd module. ++ * As well functions from system libraries are without underscore. ++ * Solutions: ++ * - If a python module is build with gcc option --add-stdcall-alias ++ * the module will contain XXX as alias for function XXX@ as result ++ * first search in this method will succeed. ++ * - Distutil may use compiler to create def-file, to modify it as ++ * add underscore alias and with new def file to create module. ++ * - Or may be just to search for function without underscore. ++ */ + for (i = 0; i < 32; ++i) { + sprintf(mangled_name, "_%s@%d", name, i*4); + Py_BEGIN_ALLOW_THREADS +@@ -3410,6 +3422,13 @@ static PPROC FindAddress(void *handle, const char *name, PyObject *type) + Py_END_ALLOW_THREADS + if (address) + return address; ++ /* search for function without underscore as weel */ ++ sprintf(mangled_name, "%s@%d", name, i*4); ++ Py_BEGIN_ALLOW_THREADS ++ address = (PPROC)GetProcAddress(handle, mangled_name); ++ Py_END_ALLOW_THREADS ++ if (address) ++ return address; + } + return NULL; + #endif +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0026-use-replace-instead-rename-to-avoid-failure-on-windo.patch b/mingw-w64-python3.10/0026-use-replace-instead-rename-to-avoid-failure-on-windo.patch new file mode 100644 index 0000000000..e9ab745a8d --- /dev/null +++ b/mingw-w64-python3.10/0026-use-replace-instead-rename-to-avoid-failure-on-windo.patch @@ -0,0 +1,32 @@ +From 3a1c612498e6734cd469245c21b7820ba988e4ac Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:40 +0530 +Subject: [PATCH 026/N] use replace instead rename to avoid failure on windo +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Co-authored-by: Christoph Reiter +Signed-off-by: Naveen M K +--- + setup.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/setup.py b/setup.py +index 1bbdfdd..2b74277 100644 +--- a/setup.py ++++ b/setup.py +@@ -2739,7 +2739,7 @@ class PyBuildScripts(build_scripts): + else: + newfilename = filename + minoronly + log.info(f'renaming {filename} to {newfilename}') +- os.rename(filename, newfilename) ++ os.replace(filename, newfilename) + newoutfiles.append(newfilename) + if filename in updated_files: + newupdated_files.append(newfilename) +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0027-MINGW-customize-site.patch b/mingw-w64-python3.10/0027-MINGW-customize-site.patch new file mode 100644 index 0000000000..209b8acfdb --- /dev/null +++ b/mingw-w64-python3.10/0027-MINGW-customize-site.patch @@ -0,0 +1,63 @@ +From 7394d9621b6690004336f45ec37eadacce16fd43 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:42 +0530 +Subject: [PATCH 027/N] MINGW customize site +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Co-authored-by: Christoph Reiter +Signed-off-by: Naveen M K +--- + Lib/site.py | 12 +++++++++--- + 1 file changed, 9 insertions(+), 3 deletions(-) + +diff --git a/Lib/site.py b/Lib/site.py +index 939893e..e460a3d 100644 +--- a/Lib/site.py ++++ b/Lib/site.py +@@ -88,6 +88,12 @@ USER_SITE = None + USER_BASE = None + + ++# Same as defined in Lib/sysconfig.py ++# redeclared since sysconfig is large for site. ++# GCC[mingw*] use posix build system ++_POSIX_BUILD = os.name == 'posix' or \ ++ (os.name == "nt" and 'GCC' in sys.version) ++ + def _trace(message): + if sys.flags.verbose: + print(message, file=sys.stderr) +@@ -273,7 +279,7 @@ def _getuserbase(): + def joinuser(*args): + return os.path.expanduser(os.path.join(*args)) + +- if os.name == "nt": ++ if os.name == "nt" and not _POSIX_BUILD: + base = os.environ.get("APPDATA") or "~" + return joinuser(base, "Python") + +@@ -288,7 +294,7 @@ def _getuserbase(): + def _get_path(userbase): + version = sys.version_info + +- if os.name == 'nt': ++ if os.name == 'nt' and not _POSIX_BUILD: + ver_nodot = sys.winver.replace('.', '') + return f'{userbase}\\Python{ver_nodot}\\site-packages' + +@@ -365,7 +371,7 @@ def getsitepackages(prefixes=None): + if sys.platlibdir != "lib": + libdirs.append("lib") + +- if os.sep == '/': ++ if _POSIX_BUILD: + for libdir in libdirs: + path = os.path.join(prefix, libdir, + "python%d.%d" % sys.version_info[:2], +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0028-add-python-config-sh.patch b/mingw-w64-python3.10/0028-add-python-config-sh.patch new file mode 100644 index 0000000000..d272172b0d --- /dev/null +++ b/mingw-w64-python3.10/0028-add-python-config-sh.patch @@ -0,0 +1,163 @@ +From 0b1fadbb73a46da7ac4d58b344ca22b572306449 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:43 +0530 +Subject: [PATCH 028/N] add python config sh +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Co-authored-by: Christoph Reiter +Signed-off-by: Naveen M K +--- + Misc/python-config.sh.in | 62 +++++++++++++++++++++++++--------------- + 1 file changed, 39 insertions(+), 23 deletions(-) + +diff --git a/Misc/python-config.sh.in b/Misc/python-config.sh.in +index 2602fe2..e0e048a 100644 +--- a/Misc/python-config.sh.in ++++ b/Misc/python-config.sh.in +@@ -1,32 +1,44 @@ + #!/bin/sh + +-# Keep this script in sync with python-config.in +- + exit_with_usage () + { + echo "Usage: $0 --prefix|--exec-prefix|--includes|--libs|--cflags|--ldflags|--extension-suffix|--help|--abiflags|--configdir|--embed" +- exit $1 ++ exit 1 + } + ++# Really, python-config.py (and thus .sh) should be called directly, but ++# sometimes software (e.g. GDB) calls python-config.sh as if it were the ++# Python executable, passing python-config.py as the first argument. ++# Work around that oddness by ignoring any .py passed as first arg. ++case "$1" in ++ *.py) ++ shift ++ ;; ++esac ++ + if [ "$1" = "" ] ; then +- exit_with_usage 1 ++ exit_with_usage + fi + + # Returns the actual prefix where this script was installed to. + installed_prefix () + { +- RESULT=$(dirname $(cd $(dirname "$1") && pwd -P)) +- if which readlink >/dev/null 2>&1 ; then +- if readlink -f "$RESULT" >/dev/null 2>&1; then +- RESULT=$(readlink -f "$RESULT") +- fi ++ local RESULT=$(dirname $(cd $(dirname "$1") && pwd -P)) ++ if [ $(which readlink) ] ; then ++ RESULT=$(readlink -f "$RESULT") ++ fi ++ # Since we don't know where the output from this script will end up ++ # we keep all paths in Windows-land since MSYS2 can handle that ++ # while native tools can't handle paths in MSYS2-land. ++ if [ "$OSTYPE" = "msys" ]; then ++ RESULT=$(cd "$RESULT" && pwd -W) + fi + echo $RESULT + } + + prefix_real=$(installed_prefix "$0") + +-# Use sed to fix paths from their built-to locations to their installed-to ++# Use sed to fix paths from their built-to locations to their installed to + # locations. Keep prefix & exec_prefix using their original values in case + # they are referenced in other configure variables, to prevent double + # substitution, issue #22140. +@@ -41,13 +53,17 @@ LIBM="@LIBM@" + LIBC="@LIBC@" + SYSLIBS="$LIBM $LIBC" + ABIFLAGS="@ABIFLAGS@" ++# Protect against lack of substitution. ++if [ "$ABIFLAGS" = "@""ABIFLAGS""@" ] ; then ++ ABIFLAGS= ++fi + LIBS="@LIBPYTHON@ @LIBS@ $SYSLIBS" + LIBS_EMBED="-lpython${VERSION}${ABIFLAGS} @LIBS@ $SYSLIBS" + BASECFLAGS="@BASECFLAGS@" +-LDLIBRARY="@LDLIBRARY@" + OPT="@OPT@" + PY_ENABLE_SHARED="@PY_ENABLE_SHARED@" + LDVERSION="@LDVERSION@" ++LDLIBRARY="@LDLIBRARY@" + LIBDEST=${prefix_real}/lib/python${VERSION} + LIBPL=$(echo "@LIBPL@" | sed "s#$prefix#$prefix_real#") + SO="@EXT_SUFFIX@" +@@ -61,7 +77,7 @@ for ARG in $* + do + case $ARG in + --help) +- exit_with_usage 0 ++ exit_with_usage + ;; + --embed) + PY_EMBED=1 +@@ -69,7 +85,7 @@ do + --prefix|--exec-prefix|--includes|--libs|--cflags|--ldflags|--extension-suffix|--abiflags|--configdir) + ;; + *) +- exit_with_usage 1 ++ exit_with_usage + ;; + esac + done +@@ -80,37 +96,37 @@ fi + + for ARG in "$@" + do +- case "$ARG" in ++ case $ARG in + --prefix) +- echo "$prefix_real" ++ echo -ne "$prefix_real" + ;; + --exec-prefix) +- echo "$exec_prefix_real" ++ echo -ne "$exec_prefix_real " + ;; + --includes) +- echo "$INCDIR $PLATINCDIR" ++ echo -ne "$INCDIR $PLATINCDIR" + ;; + --cflags) +- echo "$INCDIR $PLATINCDIR $BASECFLAGS $CFLAGS $OPT" ++ echo -ne "$INCDIR $PLATINCDIR $BASECFLAGS $CFLAGS $OPT" + ;; + --libs) +- echo "$LIBS" ++ echo -ne "$LIBS" + ;; + --ldflags) + LIBPLUSED= + if [ "$PY_ENABLE_SHARED" = "0" ] ; then + LIBPLUSED="-L$LIBPL" + fi +- echo "$LIBPLUSED -L$libdir $LIBS" ++ echo -ne "$LIBPLUSED -L$libdir $LIBS " + ;; + --extension-suffix) +- echo "$SO" ++ echo -ne "$SO " + ;; + --abiflags) +- echo "$ABIFLAGS" ++ echo -ne "$ABIFLAGS " + ;; + --configdir) +- echo "$LIBPL" ++ echo -ne "$LIBPL " + ;; + esac + done +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0029-cross-darwin-feature.patch b/mingw-w64-python3.10/0029-cross-darwin-feature.patch new file mode 100644 index 0000000000..0abeef7d16 --- /dev/null +++ b/mingw-w64-python3.10/0029-cross-darwin-feature.patch @@ -0,0 +1,139 @@ +From 65e323a174c175697b4daf2fd1eb7ec563007746 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:44 +0530 +Subject: [PATCH 029/N] cross darwin feature +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + configure.ac | 54 +++++++++++++++++++++++++++++++++++++++++++++++----- + 1 file changed, 49 insertions(+), 5 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 897bb5c..adc5e0e 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -387,6 +387,7 @@ if test -z "$MACHDEP" + then + # avoid using uname for cross builds + if test "$cross_compiling" = yes; then ++ ac_sys_release= + # ac_sys_system and ac_sys_release are used for setting + # a lot of different things including 'define_xopen_source' + # in the case statement below. +@@ -403,6 +404,27 @@ then + *-*-mingw*) + ac_sys_system=MINGW + ;; ++ *-*-darwin*) ++ ac_sys_system=Darwin ++ ac_sys_release=$(echo $host | sed -n 's/.*-[^0-9]\+\([0-9]\+\)/\1/p') ++ if test -z "$ac_sys_release"; then ++ # A reasonable default. ++ ac_sys_release=11 ++ fi ++ # Use the last released version number for old versions. ++ if test "$ac_sys_release" = "9" ; then ++ ac_sys_release=9.8 ++ elif test "$ac_sys_release" = "10" ; then ++ ac_sys_release=10.8 ++ elif test "$ac_sys_release" = "11" ; then ++ ac_sys_release=11.4.0 ++ elif test "$ac_sys_release" = "12" ; then ++ ac_sys_release=12.0.0 ++ else ++ # ..and .0.0 for unknown versions. ++ ac_sys_release=${ac_sys_release}.0.0 ++ fi ++ ;; + *-*-vxworks*) + ac_sys_system=VxWorks + ;; +@@ -411,7 +433,6 @@ then + MACHDEP="unknown" + AC_MSG_ERROR([cross build not supported for $host]) + esac +- ac_sys_release= + else + ac_sys_system=`uname -s` + if test "$ac_sys_system" = "AIX" \ +@@ -459,6 +480,9 @@ if test "$cross_compiling" = yes; then + *-*-mingw*) + _host_cpu= + ;; ++ *-*-darwin*) ++ _host_cpu= ++ ;; + *) + # for now, limit cross builds to known configurations + MACHDEP="unknown" +@@ -1652,6 +1676,26 @@ AC_SUBST(BASECFLAGS) + AC_SUBST(CFLAGS_NODIST) + AC_SUBST(LDFLAGS_NODIST) + ++if test "x$cross_compiling" = xyes; then ++ function cross_arch ++ { ++ case $host in ++ x86_64*darwin*) ++ echo i386 ++ ;; ++ x86_64*) ++ echo x86_64 ++ ;; ++ *) ++ echo i386 ++ ;; ++ esac ++ } ++ ARCH_PROG=cross_arch ++else ++ ARCH_PROG=/usr/bin/arch ++fi ++ + # The -arch flags for universal builds on macOS + UNIVERSAL_ARCH_FLAGS= + AC_SUBST(UNIVERSAL_ARCH_FLAGS) +@@ -2030,7 +2074,7 @@ yes) + ;; + esac + else +- if test `/usr/bin/arch` = "i386" ++ if test "$($ARCH_PROG)" = "i386" + then + # 10.4 was the first release to support Intel archs + cur_target="10.4" +@@ -2606,7 +2650,7 @@ case $ac_sys_system/$ac_sys_release in + if test "${enable_universalsdk}"; then + : + else +- LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `/usr/bin/arch`" ++ LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only $($ARCH_PROG)" + fi + LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' + LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';; +@@ -2631,7 +2675,7 @@ case $ac_sys_system/$ac_sys_release in + ]])],[ac_osx_32bit=yes],[ac_osx_32bit=no],[ac_osx_32bit=yes]) + + if test "${ac_osx_32bit}" = "yes"; then +- case `/usr/bin/arch` in ++ case $($ARCH_PROG) in + i386) + MACOSX_DEFAULT_ARCH="i386" + ;; +@@ -2643,7 +2687,7 @@ case $ac_sys_system/$ac_sys_release in + ;; + esac + else +- case `/usr/bin/arch` in ++ case $($ARCH_PROG) in + i386) + MACOSX_DEFAULT_ARCH="x86_64" + ;; +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0030-mingw-system-libffi.patch b/mingw-w64-python3.10/0030-mingw-system-libffi.patch new file mode 100644 index 0000000000..50d19b0249 --- /dev/null +++ b/mingw-w64-python3.10/0030-mingw-system-libffi.patch @@ -0,0 +1,31 @@ +From bec52d036a39a01b4b3aeee948b7efc2d52d13e6 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:45 +0530 +Subject: [PATCH 030/N] mingw system libffi +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + setup.py | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/setup.py b/setup.py +index 2b74277..679653d 100644 +--- a/setup.py ++++ b/setup.py +@@ -2354,6 +2354,8 @@ class PyBuildExt(build_ext): + ext.libraries.append(ffi_lib) + if MS_WINDOWS: + ext.libraries.extend(['ole32', 'oleaut32', 'uuid']) ++ ext.export_symbols.extend(['DllGetClassObject PRIVATE', ++ 'DllCanUnloadNow PRIVATE']) + self.use_system_libffi = True + + if sysconfig.get_config_var('HAVE_LIBDL'): +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0031-msys-mingw-prefer-unix-sep-if-MSYSTEM.patch b/mingw-w64-python3.10/0031-msys-mingw-prefer-unix-sep-if-MSYSTEM.patch new file mode 100644 index 0000000000..cbde7beac2 --- /dev/null +++ b/mingw-w64-python3.10/0031-msys-mingw-prefer-unix-sep-if-MSYSTEM.patch @@ -0,0 +1,398 @@ +From 621f2aa0e8e61ee96a0be4548f607b630231561d Mon Sep 17 00:00:00 2001 +From: Ray Donnelly +Date: Thu, 17 Jun 2021 18:51:46 +0530 +Subject: [PATCH 031/N] msys mingw prefer unix sep if MSYSTEM +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Co-authored-by: Christoph Reiter +Signed-off-by: Naveen M K +--- + Include/pylifecycle.h | 6 +++ + Lib/ntpath.py | 79 +++++++++++++++++------------- + Modules/posixmodule.c | 2 + + Python/initconfig.c | 4 +- + Python/pathconfig.c | 109 ++++++++++++++++++++++++++++++++++++++++++ + Python/traceback.c | 2 +- + 6 files changed, 165 insertions(+), 37 deletions(-) + +diff --git a/Include/pylifecycle.h b/Include/pylifecycle.h +index 2df7fe6..17d403c 100644 +--- a/Include/pylifecycle.h ++++ b/Include/pylifecycle.h +@@ -21,6 +21,12 @@ PyAPI_FUNC(int) Py_IsInitialized(void); + PyAPI_FUNC(PyThreadState *) Py_NewInterpreter(void); + PyAPI_FUNC(void) Py_EndInterpreter(PyThreadState *); + ++PyAPI_FUNC(wchar_t) Py_GetSepW(const wchar_t *); ++PyAPI_FUNC(char) Py_GetSepA(const char *); ++ ++PyAPI_FUNC(void) Py_NormalizeSepsW(wchar_t *); ++PyAPI_FUNC(void) Py_NormalizeSepsA(char *); ++ + + /* Py_PyAtExit is for the atexit module, Py_AtExit is for low-level + * exit functions. +diff --git a/Lib/ntpath.py b/Lib/ntpath.py +index 527c7ae..1f1b441 100644 +--- a/Lib/ntpath.py ++++ b/Lib/ntpath.py +@@ -11,9 +11,7 @@ module as os.path. + curdir = '.' + pardir = '..' + extsep = '.' +-sep = '\\' + pathsep = ';' +-altsep = '/' + defpath = '.;C:\\bin' + devnull = 'nul' + +@@ -23,6 +21,15 @@ import stat + import genericpath + from genericpath import * + ++if sys.platform == "win32" and "MSYSTEM" in os.environ: ++ sep = '/' ++ altsep = '\\' ++else: ++ sep = '\\' ++ altsep = '/' ++bsep = str.encode(sep) ++baltsep = str.encode(altsep) ++ + __all__ = ["normcase","isabs","join","splitdrive","split","splitext", + "basename","dirname","commonprefix","getsize","getmtime", + "getatime","getctime", "islink","exists","lexists","isdir","isfile", +@@ -33,9 +40,27 @@ __all__ = ["normcase","isabs","join","splitdrive","split","splitext", + + def _get_bothseps(path): + if isinstance(path, bytes): +- return b'\\/' ++ return bsep+baltsep ++ else: ++ return sep+altsep ++ ++def _get_sep(path): ++ if isinstance(path, bytes): ++ return bsep ++ else: ++ return sep ++ ++def _get_altsep(path): ++ if isinstance(path, bytes): ++ return baltsep + else: +- return '\\/' ++ return altsep ++ ++def _get_colon(path): ++ if isinstance(path, bytes): ++ return b':' ++ else: ++ return ':' + + # Normalize the case of a pathname and map slashes to backslashes. + # Other normalizations (such as optimizing '../' away) are not done +@@ -47,9 +72,9 @@ def normcase(s): + Makes all characters lowercase and all slashes into backslashes.""" + s = os.fspath(s) + if isinstance(s, bytes): +- return s.replace(b'/', b'\\').lower() ++ return s.replace(baltsep, bsep).lower() + else: +- return s.replace('/', '\\').lower() ++ return s.replace(altsep, sep).lower() + + + # Return whether a path is absolute. +@@ -76,14 +101,9 @@ def isabs(s): + # Join two (or more) paths. + def join(path, *paths): + path = os.fspath(path) +- if isinstance(path, bytes): +- sep = b'\\' +- seps = b'\\/' +- colon = b':' +- else: +- sep = '\\' +- seps = '\\/' +- colon = ':' ++ sep = _get_sep(path) ++ seps = _get_bothseps(path) ++ colon = _get_colon(path) + try: + if not paths: + path[:0] + sep #23780: Ensure compatible data type even if p is null. +@@ -142,14 +162,9 @@ def splitdrive(p): + """ + p = os.fspath(p) + if len(p) >= 2: +- if isinstance(p, bytes): +- sep = b'\\' +- altsep = b'/' +- colon = b':' +- else: +- sep = '\\' +- altsep = '/' +- colon = ':' ++ sep = _get_sep(p) ++ altsep = _get_altsep(p) ++ colon = _get_colon(p) + normp = p.replace(altsep, sep) + if (normp[0:2] == sep*2) and (normp[2:3] != sep): + # is a UNC path: +@@ -203,9 +218,9 @@ def split(p): + def splitext(p): + p = os.fspath(p) + if isinstance(p, bytes): +- return genericpath._splitext(p, b'\\', b'/', b'.') ++ return genericpath._splitext(p, bsep, baltsep, b'.') + else: +- return genericpath._splitext(p, '\\', '/', '.') ++ return genericpath._splitext(p, sep, altsep, '.') + splitext.__doc__ = genericpath._splitext.__doc__ + + +@@ -463,15 +478,13 @@ def expandvars(path): + def normpath(path): + """Normalize path, eliminating double slashes, etc.""" + path = os.fspath(path) ++ sep = _get_sep(path) ++ altsep = _get_altsep(path) + if isinstance(path, bytes): +- sep = b'\\' +- altsep = b'/' + curdir = b'.' + pardir = b'..' + special_prefixes = (b'\\\\.\\', b'\\\\?\\') + else: +- sep = '\\' +- altsep = '/' + curdir = '.' + pardir = '..' + special_prefixes = ('\\\\.\\', '\\\\?\\') +@@ -683,6 +696,7 @@ else: + # strip the prefix anyway. + if ex.winerror == initial_winerror: + path = spath ++ path = normpath(path) + return path + + +@@ -693,12 +707,11 @@ supports_unicode_filenames = (hasattr(sys, "getwindowsversion") and + def relpath(path, start=None): + """Return a relative version of a path""" + path = os.fspath(path) ++ sep = _get_sep(path) + if isinstance(path, bytes): +- sep = b'\\' + curdir = b'.' + pardir = b'..' + else: +- sep = '\\' + curdir = '.' + pardir = '..' + +@@ -753,13 +766,11 @@ def commonpath(paths): + raise ValueError('commonpath() arg is an empty sequence') + + paths = tuple(map(os.fspath, paths)) ++ sep = _get_sep(paths[0]) ++ altsep = _get_altsep(paths[0]) + if isinstance(paths[0], bytes): +- sep = b'\\' +- altsep = b'/' + curdir = b'.' + else: +- sep = '\\' +- altsep = '/' + curdir = '.' + + try: +diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c +index d54994d..863bc99 100644 +--- a/Modules/posixmodule.c ++++ b/Modules/posixmodule.c +@@ -3807,6 +3807,7 @@ posix_getcwd(int use_bytes) + return PyErr_SetFromWindowsErr(0); + } + ++ Py_NormalizeSepsW(wbuf2); + PyObject *resobj = PyUnicode_FromWideChar(wbuf2, len); + if (wbuf2 != wbuf) { + PyMem_RawFree(wbuf2); +@@ -4370,6 +4371,7 @@ os__getfinalpathname_impl(PyObject *module, path_t *path) + target_path = tmp; + } + ++ Py_NormalizeSepsW(target_path); + result = PyUnicode_FromWideChar(target_path, result_length); + if (result && path->narrow) { + Py_SETREF(result, PyUnicode_EncodeFSDefault(result)); +diff --git a/Python/initconfig.c b/Python/initconfig.c +index 27ae48d..6d321b0 100644 +--- a/Python/initconfig.c ++++ b/Python/initconfig.c +@@ -133,7 +133,7 @@ static const char usage_6[] = + "PYTHONPYCACHEPREFIX: root directory for bytecode cache (pyc) files.\n" + "PYTHONWARNDEFAULTENCODING: enable opt-in EncodingWarning for 'encoding=None'.\n"; + +-#if defined(MS_WINDOWS) ++#if defined(_MSC_VER) + # define PYTHONHOMEHELP "\\python{major}{minor}" + #else + # define PYTHONHOMEHELP "/lib/pythonX.X" +@@ -1536,7 +1536,7 @@ config_init_program_name(PyConfig *config) + } + + /* Last fall back: hardcoded name */ +-#ifdef MS_WINDOWS ++#ifdef _MSC_VER + const wchar_t *default_program_name = L"python"; + #else + const wchar_t *default_program_name = L"python3"; +diff --git a/Python/pathconfig.c b/Python/pathconfig.c +index 470aba7..3e7a1c5 100644 +--- a/Python/pathconfig.c ++++ b/Python/pathconfig.c +@@ -15,6 +15,114 @@ + extern "C" { + #endif + ++#ifdef __MINGW32__ ++#define wcstok wcstok_s ++#include ++#endif ++ ++char ++Py_GetSepA(const char *name) ++{ ++ char* msystem = (char*)2; /* So that non Windows use / as sep */ ++ static char sep = '\0'; ++#ifdef _WIN32 ++ /* https://msdn.microsoft.com/en-gb/library/windows/desktop/aa365247%28v=vs.85%29.aspx ++ * The "\\?\" prefix .. indicate that the path should be passed to the system with minimal ++ * modification, which means that you cannot use forward slashes to represent path separators ++ */ ++ if (name != NULL && memcmp(name, "\\\\?\\", sizeof("\\\\?\\") - sizeof(char)) == 0) ++ { ++ return '\\'; ++ } ++#endif ++ if (sep != '\0') ++ return sep; ++#if defined(__MINGW32__) ++ msystem = Py_GETENV("MSYSTEM"); ++#endif ++ if (msystem != NULL) ++ sep = '/'; ++ else ++ sep = '\\'; ++ return sep; ++} ++ ++static char ++Py_GetAltSepA(const char *name) ++{ ++ char sep = Py_GetSepA(name); ++ if (sep == '/') ++ return '\\'; ++ return '/'; ++} ++ ++void ++Py_NormalizeSepsA(char *name) ++{ ++ char sep = Py_GetSepA(name); ++ char altsep = Py_GetAltSepA(name); ++ char* seps; ++ if (strlen(name) > 1 && name[1] == ':') { ++ name[0] = toupper(name[0]); ++ } ++ seps = strchr(name, altsep); ++ while(seps) { ++ *seps = sep; ++ seps = strchr(seps, altsep); ++ } ++} ++ ++wchar_t ++Py_GetSepW(const wchar_t *name) ++{ ++ char* msystem = (char*)2; /* So that non Windows use / as sep */ ++ static wchar_t sep = L'\0'; ++#ifdef _WIN32 ++ /* https://msdn.microsoft.com/en-gb/library/windows/desktop/aa365247%28v=vs.85%29.aspx ++ * The "\\?\" prefix .. indicate that the path should be passed to the system with minimal ++ * modification, which means that you cannot use forward slashes to represent path separators ++ */ ++ if (name != NULL && memcmp(name, L"\\\\?\\", sizeof(L"\\\\?\\") - sizeof(wchar_t)) == 0) ++ { ++ return L'\\'; ++ } ++#endif ++ if (sep != L'\0') ++ return sep; ++#if defined(__MINGW32__) ++ msystem = Py_GETENV("MSYSTEM"); ++#endif ++ if (msystem != NULL) ++ sep = L'/'; ++ else ++ sep = L'\\'; ++ return sep; ++} ++ ++static wchar_t ++Py_GetAltSepW(const wchar_t *name) ++{ ++ char sep = Py_GetSepW(name); ++ if (sep == L'/') ++ return L'\\'; ++ return L'/'; ++} ++ ++void ++Py_NormalizeSepsW(wchar_t *name) ++{ ++ wchar_t sep = Py_GetSepW(name); ++ wchar_t altsep = Py_GetAltSepW(name); ++ wchar_t* seps; ++ if (wcslen(name) > 1 && name[1] == L':') { ++ name[0] = towupper(name[0]); ++ } ++ seps = wcschr(name, altsep); ++ while(seps) { ++ *seps = sep; ++ seps = wcschr(seps, altsep); ++ } ++} + + _PyPathConfig _Py_path_config = _PyPathConfig_INIT; + +@@ -562,6 +670,7 @@ _Py_SetProgramFullPath(const wchar_t *program_full_path) + if (_Py_path_config.program_full_path == NULL) { + path_out_of_memory(__func__); + } ++ Py_NormalizeSepsW(_Py_path_config.program_name); + } + + +diff --git a/Python/traceback.c b/Python/traceback.c +index 9b23f45..740c8c0 100644 +--- a/Python/traceback.c ++++ b/Python/traceback.c +@@ -315,7 +315,7 @@ _Py_FindSourceFile(PyObject *filename, char* namebuf, size_t namelen, PyObject * + filepath = PyBytes_AS_STRING(filebytes); + + /* Search tail of filename in sys.path before giving up */ +- tail = strrchr(filepath, SEP); ++ tail = strrchr(filepath, Py_GetSepA(filepath)); + if (tail == NULL) + tail = filepath; + else +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0032-mingw-use-posix-getpath.patch b/mingw-w64-python3.10/0032-mingw-use-posix-getpath.patch new file mode 100644 index 0000000000..873085dc54 --- /dev/null +++ b/mingw-w64-python3.10/0032-mingw-use-posix-getpath.patch @@ -0,0 +1,505 @@ +From d5ed544f32e491e840505b71bcb325249252734e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:47 +0530 +Subject: [PATCH 032/N] mingw use posix getpath +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Co-authored-by: Christoph Reiter +Signed-off-by: Naveen M K +--- + Include/cpython/fileutils.h | 3 +- + Include/pylifecycle.h | 2 +- + Modules/getpath.c | 130 +++++++++++++++++++++++++++++++++--- + Modules/posixmodule.c | 2 +- + Python/dynload_win.c | 2 + + Python/fileutils.c | 22 +++++- + 6 files changed, 145 insertions(+), 16 deletions(-) + +diff --git a/Include/cpython/fileutils.h b/Include/cpython/fileutils.h +index ccf37e9..c287ab3 100644 +--- a/Include/cpython/fileutils.h ++++ b/Include/cpython/fileutils.h +@@ -135,9 +135,8 @@ PyAPI_FUNC(wchar_t*) _Py_wrealpath( + size_t resolved_path_len); + #endif + +-#ifndef MS_WINDOWS + PyAPI_FUNC(int) _Py_isabs(const wchar_t *path); +-#endif ++PyAPI_FUNC(int) _Py_issep(const wchar_t ch); + + PyAPI_FUNC(int) _Py_abspath(const wchar_t *path, wchar_t **abspath_p); + +diff --git a/Include/pylifecycle.h b/Include/pylifecycle.h +index 17d403c..ce3f411 100644 +--- a/Include/pylifecycle.h ++++ b/Include/pylifecycle.h +@@ -52,7 +52,7 @@ PyAPI_FUNC(wchar_t *) Py_GetPrefix(void); + PyAPI_FUNC(wchar_t *) Py_GetExecPrefix(void); + PyAPI_FUNC(wchar_t *) Py_GetPath(void); + PyAPI_FUNC(void) Py_SetPath(const wchar_t *); +-#ifdef MS_WINDOWS ++#ifdef _MSC_VER + int _Py_CheckPython3(void); + #endif + +diff --git a/Modules/getpath.c b/Modules/getpath.c +index 363d62a..ff79924 100644 +--- a/Modules/getpath.c ++++ b/Modules/getpath.c +@@ -13,6 +13,11 @@ + # include + #endif + ++#ifdef MS_WINDOWS ++#include ++#include ++#endif ++ + /* Search in some common locations for the associated Python libraries. + * + * Two directories must be found, the platform independent directory +@@ -129,6 +134,7 @@ typedef struct { + wchar_t *prefix_macro; /* PREFIX macro */ + wchar_t *exec_prefix_macro; /* EXEC_PREFIX macro */ + wchar_t *vpath_macro; /* VPATH macro */ ++ wchar_t *dll_path; /* DLL Path */ + + wchar_t *lib_python; /* / "pythonX.Y" */ + +@@ -146,7 +152,7 @@ typedef struct { + } PyCalculatePath; + + static const wchar_t delimiter[2] = {DELIM, '\0'}; +-static const wchar_t separator[2] = {SEP, '\0'}; ++static wchar_t separator[2] = {SEP, '\0'}; + + + /* Get file status. Encode the path to the locale encoding. */ +@@ -170,7 +176,7 @@ static void + reduce(wchar_t *dir) + { + size_t i = wcslen(dir); +- while (i > 0 && dir[i] != SEP) { ++ while (i > 0 && !_Py_issep(dir[i])) { + --i; + } + dir[i] = '\0'; +@@ -224,6 +230,9 @@ isdir(const wchar_t *filename) + return 1; + } + ++/* ++x86_64-w64-mingw32-gcc -c -Wno-unused-result -Wsign-compare -DNDEBUG -march=x86-64 -mtune=generic -O2 -pipe -fwrapv -D__USE_MINGW_ANSI_STDIO=1 -D_WIN32_WINNT=0x0601 -DNDEBUG -DMS_DLL_ID="\"3.9\"" -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -fprofile-generate -I../Python-3.9.4/Include/internal -IObjects -IInclude -IPython -I. -I../Python-3.9.4/Include -I../Python-3.9.4/PC -D__USE_MINGW_ANSI_STDIO=1 -IC:/msys64/mingw64/include/ncurses -I. -DPy_BUILD_CORE -DPYTHONPATH='""' -DPREFIX='"/mingw64"' -DEXEC_PREFIX='"/mingw64"' -DVERSION='"3.9"' -DVPATH='"../Python-3.9.4"' -o Modules/getpath.o ../Python-3.9.4/Modules/getpath.c ++*/ + + /* Add a path component, by appending stuff to buffer. + buflen: 'buffer' length in characters including trailing NUL. +@@ -242,8 +251,8 @@ joinpath(wchar_t *path, const wchar_t *path2, size_t path_len) + return PATHLEN_ERR(); + } + +- if (n > 0 && path[n-1] != SEP) { +- path[n++] = SEP; ++ if (n > 0 && !_Py_issep(path[n-1])) { ++ path[n++] = Py_GetSepW(path); + } + } + else { +@@ -285,7 +294,7 @@ joinpath2(const wchar_t *path, const wchar_t *path2) + } + + size_t len = wcslen(path); +- int add_sep = (len > 0 && path[len - 1] != SEP); ++ int add_sep = (len > 0 && !_Py_issep(path[len - 1])); + len += add_sep; + len += wcslen(path2); + +@@ -334,7 +343,7 @@ copy_absolute(wchar_t *abs_path, const wchar_t *path, size_t abs_path_len) + } + return _PyStatus_OK(); + } +- if (path[0] == '.' && path[1] == SEP) { ++ if (path[0] == '.' && _Py_issep(path[1])) { + path += 2; + } + PyStatus status = joinpath(abs_path, path, abs_path_len); +@@ -478,6 +487,7 @@ search_for_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig, + return _PyStatus_NO_MEMORY(); + } + ++ Py_NormalizeSepsW(path); + int is_build_dir = isfile(path); + PyMem_RawFree(path); + +@@ -502,6 +512,7 @@ search_for_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig, + } + + int module; ++ Py_NormalizeSepsW(prefix); + status = ismodule(prefix, &module); + if (_PyStatus_EXCEPTION(status)) { + return status; +@@ -528,6 +539,7 @@ search_for_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig, + } + + int module; ++ Py_NormalizeSepsW(prefix); + status = ismodule(prefix, &module); + if (_PyStatus_EXCEPTION(status)) { + return status; +@@ -551,6 +563,7 @@ search_for_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig, + } + + int module; ++ Py_NormalizeSepsW(prefix); + status = ismodule(prefix, &module); + if (_PyStatus_EXCEPTION(status)) { + return status; +@@ -610,6 +623,11 @@ calculate_set_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig) + * return the compiled-in defaults instead. + */ + if (calculate->prefix_found > 0) { ++#ifdef MS_WINDOWS ++ wchar_t drive_root[3]; ++ memset(drive_root, 0, sizeof(drive_root)); ++ wcsncpy(drive_root, calculate->prefix, 3); ++#endif + wchar_t *prefix = _PyMem_RawWcsdup(calculate->prefix); + if (prefix == NULL) { + return _PyStatus_NO_MEMORY(); +@@ -625,7 +643,11 @@ calculate_set_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig) + + /* The prefix is the root directory, but reduce() chopped + off the "/". */ ++#ifdef MS_WINDOWS ++ pathconfig->prefix = _PyMem_RawWcsdup(drive_root); ++#else + pathconfig->prefix = _PyMem_RawWcsdup(separator); ++#endif + if (pathconfig->prefix == NULL) { + return _PyStatus_NO_MEMORY(); + } +@@ -682,6 +704,7 @@ calculate_pybuilddir(const wchar_t *argv0_path, + return PATHLEN_ERR(); + } + status = joinpath(exec_prefix, pybuilddir, exec_prefix_len); ++ Py_NormalizeSepsW(exec_prefix); + PyMem_RawFree(pybuilddir); + if (_PyStatus_EXCEPTION(status)) { + return status; +@@ -730,6 +753,7 @@ search_for_exec_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig, + + /* Check for pybuilddir.txt */ + assert(*found == 0); ++ Py_NormalizeSepsW(exec_prefix); + status = calculate_pybuilddir(calculate->argv0_path, + exec_prefix, exec_prefix_len, found); + if (_PyStatus_EXCEPTION(status)) { +@@ -804,6 +828,7 @@ calculate_exec_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig) + return status; + } + ++ Py_NormalizeSepsW(exec_prefix); + if (!calculate->exec_prefix_found) { + if (calculate->warnings) { + fprintf(stderr, +@@ -836,6 +861,47 @@ calculate_exec_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig) + } + + ++#ifdef MS_WINDOWS ++wchar_t * ++GetWindowsModulePaths(void) ++{ ++ int result = 0; ++ wchar_t program_full_path[MAXPATHLEN+1]; ++ memset(program_full_path, 0, sizeof(program_full_path)); ++ ++ if (GetModuleFileNameW(NULL, program_full_path, MAXPATHLEN)) { ++ result = 1; ++ Py_NormalizeSepsW(program_full_path); ++ } ++ ++ return _PyMem_RawWcsdup(program_full_path); ++} ++ ++ ++wchar_t* ++_Py_GetDLLPath(void) ++{ ++ wchar_t dll_path[MAXPATHLEN+1]; ++ memset(dll_path, 0, sizeof(dll_path)); ++ ++#ifdef Py_ENABLE_SHARED ++ extern HANDLE PyWin_DLLhModule; ++ if (PyWin_DLLhModule) { ++ if (GetModuleFileNameW(PyWin_DLLhModule, dll_path, MAXPATHLEN)) { ++ Py_NormalizeSepsW(dll_path); ++ } else { ++ dll_path[0] = 0; ++ } ++ } ++#else ++ dll_path[0] = 0; ++#endif ++ ++ return _PyMem_RawWcsdup(dll_path); ++} ++#endif /* MS_WINDOWS */ ++ ++ + static PyStatus + calculate_set_exec_prefix(PyCalculatePath *calculate, + _PyPathConfig *pathconfig) +@@ -846,6 +912,12 @@ calculate_set_exec_prefix(PyCalculatePath *calculate, + return _PyStatus_NO_MEMORY(); + } + ++#ifdef MS_WINDOWS ++ wchar_t drive_root[3]; ++ memset(drive_root, 0, sizeof(drive_root)); ++ wcsncpy(drive_root, calculate->exec_prefix, 3); ++#endif ++ + reduce(exec_prefix); + reduce(exec_prefix); + reduce(exec_prefix); +@@ -859,7 +931,11 @@ calculate_set_exec_prefix(PyCalculatePath *calculate, + + /* The exec_prefix is the root directory, but reduce() chopped + off the "/". */ ++#ifdef MS_WINDOWS ++ pathconfig->exec_prefix = _PyMem_RawWcsdup(drive_root); ++#else + pathconfig->exec_prefix = _PyMem_RawWcsdup(separator); ++#endif + if (pathconfig->exec_prefix == NULL) { + return _PyStatus_NO_MEMORY(); + } +@@ -964,13 +1040,22 @@ calculate_program_impl(PyCalculatePath *calculate, _PyPathConfig *pathconfig) + * other way to find a directory to start the search from. If + * $PATH isn't exported, you lose. + */ +- if (wcschr(pathconfig->program_name, SEP)) { ++ if (wcschr(pathconfig->program_name, Py_GetSepW(pathconfig->program_name))) { + pathconfig->program_full_path = _PyMem_RawWcsdup(pathconfig->program_name); + if (pathconfig->program_full_path == NULL) { + return _PyStatus_NO_MEMORY(); + } + return _PyStatus_OK(); + } ++#ifdef MS_WINDOWS ++ else if(pathconfig->program_full_path == NULL) { ++ pathconfig->program_full_path = GetWindowsModulePaths(); ++ if (pathconfig->program_full_path == NULL) { ++ return _PyStatus_NO_MEMORY(); ++ } ++ return _PyStatus_OK(); ++ } ++#endif /* MS_WINDOWS */ + + #ifdef __APPLE__ + wchar_t *abs_path = NULL; +@@ -1007,7 +1092,7 @@ calculate_program_impl(PyCalculatePath *calculate, _PyPathConfig *pathconfig) + + + /* Calculate pathconfig->program_full_path */ +-static PyStatus ++PyStatus + calculate_program(PyCalculatePath *calculate, _PyPathConfig *pathconfig) + { + PyStatus status; +@@ -1173,7 +1258,7 @@ done: + #endif + + +-static PyStatus ++PyStatus + calculate_argv0_path(PyCalculatePath *calculate, + _PyPathConfig *pathconfig) + { +@@ -1191,10 +1276,12 @@ calculate_argv0_path(PyCalculatePath *calculate, + } + #endif + ++#if defined(HAVE_READLINK) + status = resolve_symlinks(&calculate->argv0_path); + if (_PyStatus_EXCEPTION(status)) { + return status; + } ++#endif + + reduce(calculate->argv0_path); + +@@ -1324,6 +1411,7 @@ calculate_zip_path(PyCalculatePath *calculate) + goto done; + } + ++ Py_NormalizeSepsW(calculate->zip_path); + res = _PyStatus_OK(); + + done: +@@ -1363,7 +1451,14 @@ calculate_module_search_path(PyCalculatePath *calculate, + } + + bufsz += wcslen(calculate->zip_path) + 1; ++/* TODO :: The MS_WINDOWS bit may be unnecessary. */ ++#ifdef MS_WINDOWS ++ if (_Py_isabs(calculate->exec_prefix)) { ++ bufsz += wcslen(calculate->exec_prefix) + 1; ++ } ++#else + bufsz += wcslen(calculate->exec_prefix) + 1; ++#endif + + /* Allocate the buffer */ + wchar_t *buf = PyMem_RawMalloc(bufsz * sizeof(wchar_t)); +@@ -1391,7 +1486,7 @@ calculate_module_search_path(PyCalculatePath *calculate, + + if (!_Py_isabs(defpath)) { + wcscat(buf, calculate->prefix); +- if (prefixsz >= 2 && calculate->prefix[prefixsz - 2] != SEP && ++ if (prefixsz >= 2 && !_Py_issep(calculate->prefix[prefixsz - 2]) && + defpath[0] != (delim ? DELIM : L'\0')) + { + /* not empty */ +@@ -1413,8 +1508,15 @@ calculate_module_search_path(PyCalculatePath *calculate, + } + wcscat(buf, delimiter); + ++#ifdef MS_WINDOWS ++ if (_Py_isabs(calculate->exec_prefix)) { ++ wcscat(buf, calculate->exec_prefix); ++ wcscat(buf, delimiter); ++ } ++#else + /* Finally, on goes the directory for dynamic-load modules */ + wcscat(buf, calculate->exec_prefix); ++#endif + + pathconfig->module_search_path = buf; + return _PyStatus_OK(); +@@ -1443,14 +1545,17 @@ calculate_init(PyCalculatePath *calculate, const PyConfig *config) + if (!calculate->pythonpath_macro) { + return DECODE_LOCALE_ERR("PYTHONPATH macro", len); + } ++ Py_NormalizeSepsW(calculate->pythonpath_macro); + calculate->prefix_macro = Py_DecodeLocale(PREFIX, &len); + if (!calculate->prefix_macro) { + return DECODE_LOCALE_ERR("PREFIX macro", len); + } ++ Py_NormalizeSepsW(calculate->prefix_macro); + calculate->exec_prefix_macro = Py_DecodeLocale(EXEC_PREFIX, &len); + if (!calculate->exec_prefix_macro) { + return DECODE_LOCALE_ERR("EXEC_PREFIX macro", len); + } ++ Py_NormalizeSepsW(calculate->exec_prefix_macro); + calculate->vpath_macro = Py_DecodeLocale(VPATH, &len); + if (!calculate->vpath_macro) { + return DECODE_LOCALE_ERR("VPATH macro", len); +@@ -1461,6 +1566,7 @@ calculate_init(PyCalculatePath *calculate, const PyConfig *config) + if (!pyversion) { + return DECODE_LOCALE_ERR("VERSION macro", len); + } ++ + calculate->lib_python = joinpath2(config->platlibdir, pyversion); + PyMem_RawFree(pyversion); + if (calculate->lib_python == NULL) { +@@ -1477,6 +1583,7 @@ calculate_free(PyCalculatePath *calculate) + PyMem_RawFree(calculate->pythonpath_macro); + PyMem_RawFree(calculate->prefix_macro); + PyMem_RawFree(calculate->exec_prefix_macro); ++ PyMem_RawFree(calculate->dll_path); + PyMem_RawFree(calculate->vpath_macro); + PyMem_RawFree(calculate->lib_python); + PyMem_RawFree(calculate->path_env); +@@ -1492,6 +1599,8 @@ calculate_path(PyCalculatePath *calculate, _PyPathConfig *pathconfig) + { + PyStatus status; + ++ calculate->dll_path = _Py_GetDLLPath(); ++ + if (pathconfig->program_full_path == NULL) { + status = calculate_program(calculate, pathconfig); + if (_PyStatus_EXCEPTION(status)) { +@@ -1592,6 +1701,7 @@ _PyPathConfig_Calculate(_PyPathConfig *pathconfig, const PyConfig *config) + { + PyStatus status; + PyCalculatePath calculate; ++ separator[0] = Py_GetSepW(NULL); + memset(&calculate, 0, sizeof(calculate)); + + status = calculate_init(&calculate, config); +diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c +index 863bc99..14b60f0 100644 +--- a/Modules/posixmodule.c ++++ b/Modules/posixmodule.c +@@ -4097,7 +4097,7 @@ _listdir_windows_no_opendir(path_t *path, PyObject *list) + Py_END_ALLOW_THREADS + /* FindNextFile sets error to ERROR_NO_MORE_FILES if + it got to the end of the directory. */ +- if (!result && GetLastError() != ERROR_NO_MORE_FILES) { ++ if (!result && GetLastError() != 0 && GetLastError() != ERROR_NO_MORE_FILES) { + Py_DECREF(list); + list = path_error(path); + goto exit; +diff --git a/Python/dynload_win.c b/Python/dynload_win.c +index 6b53780..1083fe8 100644 +--- a/Python/dynload_win.c ++++ b/Python/dynload_win.c +@@ -173,7 +173,9 @@ dl_funcptr _PyImport_FindSharedFuncptrWindows(const char *prefix, + dl_funcptr p; + char funcname[258], *import_python; + ++#if defined(_MSC_VER) + _Py_CheckPython3(); ++#endif + + #if USE_UNICODE_WCHAR_CACHE + const wchar_t *wpathname = _PyUnicode_AsUnicode(pathname); +diff --git a/Python/fileutils.c b/Python/fileutils.c +index e8a7eda..66f748d 100644 +--- a/Python/fileutils.c ++++ b/Python/fileutils.c +@@ -1964,13 +1964,31 @@ _Py_wrealpath(const wchar_t *path, + #endif + + +-#ifndef MS_WINDOWS + int + _Py_isabs(const wchar_t *path) + { +- return (path[0] == SEP); ++#ifdef MS_WINDOWS ++ size_t i = wcslen(path); ++ if (i >= 3) { ++ if (iswalpha(path[0]) && path[1] == L':' && _Py_issep(path[2])) { ++ return 1; ++ } ++ } ++ return 0; ++#else ++ return _Py_issep(path[0]); ++#endif + } ++ ++int ++_Py_issep(const wchar_t ch) ++{ ++#ifdef MS_WINDOWS ++ return ch == SEP || ch == ALTSEP; ++#else ++ return ch == SEP; + #endif ++} + + + /* Get an absolute path. +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0033-mingw-add-ModuleFileName-dir-to-PATH.patch b/mingw-w64-python3.10/0033-mingw-add-ModuleFileName-dir-to-PATH.patch new file mode 100644 index 0000000000..d591a4d11e --- /dev/null +++ b/mingw-w64-python3.10/0033-mingw-add-ModuleFileName-dir-to-PATH.patch @@ -0,0 +1,59 @@ +From b7d61297d20f6049824c6e7c63d7369ea2c7d39b Mon Sep 17 00:00:00 2001 +From: Ray Donnelly +Date: Thu, 17 Jun 2021 18:51:48 +0530 +Subject: [PATCH 033/N] mingw add ModuleFileName dir to PATH +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Co-authored-by: Christoph Reiter +Signed-off-by: Naveen M K +--- + Modules/getpath.c | 30 ++++++++++++++++++++++++++++++ + 1 file changed, 30 insertions(+) + +diff --git a/Modules/getpath.c b/Modules/getpath.c +index ff79924..161c6f7 100644 +--- a/Modules/getpath.c ++++ b/Modules/getpath.c +@@ -1635,6 +1635,36 @@ calculate_path(PyCalculatePath *calculate, _PyPathConfig *pathconfig) + return status; + } + ++#ifdef MS_WINDOWS ++ if (calculate->path_env) { ++ wchar_t *module_path, *norm_path; ++ // Add path of executable/dll to system path. This ++ // is so that the correct tcl??.dll and tk??.dll get used. ++ module_path = calculate->dll_path[0] ? calculate->dll_path : pathconfig->program_full_path; ++ norm_path = (wchar_t *)alloca(sizeof(wchar_t) * (wcslen(module_path) + 1)); ++ if (norm_path) { ++ wchar_t *slashes, *end, *new_path; ++ wcscpy(norm_path, module_path); ++ slashes = wcschr(norm_path, L'/'); ++ while (slashes) { ++ *slashes = L'\\'; ++ slashes = wcschr(slashes + 1, L'/'); ++ } ++ end = wcsrchr(norm_path, L'\\') ? wcsrchr(norm_path, L'\\') : norm_path + wcslen(norm_path); ++ end[1] = L'\0'; ++ ++ new_path = (wchar_t *)alloca(sizeof(wchar_t) * (wcslen(L"PATH=") + wcslen(calculate->path_env) + 1 + wcslen(norm_path) + 1)); ++ if (new_path) { ++ wcscpy(new_path, L"PATH="); ++ wcscat(new_path, calculate->path_env); ++ wcscat(new_path, L";"); ++ wcscat(new_path, norm_path); ++ _wputenv(new_path); ++ } ++ } ++ } ++#endif ++ + if ((!calculate->prefix_found || !calculate->exec_prefix_found) + && calculate->warnings) + { +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0034-mingw-add-BUILDIN_WIN32_MODULEs-time-msvcrt.patch b/mingw-w64-python3.10/0034-mingw-add-BUILDIN_WIN32_MODULEs-time-msvcrt.patch new file mode 100644 index 0000000000..5dbdbbb6d2 --- /dev/null +++ b/mingw-w64-python3.10/0034-mingw-add-BUILDIN_WIN32_MODULEs-time-msvcrt.patch @@ -0,0 +1,28 @@ +From 38c266c15342f49870d0db080961b1365cbaecf5 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:49 +0530 +Subject: [PATCH 034/N] mingw add BUILDIN_WIN32_MODULEs time msvcrt +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + Modules/Setup.config.in | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Modules/Setup.config.in b/Modules/Setup.config.in +index d071a74..825ce5d 100644 +--- a/Modules/Setup.config.in ++++ b/Modules/Setup.config.in +@@ -11,4 +11,5 @@ + + # build-in modules for windows platform: + @USE_WIN32_MODULE@winreg ../PC/winreg.c ++@USE_WIN32_MODULE@msvcrt -DPy_BUILD_CORE ../PC/msvcrtmodule.c + +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0035-msys-cygwin-semi-native-build-sysconfig.patch b/mingw-w64-python3.10/0035-msys-cygwin-semi-native-build-sysconfig.patch new file mode 100644 index 0000000000..7910200726 --- /dev/null +++ b/mingw-w64-python3.10/0035-msys-cygwin-semi-native-build-sysconfig.patch @@ -0,0 +1,127 @@ +From ecae83c7c530244ac3c6a5bc34a07571ecf179ce Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:50 +0530 +Subject: [PATCH 035/N] msys cygwin semi native build sysconfig +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + Lib/sysconfig.py | 8 +++++++ + Makefile.pre.in | 7 ++++++ + configure.ac | 59 ++++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 74 insertions(+) + +diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py +index 09469ef..823c426 100644 +--- a/Lib/sysconfig.py ++++ b/Lib/sysconfig.py +@@ -386,6 +386,14 @@ def _parse_makefile(filename, vars=None, keep_unresolved=True): + if isinstance(v, str): + done[k] = v.strip() + ++ # any keys that have one with the same name suffixed with _b2h ++ # need to be replaced with the value of the _b2h key. ++ # This converts from MSYS*/Cygwin paths to Windows paths. ++ for k, v in dict(done).items(): ++ if isinstance(k, str): ++ if k.endswith("_b2h"): ++ done[k[:-4]]=v ++ + # save the results in the global dictionary + vars.update(done) + return vars +diff --git a/Makefile.pre.in b/Makefile.pre.in +index 432d0ac..099c3ac 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -137,6 +137,13 @@ exec_prefix= @exec_prefix@ + # Install prefix for data files + datarootdir= @datarootdir@ + ++# Locations needed for semi-native fixup of sysconfig. ++srcdir_b2h= @srcdir_b2h@ ++VPATH_b2h= @VPATH_b2h@ ++abs_srcdir_b2h= @abs_srcdir_b2h@ ++abs_builddir_b2h= @abs_builddir_b2h@ ++prefix_b2h= @prefix_b2h@ ++ + # Expanded directories + BINDIR= @bindir@ + LIBDIR= @libdir@ +diff --git a/configure.ac b/configure.ac +index adc5e0e..cb06125 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -608,6 +608,65 @@ then + AC_DEFINE(_INCLUDE__STDC_A1_SOURCE, 1, Define to include mbstate_t for mbrtowc) + fi + ++# On 'semi-native' build systems (MSYS*/Cygwin targeting MinGW-w64) ++# _sysconfigdata.py will contain paths that are correct only in the ++# build environment. This means external modules will fail to build ++# without setting up the same env and also that the build of Python ++# itself will fail as the paths are not correct for the host tools. ++# ++# Also, getpath.c uses GetModuleFileNameW (replacing \ with /) and ++# compares that with the define VPATH (passed in via command-line) ++# to determine whether it's the build- or the installed-Python. ++# ++# To work around these issues a set of _b2h variables are created: ++# VPATH_b2h, prefix_b2h, srcdir_b2h, abs_srcdir_b2h ++# and abs_builddir_b2h ++# .. where b2h stands for build to host. sysconfig.py replaces path ++# prefixes matching the non-b2h versions with the b2h equivalents. ++# ++# (note this assumes the host compilers are native and *not* cross ++# - in the 'semi-native' scenario only that is.) ++ ++AC_DEFUN([ABS_PATH_HOST], ++[$1=$(cd $$2 && pwd) ++ case $build_os in ++ mingw*) ++ case $host_os in ++ mingw*) $1=$(cd $$2 && pwd -W) ;; ++ *) ;; ++ esac ++ ;; ++ cygwin*) ++ case $host_os in ++ mingw*) $1=$(cygpath -w -m $$2) ;; ++ *) ;; ++ esac ++ ;; ++ esac ++AC_SUBST([$1]) ++]) ++ ++AC_MSG_CHECKING(absolute host location of VPATH) ++ABS_PATH_HOST([VPATH_b2h],[srcdir]) ++AC_MSG_RESULT([$VPATH_b2h]) ++ ++AC_MSG_CHECKING(absolute host location of prefix) ++ABS_PATH_HOST([prefix_b2h],[prefix]) ++AC_MSG_RESULT([$prefix_b2h]) ++ ++AC_MSG_CHECKING(absolute host location of srcdir) ++ABS_PATH_HOST([srcdir_b2h],[srcdir]) ++AC_MSG_RESULT([$srcdir_b2h]) ++ ++AC_MSG_CHECKING(absolute host location of abs_srcdir) ++ABS_PATH_HOST([abs_srcdir_b2h],[srcdir]) ++AC_MSG_RESULT([$abs_srcdir_b2h]) ++ ++my_builddir=. ++AC_MSG_CHECKING(Absolute host location of abs_builddir) ++ABS_PATH_HOST([abs_builddir_b2h],[my_builddir]) ++AC_MSG_RESULT([$abs_builddir_b2h]) ++ + AC_MSG_CHECKING([for init system calls]) + AC_SUBST(INITSYS) + case $host in +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0036-sysconfig-mingw-sysconfig-like-posix.patch b/mingw-w64-python3.10/0036-sysconfig-mingw-sysconfig-like-posix.patch new file mode 100644 index 0000000000..c4b0da6ed2 --- /dev/null +++ b/mingw-w64-python3.10/0036-sysconfig-mingw-sysconfig-like-posix.patch @@ -0,0 +1,66 @@ +From 1399e3c1afcdffb0314ce17eba4c8a62c16ad104 Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Tue, 21 Sep 2021 20:53:59 +0200 +Subject: [PATCH 036/N] sysconfig: mingw sysconfig like posix + +Signed-off-by: Naveen M K +--- + Lib/sysconfig.py | 28 ++++++++++++++-------------- + 1 file changed, 14 insertions(+), 14 deletions(-) + +diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py +index 823c426..fb994c0 100644 +--- a/Lib/sysconfig.py ++++ b/Lib/sysconfig.py +@@ -48,13 +48,13 @@ _INSTALL_SCHEMES = { + 'data': '{base}', + }, + 'nt': { +- 'stdlib': '{installed_base}/Lib', +- 'platstdlib': '{base}/Lib', +- 'purelib': '{base}/Lib/site-packages', +- 'platlib': '{base}/Lib/site-packages', +- 'include': '{installed_base}/Include', +- 'platinclude': '{installed_base}/Include', +- 'scripts': '{base}/Scripts', ++ 'stdlib': '{installed_base}/lib/python{py_version_short}', ++ 'platstdlib': '{base}/lib/python{py_version_short}', ++ 'purelib': '{base}/lib/python{py_version_short}/site-packages', ++ 'platlib': '{base}/lib/python{py_version_short}/site-packages', ++ 'include': '{installed_base}/include/python{py_version_short}', ++ 'platinclude': '{installed_base}/include/python{py_version_short}', ++ 'scripts': '{base}/bin', + 'data': '{base}', + }, + } +@@ -95,12 +95,12 @@ if _HAS_USER_BASE: + _INSTALL_SCHEMES |= { + # NOTE: When modifying "purelib" scheme, update site._get_path() too. + 'nt_user': { +- 'stdlib': '{userbase}/Python{py_version_nodot_plat}', +- 'platstdlib': '{userbase}/Python{py_version_nodot_plat}', +- 'purelib': '{userbase}/Python{py_version_nodot_plat}/site-packages', +- 'platlib': '{userbase}/Python{py_version_nodot_plat}/site-packages', +- 'include': '{userbase}/Python{py_version_nodot_plat}/Include', +- 'scripts': '{userbase}/Python{py_version_nodot_plat}/Scripts', ++ 'stdlib': '{userbase}/lib/python{py_version_short}', ++ 'platstdlib': '{userbase}/lib/python{py_version_short}', ++ 'purelib': '{userbase}/lib/python{py_version_short}/site-packages', ++ 'platlib': '{userbase}/lib/python{py_version_short}/site-packages', ++ 'include': '{userbase}/include/python{py_version_short}', ++ 'scripts': '{userbase}/bin', + 'data': '{userbase}', + }, + 'posix_user': { +@@ -519,7 +519,7 @@ def _init_non_posix(vars): + vars['INCLUDEPY'] = get_path('include') + vars['EXT_SUFFIX'] = _imp.extension_suffixes()[0] + vars['EXE'] = '.exe' +- vars['VERSION'] = _PY_VERSION_SHORT_NO_DOT ++ vars['VERSION'] = _PY_VERSION_SHORT + vars['BINDIR'] = os.path.dirname(_safe_realpath(sys.executable)) + vars['TZPATH'] = '' + +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0037-build-_winapi-earlier-so-we-can-use-it-in-distutils-.patch b/mingw-w64-python3.10/0037-build-_winapi-earlier-so-we-can-use-it-in-distutils-.patch new file mode 100644 index 0000000000..8fcc8b754a --- /dev/null +++ b/mingw-w64-python3.10/0037-build-_winapi-earlier-so-we-can-use-it-in-distutils-.patch @@ -0,0 +1,40 @@ +From d5d18dfe95f2d97627f637f39c61c56d8648fcae Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Tue, 21 Sep 2021 21:13:57 +0200 +Subject: [PATCH 037/N] build _winapi earlier so we can use it in distutils + via subprocess + +Signed-off-by: Naveen M K +--- + Modules/Setup.config.in | 1 + + setup.py | 4 +++- + 2 files changed, 4 insertions(+), 1 deletion(-) + +diff --git a/Modules/Setup.config.in b/Modules/Setup.config.in +index 825ce5d..b4e7ff7 100644 +--- a/Modules/Setup.config.in ++++ b/Modules/Setup.config.in +@@ -12,4 +12,5 @@ + # build-in modules for windows platform: + @USE_WIN32_MODULE@winreg ../PC/winreg.c + @USE_WIN32_MODULE@msvcrt -DPy_BUILD_CORE ../PC/msvcrtmodule.c ++@USE_WIN32_MODULE@_winapi _winapi.c + +diff --git a/setup.py b/setup.py +index 679653d..6045374 100644 +--- a/setup.py ++++ b/setup.py +@@ -1691,7 +1691,9 @@ class PyBuildExt(build_ext): + self.add(Extension('msvcrt', [os.path.join(pc_srcdir, p) + for p in ['msvcrtmodule.c']])) + +- self.add(Extension('_winapi', ['_winapi.c'])) ++ # Added to Setup.config.in as now needed earlier since I ++ # use subprocess (which uses Popen) in cygwinccompiler.py ++ # self.add(Extension('_winapi', ['_winapi.c'])) + + self.add(Extension('_msi', [os.path.join(pc_srcdir, p) + for p in ['_msi.c']], +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0038-cross-dont-add-multiarch-paths-if-cross-compiling.patch b/mingw-w64-python3.10/0038-cross-dont-add-multiarch-paths-if-cross-compiling.patch new file mode 100644 index 0000000000..688546fb0a --- /dev/null +++ b/mingw-w64-python3.10/0038-cross-dont-add-multiarch-paths-if-cross-compiling.patch @@ -0,0 +1,34 @@ +From 8c08bc18c597727b73fa4ae9b6f5f0090ebee22c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:52 +0530 +Subject: [PATCH 038/N] cross dont add multiarch paths if cross compiling +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + setup.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/setup.py b/setup.py +index 6045374..8446c0c 100644 +--- a/setup.py ++++ b/setup.py +@@ -816,10 +816,10 @@ class PyBuildExt(build_ext): + if not CROSS_COMPILING: + add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib') + add_dir_to_list(self.compiler.include_dirs, '/usr/local/include') ++ self.add_multiarch_paths() + # only change this for cross builds for 3.3, issues on Mageia + if CROSS_COMPILING: + self.add_cross_compiling_paths() +- self.add_multiarch_paths() + self.add_ldflags_cppflags() + + def init_inc_lib_dirs(self): +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0039-mingw-use-backslashes-in-compileall-py.patch b/mingw-w64-python3.10/0039-mingw-use-backslashes-in-compileall-py.patch new file mode 100644 index 0000000000..67bbdcb441 --- /dev/null +++ b/mingw-w64-python3.10/0039-mingw-use-backslashes-in-compileall-py.patch @@ -0,0 +1,31 @@ +From d691d67b2af1d281487c3cbc0f5e15d771c2d2ff Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:53 +0530 +Subject: [PATCH 039/N] mingw use backslashes in compileall py +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + Lib/compileall.py | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/Lib/compileall.py b/Lib/compileall.py +index 3e00477..9d19e90 100644 +--- a/Lib/compileall.py ++++ b/Lib/compileall.py +@@ -38,6 +38,8 @@ def _walk_dir(dir, maxlevels, quiet=0): + if name == '__pycache__': + continue + fullname = os.path.join(dir, name) ++ if sys.platform == "win32" and sys.version.find("GCC") >= 0: ++ fullname = fullname.replace('\\','/') + if not os.path.isdir(fullname): + yield fullname + elif (maxlevels > 0 and name != os.curdir and name != os.pardir and +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0040-msys-convert_path-fix-and-root-hack.patch b/mingw-w64-python3.10/0040-msys-convert_path-fix-and-root-hack.patch new file mode 100644 index 0000000000..fc32cfa87e --- /dev/null +++ b/mingw-w64-python3.10/0040-msys-convert_path-fix-and-root-hack.patch @@ -0,0 +1,43 @@ +From cc0fbe288813b1e49ceaa8b2ed620e8887670b2a Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Tue, 21 Sep 2021 21:18:36 +0200 +Subject: [PATCH 040/N] msys convert_path fix and root hack + +Signed-off-by: Naveen M K +--- + Makefile.pre.in | 12 +++++++++--- + 1 file changed, 9 insertions(+), 3 deletions(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index 099c3ac..c6a312e 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -1760,6 +1760,12 @@ libainstall: @DEF_MAKE_RULE@ python-config + else true; \ + fi + ++ifeq ($(shell uname -o),Msys) ++DESTDIRFINAL=$(DESTDIR) ++else ++DESTDIRFINAL=$(DESTDIR)/ ++endif ++ + # Install the dynamically loadable modules + # This goes into $(exec_prefix) + sharedinstall: sharedmods +@@ -1767,9 +1773,9 @@ sharedinstall: sharedmods + --prefix=$(prefix) \ + --install-scripts=$(BINDIR) \ + --install-platlib=$(DESTSHARED) \ +- --root=$(DESTDIR)/ +- -rm $(DESTDIR)$(DESTSHARED)/_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH).py +- -rm -r $(DESTDIR)$(DESTSHARED)/__pycache__ ++ --root=$(DESTDIRFINAL) ++ -rm $(DESTDIRFINAL)$(DESTSHARED)/_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH).py ++ -rm -r $(DESTDIRFINAL)$(DESTSHARED)/__pycache__ + + # Here are a couple of targets for MacOSX again, to install a full + # framework-based Python. frameworkinstall installs everything, the +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0041-allow-static-tcltk.patch b/mingw-w64-python3.10/0041-allow-static-tcltk.patch new file mode 100644 index 0000000000..03617cf6f2 --- /dev/null +++ b/mingw-w64-python3.10/0041-allow-static-tcltk.patch @@ -0,0 +1,88 @@ +From c42bbc3cdab0f8af72ec32268d765659dc517670 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:54 +0530 +Subject: [PATCH 041/N] allow static tcltk +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + setup.py | 35 +++++++++++++++++++++++++---------- + 1 file changed, 25 insertions(+), 10 deletions(-) + +diff --git a/setup.py b/setup.py +index 8446c0c..b406cb8 100644 +--- a/setup.py ++++ b/setup.py +@@ -865,7 +865,7 @@ class PyBuildExt(build_ext): + if HOST_PLATFORM == 'hp-ux11': + self.lib_dirs += ['/usr/lib/hpux64', '/usr/lib/hpux32'] + +- if MACOS: ++ if MACOS or MS_WINDOWS: + # This should work on any unixy platform ;-) + # If the user has bothered specifying additional -I and -L flags + # in OPT and LDFLAGS we might as well use them here. +@@ -875,6 +875,8 @@ class PyBuildExt(build_ext): + # directories with whitespace in the name to store libraries. + cflags, ldflags = sysconfig.get_config_vars( + 'CFLAGS', 'LDFLAGS') ++ cflags = cflags + ' ' + ('',os.environ.get('CC'))[os.environ.get('CC') != None] ++ ldflags = ldflags + ' ' + ('',os.environ.get('LDSHARED'))[os.environ.get('LDSHARED') != None] + for item in cflags.split(): + if item.startswith('-I'): + self.inc_dirs.append(item[2:]) +@@ -2155,14 +2157,19 @@ class PyBuildExt(build_ext): + # The versions with dots are used on Unix, and the versions without + # dots on Windows, for detection by cygwin. + tcllib = tklib = tcl_includes = tk_includes = None +- for version in ['8.6', '86', '8.5', '85', '8.4', '84', '8.3', '83', +- '8.2', '82', '8.1', '81', '8.0', '80']: +- tklib = self.compiler.find_library_file(self.lib_dirs, +- 'tk' + version) +- tcllib = self.compiler.find_library_file(self.lib_dirs, +- 'tcl' + version) +- if tklib and tcllib: +- # Exit the loop when we've found the Tcl/Tk libraries ++ tcltk_suffix = None ++ for suffix in ['', 's']: ++ for version in ['8.6', '86', '8.5', '85', '8.4', '84', '8.3', '83', ++ '8.2', '82', '8.1', '81', '8.0', '80', '']: ++ tklib = self.compiler.find_library_file(self.lib_dirs, ++ 'tk' + version + suffix) ++ tcllib = self.compiler.find_library_file(self.lib_dirs, ++ 'tcl' + version + suffix) ++ if tklib and tcllib: ++ # Exit the loop when we've found the Tcl/Tk libraries ++ tcltk_suffix = suffix ++ break ++ if tcltk_suffix != None: + break + + # Now check for the header files +@@ -2233,10 +2240,18 @@ class PyBuildExt(build_ext): + # Add the Tcl/Tk libraries + libs.append('tk'+ version) + libs.append('tcl'+ version) ++ libs.append('tk'+ version + tcltk_suffix) ++ libs.append('tcl'+ version + tcltk_suffix) ++ if MS_WINDOWS: ++ for winlib in ['ws2_32','gdi32','comctl32','comdlg32','imm32','uuid','oleaut32','ole32']: ++ libs.append( winlib ) + + # Finally, link with the X11 libraries (not appropriate on cygwin) +- if not CYGWIN: ++ # ...on those platforms, define STATIC_BUILD if linking to static tcl/tk. ++ if not CYGWIN and not MS_WINDOWS: + libs.append('X11') ++ elif tcllib.endswith('s.a'): ++ defs.append( ('STATIC_BUILD',1) ) + + # XXX handle these, but how to detect? + # *** Uncomment and edit for PIL (TkImaging) extension only: +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0042-mingw-pdcurses_ISPAD.patch b/mingw-w64-python3.10/0042-mingw-pdcurses_ISPAD.patch new file mode 100644 index 0000000000..dadd76665f --- /dev/null +++ b/mingw-w64-python3.10/0042-mingw-pdcurses_ISPAD.patch @@ -0,0 +1,36 @@ +From 64f3f910871d9d0e51971b97d3cded59b458448e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:55 +0530 +Subject: [PATCH 042/N] mingw pdcurses_ISPAD +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + Include/py_curses.h | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/Include/py_curses.h b/Include/py_curses.h +index b70252d..0d5cee2 100644 +--- a/Include/py_curses.h ++++ b/Include/py_curses.h +@@ -36,6 +36,13 @@ + #include + #endif + ++#if defined(__MINGW32__) ++#include ++#if !defined(_ISPAD) ++#define _ISPAD 0x10 ++#endif ++#endif ++ + #ifdef HAVE_NCURSES_H + /* configure was checking , but we will + use , which has some or all these features. */ +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0043-builddir-fixes.patch b/mingw-w64-python3.10/0043-builddir-fixes.patch new file mode 100644 index 0000000000..bde714eee3 --- /dev/null +++ b/mingw-w64-python3.10/0043-builddir-fixes.patch @@ -0,0 +1,71 @@ +From 92456f734e8a9582549491c5f0f9d3c6e0929e5b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:57 +0530 +Subject: [PATCH 043/N] builddir fixes +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Co-authored-by: Christoph Reiter +Signed-off-by: Naveen M K +--- + Makefile.pre.in | 10 +++++----- + Programs/_freeze_importlib.c | 2 +- + 2 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index c6a312e..041baf7 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -738,20 +738,20 @@ Programs/_testembed: Programs/_testembed.o $(LIBRARY_DEPS) + + Programs/_freeze_importlib.o: Programs/_freeze_importlib.c Makefile + +-Programs/_freeze_importlib: Programs/_freeze_importlib.o $(LIBRARY_OBJS_OMIT_FROZEN) ++Programs/_freeze_importlib$(EXE): Programs/_freeze_importlib.o $(LIBRARY_OBJS_OMIT_FROZEN) + $(LINKCC) $(PY_CORE_LDFLAGS) -o $@ Programs/_freeze_importlib.o $(LIBRARY_OBJS_OMIT_FROZEN) $(LIBS) $(MODLIBS) $(SYSLIBS) + + .PHONY: regen-importlib +-regen-importlib: Programs/_freeze_importlib ++regen-importlib: Programs/_freeze_importlib$(EXE) + # Regenerate Python/importlib_external.h + # from Lib/importlib/_bootstrap_external.py using _freeze_importlib +- ./Programs/_freeze_importlib importlib._bootstrap_external \ ++ ./Programs/_freeze_importlib$(EXE) importlib._bootstrap_external \ + $(srcdir)/Lib/importlib/_bootstrap_external.py \ + $(srcdir)/Python/importlib_external.h.new + $(UPDATE_FILE) $(srcdir)/Python/importlib_external.h $(srcdir)/Python/importlib_external.h.new + # Regenerate Python/importlib.h from Lib/importlib/_bootstrap.py + # using _freeze_importlib +- ./Programs/_freeze_importlib importlib._bootstrap \ ++ ./Programs/_freeze_importlib$(EXE) importlib._bootstrap \ + $(srcdir)/Lib/importlib/_bootstrap.py \ + $(srcdir)/Python/importlib.h.new + $(UPDATE_FILE) $(srcdir)/Python/importlib.h $(srcdir)/Python/importlib.h.new +@@ -1935,7 +1935,7 @@ clean-retain-profile: pycremoval + find build -name '*.py[co]' -exec rm -f {} ';' || true + -rm -f pybuilddir.txt + -rm -f Lib/lib2to3/*Grammar*.pickle +- -rm -f Programs/_testembed Programs/_freeze_importlib ++ -rm -f Programs/_testembed Programs/_freeze_importlib$(EXE) + -find build -type f -a ! -name '*.gc??' -exec rm -f {} ';' + -rm -f Include/pydtrace_probes.h + -rm -f profile-gen-stamp +diff --git a/Programs/_freeze_importlib.c b/Programs/_freeze_importlib.c +index 2e4ccbb..a8d5c31 100644 +--- a/Programs/_freeze_importlib.c ++++ b/Programs/_freeze_importlib.c +@@ -20,7 +20,7 @@ static const struct _frozen _PyImport_FrozenModules[] = { + {0, 0, 0} /* sentinel */ + }; + +-#ifndef MS_WINDOWS ++#ifndef _MSC_VER + /* On Windows, this links with the regular pythonXY.dll, so this variable comes + from frozen.obj. In the Makefile, frozen.o is not linked into this executable, + so we define the variable here. */ +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0044-msys-monkeypatch-os-system-via-sh-exe.patch b/mingw-w64-python3.10/0044-msys-monkeypatch-os-system-via-sh-exe.patch new file mode 100644 index 0000000000..02d8377f1c --- /dev/null +++ b/mingw-w64-python3.10/0044-msys-monkeypatch-os-system-via-sh-exe.patch @@ -0,0 +1,40 @@ +From 4a690d443590f6e37801d13f4e70820f2d625466 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:57 +0530 +Subject: [PATCH 044/N] msys monkeypatch os system via sh exe +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + setup.py | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/setup.py b/setup.py +index b406cb8..ce28bc1 100644 +--- a/setup.py ++++ b/setup.py +@@ -79,6 +79,17 @@ def get_platform(): + return sys.platform + + ++# On MSYS, os.system needs to be wrapped with sh.exe ++# as otherwise all the io redirection will fail. ++# Arguably, this could happen inside the real os.system ++# rather than this monkey patch. ++if sys.platform == "win32" and "MSYSTEM" in os.environ: ++ os_system = os.system ++ def msys_system(command): ++ command_in_sh = 'sh.exe -c "%s"' % command.replace("\\", "\\\\") ++ return os_system(command_in_sh) ++ os.system = msys_system ++ + CROSS_COMPILING = ("_PYTHON_HOST_PLATFORM" in os.environ) + HOST_PLATFORM = get_platform() + MS_WINDOWS = (HOST_PLATFORM == 'win32') +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0045-msys-replace-slashes-used-in-io-redirection.patch b/mingw-w64-python3.10/0045-msys-replace-slashes-used-in-io-redirection.patch new file mode 100644 index 0000000000..30c3dbe623 --- /dev/null +++ b/mingw-w64-python3.10/0045-msys-replace-slashes-used-in-io-redirection.patch @@ -0,0 +1,74 @@ +From 4859bff1e3031582992bfe5bf87861b3cf3db536 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:58 +0530 +Subject: [PATCH 045/N] msys replace slashes used in io redirection +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Co-authored-by: Christoph Reiter +Signed-off-by: Naveen M K +--- + setup.py | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/setup.py b/setup.py +index ce28bc1..bb6e208 100644 +--- a/setup.py ++++ b/setup.py +@@ -677,7 +677,7 @@ class PyBuildExt(build_ext): + # Debian/Ubuntu multiarch support. + # https://wiki.ubuntu.com/MultiarchSpec + cc = sysconfig.get_config_var('CC') +- tmpfile = os.path.join(self.build_temp, 'multiarch') ++ tmpfile = os.path.join(self.build_temp, 'multiarch').replace('\\','/') + if not os.path.exists(self.build_temp): + os.makedirs(self.build_temp) + ret = run_command( +@@ -702,7 +702,7 @@ class PyBuildExt(build_ext): + opt = '' + if CROSS_COMPILING: + opt = '-t' + sysconfig.get_config_var('HOST_GNU_TYPE') +- tmpfile = os.path.join(self.build_temp, 'multiarch') ++ tmpfile = os.path.join(self.build_temp, 'multiarch').replace('\\','/') + if not os.path.exists(self.build_temp): + os.makedirs(self.build_temp) + ret = run_command( +@@ -766,7 +766,7 @@ class PyBuildExt(build_ext): + + def add_cross_compiling_paths(self): + cc = sysconfig.get_config_var('CC') +- tmpfile = os.path.join(self.build_temp, 'ccpaths') ++ tmpfile = os.path.join(self.build_temp, 'ccpaths').replace('\\','/') + if not os.path.exists(self.build_temp): + os.makedirs(self.build_temp) + ret = run_command('%s -E -v - %s 1>/dev/null' % (cc, tmpfile)) +@@ -1085,7 +1085,7 @@ class PyBuildExt(build_ext): + readline_termcap_library = "" + curses_library = "" + # Cannot use os.popen here in py3k. +- tmpfile = os.path.join(self.build_temp, 'readline_termcap_lib') ++ tmpfile = os.path.join(self.build_temp, 'readline_termcap_lib').replace('\\','/') + if not os.path.exists(self.build_temp): + os.makedirs(self.build_temp) + # Determine if readline is already linked against curses or tinfo. +@@ -2106,12 +2106,12 @@ class PyBuildExt(build_ext): + cflags = sysconfig.get_config_vars('CFLAGS')[0] + archs = re.findall(r'-arch\s+(\w+)', cflags) + +- tmpfile = os.path.join(self.build_temp, 'tk.arch') ++ tmpfile = os.path.join(self.build_temp, 'tk.arch').replace('\\','/') + if not os.path.exists(self.build_temp): + os.makedirs(self.build_temp) + + run_command( +- "file {}/Tk.framework/Tk | grep 'for architecture' > {}".format(F, tmpfile) ++ "file {}/Tk.framework/Tk | grep 'for architecture' > {}".format(F, tmpfile).replace('\\','/') + ) + with open(tmpfile) as fp: + detected_archs = [] +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0046-remove_path_max.default.patch b/mingw-w64-python3.10/0046-remove_path_max.default.patch new file mode 100644 index 0000000000..185e8fa429 --- /dev/null +++ b/mingw-w64-python3.10/0046-remove_path_max.default.patch @@ -0,0 +1,30 @@ +From c8c429f02b796ace035e5bb47837c4208334bf99 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:59 +0530 +Subject: [PATCH 046/N] remove_path_max.default +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + Include/osdefs.h | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/Include/osdefs.h b/Include/osdefs.h +index 3243944..99d4977 100644 +--- a/Include/osdefs.h ++++ b/Include/osdefs.h +@@ -10,7 +10,6 @@ extern "C" { + #ifdef MS_WINDOWS + #define SEP L'\\' + #define ALTSEP L'/' +-#define MAXPATHLEN 256 + #define DELIM L';' + #endif + +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0047-dont-link-with-gettext.patch b/mingw-w64-python3.10/0047-dont-link-with-gettext.patch new file mode 100644 index 0000000000..b46b24ac34 --- /dev/null +++ b/mingw-w64-python3.10/0047-dont-link-with-gettext.patch @@ -0,0 +1,61 @@ +From f84ed3dee09299ecb4e1760bda7411cc7c2dc5ff Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:52:00 +0530 +Subject: [PATCH 047/N] dont link with gettext +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + Modules/_localemodule.c | 7 +++++++ + configure.ac | 9 +++++++++ + 2 files changed, 16 insertions(+) + +diff --git a/Modules/_localemodule.c b/Modules/_localemodule.c +index 564f559..71c8412 100644 +--- a/Modules/_localemodule.c ++++ b/Modules/_localemodule.c +@@ -12,6 +12,13 @@ This software comes with no warranty. Use at your own risk. + #define PY_SSIZE_T_CLEAN + #include "Python.h" + #include "pycore_fileutils.h" ++#ifdef __MINGW32__ ++/* The header libintl.h and library libintl may exist on mingw host. ++ * To be compatible with MSVC build we has to undef some defines. ++ */ ++#undef HAVE_LIBINTL_H ++#undef HAVE_BIND_TEXTDOMAIN_CODESET ++#endif + + #include + #include +diff --git a/configure.ac b/configure.ac +index cb06125..a21a239 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3142,10 +3142,19 @@ AC_SEARCH_LIBS(sem_init, pthread rt posix4) + fi + + # check if we need libintl for locale functions ++case $host in ++ *-*-mingw*) ++ dnl Native windows build don't use libintl (see _localemodule.c). ++ dnl Also we don't like setup.py to add "intl" library to the list ++ dnl when build _locale module. ++ ;; ++ *) + AC_CHECK_LIB(intl, textdomain, + [AC_DEFINE(WITH_LIBINTL, 1, + [Define to 1 if libintl is needed for locale functions.]) + LIBS="-lintl $LIBS"]) ++ ;; ++esac + + # checks for system dependent C++ extensions support + case "$ac_sys_system" in +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0048-ctypes-python-dll.patch b/mingw-w64-python3.10/0048-ctypes-python-dll.patch new file mode 100644 index 0000000000..e0938bdc2c --- /dev/null +++ b/mingw-w64-python3.10/0048-ctypes-python-dll.patch @@ -0,0 +1,34 @@ +From b5185ce931450f946370b2823d31caba64cb78a7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:52:01 +0530 +Subject: [PATCH 048/N] ctypes python dll +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Co-authored-by: Christoph Reiter +Signed-off-by: Naveen M K +--- + Lib/ctypes/__init__.py | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/Lib/ctypes/__init__.py b/Lib/ctypes/__init__.py +index 4afa4eb..2fe2eec 100644 +--- a/Lib/ctypes/__init__.py ++++ b/Lib/ctypes/__init__.py +@@ -456,7 +456,9 @@ class LibraryLoader(object): + cdll = LibraryLoader(CDLL) + pydll = LibraryLoader(PyDLL) + +-if _os.name == "nt": ++if _os.name == "nt" and _sys.version.find('GCC') >= 0: ++ pythonapi = PyDLL("libpython%d.%d%s.dll" % (_sys.version_info[:2] + (_sys.abiflags,)), None) ++elif _os.name == "nt": + pythonapi = PyDLL("python dll", None, _sys.dllhandle) + elif _sys.platform == "cygwin": + pythonapi = PyDLL("libpython%d.%d.dll" % _sys.version_info[:2]) +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0049-gdbm-module-includes.patch b/mingw-w64-python3.10/0049-gdbm-module-includes.patch new file mode 100644 index 0000000000..eb40f022fb --- /dev/null +++ b/mingw-w64-python3.10/0049-gdbm-module-includes.patch @@ -0,0 +1,31 @@ +From b0cc025c9eb0dbeff70c0b4e8cec659a2c262af4 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:52:02 +0530 +Subject: [PATCH 049/N] gdbm module includes +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + Modules/_gdbmmodule.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Modules/_gdbmmodule.c b/Modules/_gdbmmodule.c +index a7fb6a3..98f2c09 100644 +--- a/Modules/_gdbmmodule.c ++++ b/Modules/_gdbmmodule.c +@@ -11,7 +11,7 @@ + #include + #include "gdbm.h" + +-#if defined(WIN32) && !defined(__CYGWIN__) ++#if defined(WIN32) && !defined(__CYGWIN__) && !defined(__MINGW32__) + #include "gdbmerrno.h" + extern const char * gdbm_strerror(gdbm_error); + #endif +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0050-use-gnu_printf-in-format.patch b/mingw-w64-python3.10/0050-use-gnu_printf-in-format.patch new file mode 100644 index 0000000000..cae3973b69 --- /dev/null +++ b/mingw-w64-python3.10/0050-use-gnu_printf-in-format.patch @@ -0,0 +1,86 @@ +From 5a2085bcb4f7bf42a7eca005025d5095b44907e9 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:52:03 +0530 +Subject: [PATCH 050/N] use gnu_printf in format +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + Include/bytesobject.h | 4 ++-- + Include/pyerrors.h | 4 ++-- + Include/pyport.h | 6 ++++++ + Include/sysmodule.h | 4 ++-- + 4 files changed, 12 insertions(+), 6 deletions(-) + +diff --git a/Include/bytesobject.h b/Include/bytesobject.h +index 39c241a..902d4a1 100644 +--- a/Include/bytesobject.h ++++ b/Include/bytesobject.h +@@ -35,9 +35,9 @@ PyAPI_FUNC(PyObject *) PyBytes_FromStringAndSize(const char *, Py_ssize_t); + PyAPI_FUNC(PyObject *) PyBytes_FromString(const char *); + PyAPI_FUNC(PyObject *) PyBytes_FromObject(PyObject *); + PyAPI_FUNC(PyObject *) PyBytes_FromFormatV(const char*, va_list) +- Py_GCC_ATTRIBUTE((format(printf, 1, 0))); ++ Py_PRINTF(1, 0); + PyAPI_FUNC(PyObject *) PyBytes_FromFormat(const char*, ...) +- Py_GCC_ATTRIBUTE((format(printf, 1, 2))); ++ Py_PRINTF(1, 2); + PyAPI_FUNC(Py_ssize_t) PyBytes_Size(PyObject *); + PyAPI_FUNC(char *) PyBytes_AsString(PyObject *); + PyAPI_FUNC(PyObject *) PyBytes_Repr(PyObject *, int); +diff --git a/Include/pyerrors.h b/Include/pyerrors.h +index f5d1c71..a532821 100644 +--- a/Include/pyerrors.h ++++ b/Include/pyerrors.h +@@ -308,9 +308,9 @@ PyAPI_FUNC(int) PyUnicodeTranslateError_SetReason( + ); + + PyAPI_FUNC(int) PyOS_snprintf(char *str, size_t size, const char *format, ...) +- Py_GCC_ATTRIBUTE((format(printf, 3, 4))); ++ Py_PRINTF(3, 4); + PyAPI_FUNC(int) PyOS_vsnprintf(char *str, size_t size, const char *format, va_list va) +- Py_GCC_ATTRIBUTE((format(printf, 3, 0))); ++ Py_PRINTF(3, 0); + + #ifndef Py_LIMITED_API + # define Py_CPYTHON_ERRORS_H +diff --git a/Include/pyport.h b/Include/pyport.h +index dedc3b8..78f7d53 100644 +--- a/Include/pyport.h ++++ b/Include/pyport.h +@@ -803,6 +803,12 @@ extern char * _getpty(int *, int, mode_t, int); + + #define Py_VA_COPY va_copy + ++#if defined(__GNUC__) && ((__GNUC__ == 4 && __GNUC_MINOR__>= 4) || __GNUC__ > 4) ++# define Py_PRINTF(X,Y) Py_GCC_ATTRIBUTE((format(gnu_printf,X,Y))) ++#else ++# define Py_PRINTF(X,Y) Py_GCC_ATTRIBUTE((format(printf,X,Y))) ++#endif ++ + /* + * Convenient macros to deal with endianness of the platform. WORDS_BIGENDIAN is + * detected by configure and defined in pyconfig.h. The code in pyconfig.h +diff --git a/Include/sysmodule.h b/Include/sysmodule.h +index 670e5d2..d582963 100644 +--- a/Include/sysmodule.h ++++ b/Include/sysmodule.h +@@ -15,9 +15,9 @@ PyAPI_FUNC(void) PySys_SetArgvEx(int, wchar_t **, int); + PyAPI_FUNC(void) PySys_SetPath(const wchar_t *); + + PyAPI_FUNC(void) PySys_WriteStdout(const char *format, ...) +- Py_GCC_ATTRIBUTE((format(printf, 1, 2))); ++ Py_PRINTF(1, 2); + PyAPI_FUNC(void) PySys_WriteStderr(const char *format, ...) +- Py_GCC_ATTRIBUTE((format(printf, 1, 2))); ++ Py_PRINTF(1, 2); + PyAPI_FUNC(void) PySys_FormatStdout(const char *format, ...); + PyAPI_FUNC(void) PySys_FormatStderr(const char *format, ...); + +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0051-mingw-fix-ssl-dont-use-enum_certificates.patch b/mingw-w64-python3.10/0051-mingw-fix-ssl-dont-use-enum_certificates.patch new file mode 100644 index 0000000000..b93613a610 --- /dev/null +++ b/mingw-w64-python3.10/0051-mingw-fix-ssl-dont-use-enum_certificates.patch @@ -0,0 +1,40 @@ +From fea589f9c476ce4eab104b5feb845e0829975109 Mon Sep 17 00:00:00 2001 +From: Ray Donnelly +Date: Thu, 17 Jun 2021 18:52:03 +0530 +Subject: [PATCH 051/N] mingw fix ssl dont use enum_certificates +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Co-authored-by: Christoph Reiter +Signed-off-by: Naveen M K +--- + Lib/ssl.py | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Lib/ssl.py b/Lib/ssl.py +index 181065d..752d1e4 100644 +--- a/Lib/ssl.py ++++ b/Lib/ssl.py +@@ -249,7 +249,7 @@ class _TLSMessageType(_IntEnum): + CHANGE_CIPHER_SPEC = 0x0101 + + +-if sys.platform == "win32": ++if sys.platform == "win32" and sys.version.find("GCC") == -1: + from _ssl import enum_certificates, enum_crls + + from socket import socket, SOCK_STREAM, create_connection +@@ -586,7 +586,7 @@ class SSLContext(_SSLContext): + def load_default_certs(self, purpose=Purpose.SERVER_AUTH): + if not isinstance(purpose, _ASN1Object): + raise TypeError(purpose) +- if sys.platform == "win32": ++ if sys.platform == "win32" and sys.version.find("GCC") == -1: + for storename in self._windows_cert_stores: + self._load_windows_store_certs(storename, purpose) + self.set_default_verify_paths() +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0052-fix-using-dllhandle-and-winver-mingw.patch b/mingw-w64-python3.10/0052-fix-using-dllhandle-and-winver-mingw.patch new file mode 100644 index 0000000000..4ee57dc646 --- /dev/null +++ b/mingw-w64-python3.10/0052-fix-using-dllhandle-and-winver-mingw.patch @@ -0,0 +1,40 @@ +From dad1af4c449d7f8ac7f6d52e6b763ec56aae89b5 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:52:06 +0530 +Subject: [PATCH 052/N] fix using dllhandle and winver mingw +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + Python/sysmodule.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Python/sysmodule.c b/Python/sysmodule.c +index ac49f78..d91a606 100644 +--- a/Python/sysmodule.c ++++ b/Python/sysmodule.c +@@ -38,7 +38,7 @@ Data members: + #include + #endif /* MS_WINDOWS */ + +-#ifdef MS_COREDLL ++#if defined(MS_WINDOWS) && defined(Py_ENABLE_SHARED) + extern void *PyWin_DLLhModule; + /* A string loaded from the DLL at startup: */ + extern const char *PyWin_DLLVersionString; +@@ -2801,7 +2801,7 @@ _PySys_InitCore(PyThreadState *tstate, PyObject *sysdict) + SET_SYS_FROM_STRING("byteorder", "little"); + #endif + +-#ifdef MS_COREDLL ++#if defined(MS_WINDOWS) && defined(Py_ENABLE_SHARED) + SET_SYS("dllhandle", PyLong_FromVoidPtr(PyWin_DLLhModule)); + SET_SYS_FROM_STRING("winver", PyWin_DLLVersionString); + #endif +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0053-Add-AMD64-to-sys-config-so-msvccompiler-get_build_ve.patch b/mingw-w64-python3.10/0053-Add-AMD64-to-sys-config-so-msvccompiler-get_build_ve.patch new file mode 100644 index 0000000000..75ed862563 --- /dev/null +++ b/mingw-w64-python3.10/0053-Add-AMD64-to-sys-config-so-msvccompiler-get_build_ve.patch @@ -0,0 +1,43 @@ +From 82b13bb5153b627bb1acfe3c928ef072c2ab9cf5 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:52:07 +0530 +Subject: [PATCH 053/N] Add AMD64 to sys config so msvccompiler + get_build_version works + +Signed-off-by: Naveen M K +--- + Python/getcompiler.c | 17 ++++++++++++++++- + 1 file changed, 16 insertions(+), 1 deletion(-) + +diff --git a/Python/getcompiler.c b/Python/getcompiler.c +index a5d2623..3e31c80 100644 +--- a/Python/getcompiler.c ++++ b/Python/getcompiler.c +@@ -10,7 +10,22 @@ + #if defined(__clang__) + #define COMPILER "[Clang " __clang_version__ "]" + #elif defined(__GNUC__) +-#define COMPILER "[GCC " __VERSION__ "]" ++/* To not break compatibility with things that determine ++ CPU arch by calling get_build_version in msvccompiler.py ++ (such as NumPy) add "32 bit" or "64 bit (AMD64)" on Windows ++ and also use a space as a separator rather than a newline. */ ++#if defined(_WIN32) ++#define COMP_SEP " " ++#if defined(__x86_64__) ++#define ARCH_SUFFIX " 64 bit (AMD64)" ++#else ++#define ARCH_SUFFIX " 32 bit" ++#endif ++#else ++#define COMP_SEP "\n" ++#define ARCH_SUFFIX "" ++#endif ++#define COMPILER COMP_SEP "[GCC " __VERSION__ ARCH_SUFFIX "]" + // Generic fallbacks. + #elif defined(__cplusplus) + #define COMPILER "[C++]" +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0054-MINGW-link-with-additional-library.patch b/mingw-w64-python3.10/0054-MINGW-link-with-additional-library.patch new file mode 100644 index 0000000000..79e57df0fd --- /dev/null +++ b/mingw-w64-python3.10/0054-MINGW-link-with-additional-library.patch @@ -0,0 +1,34 @@ +From 5186de5e482581e020c7d4d0c1eb52ea5c424d1d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:52:08 +0530 +Subject: [PATCH 054/N] MINGW link with additional library + +Signed-off-by: Naveen M K +--- + configure.ac | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/configure.ac b/configure.ac +index a21a239..4f014f9 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -5907,6 +5907,15 @@ for dir in $SRCDIRS; do + done + AC_MSG_RESULT(done) + ++# For mingw build need additional library for linking ++case $host in ++ *-*-mingw*) ++ LIBS="$LIBS -lversion -lshlwapi -lpathcch" ++ ;; ++ *) ++ ;; ++esac ++ + # Availability of -O2: + AC_MSG_CHECKING(for -O2) + saved_cflags="$CFLAGS" +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0055-install-msilib.patch b/mingw-w64-python3.10/0055-install-msilib.patch new file mode 100644 index 0000000000..1612ba5441 --- /dev/null +++ b/mingw-w64-python3.10/0055-install-msilib.patch @@ -0,0 +1,31 @@ +From 9b7ab0570d8347d33558619a7ab643a2bc3b3ea3 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Sa=C3=BAl=20Ibarra=20Corretg=C3=A9?= +Date: Thu, 17 Jun 2021 18:52:09 +0530 +Subject: [PATCH 055/N] install msilib +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Co-authored-by: Christoph Reiter +Co-authored-by: Ray Donnelly +Signed-off-by: Naveen M K +--- + Makefile.pre.in | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index 041baf7..703f1d4 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -1460,6 +1460,7 @@ LIBSUBDIRS= asyncio \ + sqlite3 \ + tkinter \ + turtledemo \ ++ msilib \ + unittest \ + urllib \ + venv venv/scripts venv/scripts/common venv/scripts/posix \ +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0056-fix-signal-module-build.patch b/mingw-w64-python3.10/0056-fix-signal-module-build.patch new file mode 100644 index 0000000000..b246a7093f --- /dev/null +++ b/mingw-w64-python3.10/0056-fix-signal-module-build.patch @@ -0,0 +1,30 @@ +From d4cf88fdd752072679c4c5f4b00d4536bb40b24f Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Thu, 17 Jun 2021 18:52:10 +0530 +Subject: [PATCH 056/N] fix signal module build +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + Modules/Setup | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Modules/Setup b/Modules/Setup +index e765e05..ecd64fe 100644 +--- a/Modules/Setup ++++ b/Modules/Setup +@@ -111,7 +111,7 @@ _collections _collectionsmodule.c # Container types + _abc -DPy_BUILD_CORE_BUILTIN _abc.c # Abstract base classes + itertools itertoolsmodule.c # Functions creating iterators for efficient looping + atexit atexitmodule.c # Register functions to be run at interpreter-shutdown +-_signal -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal signalmodule.c ++_signal -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal signalmodule.c -lws2_32 + _stat _stat.c # stat.h interface + time -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal timemodule.c # -lm # time operations and variables + _thread -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal _threadmodule.c # low-level threading interface +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0057-build-build-winconsoleio-and-_testconsole.patch b/mingw-w64-python3.10/0057-build-build-winconsoleio-and-_testconsole.patch new file mode 100644 index 0000000000..0baf522698 --- /dev/null +++ b/mingw-w64-python3.10/0057-build-build-winconsoleio-and-_testconsole.patch @@ -0,0 +1,45 @@ +From f6c2060b4af14ff8245c513afe8952568759e04a Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Thu, 17 Jun 2021 18:52:11 +0530 +Subject: [PATCH 057/N] build: build winconsoleio and _testconsole +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + Modules/Setup | 2 +- + setup.py | 3 +++ + 2 files changed, 4 insertions(+), 1 deletion(-) + +diff --git a/Modules/Setup b/Modules/Setup +index ecd64fe..3097db6 100644 +--- a/Modules/Setup ++++ b/Modules/Setup +@@ -120,7 +120,7 @@ _thread -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal _threadmodule.c # l + _locale -DPy_BUILD_CORE_BUILTIN _localemodule.c # -lintl + + # Standard I/O baseline +-_io -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal -I$(srcdir)/Modules/_io _io/_iomodule.c _io/iobase.c _io/fileio.c _io/bytesio.c _io/bufferedio.c _io/textio.c _io/stringio.c ++_io -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal -I$(srcdir)/Modules/_io _io/_iomodule.c _io/iobase.c _io/fileio.c _io/bytesio.c _io/bufferedio.c _io/textio.c _io/stringio.c _io/winconsoleio.c + + # faulthandler module + faulthandler faulthandler.c +diff --git a/setup.py b/setup.py +index bb6e208..2e504ce 100644 +--- a/setup.py ++++ b/setup.py +@@ -1080,6 +1080,9 @@ class PyBuildExt(build_ext): + ['_xxtestfuzz/_xxtestfuzz.c', + '_xxtestfuzz/fuzzer.c'])) + ++ if MS_WINDOWS: ++ self.add(Extension('_testconsole', ['../PC/_testconsole.c'])) ++ + def detect_readline_curses(self): + # readline + readline_termcap_library = "" +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0058-expose-sem_unlink.patch b/mingw-w64-python3.10/0058-expose-sem_unlink.patch new file mode 100644 index 0000000000..9fff133a45 --- /dev/null +++ b/mingw-w64-python3.10/0058-expose-sem_unlink.patch @@ -0,0 +1,30 @@ +From c3feeee17a1f03ed410680c443fcd6d538779a5b Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Thu, 17 Jun 2021 18:52:12 +0530 +Subject: [PATCH 058/N] expose sem_unlink +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + Modules/_multiprocessing/multiprocessing.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Modules/_multiprocessing/multiprocessing.c b/Modules/_multiprocessing/multiprocessing.c +index bec2351..72a34d0 100644 +--- a/Modules/_multiprocessing/multiprocessing.c ++++ b/Modules/_multiprocessing/multiprocessing.c +@@ -172,7 +172,7 @@ static PyMethodDef module_methods[] = { + _MULTIPROCESSING_RECV_METHODDEF + _MULTIPROCESSING_SEND_METHODDEF + #endif +-#if !defined(POSIX_SEMAPHORES_NOT_ENABLED) && !defined(__ANDROID__) ++#if defined(MS_WINDOWS) || (!defined(POSIX_SEMAPHORES_NOT_ENABLED) && !defined(__ANDROID__)) + _MULTIPROCESSING_SEM_UNLINK_METHODDEF + #endif + {NULL} +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0059-cygpty-isatty.patch b/mingw-w64-python3.10/0059-cygpty-isatty.patch new file mode 100644 index 0000000000..fddafe60c5 --- /dev/null +++ b/mingw-w64-python3.10/0059-cygpty-isatty.patch @@ -0,0 +1,462 @@ +From 0f9064a47714284e3c11d8a1edad6cae9fcfa0d0 Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Thu, 17 Jun 2021 18:52:14 +0530 +Subject: [PATCH 059/N] cygpty isatty +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + Include/iscygpty.h | 41 ++++++++++ + Makefile.pre.in | 2 + + Modules/_io/fileio.c | 3 +- + Modules/main.c | 3 +- + Modules/posixmodule.c | 3 +- + Objects/fileobject.c | 3 +- + Python/bltinmodule.c | 5 +- + Python/fileutils.c | 3 +- + Python/frozenmain.c | 3 +- + Python/iscygpty.c | 185 ++++++++++++++++++++++++++++++++++++++++++ + Python/pylifecycle.c | 3 +- + 11 files changed, 245 insertions(+), 9 deletions(-) + create mode 100644 Include/iscygpty.h + create mode 100644 Python/iscygpty.c + +diff --git a/Include/iscygpty.h b/Include/iscygpty.h +new file mode 100644 +index 0000000..82fd0af +--- /dev/null ++++ b/Include/iscygpty.h +@@ -0,0 +1,41 @@ ++/* ++ * iscygpty.h -- part of ptycheck ++ * https://github.com/k-takata/ptycheck ++ * ++ * Copyright (c) 2015-2017 K.Takata ++ * ++ * You can redistribute it and/or modify it under the terms of either ++ * the MIT license (as described below) or the Vim license. ++ * ++ * 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. ++ */ ++ ++#ifndef _ISCYGPTY_H ++#define _ISCYGPTY_H ++ ++#ifdef _WIN32 ++int is_cygpty(int fd); ++int is_cygpty_used(void); ++#else ++#define is_cygpty(fd) 0 ++#define is_cygpty_used() 0 ++#endif ++ ++#endif /* _ISCYGPTY_H */ +diff --git a/Makefile.pre.in b/Makefile.pre.in +index 703f1d4..b698668 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -369,6 +369,7 @@ PYTHON_OBJS= \ + Python/import.o \ + Python/importdl.o \ + Python/initconfig.o \ ++ Python/iscygpty.o \ + Python/marshal.o \ + Python/modsupport.o \ + Python/mysnprintf.o \ +@@ -1073,6 +1074,7 @@ PYTHON_HEADERS= \ + $(srcdir)/Include/import.h \ + $(srcdir)/Include/interpreteridobject.h \ + $(srcdir)/Include/intrcheck.h \ ++ $(srcdir)/Include/iscygpty.h \ + $(srcdir)/Include/iterobject.h \ + $(srcdir)/Include/listobject.h \ + $(srcdir)/Include/longintrepr.h \ +diff --git a/Modules/_io/fileio.c b/Modules/_io/fileio.c +index b9856b3..66932d7 100644 +--- a/Modules/_io/fileio.c ++++ b/Modules/_io/fileio.c +@@ -19,6 +19,7 @@ + #endif + #include /* For offsetof */ + #include "_iomodule.h" ++#include "iscygpty.h" + + /* + * Known likely problems: +@@ -1127,7 +1128,7 @@ _io_FileIO_isatty_impl(fileio *self) + return err_closed(); + Py_BEGIN_ALLOW_THREADS + _Py_BEGIN_SUPPRESS_IPH +- res = isatty(self->fd); ++ res = isatty(self->fd) || is_cygpty(self->fd); + _Py_END_SUPPRESS_IPH + Py_END_ALLOW_THREADS + return PyBool_FromLong(res); +diff --git a/Modules/main.c b/Modules/main.c +index 2684d23..9ee34a3 100644 +--- a/Modules/main.c ++++ b/Modules/main.c +@@ -6,6 +6,7 @@ + #include "pycore_pathconfig.h" // _PyPathConfig_ComputeSysPath0() + #include "pycore_pylifecycle.h" // _Py_PreInitializeFromPyArgv() + #include "pycore_pystate.h" // _PyInterpreterState_GET() ++#include "iscygpty.h" + + /* Includes for exit_sigint() */ + #include // perror() +@@ -91,7 +92,7 @@ static inline int config_run_code(const PyConfig *config) + static int + stdin_is_interactive(const PyConfig *config) + { +- return (isatty(fileno(stdin)) || config->interactive); ++ return (isatty(fileno(stdin)) || config->interactive || is_cygpty(fileno(stdin))); + } + + +diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c +index 14b60f0..7e9c1c6 100644 +--- a/Modules/posixmodule.c ++++ b/Modules/posixmodule.c +@@ -42,6 +42,7 @@ + #ifdef __ANDROID__ + # undef HAVE_FACCESSAT + #endif ++#include "iscygpty.h" + + #include /* needed for ctermid() */ + +@@ -10086,7 +10087,7 @@ os_isatty_impl(PyObject *module, int fd) + { + int return_value; + _Py_BEGIN_SUPPRESS_IPH +- return_value = isatty(fd); ++ return_value = isatty(fd) || is_cygpty(fd); + _Py_END_SUPPRESS_IPH + return return_value; + } +diff --git a/Objects/fileobject.c b/Objects/fileobject.c +index 5a2816f..4fdb3c6 100644 +--- a/Objects/fileobject.c ++++ b/Objects/fileobject.c +@@ -2,6 +2,7 @@ + + #define PY_SSIZE_T_CLEAN + #include "Python.h" ++#include "iscygpty.h" + #include "pycore_runtime.h" // _PyRuntime + + #if defined(HAVE_GETC_UNLOCKED) && !defined(_Py_MEMORY_SANITIZER) +@@ -423,7 +424,7 @@ stdprinter_isatty(PyStdPrinter_Object *self, PyObject *Py_UNUSED(ignored)) + } + + Py_BEGIN_ALLOW_THREADS +- res = isatty(self->fd); ++ res = isatty(self->fd) || is_cygpty(self->fd); + Py_END_ALLOW_THREADS + + return PyBool_FromLong(res); +diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c +index b0162e5..af694f3 100644 +--- a/Python/bltinmodule.c ++++ b/Python/bltinmodule.c +@@ -1,6 +1,7 @@ + /* Built-in functions */ + + #include "Python.h" ++#include "iscygpty.h" + #include + #include "pycore_ast.h" // _PyAST_Validate() + #include "pycore_compile.h" // _PyAST_Compile() +@@ -2098,7 +2099,7 @@ builtin_input_impl(PyObject *module, PyObject *prompt) + Py_DECREF(tmp); + if (fd < 0 && PyErr_Occurred()) + return NULL; +- tty = fd == fileno(stdin) && isatty(fd); ++ tty = fd == fileno(stdin) && (isatty(fd) || is_cygpty(fd)); + } + if (tty) { + tmp = _PyObject_CallMethodIdNoArgs(fout, &PyId_fileno); +@@ -2111,7 +2112,7 @@ builtin_input_impl(PyObject *module, PyObject *prompt) + Py_DECREF(tmp); + if (fd < 0 && PyErr_Occurred()) + return NULL; +- tty = fd == fileno(stdout) && isatty(fd); ++ tty = fd == fileno(stdout) && (isatty(fd) || is_cygpty(fd)); + } + } + +diff --git a/Python/fileutils.c b/Python/fileutils.c +index 66f748d..8ea5f87 100644 +--- a/Python/fileutils.c ++++ b/Python/fileutils.c +@@ -1,4 +1,5 @@ + #include "Python.h" ++#include "iscygpty.h" + #include "pycore_fileutils.h" // fileutils definitions + #include "pycore_runtime.h" // _PyRuntime + #include "osdefs.h" // SEP +@@ -68,7 +69,7 @@ _Py_device_encoding(int fd) + { + int valid; + _Py_BEGIN_SUPPRESS_IPH +- valid = isatty(fd); ++ valid = isatty(fd) || is_cygpty(fd); + _Py_END_SUPPRESS_IPH + if (!valid) + Py_RETURN_NONE; +diff --git a/Python/frozenmain.c b/Python/frozenmain.c +index dd04d60..6607762 100644 +--- a/Python/frozenmain.c ++++ b/Python/frozenmain.c +@@ -4,6 +4,7 @@ + #include "Python.h" + #include "pycore_runtime.h" // _PyRuntime_Initialize() + #include ++#include "iscygpty.h" + + #ifdef MS_WINDOWS + extern void PyWinFreeze_ExeInit(void); +@@ -107,7 +108,7 @@ Py_FrozenMain(int argc, char **argv) + else + sts = 0; + +- if (inspect && isatty((int)fileno(stdin))) ++ if (inspect && (isatty((int)fileno(stdin)) || is_cygpty((int)fileno(stdin)))) + sts = PyRun_AnyFile(stdin, "") != 0; + + #ifdef MS_WINDOWS +diff --git a/Python/iscygpty.c b/Python/iscygpty.c +new file mode 100644 +index 0000000..722f88f +--- /dev/null ++++ b/Python/iscygpty.c +@@ -0,0 +1,185 @@ ++/* ++ * iscygpty.c -- part of ptycheck ++ * https://github.com/k-takata/ptycheck ++ * ++ * Copyright (c) 2015-2017 K.Takata ++ * ++ * You can redistribute it and/or modify it under the terms of either ++ * the MIT license (as described below) or the Vim license. ++ * ++ * 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. ++ */ ++ ++#ifdef _WIN32 ++ ++#include ++#include ++#include ++#include ++ ++#ifdef USE_FILEEXTD ++/* VC 7.1 or earlier doesn't support SAL. */ ++# if !defined(_MSC_VER) || (_MSC_VER < 1400) ++# define __out ++# define __in ++# define __in_opt ++# endif ++/* Win32 FileID API Library: ++ * http://www.microsoft.com/en-us/download/details.aspx?id=22599 ++ * Needed for WinXP. */ ++# include ++#else /* USE_FILEEXTD */ ++/* VC 8 or earlier. */ ++# if defined(_MSC_VER) && (_MSC_VER < 1500) ++# ifdef ENABLE_STUB_IMPL ++# define STUB_IMPL ++# else ++# error "Win32 FileID API Library is required for VC2005 or earlier." ++# endif ++# endif ++#endif /* USE_FILEEXTD */ ++ ++ ++#include "iscygpty.h" ++ ++//#define USE_DYNFILEID ++#ifdef USE_DYNFILEID ++typedef BOOL (WINAPI *pfnGetFileInformationByHandleEx)( ++ HANDLE hFile, ++ FILE_INFO_BY_HANDLE_CLASS FileInformationClass, ++ LPVOID lpFileInformation, ++ DWORD dwBufferSize ++); ++static pfnGetFileInformationByHandleEx pGetFileInformationByHandleEx = NULL; ++ ++# ifndef USE_FILEEXTD ++static BOOL WINAPI stub_GetFileInformationByHandleEx( ++ HANDLE hFile, ++ FILE_INFO_BY_HANDLE_CLASS FileInformationClass, ++ LPVOID lpFileInformation, ++ DWORD dwBufferSize ++ ) ++{ ++ return FALSE; ++} ++# endif ++ ++static void setup_fileid_api(void) ++{ ++ if (pGetFileInformationByHandleEx != NULL) { ++ return; ++ } ++ pGetFileInformationByHandleEx = (pfnGetFileInformationByHandleEx) ++ GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")), ++ "GetFileInformationByHandleEx"); ++ if (pGetFileInformationByHandleEx == NULL) { ++# ifdef USE_FILEEXTD ++ pGetFileInformationByHandleEx = GetFileInformationByHandleEx; ++# else ++ pGetFileInformationByHandleEx = stub_GetFileInformationByHandleEx; ++# endif ++ } ++} ++#else ++# define pGetFileInformationByHandleEx GetFileInformationByHandleEx ++# define setup_fileid_api() ++#endif ++ ++ ++#define is_wprefix(s, prefix) \ ++ (wcsncmp((s), (prefix), sizeof(prefix) / sizeof(WCHAR) - 1) == 0) ++ ++/* Check if the fd is a cygwin/msys's pty. */ ++int is_cygpty(int fd) ++{ ++#ifdef STUB_IMPL ++ return 0; ++#else ++ HANDLE h; ++ int size = sizeof(FILE_NAME_INFO) + sizeof(WCHAR) * (MAX_PATH - 1); ++ FILE_NAME_INFO *nameinfo; ++ WCHAR *p = NULL; ++ ++ setup_fileid_api(); ++ ++ h = (HANDLE) _get_osfhandle(fd); ++ if (h == INVALID_HANDLE_VALUE) { ++ return 0; ++ } ++ /* Cygwin/msys's pty is a pipe. */ ++ if (GetFileType(h) != FILE_TYPE_PIPE) { ++ return 0; ++ } ++ nameinfo = malloc(size + sizeof(WCHAR)); ++ if (nameinfo == NULL) { ++ return 0; ++ } ++ /* Check the name of the pipe: ++ * '\{cygwin,msys}-XXXXXXXXXXXXXXXX-ptyN-{from,to}-master' */ ++ if (pGetFileInformationByHandleEx(h, FileNameInfo, nameinfo, size)) { ++ nameinfo->FileName[nameinfo->FileNameLength / sizeof(WCHAR)] = L'\0'; ++ p = nameinfo->FileName; ++ if (is_wprefix(p, L"\\cygwin-")) { /* Cygwin */ ++ p += 8; ++ } else if (is_wprefix(p, L"\\msys-")) { /* MSYS and MSYS2 */ ++ p += 6; ++ } else { ++ p = NULL; ++ } ++ if (p != NULL) { ++ while (*p && isxdigit(*p)) /* Skip 16-digit hexadecimal. */ ++ ++p; ++ if (is_wprefix(p, L"-pty")) { ++ p += 4; ++ } else { ++ p = NULL; ++ } ++ } ++ if (p != NULL) { ++ while (*p && isdigit(*p)) /* Skip pty number. */ ++ ++p; ++ if (is_wprefix(p, L"-from-master")) { ++ //p += 12; ++ } else if (is_wprefix(p, L"-to-master")) { ++ //p += 10; ++ } else { ++ p = NULL; ++ } ++ } ++ } ++ free(nameinfo); ++ return (p != NULL); ++#endif /* STUB_IMPL */ ++} ++ ++/* Check if at least one cygwin/msys pty is used. */ ++int is_cygpty_used(void) ++{ ++ int fd, ret = 0; ++ ++ for (fd = 0; fd < 3; fd++) { ++ ret |= is_cygpty(fd); ++ } ++ return ret; ++} ++ ++#endif /* _WIN32 */ ++ ++/* vim: set ts=4 sw=4: */ +diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c +index eeaf20b..916e6d7 100644 +--- a/Python/pylifecycle.c ++++ b/Python/pylifecycle.c +@@ -15,6 +15,7 @@ + #include "pycore_sysmodule.h" // _PySys_ClearAuditHooks() + #include "pycore_traceback.h" // _Py_DumpTracebackThreads() + ++#include "iscygpty.h" + #include // setlocale() + + #if defined(__APPLE__) +@@ -2872,7 +2873,7 @@ Py_Exit(int sts) + int + Py_FdIsInteractive(FILE *fp, const char *filename) + { +- if (isatty((int)fileno(fp))) ++ if (isatty((int)fileno(fp)) || is_cygpty((int)fileno(fp))) + return 1; + if (!Py_InteractiveFlag) + return 0; +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0060-disable-broken-gdbm-module.patch b/mingw-w64-python3.10/0060-disable-broken-gdbm-module.patch new file mode 100644 index 0000000000..c50426379b --- /dev/null +++ b/mingw-w64-python3.10/0060-disable-broken-gdbm-module.patch @@ -0,0 +1,30 @@ +From 0566135dcfafb938689d02fc7dfaf91b604f3c93 Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Thu, 17 Jun 2021 18:52:15 +0530 +Subject: [PATCH 060/N] disable broken gdbm module +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + setup.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/setup.py b/setup.py +index 2e504ce..6437ac9 100644 +--- a/setup.py ++++ b/setup.py +@@ -1490,7 +1490,7 @@ class PyBuildExt(build_ext): + if dbm_args: + dbm_order = [arg.split('=')[-1] for arg in dbm_args][-1].split(":") + else: +- dbm_order = "ndbm:gdbm:bdb".split(":") ++ dbm_order = [] + dbmext = None + for cand in dbm_order: + if cand == "ndbm": +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0061-build-link-win-resource-files-and-build-pythonw.patch b/mingw-w64-python3.10/0061-build-link-win-resource-files-and-build-pythonw.patch new file mode 100644 index 0000000000..66ef59543f --- /dev/null +++ b/mingw-w64-python3.10/0061-build-link-win-resource-files-and-build-pythonw.patch @@ -0,0 +1,148 @@ +From 8bed36a023a628d5158a3a661e2b06c8a4ef04b7 Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Thu, 17 Jun 2021 18:52:16 +0530 +Subject: [PATCH 061/N] build: link win resource files and build pythonw +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + Makefile.pre.in | 26 +++++++++++++++++++++----- + configure.ac | 26 ++++++++++++++++++++++++++ + 2 files changed, 47 insertions(+), 5 deletions(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index b698668..4865764 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -38,6 +38,7 @@ CXX= @CXX@ + MAINCC= @MAINCC@ + LINKCC= @LINKCC@ + AR= @AR@ ++WINDRES= @WINDRES@ + READELF= @READELF@ + SOABI= @SOABI@ + LDVERSION= @LDVERSION@ +@@ -119,6 +120,7 @@ PY_CORE_CFLAGS= $(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE + PY_CORE_LDFLAGS=$(PY_LDFLAGS) $(PY_LDFLAGS_NODIST) + # Strict or non-strict aliasing flags used to compile dtoa.c, see above + CFLAGS_ALIASING=@CFLAGS_ALIASING@ ++RCFLAGS=@RCFLAGS@ + + + # Machine-dependent subdirectories +@@ -266,6 +268,7 @@ LIBOBJS= @LIBOBJS@ + + PYTHON= python$(EXE) + BUILDPYTHON= python$(BUILDEXE) ++BUILDPYTHONW= pythonw$(BUILDEXE) + + PYTHON_FOR_REGEN?=@PYTHON_FOR_REGEN@ + UPDATE_FILE=$(PYTHON_FOR_REGEN) $(srcdir)/Tools/scripts/update_file.py +@@ -480,7 +483,7 @@ DTRACE_DEPS = \ + + # Default target + all: @DEF_MAKE_ALL_RULE@ +-build_all: check-clean-src $(BUILDPYTHON) oldsharedmods sharedmods gdbhooks \ ++build_all: check-clean-src $(BUILDPYTHON) $(BUILDPYTHONW) oldsharedmods sharedmods gdbhooks \ + Programs/_testembed python-config + + # Check that the source is clean when building out of source. +@@ -593,9 +596,21 @@ coverage-report: regen-token regen-importlib + clinic: check-clean-src $(srcdir)/Modules/_blake2/blake2s_impl.c + $(PYTHON_FOR_REGEN) $(srcdir)/Tools/clinic/clinic.py --make --srcdir $(srcdir) + ++python_exe.o: $(srcdir)/PC/python_exe.rc ++ $(WINDRES) $(RCFLAGS) -I$(srcdir)/Include -I$(srcdir)/PC -I. $(srcdir)/PC/python_exe.rc $@ ++ ++pythonw_exe.o: $(srcdir)/PC/pythonw_exe.rc ++ $(WINDRES) $(RCFLAGS) -I$(srcdir)/Include -I$(srcdir)/PC -I. $(srcdir)/PC/pythonw_exe.rc $@ ++ ++python_nt.o: $(srcdir)/PC/python_nt.rc ++ $(WINDRES) $(RCFLAGS) -DORIGINAL_FILENAME=\\\"$(DLLLIBRARY)\\\" -I$(srcdir)/Include -I$(srcdir)/PC -I. $(srcdir)/PC/python_nt.rc $@ ++ ++$(BUILDPYTHONW): Programs/python.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY) pythonw_exe.o ++ $(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -municode -mwindows -o $@ Programs/python.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) pythonw_exe.o ++ + # Build the interpreter +-$(BUILDPYTHON): Programs/python.o $(LIBRARY_DEPS) +- $(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/python.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) ++$(BUILDPYTHON): Programs/python.o $(LIBRARY_DEPS) python_exe.o ++ $(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -municode -o $@ Programs/python.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) python_exe.o + + platform: $(BUILDPYTHON) pybuilddir.txt + $(RUNSHARED) $(PYTHON_FOR_BUILD) -c 'import sys ; from sysconfig import get_platform ; print("%s-%d.%d" % (get_platform(), *sys.version_info[:2]))' >platform +@@ -705,10 +720,10 @@ $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK): \ + + # This rule builds the Cygwin Python DLL and import library if configured + # for a shared core library; otherwise, this rule is a noop. +-$(DLLLIBRARY) libpython$(LDVERSION).dll.a: $(LIBRARY_OBJS) ++$(DLLLIBRARY) libpython$(LDVERSION).dll.a: $(LIBRARY_OBJS) python_nt.o + if test -n "$(DLLLIBRARY)"; then \ + $(LDSHARED) -Wl,--out-implib=$@ -o $(DLLLIBRARY) $^ \ +- $(LIBS) $(MODLIBS) $(SYSLIBS); \ ++ $(LIBS) $(MODLIBS) $(SYSLIBS) python_nt.o; \ + else true; \ + fi + +@@ -1341,6 +1356,7 @@ altbininstall: $(BUILDPYTHON) @FRAMEWORKPYTHONW@ + done + if test "$(PYTHONFRAMEWORKDIR)" = "no-framework" ; then \ + $(INSTALL_PROGRAM) $(BUILDPYTHON) $(DESTDIR)$(BINDIR)/python$(LDVERSION)$(EXE); \ ++ $(INSTALL_PROGRAM) $(BUILDPYTHONW) $(DESTDIR)$(BINDIR)/python3w$(EXE); \ + else \ + $(INSTALL_PROGRAM) $(STRIPFLAG) Mac/pythonw $(DESTDIR)$(BINDIR)/python$(LDVERSION)$(EXE); \ + fi +diff --git a/configure.ac b/configure.ac +index 4f014f9..7845c89 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1330,6 +1330,9 @@ fi + + AC_MSG_RESULT($LDLIBRARY) + ++AC_SUBST(WINDRES) ++AC_CHECK_TOOL(WINDRES, windres) ++ + AC_SUBST(AR) + AC_CHECK_TOOLS(AR, ar aal, ar) + +@@ -5911,10 +5914,33 @@ AC_MSG_RESULT(done) + case $host in + *-*-mingw*) + LIBS="$LIBS -lversion -lshlwapi -lpathcch" ++ AC_PROG_AWK ++ if test "$AWK" = "gawk"; then ++ awk_extra_flag="--non-decimal-data" ++ fi ++ AC_MSG_CHECKING([FIELD3]) ++ FIELD3=$($AWK $awk_extra_flag '\ ++ /^#define PY_RELEASE_LEVEL_/ {levels[$2]=$3} \ ++ /^#define PY_MICRO_VERSION[[:space:]]+/ {micro=$3} \ ++ /^#define PY_RELEASE_LEVEL[[:space:]]+/ {level=levels[$3]} \ ++ /^#define PY_RELEASE_SERIAL[[:space:]]+/ {serial=$3} \ ++ END {print micro * 1000 + level * 10 + serial}' \ ++ $srcdir/Include/patchlevel.h ++ ) ++ ++ AC_MSG_RESULT([${FIELD3}]) ++ RCFLAGS="$RCFLAGS -DFIELD3=$FIELD3 -O COFF" ++ ++ case $host in ++ i686*) RCFLAGS="$RCFLAGS --target=pe-i386" ;; ++ x86_64*) RCFLAGS="$RCFLAGS --target=pe-x86-64" ;; ++ *) ;; ++ esac + ;; + *) + ;; + esac ++AC_SUBST(RCFLAGS) + + # Availability of -O2: + AC_MSG_CHECKING(for -O2) +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0062-disable-readline.patch b/mingw-w64-python3.10/0062-disable-readline.patch new file mode 100644 index 0000000000..a397bc1bc9 --- /dev/null +++ b/mingw-w64-python3.10/0062-disable-readline.patch @@ -0,0 +1,30 @@ +From ddd3b00fd408b42269b1163caf8213eee791ba12 Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Thu, 17 Jun 2021 18:52:17 +0530 +Subject: [PATCH 062/N] disable readline +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + setup.py | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/setup.py b/setup.py +index 6437ac9..f67a8a2 100644 +--- a/setup.py ++++ b/setup.py +@@ -1151,6 +1151,8 @@ class PyBuildExt(build_ext): + # readline package + if find_file('readline/rlconf.h', self.inc_dirs, []) is None: + do_readline = False ++ if MS_WINDOWS: ++ do_readline = False + if do_readline: + if MACOS and os_release < 9: + # In every directory on the search path search for a dynamic +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0063-fix-isselectable.patch b/mingw-w64-python3.10/0063-fix-isselectable.patch new file mode 100644 index 0000000000..c553fea35a --- /dev/null +++ b/mingw-w64-python3.10/0063-fix-isselectable.patch @@ -0,0 +1,30 @@ +From ec3c1f7dc012752de8261849395acf157d629103 Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Thu, 17 Jun 2021 18:52:18 +0530 +Subject: [PATCH 063/N] fix isselectable +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + Include/fileobject.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Include/fileobject.h b/Include/fileobject.h +index 6ec2994..a80f195 100644 +--- a/Include/fileobject.h ++++ b/Include/fileobject.h +@@ -30,7 +30,7 @@ PyAPI_DATA(int) Py_UTF8Mode; + #endif + + /* A routine to check if a file descriptor can be select()-ed. */ +-#ifdef _MSC_VER ++#ifdef MS_WINDOWS + /* On Windows, any socket fd can be select()-ed, no matter how high */ + #define _PyIsSelectable_fd(FD) (1) + #else +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0064-use-_wcsnicmp-instead-wcsncasecmp.patch b/mingw-w64-python3.10/0064-use-_wcsnicmp-instead-wcsncasecmp.patch new file mode 100644 index 0000000000..0aac75dd4a --- /dev/null +++ b/mingw-w64-python3.10/0064-use-_wcsnicmp-instead-wcsncasecmp.patch @@ -0,0 +1,27 @@ +From e51bd20295c0ef8f3fb22455e6b217de061e2fdd Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:52:19 +0530 +Subject: [PATCH 064/N] use _wcsnicmp instead wcsncasecmp + +Signed-off-by: Naveen M K +--- + Modules/getpath.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Modules/getpath.c b/Modules/getpath.c +index 161c6f7..fd1594a 100644 +--- a/Modules/getpath.c ++++ b/Modules/getpath.c +@@ -427,7 +427,7 @@ add_exe_suffix(wchar_t **progpath_p) + /* Check for already have an executable suffix */ + size_t n = wcslen(progpath); + size_t s = wcslen(EXE_SUFFIX); +- if (wcsncasecmp(EXE_SUFFIX, progpath + n - s, s) == 0) { ++ if (_wcsnicmp(EXE_SUFFIX, progpath + n - s, s) == 0) { + return _PyStatus_OK(); + } + +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0065-_xxsubinterpretersmodule.patch b/mingw-w64-python3.10/0065-_xxsubinterpretersmodule.patch new file mode 100644 index 0000000000..916d9729e6 --- /dev/null +++ b/mingw-w64-python3.10/0065-_xxsubinterpretersmodule.patch @@ -0,0 +1,27 @@ +From d19ed6053bae623b3e8533cc87d4761ee18f89c4 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:52:20 +0530 +Subject: [PATCH 065/N] _xxsubinterpretersmodule + +Signed-off-by: Naveen M K +--- + Modules/_xxsubinterpretersmodule.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Modules/_xxsubinterpretersmodule.c b/Modules/_xxsubinterpretersmodule.c +index 9290255..9d2952b 100644 +--- a/Modules/_xxsubinterpretersmodule.c ++++ b/Modules/_xxsubinterpretersmodule.c +@@ -1761,7 +1761,7 @@ PyDoc_STRVAR(channelid_doc, + "A channel ID identifies a channel and may be used as an int."); + + static PyTypeObject ChannelIDtype = { +- PyVarObject_HEAD_INIT(&PyType_Type, 0) ++ PyVarObject_HEAD_INIT(NULL, 0) + "_xxsubinterpreters.ChannelID", /* tp_name */ + sizeof(channelid), /* tp_basicsize */ + 0, /* tp_itemsize */ +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0066-sqlite3-module-defines.patch b/mingw-w64-python3.10/0066-sqlite3-module-defines.patch new file mode 100644 index 0000000000..7e6704652e --- /dev/null +++ b/mingw-w64-python3.10/0066-sqlite3-module-defines.patch @@ -0,0 +1,25 @@ +From de08a7d3fbc47ef0caa3bd60c0dbbee4af1a06ca Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Thu, 17 Jun 2021 18:52:21 +0530 +Subject: [PATCH 066/N] sqlite3 module defines + +Signed-off-by: Naveen M K +--- + setup.py | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/setup.py b/setup.py +index f67a8a2..1bb51a5 100644 +--- a/setup.py ++++ b/setup.py +@@ -1642,6 +1642,7 @@ class PyBuildExt(build_ext): + '_sqlite/statement.c', + '_sqlite/util.c', ] + sqlite_defines = [] ++ sqlite_defines.append(('MODULE_NAME', '"sqlite3"')) + + # Enable support for loadable extensions in the sqlite3 module + # if --enable-loadable-sqlite-extensions configure option is used. +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0067-configure.ac-fix-inet_pton-check.patch b/mingw-w64-python3.10/0067-configure.ac-fix-inet_pton-check.patch new file mode 100644 index 0000000000..3f8143233d --- /dev/null +++ b/mingw-w64-python3.10/0067-configure.ac-fix-inet_pton-check.patch @@ -0,0 +1,36 @@ +From 38c03d44eea27d9da8295047f426b50979f85fb9 Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Thu, 17 Jun 2021 18:52:23 +0530 +Subject: [PATCH 067/N] configure.ac: fix inet_pton check +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + configure.ac | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 7845c89..07d5ce2 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -4272,10 +4272,14 @@ AC_LINK_IFELSE([AC_LANG_PROGRAM([[ + + AC_MSG_CHECKING(for inet_pton) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ ++#ifdef _WIN32 ++#include ++#else + #include + #include + #include + #include ++#endif + ]], [[void* p = inet_pton]])], + [AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.) + AC_MSG_RESULT(yes)], +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0068-set-venv-activate-path-unix.patch b/mingw-w64-python3.10/0068-set-venv-activate-path-unix.patch new file mode 100644 index 0000000000..57a8174a13 --- /dev/null +++ b/mingw-w64-python3.10/0068-set-venv-activate-path-unix.patch @@ -0,0 +1,30 @@ +From a41578b844064f7bb5e19c00056f2866eeaa205c Mon Sep 17 00:00:00 2001 +From: Dan Yeaw +Date: Thu, 17 Jun 2021 18:52:25 +0530 +Subject: [PATCH 068/N] set venv activate path unix +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + Lib/venv/scripts/common/activate | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Lib/venv/scripts/common/activate b/Lib/venv/scripts/common/activate +index 6fbc2b8..9c3d58d 100644 +--- a/Lib/venv/scripts/common/activate ++++ b/Lib/venv/scripts/common/activate +@@ -38,7 +38,7 @@ deactivate () { + # unset irrelevant variables + deactivate nondestructive + +-VIRTUAL_ENV="__VENV_DIR__" ++VIRTUAL_ENV=$(cygpath "__VENV_DIR__") + export VIRTUAL_ENV + + _OLD_VIRTUAL_PATH="$PATH" +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0069-venv-creation-fixes.patch b/mingw-w64-python3.10/0069-venv-creation-fixes.patch new file mode 100644 index 0000000000..69e617d359 --- /dev/null +++ b/mingw-w64-python3.10/0069-venv-creation-fixes.patch @@ -0,0 +1,72 @@ +From 244e5e5b29a82ff948cb27a8b048f30217befcb9 Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Thu, 17 Jun 2021 18:52:26 +0530 +Subject: [PATCH 069/N] venv creation fixes + +Signed-off-by: Naveen M K +--- + Lib/venv/__init__.py | 19 ++++++++++++++----- + 1 file changed, 14 insertions(+), 5 deletions(-) + +diff --git a/Lib/venv/__init__.py b/Lib/venv/__init__.py +index 8009deb..b471006 100644 +--- a/Lib/venv/__init__.py ++++ b/Lib/venv/__init__.py +@@ -11,6 +11,7 @@ import subprocess + import sys + import sysconfig + import types ++from sysconfig import _POSIX_BUILD + + + CORE_VENV_DEPS = ('pip', 'setuptools') +@@ -119,7 +120,7 @@ class EnvBuilder: + context.executable = executable + context.python_dir = dirname + context.python_exe = exename +- if sys.platform == 'win32': ++ if sys.platform == 'win32' and not _POSIX_BUILD: + binname = 'Scripts' + incpath = 'Include' + libpath = os.path.join(env_dir, 'Lib', 'site-packages') +@@ -252,7 +253,7 @@ class EnvBuilder: + if not os.path.islink(path): + os.chmod(path, 0o755) + else: +- if self.symlinks: ++ if self.symlinks and not _POSIX_BUILD: + # For symlinking, we need a complete copy of the root directory + # If symlinks fail, you'll get unnecessary copies of files, but + # we assume that if you've opted into symlinks on Windows then +@@ -275,7 +276,13 @@ class EnvBuilder: + if os.path.lexists(src): + copier(src, os.path.join(binpath, suffix)) + +- if sysconfig.is_python_build(True): ++ if _POSIX_BUILD: ++ # copy from python/pythonw so the venvlauncher magic in symlink_or_copy triggers ++ copier(os.path.join(dirname, 'python.exe'), os.path.join(binpath, 'python3.exe')) ++ copier(os.path.join(dirname, 'python.exe'), os.path.join(binpath, 'python%d.%d.exe' % sys.version_info[:2])) ++ copier(os.path.join(dirname, 'pythonw.exe'), os.path.join(binpath, 'python3w.exe')) ++ ++ if sysconfig.is_python_build(True) and not _POSIX_BUILD: + # copy init.tcl + for root, dirs, files in os.walk(context.python_dir): + if 'init.tcl' in files: +@@ -293,9 +300,11 @@ class EnvBuilder: + # We run ensurepip in isolated mode to avoid side effects from + # environment vars, the current directory and anything else + # intended for the global Python environment ++ env = os.environ.copy() ++ env.pop("MSYSTEM", None) + cmd = [context.env_exe, '-Im', 'ensurepip', '--upgrade', +- '--default-pip'] +- subprocess.check_output(cmd, stderr=subprocess.STDOUT) ++ '--default-pip'] ++ subprocess.check_call(cmd, stderr=subprocess.STDOUT, env=env) + + def setup_scripts(self, context): + """ +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0070-pass-gen-profile-ldflags.patch b/mingw-w64-python3.10/0070-pass-gen-profile-ldflags.patch new file mode 100644 index 0000000000..51b6a463be --- /dev/null +++ b/mingw-w64-python3.10/0070-pass-gen-profile-ldflags.patch @@ -0,0 +1,30 @@ +From af723e4d8e430e2444eac15569fc5bbba979be39 Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Thu, 17 Jun 2021 18:52:27 +0530 +Subject: [PATCH 070/N] pass gen profile ldflags +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + Makefile.pre.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index 4865764..fb3c807 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -723,7 +723,7 @@ $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK): \ + $(DLLLIBRARY) libpython$(LDVERSION).dll.a: $(LIBRARY_OBJS) python_nt.o + if test -n "$(DLLLIBRARY)"; then \ + $(LDSHARED) -Wl,--out-implib=$@ -o $(DLLLIBRARY) $^ \ +- $(LIBS) $(MODLIBS) $(SYSLIBS) python_nt.o; \ ++ $(LIBS) $(LDFLAGS_NODIST) $(MODLIBS) $(SYSLIBS) python_nt.o; \ + else true; \ + fi + +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0071-pkg-config-windows-must-link-ext-with-python-lib.patch b/mingw-w64-python3.10/0071-pkg-config-windows-must-link-ext-with-python-lib.patch new file mode 100644 index 0000000000..b90cbea636 --- /dev/null +++ b/mingw-w64-python3.10/0071-pkg-config-windows-must-link-ext-with-python-lib.patch @@ -0,0 +1,39 @@ +From 071ad00d1ecd1fe2543dc53bb104c62fe4d8ea9c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:52:29 +0530 +Subject: [PATCH 071/N] pkg config windows must link ext with python lib + +Signed-off-by: Naveen M K +--- + Misc/python.pc.in | 2 +- + configure.ac | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Misc/python.pc.in b/Misc/python.pc.in +index 87e04de..3900190 100644 +--- a/Misc/python.pc.in ++++ b/Misc/python.pc.in +@@ -9,5 +9,5 @@ Description: Build a C extension for Python + Requires: + Version: @VERSION@ + Libs.private: @LIBS@ +-Libs: ++Libs: -L${libdir} -lpython@VERSION@@ABIFLAGS@ + Cflags: -I${includedir}/python@VERSION@@ABIFLAGS@ +diff --git a/configure.ac b/configure.ac +index 07d5ce2..ecf88ff 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -5148,7 +5148,7 @@ AC_MSG_RESULT($LDVERSION) + + # On Android and Cygwin the shared libraries must be linked with libpython. + AC_SUBST(LIBPYTHON) +-if test -n "$ANDROID_API_LEVEL" -o "$MACHDEP" = "cygwin"; then ++if test -n "$ANDROID_API_LEVEL" -o "$MACHDEP" = "cygwin" -o "$MACHDEP" = "win32"; then + LIBPYTHON="-lpython${VERSION}${ABIFLAGS}" + else + LIBPYTHON='' +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0072-importlib-bootstrap-path-sep.patch b/mingw-w64-python3.10/0072-importlib-bootstrap-path-sep.patch new file mode 100644 index 0000000000..241eb4ae8b --- /dev/null +++ b/mingw-w64-python3.10/0072-importlib-bootstrap-path-sep.patch @@ -0,0 +1,33 @@ +From 088ba0b2b0049ff649495f3389f3661794570d4b Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Thu, 17 Jun 2021 18:52:30 +0530 +Subject: [PATCH 072/N] importlib bootstrap path sep +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Co-authored-by: Naveen M K +Signed-off-by: Naveen M K +--- + Lib/importlib/_bootstrap_external.py | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/Lib/importlib/_bootstrap_external.py b/Lib/importlib/_bootstrap_external.py +index 9a73c7b..fc30499 100644 +--- a/Lib/importlib/_bootstrap_external.py ++++ b/Lib/importlib/_bootstrap_external.py +@@ -42,6 +42,10 @@ if _MS_WINDOWS: + path_separators = ['\\', '/'] + else: + path_separators = ['/'] ++ ++if 'MSYSTEM' in _os.environ: ++ path_separators = path_separators[::-1] ++ + # Assumption made in _path_join() + assert all(len(sep) == 1 for sep in path_separators) + path_sep = path_separators[0] +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0073-pathlib-path-sep.patch b/mingw-w64-python3.10/0073-pathlib-path-sep.patch new file mode 100644 index 0000000000..f600e4eb67 --- /dev/null +++ b/mingw-w64-python3.10/0073-pathlib-path-sep.patch @@ -0,0 +1,26 @@ +From 8801fd78e593cc54d666ef9edd307361ac9b5332 Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Thu, 17 Jun 2021 18:52:31 +0530 +Subject: [PATCH 073/N] pathlib path sep + +Signed-off-by: Naveen M K +--- + Lib/pathlib.py | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/Lib/pathlib.py b/Lib/pathlib.py +index 621fba0..c930e1d 100644 +--- a/Lib/pathlib.py ++++ b/Lib/pathlib.py +@@ -115,6 +115,8 @@ class _WindowsFlavour(_Flavour): + + sep = '\\' + altsep = '/' ++ if 'MSYSTEM' in os.environ: ++ sep, altsep = altsep, sep + has_drv = True + pathmod = ntpath + +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0074-warnings-fixes.patch b/mingw-w64-python3.10/0074-warnings-fixes.patch new file mode 100644 index 0000000000..0779fc4f62 --- /dev/null +++ b/mingw-w64-python3.10/0074-warnings-fixes.patch @@ -0,0 +1,132 @@ +From 50c8b0c3e091c2ac9abababfa1d957218e5fbd88 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:52:33 +0530 +Subject: [PATCH 074/N] warnings fixes + +Signed-off-by: Naveen M K +--- + Modules/_winapi.c | 2 +- + Modules/posixmodule.c | 6 +++--- + Modules/socketmodule.h | 2 ++ + PC/python_exe.rc | 2 +- + PC/pythonw_exe.rc | 2 +- + PC/winreg.c | 1 + + Python/thread_nt.h | 3 ++- + 7 files changed, 11 insertions(+), 7 deletions(-) + +diff --git a/Modules/_winapi.c b/Modules/_winapi.c +index e7e8c6a..b09fce7 100644 +--- a/Modules/_winapi.c ++++ b/Modules/_winapi.c +@@ -959,7 +959,7 @@ getattributelist(PyObject *obj, const char *name, AttributeList *attribute_list) + DWORD err; + BOOL result; + PyObject *value; +- Py_ssize_t handle_list_size; ++ Py_ssize_t handle_list_size = 0; + DWORD attribute_count = 0; + SIZE_T attribute_list_size = 0; + +diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c +index 7e9c1c6..65edb10 100644 +--- a/Modules/posixmodule.c ++++ b/Modules/posixmodule.c +@@ -5391,7 +5391,7 @@ os_utime_impl(PyObject *module, path_t *path, PyObject *times, PyObject *ns, + /*[clinic end generated code: output=cfcac69d027b82cf input=2fbd62a2f228f8f4]*/ + { + #ifdef MS_WINDOWS +- HANDLE hFile; ++ HANDLE hFile = 0; + FILETIME atime, mtime; + #else + int result; +@@ -14531,7 +14531,7 @@ os__add_dll_directory_impl(PyObject *module, path_t *path) + loaded. */ + Py_BEGIN_ALLOW_THREADS + if (!(hKernel32 = GetModuleHandleW(L"kernel32")) || +- !(AddDllDirectory = (PAddDllDirectory)GetProcAddress( ++ !(AddDllDirectory = (PAddDllDirectory)(void *)GetProcAddress( + hKernel32, "AddDllDirectory")) || + !(cookie = (*AddDllDirectory)(path->wide))) { + err = GetLastError(); +@@ -14581,7 +14581,7 @@ os__remove_dll_directory_impl(PyObject *module, PyObject *cookie) + loaded. */ + Py_BEGIN_ALLOW_THREADS + if (!(hKernel32 = GetModuleHandleW(L"kernel32")) || +- !(RemoveDllDirectory = (PRemoveDllDirectory)GetProcAddress( ++ !(RemoveDllDirectory = (PRemoveDllDirectory)(void *)GetProcAddress( + hKernel32, "RemoveDllDirectory")) || + !(*RemoveDllDirectory)(cookieValue)) { + err = GetLastError(); +diff --git a/Modules/socketmodule.h b/Modules/socketmodule.h +index e4f375d..bbdd8c0 100644 +--- a/Modules/socketmodule.h ++++ b/Modules/socketmodule.h +@@ -70,8 +70,10 @@ struct SOCKADDR_BTH_REDEF { + */ + # ifdef SIO_GET_MULTICAST_FILTER + # include /* for SIO_RCVALL */ ++#ifndef __MINGW32__ /* resolve by configure */ + # define HAVE_ADDRINFO + # define HAVE_SOCKADDR_STORAGE ++#endif + # define HAVE_GETADDRINFO + # define HAVE_GETNAMEINFO + # define ENABLE_IPV6 +diff --git a/PC/python_exe.rc b/PC/python_exe.rc +index ae0b029..e667ffa 100644 +--- a/PC/python_exe.rc ++++ b/PC/python_exe.rc +@@ -7,7 +7,7 @@ + #include + 1 RT_MANIFEST "python.manifest" + +-1 ICON DISCARDABLE "icons\python.ico" ++1 ICON DISCARDABLE "icons/python.ico" + + + ///////////////////////////////////////////////////////////////////////////// +diff --git a/PC/pythonw_exe.rc b/PC/pythonw_exe.rc +index 88bf359..413d7d1 100644 +--- a/PC/pythonw_exe.rc ++++ b/PC/pythonw_exe.rc +@@ -7,7 +7,7 @@ + #include + 1 RT_MANIFEST "python.manifest" + +-1 ICON DISCARDABLE "icons\pythonw.ico" ++1 ICON DISCARDABLE "icons/pythonw.ico" + + + ///////////////////////////////////////////////////////////////////////////// +diff --git a/PC/winreg.c b/PC/winreg.c +index fbcd2c4..b1cb07e 100644 +--- a/PC/winreg.c ++++ b/PC/winreg.c +@@ -813,6 +813,7 @@ Reg2Py(BYTE *retDataBuf, DWORD retDataSize, DWORD typ) + case REG_BINARY: + /* ALSO handle ALL unknown data types here. Even if we can't + support it natively, we should handle the bits. */ ++ /* fallthrough */ + default: + if (retDataSize == 0) { + Py_INCREF(Py_None); +diff --git a/Python/thread_nt.h b/Python/thread_nt.h +index 0ce5e94..6a6fe7e 100644 +--- a/Python/thread_nt.h ++++ b/Python/thread_nt.h +@@ -349,8 +349,9 @@ PyThread_release_lock(PyThread_type_lock aLock) + { + dprintf(("%lu: PyThread_release_lock(%p) called\n", PyThread_get_thread_ident(),aLock)); + +- if (!(aLock && LeaveNonRecursiveMutex((PNRMUTEX) aLock))) ++ if (!(aLock && LeaveNonRecursiveMutex((PNRMUTEX) aLock))) { + dprintf(("%lu: Could not PyThread_release_lock(%p) error: %ld\n", PyThread_get_thread_ident(), aLock, GetLastError())); ++ } + } + + /* minimum/maximum thread stack sizes supported */ +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0075-fix-build-testinternalcapi.patch b/mingw-w64-python3.10/0075-fix-build-testinternalcapi.patch new file mode 100644 index 0000000000..c4c815efca --- /dev/null +++ b/mingw-w64-python3.10/0075-fix-build-testinternalcapi.patch @@ -0,0 +1,29 @@ +From 111574d55172fda8eed70a8390d2132f830a3a24 Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Thu, 17 Jun 2021 18:52:34 +0530 +Subject: [PATCH 075/N] fix build testinternalcapi + +Signed-off-by: Naveen M K +--- + setup.py | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/setup.py b/setup.py +index 1bb51a5..6649f53 100644 +--- a/setup.py ++++ b/setup.py +@@ -1063,7 +1063,11 @@ class PyBuildExt(build_ext): + depends=['testcapi_long.h'])) + + # Python Internal C API test module ++ macros = [] ++ if MS_WINDOWS: ++ macros.append(('PY3_DLLNAME', 'L"%s"' % sysconfig.get_config_var('DLLLIBRARY'))) + self.add(Extension('_testinternalcapi', ['_testinternalcapi.c'], ++ define_macros=macros, + extra_compile_args=['-DPy_BUILD_CORE_MODULE'])) + + # Python PEP-3118 (buffer protocol) test module +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0076-extend-MS_WINDOWS-flag.patch b/mingw-w64-python3.10/0076-extend-MS_WINDOWS-flag.patch new file mode 100644 index 0000000000..5fb8a49288 --- /dev/null +++ b/mingw-w64-python3.10/0076-extend-MS_WINDOWS-flag.patch @@ -0,0 +1,26 @@ +From 7bbbdb552ef068fa5b4c4e38a4b72a32d679b754 Mon Sep 17 00:00:00 2001 +From: Long Nguyen +Date: Thu, 17 Jun 2021 18:52:34 +0530 +Subject: [PATCH 076/N] extend MS_WINDOWS flag + +Signed-off-by: Naveen M K +--- + setup.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/setup.py b/setup.py +index 6649f53..5eb9b07 100644 +--- a/setup.py ++++ b/setup.py +@@ -92,7 +92,7 @@ if sys.platform == "win32" and "MSYSTEM" in os.environ: + + CROSS_COMPILING = ("_PYTHON_HOST_PLATFORM" in os.environ) + HOST_PLATFORM = get_platform() +-MS_WINDOWS = (HOST_PLATFORM == 'win32') ++MS_WINDOWS = (HOST_PLATFORM == 'win32' or HOST_PLATFORM == 'mingw') + CYGWIN = (HOST_PLATFORM == 'cygwin') + MACOS = (HOST_PLATFORM == 'darwin') + AIX = (HOST_PLATFORM.startswith('aix')) +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0077-clang-arm64.patch b/mingw-w64-python3.10/0077-clang-arm64.patch new file mode 100644 index 0000000000..69ef4397a0 --- /dev/null +++ b/mingw-w64-python3.10/0077-clang-arm64.patch @@ -0,0 +1,51 @@ +From 5132d7826b1622531246d79e27f0ff43dc825d40 Mon Sep 17 00:00:00 2001 +From: jeremyd2019 <4524874+jeremyd2019@users.noreply.github.com> +Date: Thu, 17 Jun 2021 18:52:36 +0530 +Subject: [PATCH 077/N] clang arm64 + +Co-authored-by: Naveen M K +Signed-off-by: Naveen M K +--- + Python/getcompiler.c | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +diff --git a/Python/getcompiler.c b/Python/getcompiler.c +index 3e31c80..7e7be71 100644 +--- a/Python/getcompiler.c ++++ b/Python/getcompiler.c +@@ -7,7 +7,7 @@ + + // Note the __clang__ conditional has to come before the __GNUC__ one because + // clang pretends to be GCC. +-#if defined(__clang__) ++#if defined(__clang__) && !defined(_WIN32) + #define COMPILER "[Clang " __clang_version__ "]" + #elif defined(__GNUC__) + /* To not break compatibility with things that determine +@@ -18,6 +18,8 @@ + #define COMP_SEP " " + #if defined(__x86_64__) + #define ARCH_SUFFIX " 64 bit (AMD64)" ++#elif defined(__aarch64__) ++#define ARCH_SUFFIX " 64 bit (ARM64)" + #else + #define ARCH_SUFFIX " 32 bit" + #endif +@@ -25,7 +27,14 @@ + #define COMP_SEP "\n" + #define ARCH_SUFFIX "" + #endif ++#if defined(__clang__) ++#define str(x) #x ++#define xstr(x) str(x) ++#define COMPILER COMP_SEP "[GCC Clang " xstr(__clang_major__) "." \ ++ xstr(__clang_minor__) "." xstr(__clang_patchlevel__) ARCH_SUFFIX "]" ++#else + #define COMPILER COMP_SEP "[GCC " __VERSION__ ARCH_SUFFIX "]" ++#endif + // Generic fallbacks. + #elif defined(__cplusplus) + #define COMPILER "[C++]" +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0078-configure.ac-set-MINGW-stack-reserve.patch b/mingw-w64-python3.10/0078-configure.ac-set-MINGW-stack-reserve.patch new file mode 100644 index 0000000000..27e23a229a --- /dev/null +++ b/mingw-w64-python3.10/0078-configure.ac-set-MINGW-stack-reserve.patch @@ -0,0 +1,29 @@ +From f471e4d6b28f351e5ccaf760969bd239088d8fbb Mon Sep 17 00:00:00 2001 +From: jeremyd2019 <4524874+jeremyd2019@users.noreply.github.com> +Date: Thu, 17 Jun 2021 18:52:37 +0530 +Subject: [PATCH 078/N] configure.ac: set MINGW stack reserve + +Signed-off-by: Naveen M K +--- + configure.ac | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/configure.ac b/configure.ac +index ecf88ff..10334e1 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3053,6 +3053,11 @@ then + VxWorks*) + LINKFORSHARED='-Wl,-export-dynamic';; + esac ++ case $host in ++ *-*-mingw*) ++ # for https://bugs.python.org/issue40458 on MINGW ++ LINKFORSHARED="-Wl,--stack,2000000";; ++ esac + fi + AC_MSG_RESULT($LINKFORSHARED) + +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0079-Don-t-use-os.pathsep-to-find-EOF.patch b/mingw-w64-python3.10/0079-Don-t-use-os.pathsep-to-find-EOF.patch new file mode 100644 index 0000000000..cdd0b2fec6 --- /dev/null +++ b/mingw-w64-python3.10/0079-Don-t-use-os.pathsep-to-find-EOF.patch @@ -0,0 +1,28 @@ +From df2bdfbe3c99768c838eba8d13039a92d074b108 Mon Sep 17 00:00:00 2001 +From: Naveen M K +Date: Fri, 18 Jun 2021 12:38:11 +0530 +Subject: [PATCH 079/N] Don't use os.pathsep to find EOF not all + distributions in win32 have them as \ instead check using sys.platform + +Signed-off-by: Naveen M K +Signed-off-by: Naveen M K +--- + Lib/site.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Lib/site.py b/Lib/site.py +index e460a3d..49c6ce0 100644 +--- a/Lib/site.py ++++ b/Lib/site.py +@@ -401,7 +401,7 @@ def setquit(): + The repr of each object contains a hint at how it works. + + """ +- if os.sep == '\\': ++ if sys.platform == 'win32': + eof = 'Ctrl-Z plus Return' + else: + eof = 'Ctrl-D (i.e. EOF)' +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0080-Fix-extension-suffix-for-c-extensions-on-mingw.patch b/mingw-w64-python3.10/0080-Fix-extension-suffix-for-c-extensions-on-mingw.patch new file mode 100644 index 0000000000..e7204c076c --- /dev/null +++ b/mingw-w64-python3.10/0080-Fix-extension-suffix-for-c-extensions-on-mingw.patch @@ -0,0 +1,182 @@ +From 9705142463fd8b4d5831636cc3b2518a0c48b20d Mon Sep 17 00:00:00 2001 +From: Naveen M K +Date: Wed, 23 Jun 2021 18:12:12 +0530 +Subject: [PATCH 080/N] Fix extension suffix for c-extensions on mingw + +Python is compiled with various compilers which previously +had same platform tags or extension suffix. This can be error +prone while loading c-extensions, so now each compiler or +runtime has a different extension suffix. + +Also, changed all extension to end with .pyd rather than +.dll file. + +Fixes https://github.com/msys2/MINGW-packages/issues/8843 + +Signed-off-by: Naveen M K +--- + Makefile.pre.in | 6 ++-- + Python/dynload_win.c | 6 ---- + configure.ac | 77 +++++++++++++++++++++++++++++++++++++++----- + 3 files changed, 72 insertions(+), 17 deletions(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index fb3c807..e526be2 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -167,6 +167,7 @@ CONFINCLUDEPY= $(CONFINCLUDEDIR)/python$(LDVERSION) + # Symbols used for using shared libraries + SHLIB_SUFFIX= @SHLIB_SUFFIX@ + EXT_SUFFIX= @EXT_SUFFIX@ ++PYD_PLATFORM_TAG = @PYD_PLATFORM_TAG@ + LDSHARED= @LDSHARED@ $(PY_LDFLAGS) + BLDSHARED= @BLDSHARED@ $(PY_CORE_LDFLAGS) + LDCXXSHARED= @LDCXXSHARED@ +@@ -851,8 +852,7 @@ Python/dynload_hpux.o: $(srcdir)/Python/dynload_hpux.c Makefile + + Python/dynload_win.o: $(srcdir)/Python/dynload_win.c Makefile + $(CC) -c $(PY_CORE_CFLAGS) \ +- -DSHLIB_SUFFIX='"$(SHLIB_SUFFIX)"' \ +- -DEXT_SUFFIX='"$(EXT_SUFFIX)"' \ ++ -DPYD_PLATFORM_TAG='"$(PYD_PLATFORM_TAG)"' \ + -o $@ $(srcdir)/Python/dynload_win.c + + Python/sysmodule.o: $(srcdir)/Python/sysmodule.c Makefile $(srcdir)/Include/pydtrace.h +@@ -1740,7 +1740,7 @@ libainstall: @DEF_MAKE_RULE@ python-config + @if test "$(STATIC_LIBPYTHON)" = 1; then \ + if test -d $(LIBRARY); then :; else \ + if test "$(PYTHONFRAMEWORKDIR)" = no-framework; then \ +- if test "$(SHLIB_SUFFIX)" = .dll; then \ ++ if test "$(SHLIB_SUFFIX)" = .dll -o "$(SHLIB_SUFFIX)" = .pyd; then \ + $(INSTALL_DATA) $(LDLIBRARY) $(DESTDIR)$(LIBPL) ; \ + else \ + $(INSTALL_DATA) $(LIBRARY) $(DESTDIR)$(LIBPL)/$(LIBRARY) ; \ +diff --git a/Python/dynload_win.c b/Python/dynload_win.c +index 1083fe8..c46061c 100644 +--- a/Python/dynload_win.c ++++ b/Python/dynload_win.c +@@ -27,12 +27,6 @@ + #define PYD_UNTAGGED_SUFFIX PYD_DEBUG_SUFFIX ".pyd" + + const char *_PyImport_DynLoadFiletab[] = { +-#ifdef EXT_SUFFIX +- EXT_SUFFIX, /* include SOABI flags where is encoded debug */ +-#endif +-#ifdef SHLIB_SUFFIX +- "-abi" PYTHON_ABI_STRING SHLIB_SUFFIX, +-#endif + PYD_TAGGED_SUFFIX, + PYD_UNTAGGED_SUFFIX, + NULL +diff --git a/configure.ac b/configure.ac +index 10334e1..ca7e7a2 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2825,7 +2825,7 @@ if test -z "$SHLIB_SUFFIX"; then + *) SHLIB_SUFFIX=.so;; + esac + case $host_os in +- mingw*) SHLIB_SUFFIX=.dll;; ++ mingw*) SHLIB_SUFFIX=.pyd;; + esac + fi + AC_MSG_RESULT($SHLIB_SUFFIX) +@@ -5113,6 +5113,68 @@ esac + # check for endianness + AC_C_BIGENDIAN + ++AC_SUBST(PYD_PLATFORM_TAG) ++# Special case of PYD_PLATFORM_TAG with python build with mingw. ++# Python can with compiled with clang or gcc and linked ++# to msvcrt or ucrt. To avoid conflicts between them ++# we are selecting the extension as based on the compiler ++# and the runtime they link to ++# gcc + x86_64 + msvcrt = cp{version number}-x86_64 ++# gcc + i686 + msvcrt = cp{version number}-i686 ++# gcc + x86_64 + ucrt = cp{version number}-x86_64-ucrt ++# clang + x86_64 + ucrt = cp{version number}-x86_64-clang ++# clang + i686 + ucrt = cp{version number}-i686-clang ++ ++PYD_PLATFORM_TAG="" ++case $host in ++ *-*-mingw*) ++ # check if we are linking to ucrt ++ AC_MSG_CHECKING(whether linking to ucrt) ++ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ ++ #include ++ #ifndef _UCRT ++ #error no ucrt ++ #endif ++ int main(){ return 0; } ++ ]])],[linking_to_ucrt=yes],[linking_to_ucrt=no]) ++ AC_MSG_RESULT($linking_to_ucrt) ++ ;; ++esac ++case $host_os in ++ mingw*) ++ AC_MSG_CHECKING(PYD_PLATFORM_TAG) ++ case $host in ++ i686-*-mingw*) ++ if test -n "${cc_is_clang}"; then ++ # it is CLANG32 ++ PYD_PLATFORM_TAG="mingw_i686_clang" ++ else ++ if test $linking_to_ucrt = no; then ++ PYD_PLATFORM_TAG="mingw_i686" ++ else ++ PYD_PLATFORM_TAG="mingw_i686_ucrt" ++ fi ++ fi ++ ;; ++ x86_64-*-mingw*) ++ if test -n "${cc_is_clang}"; then ++ # it is CLANG64 ++ PYD_PLATFORM_TAG="mingw_x86_64_clang" ++ else ++ if test $linking_to_ucrt = no; then ++ PYD_PLATFORM_TAG="mingw_x86_64" ++ else ++ PYD_PLATFORM_TAG="mingw_x86_64_ucrt" ++ fi ++ fi ++ ;; ++ aarch64-*-mingw*) ++ PYD_PLATFORM_TAG+="mingw_aarch64" ++ ;; ++ esac ++ AC_MSG_RESULT($PYD_PLATFORM_TAG) ++esac ++ + # ABI version string for Python extension modules. This appears between the + # periods in shared library file names, e.g. foo..so. It is calculated + # from the following attributes which affect the ABI of this Python build (in +@@ -5145,7 +5207,12 @@ if test "$Py_DEBUG" = 'true' -a "$with_trace_refs" != "yes"; then + fi + + AC_SUBST(EXT_SUFFIX) +-EXT_SUFFIX=.${SOABI}${SHLIB_SUFFIX} ++VERSION_NO_DOTS=$(echo $LDVERSION | tr -d .) ++if test -n "${PYD_PLATFORM_TAG}"; then ++ EXT_SUFFIX=".cp${VERSION_NO_DOTS}-${PYD_PLATFORM_TAG}${SHLIB_SUFFIX}" ++else ++ EXT_SUFFIX=.${SOABI}${SHLIB_SUFFIX} ++fi + + AC_MSG_CHECKING(LDVERSION) + LDVERSION='$(VERSION)$(ABIFLAGS)' +@@ -5865,12 +5932,6 @@ case "$ac_cv_computed_gotos" in yes*) + AC_DEFINE(HAVE_COMPUTED_GOTOS, 1, + [Define if the C compiler supports computed gotos.]) + esac +-case $host_os in +- mingw*) +- dnl Synchronized with _PyImport_DynLoadFiletab (dynload_win.c) +- dnl Do not use more then one dot on this platform ! +- EXT_SUFFIX=-$SOABI$SHLIB_SUFFIX;; +-esac + + case $ac_sys_system in + AIX*) +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0081-Change-the-get_platform-method-in-sysconfig.patch b/mingw-w64-python3.10/0081-Change-the-get_platform-method-in-sysconfig.patch new file mode 100644 index 0000000000..a0056c4eec --- /dev/null +++ b/mingw-w64-python3.10/0081-Change-the-get_platform-method-in-sysconfig.patch @@ -0,0 +1,64 @@ +From 7d6ec094999ef09bf69c083d52cb2fb1b6403978 Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Tue, 21 Sep 2021 21:36:58 +0200 +Subject: [PATCH 081/N] Change the `get_platform()` method in sysconfig + +This would possibly fix building wheels when mingw python +is used and would be unique to each python same as EXT_SUFFIX. + +Also, this modifies the `sys.version` argument to include UCRT +in it. + +Signed-off-by: Naveen M K +--- + Lib/sysconfig.py | 16 ++++++++++++++-- + Python/getcompiler.c | 4 ++++ + 2 files changed, 18 insertions(+), 2 deletions(-) + +diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py +index fb994c0..6b2ab19 100644 +--- a/Lib/sysconfig.py ++++ b/Lib/sysconfig.py +@@ -721,8 +721,20 @@ def get_platform(): + + """ + if os.name == 'nt': +- if 'GCC' in sys.version: +- return 'mingw' ++ if 'gcc' in sys.version.lower(): ++ if 'ucrt' in sys.version.lower(): ++ if 'amd64' in sys.version.lower(): ++ return 'mingw_x86_64_ucrt' ++ return 'mingw_i686_ucrt' ++ if 'clang' in sys.version.lower(): ++ if 'amd64' in sys.version.lower(): ++ return 'mingw_x86_64_clang' ++ if 'arm64' in sys.version.lower(): ++ return 'mingw_aarch64' ++ return 'mingw_i686_clang' ++ if 'amd64' in sys.version.lower(): ++ return 'mingw_x86_64' ++ return 'mingw_i686' + if 'amd64' in sys.version.lower(): + return 'win-amd64' + if '(arm)' in sys.version.lower(): +diff --git a/Python/getcompiler.c b/Python/getcompiler.c +index 7e7be71..275f799 100644 +--- a/Python/getcompiler.c ++++ b/Python/getcompiler.c +@@ -33,8 +33,12 @@ + #define COMPILER COMP_SEP "[GCC Clang " xstr(__clang_major__) "." \ + xstr(__clang_minor__) "." xstr(__clang_patchlevel__) ARCH_SUFFIX "]" + #else ++#if defined(_UCRT) ++#define COMPILER COMP_SEP "[GCC UCRT " __VERSION__ ARCH_SUFFIX "]" ++#else + #define COMPILER COMP_SEP "[GCC " __VERSION__ ARCH_SUFFIX "]" + #endif ++#endif + // Generic fallbacks. + #elif defined(__cplusplus) + #define COMPILER "[C++]" +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0082-distutils-compiler-customize-mingw-cygwin-compilers.patch b/mingw-w64-python3.10/0082-distutils-compiler-customize-mingw-cygwin-compilers.patch new file mode 100644 index 0000000000..bb1c89f104 --- /dev/null +++ b/mingw-w64-python3.10/0082-distutils-compiler-customize-mingw-cygwin-compilers.patch @@ -0,0 +1,44 @@ +From 21e726ba50c9339ee424d0ca3e27ce1999b90f21 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:21 +0530 +Subject: [PATCH 082/N] distutils: compiler customize mingw cygwin compilers + +Co-authored-by: Naveen M K +Signed-off-by: Naveen M K +--- + Lib/distutils/sysconfig.py | 18 +++++++++++++++++- + 1 file changed, 17 insertions(+), 1 deletion(-) + +diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py +index 3414a76..cb39cd6 100644 +--- a/Lib/distutils/sysconfig.py ++++ b/Lib/distutils/sysconfig.py +@@ -201,7 +201,23 @@ def customize_compiler(compiler): + Mainly needed on Unix, so we can plug in the information that + varies across Unices and is stored in Python's Makefile. + """ +- if compiler.compiler_type == "unix": ++ global _config_vars ++ if compiler.compiler_type in ["cygwin", "mingw32"]: ++ # Note that cygwin use posix build and 'unix' compiler. ++ # If build is not based on posix then we must predefine ++ # some environment variables corresponding to posix ++ # build rules and defaults. ++ if not 'GCC' in sys.version: ++ _config_vars['CC'] = "gcc" ++ _config_vars['CXX'] = "g++" ++ _config_vars['OPT'] = "-fwrapv -O3 -Wall -Wstrict-prototypes" ++ _config_vars['CFLAGS'] = "" ++ _config_vars['CCSHARED'] = "" ++ _config_vars['LDSHARED'] = "gcc -shared -Wl,--enable-auto-image-base" ++ _config_vars['AR'] = "ar" ++ _config_vars['ARFLAGS'] = "rc" ++ ++ if compiler.compiler_type in ["unix", "cygwin", "mingw32"]: + if sys.platform == "darwin": + # Perform first-time customization of compiler-related + # config vars on OS X now that we know we need a compiler. +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0083-distutils-compiler-enable-new-dtags.patch b/mingw-w64-python3.10/0083-distutils-compiler-enable-new-dtags.patch new file mode 100644 index 0000000000..272afc3ffd --- /dev/null +++ b/mingw-w64-python3.10/0083-distutils-compiler-enable-new-dtags.patch @@ -0,0 +1,38 @@ +From 7fbf2669ec42b48c014c8fa064209a836a3f6440 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:22 +0530 +Subject: [PATCH 083/N] distutils: compiler enable new dtags +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + Lib/distutils/unixccompiler.py | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/Lib/distutils/unixccompiler.py b/Lib/distutils/unixccompiler.py +index f0792de..60776bc 100644 +--- a/Lib/distutils/unixccompiler.py ++++ b/Lib/distutils/unixccompiler.py +@@ -248,9 +248,13 @@ class UnixCCompiler(CCompiler): + # -Wl whenever gcc was used in the past it is probably + # safest to keep doing so. + if sysconfig.get_config_var("GNULD") == "yes": +- # GNU ld needs an extra option to get a RUNPATH ++ # GNU ELF ld needs an extra option to get a RUNPATH + # instead of just an RPATH. +- return "-Wl,--enable-new-dtags,-R" + dir ++ if sys.platform in ["win32", "cygwin"] or \ ++ "mingw" in compiler: ++ return [] ++ else: ++ return "-Wl,--enable-new-dtags,-R" + dir + else: + return "-Wl,-R" + dir + else: +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0084-distutils-MINGW-build-extensions-with-GCC.patch b/mingw-w64-python3.10/0084-distutils-MINGW-build-extensions-with-GCC.patch new file mode 100644 index 0000000000..b90c3ba3c6 --- /dev/null +++ b/mingw-w64-python3.10/0084-distutils-MINGW-build-extensions-with-GCC.patch @@ -0,0 +1,61 @@ +From 59fb3e5bc31a8743382df764b660ccb1aa739f6f Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Tue, 21 Sep 2021 20:52:22 +0200 +Subject: [PATCH 084/N] distutils: MINGW build extensions with GCC + +Signed-off-by: Naveen M K +--- + Lib/distutils/command/build_ext.py | 16 +++++++++++++++- + Lib/distutils/util.py | 2 ++ + 2 files changed, 17 insertions(+), 1 deletion(-) + +diff --git a/Lib/distutils/command/build_ext.py b/Lib/distutils/command/build_ext.py +index 1a9bd12..1c9d471 100644 +--- a/Lib/distutils/command/build_ext.py ++++ b/Lib/distutils/command/build_ext.py +@@ -186,7 +186,7 @@ class build_ext(Command): + # for extensions under windows use different directories + # for Release and Debug builds. + # also Python's library directory must be appended to library_dirs +- if os.name == 'nt': ++ if os.name == 'nt' and not self.plat_name.startswith(('mingw')): + # the 'libs' directory is for binary installs - we assume that + # must be the *native* platform. But we don't really support + # cross-compiling via a binary install anyway, so we let it go. +@@ -712,6 +712,20 @@ class build_ext(Command): + # pyconfig.h that MSVC groks. The other Windows compilers all seem + # to need it mentioned explicitly, though, so that's what we do. + # Append '_d' to the python import library on debug builds. ++ ++ # Use self.plat_name as it works even in case of ++ # cross-compilation (at least for mingw build). ++ if self.plat_name.startswith('mingw'): ++ from distutils import sysconfig ++ extra = [] ++ for lib in ( ++ sysconfig.get_config_var('BLDLIBRARY').split() ++ + sysconfig.get_config_var('SHLIBS').split() ++ ): ++ if lib.startswith('-l'): ++ extra.append(lib[2:]) ++ return ext.libraries + extra ++ + if sys.platform == "win32": + from distutils._msvccompiler import MSVCCompiler + if not isinstance(self.compiler, MSVCCompiler): +diff --git a/Lib/distutils/util.py b/Lib/distutils/util.py +index 2ce5c5b..fb7d1ad 100644 +--- a/Lib/distutils/util.py ++++ b/Lib/distutils/util.py +@@ -37,6 +37,8 @@ def get_host_platform(): + + """ + if os.name == 'nt': ++ if 'GCC' in sys.version: ++ return 'mingw' + if 'amd64' in sys.version.lower(): + return 'win-amd64' + if '(arm)' in sys.version.lower(): +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0085-distutils-use-Mingw32CCompiler-as-default-compiler-f.patch b/mingw-w64-python3.10/0085-distutils-use-Mingw32CCompiler-as-default-compiler-f.patch new file mode 100644 index 0000000000..747cdfd70f --- /dev/null +++ b/mingw-w64-python3.10/0085-distutils-use-Mingw32CCompiler-as-default-compiler-f.patch @@ -0,0 +1,74 @@ +From 6bf0cc4d29e2544677502ea44136abddaca7ca3a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:35 +0530 +Subject: [PATCH 085/N] distutils: use Mingw32CCompiler as default compiler + for m +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + Lib/distutils/ccompiler.py | 4 +++- + Lib/distutils/cygwinccompiler.py | 11 ++++++++--- + 2 files changed, 11 insertions(+), 4 deletions(-) + +diff --git a/Lib/distutils/ccompiler.py b/Lib/distutils/ccompiler.py +index b5ef143..24eafc6 100644 +--- a/Lib/distutils/ccompiler.py ++++ b/Lib/distutils/ccompiler.py +@@ -9,7 +9,7 @@ from distutils.spawn import spawn + from distutils.file_util import move_file + from distutils.dir_util import mkpath + from distutils.dep_util import newer_group +-from distutils.util import split_quoted, execute ++from distutils.util import split_quoted, execute, get_platform + from distutils import log + + class CCompiler: +@@ -948,6 +948,8 @@ def get_default_compiler(osname=None, platform=None): + osname = os.name + if platform is None: + platform = sys.platform ++ if get_platform().startswith('mingw'): ++ return 'mingw32' + for pattern, compiler in _default_compilers: + if re.match(pattern, platform) is not None or \ + re.match(pattern, osname) is not None: +diff --git a/Lib/distutils/cygwinccompiler.py b/Lib/distutils/cygwinccompiler.py +index 66c12dd..1960ef8 100644 +--- a/Lib/distutils/cygwinccompiler.py ++++ b/Lib/distutils/cygwinccompiler.py +@@ -253,11 +253,16 @@ class CygwinCCompiler(UnixCCompiler): + output_dir = '' + obj_names = [] + for src_name in source_filenames: +- # use normcase to make sure '.rc' is really '.rc' and not '.RC' +- base, ext = os.path.splitext(os.path.normcase(src_name)) ++ base, ext = os.path.splitext(src_name) ++ # use 'normcase' only for resource suffixes ++ ext_normcase = os.path.normcase(ext) ++ if ext_normcase in ['.rc','.res']: ++ ext = ext_normcase + if ext not in (self.src_extensions + ['.rc','.res']): + raise UnknownFileError("unknown file type '%s' (from '%s')" % \ + (ext, src_name)) ++ base = os.path.splitdrive(base)[1] # Chop off the drive ++ base = base[os.path.isabs(base):] # If abs, chop off leading / + if strip_dir: + base = os.path.basename (base) + if ext in ('.res', '.rc'): +@@ -313,7 +318,7 @@ class Mingw32CCompiler(CygwinCCompiler): + + # Include the appropriate MSVC runtime library if Python was built + # with MSVC 7.0 or later. +- self.dll_libraries = get_msvcr() ++ self.dll_libraries = get_msvcr() or [] + + # Because these compilers aren't configured in Python's pyconfig.h file by + # default, we should at least warn the user if he is using an unmodified +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0086-distutils-find-import-library.patch b/mingw-w64-python3.10/0086-distutils-find-import-library.patch new file mode 100644 index 0000000000..76f0b21afe --- /dev/null +++ b/mingw-w64-python3.10/0086-distutils-find-import-library.patch @@ -0,0 +1,30 @@ +From 7e592f1acdee411f36e15fc23f21fa89137de60c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:36 +0530 +Subject: [PATCH 086/N] distutils: find import library +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + Lib/distutils/cygwinccompiler.py | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Lib/distutils/cygwinccompiler.py b/Lib/distutils/cygwinccompiler.py +index 1960ef8..39ad631 100644 +--- a/Lib/distutils/cygwinccompiler.py ++++ b/Lib/distutils/cygwinccompiler.py +@@ -91,6 +91,7 @@ class CygwinCCompiler(UnixCCompiler): + obj_extension = ".o" + static_lib_extension = ".a" + shared_lib_extension = ".dll" ++ dylib_lib_extension = ".dll.a" + static_lib_format = "lib%s%s" + shared_lib_format = "%s%s" + exe_extension = ".exe" +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0087-distutils-avoid-circular-dependency-from-time-module.patch b/mingw-w64-python3.10/0087-distutils-avoid-circular-dependency-from-time-module.patch new file mode 100644 index 0000000000..c7620d1ef6 --- /dev/null +++ b/mingw-w64-python3.10/0087-distutils-avoid-circular-dependency-from-time-module.patch @@ -0,0 +1,39 @@ +From 743f08acb0e7008b70f6d67219f92d3931314042 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:41 +0530 +Subject: [PATCH 087/N] distutils: avoid circular dependency from time module + dur +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + Lib/distutils/cygwinccompiler.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Lib/distutils/cygwinccompiler.py b/Lib/distutils/cygwinccompiler.py +index 39ad631..5b281e2 100644 +--- a/Lib/distutils/cygwinccompiler.py ++++ b/Lib/distutils/cygwinccompiler.py +@@ -48,7 +48,6 @@ cygwin in no-cygwin mode). + import os + import sys + import copy +-from subprocess import Popen, PIPE, check_output + import re + + from distutils.unixccompiler import UnixCCompiler +@@ -383,6 +382,7 @@ def _find_exe_version(cmd): + executable = cmd.split()[0] + if find_executable(executable) is None: + return None ++ from subprocess import Popen, PIPE + out = Popen(cmd, shell=True, stdout=PIPE).stdout + try: + out_string = out.read() +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0088-distutils-generalization-of-posix-build-in-distutils.patch b/mingw-w64-python3.10/0088-distutils-generalization-of-posix-build-in-distutils.patch new file mode 100644 index 0000000000..9cdf3139a4 --- /dev/null +++ b/mingw-w64-python3.10/0088-distutils-generalization-of-posix-build-in-distutils.patch @@ -0,0 +1,63 @@ +From 07ce9c8988f4e0aa18da5529156421b36dc10192 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:41 +0530 +Subject: [PATCH 088/N] distutils: generalization of posix build in distutils + sys + +Co-authored-by: Naveen M K +Signed-off-by: Naveen M K +--- + Lib/distutils/sysconfig.py | 21 ++++++++++++++++++--- + 1 file changed, 18 insertions(+), 3 deletions(-) + +diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py +index cb39cd6..3c7b766 100644 +--- a/Lib/distutils/sysconfig.py ++++ b/Lib/distutils/sysconfig.py +@@ -69,8 +69,23 @@ def parse_config_h(fp, g=None): + + _python_build = partial(is_python_build, check_home=True) + _init_posix = partial(sysconfig_init_posix, _config_vars) +-_init_nt = partial(_init_non_posix, _config_vars) + ++def _posix_build(): ++ # GCC[mingw*] use posix build system ++ # Check for cross builds explicitly ++ host_platform = os.environ.get("_PYTHON_HOST_PLATFORM") ++ if host_platform: ++ if host_platform.startswith('mingw'): ++ return True ++ return os.name == 'posix' or \ ++ (os.name == "nt" and 'GCC' in sys.version) ++posix_build = _posix_build() ++ ++ ++def _init_nt(): ++ if posix_build: ++ return _init_posix(_config_vars) ++ return _init_non_posix(_config_vars) + + # Similar function is also implemented in sysconfig as _parse_makefile + # but without the parsing capabilities of distutils.text_file.TextFile. +@@ -295,7 +310,7 @@ def get_python_inc(plat_specific=0, prefix=None): + """ + if prefix is None: + prefix = plat_specific and BASE_EXEC_PREFIX or BASE_PREFIX +- if os.name == "posix": ++ if posix_build: + if python_build: + # Assume the executable is in the build directory. The + # pyconfig.h file should be in the same directory. Since +@@ -342,7 +357,7 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None): + else: + prefix = plat_specific and EXEC_PREFIX or PREFIX + +- if os.name == "posix": ++ if posix_build: + if plat_specific or standard_lib: + # Platform-specific modules (any module from a non-pure-Python + # module distribution) or standard Python library modules. +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0089-distutils-mingw-sysconfig-like-posix.patch b/mingw-w64-python3.10/0089-distutils-mingw-sysconfig-like-posix.patch new file mode 100644 index 0000000000..2ef797011f --- /dev/null +++ b/mingw-w64-python3.10/0089-distutils-mingw-sysconfig-like-posix.patch @@ -0,0 +1,29 @@ +From 5e59c7ba3aca1ba41a906ef0fd07d28ebbfe4808 Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Tue, 21 Sep 2021 20:53:29 +0200 +Subject: [PATCH 089/N] distutils: mingw sysconfig like posix + +Signed-off-by: Naveen M K +--- + Lib/distutils/command/build_ext.py | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/Lib/distutils/command/build_ext.py b/Lib/distutils/command/build_ext.py +index 1c9d471..1dbdfe0 100644 +--- a/Lib/distutils/command/build_ext.py ++++ b/Lib/distutils/command/build_ext.py +@@ -221,9 +221,10 @@ class build_ext(Command): + if sys.platform[:6] == 'cygwin': + if sys.executable.startswith(os.path.join(sys.exec_prefix, "bin")): + # building third party extensions ++ config_dir_name = os.path.basename(sysconfig.get_config_var('LIBPL')) + self.library_dirs.append(os.path.join(sys.prefix, "lib", + "python" + get_python_version(), +- "config")) ++ config_dir_name)) + else: + # building python standard extensions + self.library_dirs.append('.') +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0090-distutils-get_versions-fixes.patch b/mingw-w64-python3.10/0090-distutils-get_versions-fixes.patch new file mode 100644 index 0000000000..1f9489f975 --- /dev/null +++ b/mingw-w64-python3.10/0090-distutils-get_versions-fixes.patch @@ -0,0 +1,57 @@ +From eca059099caea8790126fe7c56e961dc3b51d337 Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Tue, 21 Sep 2021 21:14:31 +0200 +Subject: [PATCH 090/N] distutils: get_versions() fixes +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Co-authored-by: Christoph Reiter +Signed-off-by: Naveen M K +--- + Lib/distutils/cygwinccompiler.py | 14 ++++++++++++-- + 1 file changed, 12 insertions(+), 2 deletions(-) + +diff --git a/Lib/distutils/cygwinccompiler.py b/Lib/distutils/cygwinccompiler.py +index 5b281e2..fba3485 100644 +--- a/Lib/distutils/cygwinccompiler.py ++++ b/Lib/distutils/cygwinccompiler.py +@@ -56,6 +56,7 @@ from distutils.errors import (DistutilsExecError, CCompilerError, + CompileError, UnknownFileError) + from distutils.version import LooseVersion + from distutils.spawn import find_executable ++from subprocess import Popen, PIPE, check_output + + def get_msvcr(): + """Include the appropriate MSVC runtime library if Python was built +@@ -371,7 +372,7 @@ def check_config_h(): + return (CONFIG_H_UNCERTAIN, + "couldn't read '%s': %s" % (fn, exc.strerror)) + +-RE_VERSION = re.compile(br'(\d+\.\d+(\.\d+)*)') ++RE_VERSION = re.compile(br'[\D\s]*(\d+\.\d+(\.\d+)*)[\D\s]*') + + def _find_exe_version(cmd): + """Find the version of an executable by running `cmd` in the shell. +@@ -400,7 +401,16 @@ def get_versions(): + + If not possible it returns None for it. + """ +- commands = ['gcc -dumpversion', 'ld -v', 'dllwrap --version'] ++ gcc = os.environ.get('CC') or 'gcc' ++ ld = 'ld' ++ out = Popen(gcc+' --print-prog-name ld', shell=True, stdout=PIPE).stdout ++ try: ++ ld = test=str(out.read(),encoding='utf-8').strip() ++ finally: ++ out.close() ++ dllwrap = os.environ.get('DLLWRAP') or 'dllwrap' ++ # MinGW64 doesn't have i686-w64-mingw32-ld, so instead we ask gcc. ++ commands = [gcc+' -dumpversion', ld+' -v', dllwrap+' --version'] + return tuple([_find_exe_version(cmd) for cmd in commands]) + + def is_cygwingcc(): +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0091-distutils-install-layout-as-posix.patch b/mingw-w64-python3.10/0091-distutils-install-layout-as-posix.patch new file mode 100644 index 0000000000..ad53edcc1d --- /dev/null +++ b/mingw-w64-python3.10/0091-distutils-install-layout-as-posix.patch @@ -0,0 +1,30 @@ +From d7924f967e32aba1b6cc6dc5c32d30c4c08a4a5a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:51:59 +0530 +Subject: [PATCH 091/N] distutils: install layout as posix + +Co-authored-by: Naveen M K +Signed-off-by: Naveen M K +--- + Lib/distutils/command/install.py | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Lib/distutils/command/install.py b/Lib/distutils/command/install.py +index 26696cf..5d5f2cb 100644 +--- a/Lib/distutils/command/install.py ++++ b/Lib/distutils/command/install.py +@@ -72,8 +72,8 @@ if HAS_USER_SITE: + INSTALL_SCHEMES['nt_user'] = { + 'purelib': '$usersite', + 'platlib': '$usersite', +- 'headers': '$userbase/Python$py_version_nodot/Include/$dist_name', +- 'scripts': '$userbase/Python$py_version_nodot/Scripts', ++ 'headers': '$userbase/include/python$py_version_short$abiflags/$dist_name', ++ 'scripts': '$userbase/bin', + 'data' : '$userbase', + } + +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0092-distutils-msys-convert_path-fix-and-root-hack.patch b/mingw-w64-python3.10/0092-distutils-msys-convert_path-fix-and-root-hack.patch new file mode 100644 index 0000000000..feea1ea8cd --- /dev/null +++ b/mingw-w64-python3.10/0092-distutils-msys-convert_path-fix-and-root-hack.patch @@ -0,0 +1,81 @@ +From 810c367f10ed1122a6b230863ac1f63411f57e8c Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Tue, 21 Sep 2021 21:18:50 +0200 +Subject: [PATCH 092/N] distutils: msys convert_path fix and root hack + +Co-authored-by: Naveen M K +Signed-off-by: Naveen M K +--- + Lib/distutils/command/install.py | 3 ++- + Lib/distutils/util.py | 26 ++++++++++++++++++++++++-- + 2 files changed, 26 insertions(+), 3 deletions(-) + +diff --git a/Lib/distutils/command/install.py b/Lib/distutils/command/install.py +index 5d5f2cb..d5e340a 100644 +--- a/Lib/distutils/command/install.py ++++ b/Lib/distutils/command/install.py +@@ -363,7 +363,8 @@ class install(Command): + + # Convert directories from Unix /-separated syntax to the local + # convention. +- self.convert_paths('lib', 'purelib', 'platlib', ++ self.convert_paths('base', 'platbase', ++ 'lib', 'purelib', 'platlib', + 'scripts', 'data', 'headers') + if HAS_USER_SITE: + self.convert_paths('userbase', 'usersite') +diff --git a/Lib/distutils/util.py b/Lib/distutils/util.py +index fb7d1ad..ed9d509 100644 +--- a/Lib/distutils/util.py ++++ b/Lib/distutils/util.py +@@ -132,6 +132,13 @@ def convert_path (pathname): + paths.remove('.') + if not paths: + return os.curdir ++ # On Windows, if paths is ['C:','folder','subfolder'] then ++ # os.path.join(*paths) will return 'C:folder\subfolder' which ++ # is thus relative to the CWD on that drive. So we work around ++ # this by adding a \ to path[0] ++ if (len(paths) > 0 and paths[0].endswith(':') and ++ sys.platform == "win32" and sys.version.find("GCC") >= 0): ++ paths[0] += '\\' + return os.path.join(*paths) + + # convert_path () +@@ -142,6 +149,10 @@ def change_root (new_root, pathname): + relative, this is equivalent to "os.path.join(new_root,pathname)". + Otherwise, it requires making 'pathname' relative and then joining the + two, which is tricky on DOS/Windows and Mac OS. ++ ++ If on Windows or OS/2 and both new_root and pathname are on different ++ drives, raises DistutilsChangeRootError as this is nonsensical, ++ otherwise use drive which can be in either of new_root or pathname. + """ + if os.name == 'posix': + if not os.path.isabs(pathname): +@@ -151,9 +162,20 @@ def change_root (new_root, pathname): + + elif os.name == 'nt': + (drive, path) = os.path.splitdrive(pathname) +- if path[0] == '\\': ++ if path[0] == os.sep: + path = path[1:] +- return os.path.join(new_root, path) ++ (drive_r, path_r) = os.path.splitdrive(new_root) ++ if path_r and path_r[0] == os.sep: ++ path_r = path_r[1:] ++ drive_used = '' ++ if len(drive) == 2 and len(drive_r) == 2 and drive != drive_r: ++ raise DistutilsChangeRootError("root and pathname not on same drive (%s, %s)" ++ % (drive_r,drive)) ++ elif len(drive_r) == 2: ++ drive_used = drive_r+os.sep ++ elif len(drive) == 2: ++ drive_used = drive+os.sep ++ return os.path.join(drive_used+path_r, path) + + else: + raise DistutilsPlatformError("nothing known about platform '%s'" % os.name) +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0093-distutils-mingw-build-optimized-ext.patch b/mingw-w64-python3.10/0093-distutils-mingw-build-optimized-ext.patch new file mode 100644 index 0000000000..38e750e3df --- /dev/null +++ b/mingw-w64-python3.10/0093-distutils-mingw-build-optimized-ext.patch @@ -0,0 +1,35 @@ +From c13e972bd24b6949d3a11f0b1b0cca5842d0255e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:52:04 +0530 +Subject: [PATCH 093/N] distutils: mingw build optimized ext +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + Lib/distutils/cygwinccompiler.py | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/Lib/distutils/cygwinccompiler.py b/Lib/distutils/cygwinccompiler.py +index fba3485..bb97880 100644 +--- a/Lib/distutils/cygwinccompiler.py ++++ b/Lib/distutils/cygwinccompiler.py +@@ -303,9 +303,9 @@ class Mingw32CCompiler(CygwinCCompiler): + raise CCompilerError( + 'Cygwin gcc cannot be used with --compiler=mingw32') + +- self.set_executables(compiler='gcc -O -Wall', +- compiler_so='gcc -mdll -O -Wall', +- compiler_cxx='g++ -O -Wall', ++ self.set_executables(compiler='gcc -O2 -Wall', ++ compiler_so='gcc -mdll -O2 -Wall', ++ compiler_cxx='g++ -O2 -Wall', + linker_exe='gcc', + linker_so='%s %s %s' + % (self.linker_dll, shared_option, +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0094-distutils-cygwinccompiler-dont-strip-modules-if-pyde.patch b/mingw-w64-python3.10/0094-distutils-cygwinccompiler-dont-strip-modules-if-pyde.patch new file mode 100644 index 0000000000..e3b3f19664 --- /dev/null +++ b/mingw-w64-python3.10/0094-distutils-cygwinccompiler-dont-strip-modules-if-pyde.patch @@ -0,0 +1,31 @@ +From a971f45dfc338131ee3c5957a2452579dab4bd68 Mon Sep 17 00:00:00 2001 +From: Ray Donnelly +Date: Thu, 17 Jun 2021 18:52:05 +0530 +Subject: [PATCH 094/N] distutils: cygwinccompiler dont strip modules if + pydebug +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + Lib/distutils/cygwinccompiler.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Lib/distutils/cygwinccompiler.py b/Lib/distutils/cygwinccompiler.py +index bb97880..c134525 100644 +--- a/Lib/distutils/cygwinccompiler.py ++++ b/Lib/distutils/cygwinccompiler.py +@@ -236,7 +236,7 @@ class CygwinCCompiler(UnixCCompiler): + # (On my machine: 10KiB < stripped_file < ??100KiB + # unstripped_file = stripped_file + XXX KiB + # ( XXX=254 for a typical python extension)) +- if not debug: ++ if not debug and not hasattr(sys, 'gettotalrefcount'): + extra_preargs.append("-s") + + UnixCCompiler.link(self, target_desc, objects, output_filename, +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0095-distutils-get-compilers-from-env-vars.patch b/mingw-w64-python3.10/0095-distutils-get-compilers-from-env-vars.patch new file mode 100644 index 0000000000..76973727e4 --- /dev/null +++ b/mingw-w64-python3.10/0095-distutils-get-compilers-from-env-vars.patch @@ -0,0 +1,163 @@ +From edbda23fbc94dbb9e99b4eca62e57bc124535826 Mon Sep 17 00:00:00 2001 +From: Long Nguyen +Date: Tue, 17 Aug 2021 20:26:05 +0700 +Subject: [PATCH 095/N] distutils: get compilers from env vars + +Upstreamed at https://github.com/pypa/distutils/pull/26 + +This would allow us to bypass all gcc workarounds when we're using clang + +Signed-off-by: Naveen M K +--- + Lib/distutils/cygwinccompiler.py | 91 ++++++++++++++++++-------------- + 1 file changed, 51 insertions(+), 40 deletions(-) + +diff --git a/Lib/distutils/cygwinccompiler.py b/Lib/distutils/cygwinccompiler.py +index c134525..75bc17b 100644 +--- a/Lib/distutils/cygwinccompiler.py ++++ b/Lib/distutils/cygwinccompiler.py +@@ -44,6 +44,8 @@ cygwin in no-cygwin mode). + # (ld supports -shared) + # * mingw gcc 3.2/ld 2.13 works + # (ld supports -shared) ++# * llvm-mingw with Clang 11 works ++# (lld supports -shared) + + import os + import sys +@@ -110,41 +112,46 @@ class CygwinCCompiler(UnixCCompiler): + "Compiling may fail because of undefined preprocessor macros." + % details) + +- self.gcc_version, self.ld_version, self.dllwrap_version = \ +- get_versions() +- self.debug_print(self.compiler_type + ": gcc %s, ld %s, dllwrap %s\n" % +- (self.gcc_version, +- self.ld_version, +- self.dllwrap_version) ) +- +- # ld_version >= "2.10.90" and < "2.13" should also be able to use +- # gcc -mdll instead of dllwrap +- # Older dllwraps had own version numbers, newer ones use the +- # same as the rest of binutils ( also ld ) +- # dllwrap 2.10.90 is buggy +- if self.ld_version >= "2.10.90": +- self.linker_dll = "gcc" +- else: +- self.linker_dll = "dllwrap" ++ self.cc = os.environ.get('CC', 'gcc') ++ self.cxx = os.environ.get('CXX', 'g++') ++ ++ if ('gcc' in self.cc): # Start gcc workaround ++ self.gcc_version, self.ld_version, self.dllwrap_version = \ ++ get_versions() ++ self.debug_print(self.compiler_type + ": gcc %s, ld %s, dllwrap %s\n" % ++ (self.gcc_version, ++ self.ld_version, ++ self.dllwrap_version) ) ++ ++ # ld_version >= "2.10.90" and < "2.13" should also be able to use ++ # gcc -mdll instead of dllwrap ++ # Older dllwraps had own version numbers, newer ones use the ++ # same as the rest of binutils ( also ld ) ++ # dllwrap 2.10.90 is buggy ++ if self.ld_version >= "2.10.90": ++ self.linker_dll = self.cc ++ else: ++ self.linker_dll = "dllwrap" + +- # ld_version >= "2.13" support -shared so use it instead of +- # -mdll -static +- if self.ld_version >= "2.13": ++ # ld_version >= "2.13" support -shared so use it instead of ++ # -mdll -static ++ if self.ld_version >= "2.13": ++ shared_option = "-shared" ++ else: ++ shared_option = "-mdll -static" ++ else: # Assume linker is up to date ++ self.linker_dll = self.cc + shared_option = "-shared" +- else: +- shared_option = "-mdll -static" + +- # Hard-code GCC because that's what this is all about. +- # XXX optimization, warnings etc. should be customizable. +- self.set_executables(compiler='gcc -mcygwin -O -Wall', +- compiler_so='gcc -mcygwin -mdll -O -Wall', +- compiler_cxx='g++ -mcygwin -O -Wall', +- linker_exe='gcc -mcygwin', ++ self.set_executables(compiler='%s -mcygwin -O -Wall' % self.cc, ++ compiler_so='%s -mcygwin -mdll -O -Wall' % self.cc, ++ compiler_cxx='%s -mcygwin -O -Wall' % self.cxx, ++ linker_exe='%s -mcygwin' % self.cc, + linker_so=('%s -mcygwin %s' % + (self.linker_dll, shared_option))) + + # cygwin and mingw32 need different sets of libraries +- if self.gcc_version == "2.91.57": ++ if ('gcc' in self.cc and self.gcc_version == "2.91.57"): + # cygwin shouldn't need msvcrt, but without the dlls will crash + # (gcc version 2.91.57) -- perhaps something about initialization + self.dll_libraries=["msvcrt"] +@@ -287,26 +294,26 @@ class Mingw32CCompiler(CygwinCCompiler): + + # ld_version >= "2.13" support -shared so use it instead of + # -mdll -static +- if self.ld_version >= "2.13": +- shared_option = "-shared" +- else: ++ if ('gcc' in self.cc and self.ld_version < "2.13"): + shared_option = "-mdll -static" ++ else: ++ shared_option = "-shared" + + # A real mingw32 doesn't need to specify a different entry point, + # but cygwin 2.91.57 in no-cygwin-mode needs it. +- if self.gcc_version <= "2.91.57": ++ if ('gcc' in self.cc and self.gcc_version <= "2.91.57"): + entry_point = '--entry _DllMain@12' + else: + entry_point = '' + +- if is_cygwingcc(): ++ if is_cygwincc(self.cc): + raise CCompilerError( + 'Cygwin gcc cannot be used with --compiler=mingw32') + +- self.set_executables(compiler='gcc -O2 -Wall', +- compiler_so='gcc -mdll -O2 -Wall', +- compiler_cxx='g++ -O2 -Wall', +- linker_exe='gcc', ++ self.set_executables(compiler='%s -O2 -Wall' % self.cc, ++ compiler_so='%s -mdll -O2 -Wall' % self.cc, ++ compiler_cxx='%s -O2 -Wall' % self.cxx, ++ linker_exe='%s' % self.cc, + linker_so='%s %s %s' + % (self.linker_dll, shared_option, + entry_point)) +@@ -357,6 +364,10 @@ def check_config_h(): + if "GCC" in sys.version: + return CONFIG_H_OK, "sys.version mentions 'GCC'" + ++ # Clang would also work ++ if "Clang" in sys.version: ++ return CONFIG_H_OK, "sys.version mentions 'Clang'" ++ + # let's see if __GNUC__ is mentioned in python.h + fn = sysconfig.get_config_h_filename() + try: +@@ -413,7 +424,7 @@ def get_versions(): + commands = [gcc+' -dumpversion', ld+' -v', dllwrap+' --version'] + return tuple([_find_exe_version(cmd) for cmd in commands]) + +-def is_cygwingcc(): +- '''Try to determine if the gcc that would be used is from cygwin.''' +- out_string = check_output(['gcc', '-dumpmachine']) ++def is_cygwincc(cc): ++ '''Try to determine if the compiler that would be used is from cygwin.''' ++ out_string = check_output([cc, '-dumpmachine']) + return out_string.strip().endswith(b'cygwin') +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0096-distutils-add-windmc-to-cygwinccompiler.patch b/mingw-w64-python3.10/0096-distutils-add-windmc-to-cygwinccompiler.patch new file mode 100644 index 0000000000..9f475a5e95 --- /dev/null +++ b/mingw-w64-python3.10/0096-distutils-add-windmc-to-cygwinccompiler.patch @@ -0,0 +1,59 @@ +From 9c089d5a4185ae926f5f2e7517d83cf6f92a9f6d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:52:28 +0530 +Subject: [PATCH 096/N] distutils: add windmc to cygwinccompiler + +Signed-off-by: Naveen M K +--- + Lib/distutils/cygwinccompiler.py | 26 ++++++++++++++++++++++++-- + 1 file changed, 24 insertions(+), 2 deletions(-) + +diff --git a/Lib/distutils/cygwinccompiler.py b/Lib/distutils/cygwinccompiler.py +index 75bc17b..6a40e80 100644 +--- a/Lib/distutils/cygwinccompiler.py ++++ b/Lib/distutils/cygwinccompiler.py +@@ -170,6 +170,28 @@ class CygwinCCompiler(UnixCCompiler): + self.spawn(["windres", "-i", src, "-o", obj]) + except DistutilsExecError as msg: + raise CompileError(msg) ++ elif ext == '.mc': ++ # Adapted from msvc9compiler: ++ # ++ # Compile .MC to .RC file to .RES file. ++ # * '-h dir' specifies the directory for the generated include file ++ # * '-r dir' specifies the target directory of the generated RC file and the binary message resource it includes ++ # ++ # For now (since there are no options to change this), ++ # we use the source-directory for the include file and ++ # the build directory for the RC file and message ++ # resources. This works at least for win32all. ++ h_dir = os.path.dirname(src) ++ rc_dir = os.path.dirname(obj) ++ try: ++ # first compile .MC to .RC and .H file ++ self.spawn(['windmc'] + ['-h', h_dir, '-r', rc_dir] + [src]) ++ base, _ = os.path.splitext(os.path.basename(src)) ++ rc_file = os.path.join(rc_dir, base + '.rc') ++ # then compile .RC to .RES file ++ self.spawn(['windres', '-i', rc_file, '-o', obj]) ++ except DistutilsExecError as msg: ++ raise CompileError(msg) + else: # for other files use the C-compiler + try: + self.spawn(self.compiler_so + cc_args + [src, '-o', obj] + +@@ -264,9 +286,9 @@ class CygwinCCompiler(UnixCCompiler): + base, ext = os.path.splitext(src_name) + # use 'normcase' only for resource suffixes + ext_normcase = os.path.normcase(ext) +- if ext_normcase in ['.rc','.res']: ++ if ext_normcase in ['.rc', '.res', '.mc']: + ext = ext_normcase +- if ext not in (self.src_extensions + ['.rc','.res']): ++ if ext not in (self.src_extensions + ['.rc', '.res', '.mc']): + raise UnknownFileError("unknown file type '%s' (from '%s')" % \ + (ext, src_name)) + base = os.path.splitdrive(base)[1] # Chop off the drive +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0097-distutils-fix-msvc9-import.patch b/mingw-w64-python3.10/0097-distutils-fix-msvc9-import.patch new file mode 100644 index 0000000000..3df783c9f7 --- /dev/null +++ b/mingw-w64-python3.10/0097-distutils-fix-msvc9-import.patch @@ -0,0 +1,39 @@ +From 3f2d640f0c1dda5b2a37385ae17c19276494717e Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Thu, 17 Jun 2021 18:52:24 +0530 +Subject: [PATCH 097/N] distutils: fix msvc9 import +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Алексей +Signed-off-by: Naveen M K +--- + Lib/distutils/msvc9compiler.py | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Lib/distutils/msvc9compiler.py b/Lib/distutils/msvc9compiler.py +index a7976fb..c341679 100644 +--- a/Lib/distutils/msvc9compiler.py ++++ b/Lib/distutils/msvc9compiler.py +@@ -291,8 +291,6 @@ def query_vcvarsall(version, arch="x86"): + + # More globals + VERSION = get_build_version() +-if VERSION < 8.0: +- raise DistutilsPlatformError("VC %0.1f is not supported by this module" % VERSION) + # MACROS = MacroExpander(VERSION) + + class MSVCCompiler(CCompiler) : +@@ -327,6 +325,8 @@ class MSVCCompiler(CCompiler) : + + def __init__(self, verbose=0, dry_run=0, force=0): + CCompiler.__init__ (self, verbose, dry_run, force) ++ if VERSION < 8.0: ++ raise DistutilsPlatformError("VC %0.1f is not supported by this module" % VERSION) + self.__version = VERSION + self.__root = r"Software\Microsoft\VisualStudio" + # self.__macros = MACROS +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0098-distutils-mingw-add-LIBPL-to-library-dirs.patch b/mingw-w64-python3.10/0098-distutils-mingw-add-LIBPL-to-library-dirs.patch new file mode 100644 index 0000000000..9865368af2 --- /dev/null +++ b/mingw-w64-python3.10/0098-distutils-mingw-add-LIBPL-to-library-dirs.patch @@ -0,0 +1,27 @@ +From d7aa0ff8ef74ee6f3a94dd8572bda99321c5879c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:52:06 +0530 +Subject: [PATCH 098/N] distutils: mingw add LIBPL to library dirs + +Signed-off-by: Naveen M K +--- + Lib/distutils/command/build_ext.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Lib/distutils/command/build_ext.py b/Lib/distutils/command/build_ext.py +index 1dbdfe0..1598735 100644 +--- a/Lib/distutils/command/build_ext.py ++++ b/Lib/distutils/command/build_ext.py +@@ -218,7 +218,7 @@ class build_ext(Command): + + # For extensions under Cygwin, Python's library directory must be + # appended to library_dirs +- if sys.platform[:6] == 'cygwin': ++ if sys.platform[:6] == 'cygwin' or self.plat_name.startswith(('mingw')): + if sys.executable.startswith(os.path.join(sys.exec_prefix, "bin")): + # building third party extensions + config_dir_name = os.path.basename(sysconfig.get_config_var('LIBPL')) +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0099-distutils-Change-the-get_platform-method-in-distutil.patch b/mingw-w64-python3.10/0099-distutils-Change-the-get_platform-method-in-distutil.patch new file mode 100644 index 0000000000..2e2ba5ce66 --- /dev/null +++ b/mingw-w64-python3.10/0099-distutils-Change-the-get_platform-method-in-distutil.patch @@ -0,0 +1,44 @@ +From c347c9bbb8f570af631681f8feaa3466c2bd9d8a Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Tue, 21 Sep 2021 21:37:23 +0200 +Subject: [PATCH 099/N] distutils: Change the `get_platform()` method in + distutils to match sysconfig + +This would possibly fix building wheels when mingw python +is used and would be unique to each python same as EXT_SUFFIX. + +Signed-off-by: Naveen M K +--- + Lib/distutils/util.py | 16 ++++++++++++++-- + 1 file changed, 14 insertions(+), 2 deletions(-) + +diff --git a/Lib/distutils/util.py b/Lib/distutils/util.py +index ed9d509..28e623b 100644 +--- a/Lib/distutils/util.py ++++ b/Lib/distutils/util.py +@@ -37,8 +37,20 @@ def get_host_platform(): + + """ + if os.name == 'nt': +- if 'GCC' in sys.version: +- return 'mingw' ++ if 'gcc' in sys.version.lower(): ++ if 'ucrt' in sys.version.lower(): ++ if 'amd64' in sys.version.lower(): ++ return 'mingw_x86_64_ucrt' ++ return 'mingw_i686_ucrt' ++ if 'clang' in sys.version.lower(): ++ if 'amd64' in sys.version.lower(): ++ return 'mingw_x86_64_clang' ++ if 'arm64' in sys.version.lower(): ++ return 'mingw_aarch64' ++ return 'mingw_i686_clang' ++ if 'amd64' in sys.version.lower(): ++ return 'mingw_x86_64' ++ return 'mingw_i686' + if 'amd64' in sys.version.lower(): + return 'win-amd64' + if '(arm)' in sys.version.lower(): +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0100-build-Fix-ncursesw-include-lookup.patch b/mingw-w64-python3.10/0100-build-Fix-ncursesw-include-lookup.patch new file mode 100644 index 0000000000..28410aa5fc --- /dev/null +++ b/mingw-w64-python3.10/0100-build-Fix-ncursesw-include-lookup.patch @@ -0,0 +1,67 @@ +From 97d01b91031fd3d8a9a31b4657dd5596c0311b55 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= + +Date: Thu, 17 Jun 2021 18:52:09 +0530 +Subject: [PATCH 100/N] build: Fix ncursesw include lookup + +Mirror what is already done for libffi; Look it up via +pkg-config and use the exported path via sysconfig in setup.py + +Signed-off-by: Naveen M K +--- + Makefile.pre.in | 1 + + configure.ac | 9 ++++++++- + setup.py | 2 +- + 3 files changed, 10 insertions(+), 2 deletions(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index e526be2..da1d638 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -319,6 +319,7 @@ IO_OBJS= \ + ########################################################################## + + LIBFFI_INCLUDEDIR= @LIBFFI_INCLUDEDIR@ ++NCURSESW_INCLUDEDIR= @NCURSESW_INCLUDEDIR@ + + ########################################################################## + # Parser +diff --git a/configure.ac b/configure.ac +index ca7e7a2..ee6db8e 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -5603,10 +5603,17 @@ then + [Define if you have struct stat.st_mtimensec]) + fi + ++if test -n "$PKG_CONFIG"; then ++ NCURSESW_INCLUDEDIR="`"$PKG_CONFIG" ncursesw --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`" ++else ++ NCURSESW_INCLUDEDIR="" ++fi ++AC_SUBST(NCURSESW_INCLUDEDIR) ++ + # first curses header check + ac_save_cppflags="$CPPFLAGS" + if test "$cross_compiling" = no; then +- CPPFLAGS="$CPPFLAGS -I/usr/include/ncursesw" ++ CPPFLAGS="$CPPFLAGS -I$NCURSESW_INCLUDEDIR" + fi + + AC_CHECK_HEADERS(curses.h ncurses.h) +diff --git a/setup.py b/setup.py +index 5eb9b07..67e290a 100644 +--- a/setup.py ++++ b/setup.py +@@ -1192,7 +1192,7 @@ class PyBuildExt(build_ext): + if curses_library == 'ncursesw': + curses_defines.append(('HAVE_NCURSESW', '1')) + if not CROSS_COMPILING: +- curses_includes.append('/usr/include/ncursesw') ++ curses_includes.append(sysconfig.get_config_var("NCURSESW_INCLUDEDIR")) + # Bug 1464056: If _curses.so links with ncursesw, + # _curses_panel.so must link with panelw. + panel_library = 'panelw' +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0101-tests-fix-test_bytes.patch b/mingw-w64-python3.10/0101-tests-fix-test_bytes.patch new file mode 100644 index 0000000000..06c4e5fc3e --- /dev/null +++ b/mingw-w64-python3.10/0101-tests-fix-test_bytes.patch @@ -0,0 +1,29 @@ +From 14dd62fba06c2b2c369d27049cc25baf54929e9b Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Fri, 23 Jul 2021 08:51:32 +0200 +Subject: [PATCH 101/N] tests: fix test_bytes + +%p has different casing with mingw-w64, but it's implementation defined. +Change the test to the mingw-w64 variant. + +Signed-off-by: Naveen M K +--- + Lib/test/test_bytes.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Lib/test/test_bytes.py b/Lib/test/test_bytes.py +index 13ad238..65181e0 100644 +--- a/Lib/test/test_bytes.py ++++ b/Lib/test/test_bytes.py +@@ -1075,7 +1075,7 @@ class BytesTest(BaseBytesTest, unittest.TestCase): + + if os.name == 'nt': + # Windows (MSCRT) +- ptr_format = '0x%0{}X'.format(2 * sizeof_ptr) ++ ptr_format = '0x%0{}x'.format(2 * sizeof_ptr) + def ptr_formatter(ptr): + return (ptr_format % ptr) + else: +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0102-time-fix-strftime-not-raising-for-invalid-year-value.patch b/mingw-w64-python3.10/0102-time-fix-strftime-not-raising-for-invalid-year-value.patch new file mode 100644 index 0000000000..e4bdbb1309 --- /dev/null +++ b/mingw-w64-python3.10/0102-time-fix-strftime-not-raising-for-invalid-year-value.patch @@ -0,0 +1,30 @@ +From 1dba7da22bed0dcf8e06fb225141049e46d67665 Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Fri, 23 Jul 2021 08:52:50 +0200 +Subject: [PATCH 102/N] time: fix strftime not raising for invalid year + values + +It's crt specific and not compiler specific. +This fixes a test case in test_time + +Signed-off-by: Naveen M K +--- + Modules/timemodule.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Modules/timemodule.c b/Modules/timemodule.c +index 4caacc3..4787fa3 100644 +--- a/Modules/timemodule.c ++++ b/Modules/timemodule.c +@@ -759,7 +759,7 @@ time_strftime(PyObject *self, PyObject *args) + return NULL; + } + +-#if defined(_MSC_VER) || (defined(__sun) && defined(__SVR4)) || defined(_AIX) || defined(__VXWORKS__) ++#if defined(MS_WINDOWS) || (defined(__sun) && defined(__SVR4)) || defined(_AIX) || defined(__VXWORKS__) + if (buf.tm_year + 1900 < 1 || 9999 < buf.tm_year + 1900) { + PyErr_SetString(PyExc_ValueError, + "strftime() requires year in [1; 9999]"); +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0103-ctypes-find_library-c-should-return-None-with-ucrt.patch b/mingw-w64-python3.10/0103-ctypes-find_library-c-should-return-None-with-ucrt.patch new file mode 100644 index 0000000000..456cb1dfd8 --- /dev/null +++ b/mingw-w64-python3.10/0103-ctypes-find_library-c-should-return-None-with-ucrt.patch @@ -0,0 +1,43 @@ +From db63bc40657c78ce74ebd97f66546cdd09c561ce Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Fri, 23 Jul 2021 18:23:58 +0200 +Subject: [PATCH 103/N] ctypes: find_library('c') should return None with + ucrt + +Just like with MSVC. This fixes a test in test_ctypes. + +Signed-off-by: Naveen M K +--- + Lib/ctypes/util.py | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/Lib/ctypes/util.py b/Lib/ctypes/util.py +index 0c2510e..48ddb3b 100644 +--- a/Lib/ctypes/util.py ++++ b/Lib/ctypes/util.py +@@ -31,6 +31,12 @@ if os.name == "nt": + # else we don't know what version of the compiler this is + return None + ++ def find_msvcrt_mingw(): ++ is_ucrt = 'clang' in sys.version.lower() or 'ucrt' in sys.version.lower() ++ if is_ucrt: ++ return None ++ return 'msvcrt.dll' ++ + def find_msvcrt(): + """Return the name of the VC runtime dll""" + version = _get_build_version() +@@ -54,6 +60,9 @@ if os.name == "nt": + + def find_library(name): + if name in ('c', 'm'): ++ import sysconfig ++ if sysconfig.get_platform().startswith('mingw'): ++ return find_msvcrt_mingw() + return find_msvcrt() + # See MSDN for the REAL search order. + for directory in os.environ['PATH'].split(os.pathsep): +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0104-build-Disable-checks-for-dlopen-dlfcn.patch b/mingw-w64-python3.10/0104-build-Disable-checks-for-dlopen-dlfcn.patch new file mode 100644 index 0000000000..db247a1a9a --- /dev/null +++ b/mingw-w64-python3.10/0104-build-Disable-checks-for-dlopen-dlfcn.patch @@ -0,0 +1,68 @@ +From 38bf0a1b25d07fbf4e05c4efb4f9058d3fa8faef Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Sun, 25 Jul 2021 13:54:12 +0200 +Subject: [PATCH 104/N] build: Disable checks for dlopen/dlfcn + +While it is (potentially) available with mingw we don't want to use it, so skip any +checks for it. + +Signed-off-by: Naveen M K +--- + configure.ac | 20 +++++++++++++++++--- + 1 file changed, 17 insertions(+), 3 deletions(-) + +diff --git a/configure.ac b/configure.ac +index ee6db8e..164147c 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2420,7 +2420,7 @@ dnl AC_MSG_RESULT($cpp_type) + + # checks for header files + AC_HEADER_STDC +-AC_CHECK_HEADERS(asm/types.h crypt.h conio.h direct.h dlfcn.h errno.h \ ++AC_CHECK_HEADERS(asm/types.h crypt.h conio.h direct.h errno.h \ + fcntl.h grp.h \ + ieeefp.h io.h langinfo.h libintl.h process.h \ + shadow.h signal.h stropts.h termios.h \ +@@ -2435,6 +2435,12 @@ libutil.h sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \ + linux/tipc.h linux/random.h spawn.h util.h alloca.h endian.h \ + sys/endian.h sys/sysmacros.h linux/memfd.h linux/wait.h sys/memfd.h \ + sys/mman.h sys/eventfd.h) ++ ++case $host in ++ *-*-mingw*) ;; ++ *) AC_CHECK_HEADERS([dlfcn.h]);; ++esac ++ + AC_HEADER_DIRENT + AC_HEADER_MAJOR + +@@ -3096,7 +3102,12 @@ AC_MSG_RESULT($SHLIBS) + + # checks for libraries + AC_CHECK_LIB(sendfile, sendfile) +-AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV ++ ++case $host in ++ *-*-mingw*) ;; ++ *) AC_CHECK_LIB(dl, dlopen) ;; # Dynamic linking for SunOS/Solaris and SYSV ++esac ++ + AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX + + # checks for uuid.h location +@@ -5012,7 +5023,10 @@ then + [define to 1 if your sem_getvalue is broken.]) + fi + +-AC_CHECK_DECLS([RTLD_LAZY, RTLD_NOW, RTLD_GLOBAL, RTLD_LOCAL, RTLD_NODELETE, RTLD_NOLOAD, RTLD_DEEPBIND, RTLD_MEMBER], [], [], [[#include ]]) ++case $host in ++ *-*-mingw*) ;; ++ *) AC_CHECK_DECLS([RTLD_LAZY, RTLD_NOW, RTLD_GLOBAL, RTLD_LOCAL, RTLD_NODELETE, RTLD_NOLOAD, RTLD_DEEPBIND, RTLD_MEMBER], [], [], [[#include ]]);; ++esac + + # determine what size digit to use for Python's longs + AC_MSG_CHECKING([digit size for Python's longs]) +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0105-Fix-install-location-of-the-import-library.patch b/mingw-w64-python3.10/0105-Fix-install-location-of-the-import-library.patch new file mode 100644 index 0000000000..f03854042d --- /dev/null +++ b/mingw-w64-python3.10/0105-Fix-install-location-of-the-import-library.patch @@ -0,0 +1,26 @@ +From e94e69160345461948a2e490df3e980479874904 Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Sun, 25 Jul 2021 15:46:01 +0200 +Subject: [PATCH 105/N] Fix install location of the import library + +Signed-off-by: Naveen M K +--- + Makefile.pre.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index da1d638..c54015a 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -1742,7 +1742,7 @@ libainstall: @DEF_MAKE_RULE@ python-config + if test -d $(LIBRARY); then :; else \ + if test "$(PYTHONFRAMEWORKDIR)" = no-framework; then \ + if test "$(SHLIB_SUFFIX)" = .dll -o "$(SHLIB_SUFFIX)" = .pyd; then \ +- $(INSTALL_DATA) $(LDLIBRARY) $(DESTDIR)$(LIBPL) ; \ ++ $(INSTALL_DATA) $(LDLIBRARY) $(DESTDIR)$(LIBDIR) ; \ + else \ + $(INSTALL_DATA) $(LIBRARY) $(DESTDIR)$(LIBPL)/$(LIBRARY) ; \ + fi; \ +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0106-Set-MSYS2_ARG_CONV_EXCL-for-the-shared-Python-module.patch b/mingw-w64-python3.10/0106-Set-MSYS2_ARG_CONV_EXCL-for-the-shared-Python-module.patch new file mode 100644 index 0000000000..c86f076fd6 --- /dev/null +++ b/mingw-w64-python3.10/0106-Set-MSYS2_ARG_CONV_EXCL-for-the-shared-Python-module.patch @@ -0,0 +1,28 @@ +From d6a1a6cb232e37bba31c4ddbc7218fbec50b0ccc Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Sun, 25 Jul 2021 15:46:54 +0200 +Subject: [PATCH 106/N] Set MSYS2_ARG_CONV_EXCL for the shared Python module + install + +Otherwise one has to set it when calling "make install". + +Signed-off-by: Naveen M K +--- + Makefile.pre.in | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index c54015a..0c7149b 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -1789,6 +1789,7 @@ endif + # Install the dynamically loadable modules + # This goes into $(exec_prefix) + sharedinstall: sharedmods ++ MSYS2_ARG_CONV_EXCL="--prefix=;--install-scripts=;--install-platlib=" \ + $(RUNSHARED) $(PYTHON_FOR_BUILD) $(srcdir)/setup.py install \ + --prefix=$(prefix) \ + --install-scripts=$(BINDIR) \ +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0107-build-Integrate-venvlauncher-build-installation-into.patch b/mingw-w64-python3.10/0107-build-Integrate-venvlauncher-build-installation-into.patch new file mode 100644 index 0000000000..71e3c4d8c8 --- /dev/null +++ b/mingw-w64-python3.10/0107-build-Integrate-venvlauncher-build-installation-into.patch @@ -0,0 +1,81 @@ +From 3159763aba59b7ebbaf5972be183636a7efdca5d Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Sun, 25 Jul 2021 16:53:35 +0200 +Subject: [PATCH 107/N] build: Integrate venvlauncher build/installation into + the Makefile + +This is required for venv creation on Windows. +Ideally this would use the venv specific launcher (PC/launcher.c), +but a copy of main binary seems to work as well for now. + +Signed-off-by: Naveen M K +--- + Makefile.pre.in | 17 +++++++++++++++-- + 1 file changed, 15 insertions(+), 2 deletions(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index 0c7149b..b91fadb 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -163,6 +163,7 @@ BINLIBDEST= @BINLIBDEST@ + LIBDEST= $(SCRIPTDIR)/python$(VERSION) + INCLUDEPY= $(INCLUDEDIR)/python$(LDVERSION) + CONFINCLUDEPY= $(CONFINCLUDEDIR)/python$(LDVERSION) ++VENVLAUNCHERDIR= $(BINLIBDEST)/venv/scripts/nt + + # Symbols used for using shared libraries + SHLIB_SUFFIX= @SHLIB_SUFFIX@ +@@ -270,6 +271,8 @@ LIBOBJS= @LIBOBJS@ + PYTHON= python$(EXE) + BUILDPYTHON= python$(BUILDEXE) + BUILDPYTHONW= pythonw$(BUILDEXE) ++BUILDVENVLAUNCHER= venvlauncher$(BUILDEXE) ++BUILDVENVWLAUNCHER= venvwlauncher$(BUILDEXE) + + PYTHON_FOR_REGEN?=@PYTHON_FOR_REGEN@ + UPDATE_FILE=$(PYTHON_FOR_REGEN) $(srcdir)/Tools/scripts/update_file.py +@@ -485,7 +488,7 @@ DTRACE_DEPS = \ + + # Default target + all: @DEF_MAKE_ALL_RULE@ +-build_all: check-clean-src $(BUILDPYTHON) $(BUILDPYTHONW) oldsharedmods sharedmods gdbhooks \ ++build_all: check-clean-src $(BUILDPYTHON) $(BUILDPYTHONW) $(BUILDVENVLAUNCHER) $(BUILDVENVWLAUNCHER) oldsharedmods sharedmods gdbhooks \ + Programs/_testembed python-config + + # Check that the source is clean when building out of source. +@@ -614,6 +617,14 @@ $(BUILDPYTHONW): Programs/python.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY) pythonw + $(BUILDPYTHON): Programs/python.o $(LIBRARY_DEPS) python_exe.o + $(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -municode -o $@ Programs/python.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) python_exe.o + ++# FIXME: build these from PC/launcher.c instead ++$(BUILDVENVLAUNCHER): $(BUILDPYTHON) ++ cp $(BUILDPYTHON) $(BUILDVENVLAUNCHER) ++ ++# FIXME: build these from PC/launcher.c instead ++$(BUILDVENVWLAUNCHER): $(BUILDPYTHONW) ++ cp $(BUILDPYTHONW) $(BUILDVENVWLAUNCHER) ++ + platform: $(BUILDPYTHON) pybuilddir.txt + $(RUNSHARED) $(PYTHON_FOR_BUILD) -c 'import sys ; from sysconfig import get_platform ; print("%s-%d.%d" % (get_platform(), *sys.version_info[:2]))' >platform + +@@ -1347,7 +1358,7 @@ $(DESTSHARED): + # Install the interpreter with $(VERSION) affixed + # This goes into $(exec_prefix) + altbininstall: $(BUILDPYTHON) @FRAMEWORKPYTHONW@ +- @for i in $(BINDIR) $(LIBDIR); \ ++ @for i in $(BINDIR) $(LIBDIR) $(VENVLAUNCHERDIR); \ + do \ + if test ! -d $(DESTDIR)$$i; then \ + echo "Creating directory $$i"; \ +@@ -1358,6 +1369,8 @@ altbininstall: $(BUILDPYTHON) @FRAMEWORKPYTHONW@ + if test "$(PYTHONFRAMEWORKDIR)" = "no-framework" ; then \ + $(INSTALL_PROGRAM) $(BUILDPYTHON) $(DESTDIR)$(BINDIR)/python$(LDVERSION)$(EXE); \ + $(INSTALL_PROGRAM) $(BUILDPYTHONW) $(DESTDIR)$(BINDIR)/python3w$(EXE); \ ++ $(INSTALL_PROGRAM) $(BUILDPYTHON) $(DESTDIR)$(VENVLAUNCHERDIR)/python$(EXE); \ ++ $(INSTALL_PROGRAM) $(BUILDPYTHONW) $(DESTDIR)$(VENVLAUNCHERDIR)/pythonw$(EXE); \ + else \ + $(INSTALL_PROGRAM) $(STRIPFLAG) Mac/pythonw $(DESTDIR)$(BINDIR)/python$(LDVERSION)$(EXE); \ + fi +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0108-configure.ac-set-_WIN32_WINNT-version.patch b/mingw-w64-python3.10/0108-configure.ac-set-_WIN32_WINNT-version.patch new file mode 100644 index 0000000000..aad268ac2a --- /dev/null +++ b/mingw-w64-python3.10/0108-configure.ac-set-_WIN32_WINNT-version.patch @@ -0,0 +1,29 @@ +From 2b83ecfaa7c76175966bdf0fdb2b1f6b3f9a8169 Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Sun, 1 Aug 2021 15:18:50 +0200 +Subject: [PATCH 108/N] configure.ac: set _WIN32_WINNT version + +Signed-off-by: Naveen M K +--- + configure.ac | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 164147c..dd21dfd 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3470,6 +3470,11 @@ else + fi]) + AC_MSG_RESULT($with_dbmliborder) + ++case $host in ++ *-*-mingw*) ++ CFLAGS_NODIST="$CFLAGS_NODIST -D_WIN32_WINNT=0x0601";; ++esac ++ + # Determine if windows modules should be used. + AC_SUBST(USE_WIN32_MODULE) + USE_WIN32_MODULE='#' +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0109-configure.ac-don-t-check-for-clock_-functions.patch b/mingw-w64-python3.10/0109-configure.ac-don-t-check-for-clock_-functions.patch new file mode 100644 index 0000000000..822ffef48e --- /dev/null +++ b/mingw-w64-python3.10/0109-configure.ac-don-t-check-for-clock_-functions.patch @@ -0,0 +1,38 @@ +From 59069e28f60748581badbd6b8b38d33fbf1fbd64 Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Sun, 1 Aug 2021 18:35:17 +0200 +Subject: [PATCH 109/N] configure.ac: don't check for clock_ functions + +They shouldn't be exposed on Windows and lead to winpthread being linked in + +Signed-off-by: Naveen M K +--- + configure.ac | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/configure.ac b/configure.ac +index dd21dfd..e958d1f 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -4367,6 +4367,9 @@ char *r = crypt_r("", "", &d); + []) + ) + ++case $host in ++ *-*-mingw*) ;; ++ *) + AC_CHECK_FUNCS(clock_gettime, [], [ + AC_CHECK_LIB(rt, clock_gettime, [ + LIBS="$LIBS -lrt" +@@ -4387,6 +4390,8 @@ AC_CHECK_FUNCS(clock_settime, [], [ + AC_DEFINE(HAVE_CLOCK_SETTIME, 1) + ]) + ]) ++ ;; ++esac + + AC_MSG_CHECKING(for major, minor, and makedev) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0110-expanduser-normpath-paths-coming-from-env-vars.patch b/mingw-w64-python3.10/0110-expanduser-normpath-paths-coming-from-env-vars.patch new file mode 100644 index 0000000000..7516449ae9 --- /dev/null +++ b/mingw-w64-python3.10/0110-expanduser-normpath-paths-coming-from-env-vars.patch @@ -0,0 +1,37 @@ +From 92f9f46cde54368cb0d696dff7e579083f3c4ef0 Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Sun, 8 Aug 2021 10:17:35 +0200 +Subject: [PATCH 110/N] expanduser: normpath paths coming from env vars + +This makes sure we get the same paths as with related functions in pathlib. + +Signed-off-by: Naveen M K +--- + Lib/ntpath.py | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Lib/ntpath.py b/Lib/ntpath.py +index 1f1b441..0ecde0c 100644 +--- a/Lib/ntpath.py ++++ b/Lib/ntpath.py +@@ -319,7 +319,7 @@ def expanduser(path): + if 'USERPROFILE' in os.environ: + userhome = os.environ['USERPROFILE'] + elif not 'HOMEPATH' in os.environ: +- return path ++ return os.path.normpath(path) + else: + try: + drive = os.environ['HOMEDRIVE'] +@@ -346,7 +346,7 @@ def expanduser(path): + if isinstance(path, bytes): + userhome = os.fsencode(userhome) + +- return userhome + path[i:] ++ return os.path.normpath(userhome) + path[i:] + + + # Expand paths containing shell variable substitutions. +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0111-Add-support-for-Windows-7-Python-3.9.patch b/mingw-w64-python3.10/0111-Add-support-for-Windows-7-Python-3.9.patch new file mode 100644 index 0000000000..154e713689 --- /dev/null +++ b/mingw-w64-python3.10/0111-Add-support-for-Windows-7-Python-3.9.patch @@ -0,0 +1,177 @@ +From 8f8495c95715bf679f5756e12e4787aada9c3613 Mon Sep 17 00:00:00 2001 +From: Naveen M K +Date: Thu, 17 Jun 2021 18:52:39 +0530 +Subject: [PATCH 111/N] Add support for Windows 7 Python 3.9 + +Signed-off-by: Naveen M K +--- + Modules/posixmodule.c | 22 +++++++++++------ + PC/getpathp.c | 57 +++++++++++++++++++++++++++++++++++++++---- + configure.ac | 2 +- + 3 files changed, 68 insertions(+), 13 deletions(-) + +diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c +index 65edb10..e31a2f8 100644 +--- a/Modules/posixmodule.c ++++ b/Modules/posixmodule.c +@@ -20,7 +20,7 @@ + + FSCTL_GET_REPARSE_POINT is not exported with WIN32_LEAN_AND_MEAN. */ + # include +-# include ++# include + #endif + + #ifdef __VXWORKS__ +@@ -4450,7 +4450,6 @@ os__path_splitroot_impl(PyObject *module, path_t *path) + wchar_t *buffer; + wchar_t *end; + PyObject *result = NULL; +- HRESULT ret; + + buffer = (wchar_t*)PyMem_Malloc(sizeof(wchar_t) * (wcslen(path->wide) + 1)); + if (!buffer) { +@@ -4462,18 +4461,26 @@ os__path_splitroot_impl(PyObject *module, path_t *path) + } + + Py_BEGIN_ALLOW_THREADS +- ret = PathCchSkipRoot(buffer, &end); ++ if (buffer[0] && buffer[1] == L':') { ++ if (buffer[2] == L'\\') { ++ end = &buffer[3]; ++ } else { ++ end = &buffer[2]; ++ } ++ } else { ++ end = PathSkipRootW(buffer); ++ } + Py_END_ALLOW_THREADS +- if (FAILED(ret)) { ++ if (!end || end == buffer) { + result = Py_BuildValue("sO", "", path->object); +- } else if (end != buffer) { ++ } else if (!*end) { ++ result = Py_BuildValue("Os", path->object, ""); ++ } else { + size_t rootLen = (size_t)(end - buffer); + result = Py_BuildValue("NN", + PyUnicode_FromWideChar(path->wide, rootLen), + PyUnicode_FromWideChar(path->wide + rootLen, -1) + ); +- } else { +- result = Py_BuildValue("Os", path->object, ""); + } + PyMem_Free(buffer); + +@@ -4481,6 +4488,7 @@ os__path_splitroot_impl(PyObject *module, path_t *path) + } + + ++ + #endif /* MS_WINDOWS */ + + +diff --git a/PC/getpathp.c b/PC/getpathp.c +index 603a1eb..26ade03 100644 +--- a/PC/getpathp.c ++++ b/PC/getpathp.c +@@ -90,7 +90,6 @@ + #endif + + #include +-#include + #include + + #ifdef HAVE_SYS_TYPES_H +@@ -250,14 +249,43 @@ ismodule(wchar_t *filename, int update_filename) + stuff as fits will be appended. + */ + ++static int _PathCchCombineEx_Initialized = 0; ++typedef HRESULT(__stdcall *PPathCchCombineEx) (PWSTR pszPathOut, size_t cchPathOut, ++ PCWSTR pszPathIn, PCWSTR pszMore, ++ unsigned long dwFlags); ++static PPathCchCombineEx _PathCchCombineEx; ++ + static void + join(wchar_t *buffer, const wchar_t *stuff) + { +- if (FAILED(PathCchCombineEx(buffer, MAXPATHLEN+1, buffer, stuff, 0))) { +- Py_FatalError("buffer overflow in getpathp.c's join()"); ++ if (_PathCchCombineEx_Initialized == 0) { ++ HMODULE pathapi = LoadLibraryExW(L"api-ms-win-core-path-l1-1-0.dll", NULL, ++ LOAD_LIBRARY_SEARCH_SYSTEM32); ++ if (pathapi) { ++ _PathCchCombineEx = (PPathCchCombineEx)GetProcAddress(pathapi, "PathCchCombineEx"); ++ } ++ else { ++ _PathCchCombineEx = NULL; ++ } ++ _PathCchCombineEx_Initialized = 1; ++ } ++ ++ if (_PathCchCombineEx) { ++ if (FAILED(_PathCchCombineEx(buffer, MAXPATHLEN+1, buffer, stuff, 0))) { ++ Py_FatalError("buffer overflow in getpathp.c's join()"); ++ } ++ } else { ++ if (!PathCombineW(buffer, buffer, stuff)) { ++ Py_FatalError("buffer overflow in getpathp.c's join()"); ++ } + } + } + ++static int _PathCchCanonicalizeEx_Initialized = 0; ++typedef HRESULT(__stdcall *PPathCchCanonicalizeEx) (PWSTR pszPathOut, size_t cchPathOut, ++ PCWSTR pszPathIn, unsigned long dwFlags); ++static PPathCchCanonicalizeEx _PathCchCanonicalizeEx; ++ + /* Call PathCchCanonicalizeEx(path): remove navigation elements such as "." + and ".." to produce a direct, well-formed path. */ + static PyStatus +@@ -267,8 +295,27 @@ canonicalize(wchar_t *buffer, const wchar_t *path) + return _PyStatus_NO_MEMORY(); + } + +- if (FAILED(PathCchCanonicalizeEx(buffer, MAXPATHLEN + 1, path, 0))) { +- return INIT_ERR_BUFFER_OVERFLOW(); ++ if (_PathCchCanonicalizeEx_Initialized == 0) { ++ HMODULE pathapi = LoadLibraryExW(L"api-ms-win-core-path-l1-1-0.dll", NULL, ++ LOAD_LIBRARY_SEARCH_SYSTEM32); ++ if (pathapi) { ++ _PathCchCanonicalizeEx = (PPathCchCanonicalizeEx)GetProcAddress(pathapi, "PathCchCanonicalizeEx"); ++ } ++ else { ++ _PathCchCanonicalizeEx = NULL; ++ } ++ _PathCchCanonicalizeEx_Initialized = 1; ++ } ++ ++ if (_PathCchCanonicalizeEx) { ++ if (FAILED(_PathCchCanonicalizeEx(buffer, MAXPATHLEN + 1, path, 0))) { ++ return INIT_ERR_BUFFER_OVERFLOW(); ++ } ++ } ++ else { ++ if (!PathCanonicalizeW(buffer, path)) { ++ return INIT_ERR_BUFFER_OVERFLOW(); ++ } + } + return _PyStatus_OK(); + } +diff --git a/configure.ac b/configure.ac +index e958d1f..44e1f74 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -6014,7 +6014,7 @@ AC_MSG_RESULT(done) + # For mingw build need additional library for linking + case $host in + *-*-mingw*) +- LIBS="$LIBS -lversion -lshlwapi -lpathcch" ++ LIBS="$LIBS -lversion -lshlwapi" + AC_PROG_AWK + if test "$AWK" = "gawk"; then + awk_extra_flag="--non-decimal-data" +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0112-CI-test-the-build-and-add-some-mingw-specific-tests.patch b/mingw-w64-python3.10/0112-CI-test-the-build-and-add-some-mingw-specific-tests.patch new file mode 100644 index 0000000000..d9a8fa6ab3 --- /dev/null +++ b/mingw-w64-python3.10/0112-CI-test-the-build-and-add-some-mingw-specific-tests.patch @@ -0,0 +1,590 @@ +From fd0133e2c1c792516096c74d4527be65c77d1cdd Mon Sep 17 00:00:00 2001 +From: Naveen M K +Date: Fri, 18 Jun 2021 17:51:59 +0530 +Subject: [PATCH 112/N] CI: test the build and add some mingw specific tests + +Signed-off-by: Naveen M K +--- + .github/workflows/mingw.yml | 209 ++++++++++++++++++++++++ + mingw_ignorefile.txt | 34 ++++ + mingw_smoketests.py | 310 ++++++++++++++++++++++++++++++++++++ + 3 files changed, 553 insertions(+) + create mode 100644 .github/workflows/mingw.yml + create mode 100644 mingw_ignorefile.txt + create mode 100644 mingw_smoketests.py + +diff --git a/.github/workflows/mingw.yml b/.github/workflows/mingw.yml +new file mode 100644 +index 0000000..eb27adc +--- /dev/null ++++ b/.github/workflows/mingw.yml +@@ -0,0 +1,209 @@ ++name: Build ++on: [push, pull_request, workflow_dispatch] ++ ++jobs: ++ build: ++ runs-on: windows-2022 ++ 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 ++ update: true ++ install: >- ++ make ++ binutils ++ autoconf ++ autoconf-archive ++ automake-wrapper ++ tar ++ gzip ++ ${{ 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 ++ ${{ matrix.prefix }}-tzdata ++ ++ - name: Build Python ++ shell: msys2 {0} ++ run: | ++ set -ex ++ ++ if [ ${{ matrix.msystem }} == "CLANG64" ] ++ then ++ export CC=clang ++ export CXX=clang++ ++ fi ++ autoreconf -vfi ++ ++ rm -Rf _build && mkdir _build && cd _build ++ ++ ../configure \ ++ --prefix=${MINGW_PREFIX} \ ++ --host=${MINGW_CHOST} \ ++ --build=${MINGW_CHOST} \ ++ --enable-shared \ ++ --with-system-expat \ ++ --with-system-ffi \ ++ --with-system-libmpdec \ ++ --without-ensurepip \ ++ --without-c-locale-coercion \ ++ --enable-loadable-sqlite-extensions \ ++ --with-tzpath=${MINGW_PREFIX}/share/zoneinfo \ ++ --enable-optimizations ++ ++ make -j8 ++ ++ - name: Run Smoke Test (build) ++ shell: msys2 {0} ++ run: | ++ SMOKETESTS="$(pwd)/mingw_smoketests.py" ++ cd _build ++ ./python.exe "$SMOKETESTS" ++ MSYSTEM= ./python.exe "$SMOKETESTS" ++ ++ - name: Run tests ++ shell: msys2 {0} ++ run: | ++ IGNOREFILE="$(pwd)/mingw_ignorefile.txt" ++ cd _build ++ MSYSTEM= ./python.exe -m test -j8 --ignorefile "$IGNOREFILE" -W ++ ++ - name: Run broken tests ++ continue-on-error: true ++ shell: msys2 {0} ++ run: | ++ IGNOREFILE="$(pwd)/mingw_ignorefile.txt" ++ cd _build ++ MSYSTEM= ./python.exe -m test -j8 --matchfile "$IGNOREFILE" -W ++ ++ - name: Install ++ shell: msys2 {0} ++ run: | ++ set -ex ++ cd _build ++ ++ pkgdir=python_pkgdir ++ ++ make -j1 install DESTDIR="${pkgdir}" ++ ++ # Fix shebangs ++ _pybasever=$(./python.exe -c "import sys; print(sys.winver);") ++ 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 ++ sed -i "s|#!${pkgdir}${MINGW_PREFIX}/bin/python${_pybasever}.exe|#!/usr/bin/env python${_pybasever}.exe|" "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/config-${_pybasever}/python-config.py ++ ++ # Create version-less aliases ++ 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 ++ ++ - name: Run Smoke Test (installed) ++ shell: msys2 {0} ++ run: | ++ export PYTHONTZPATH="${MINGW_PREFIX}/share/zoneinfo" ++ SMOKETESTS="$(pwd)/mingw_smoketests.py" ++ cd _build ++ cd python_pkgdir/${MINGW_PREFIX}/bin ++ ./python.exe "$SMOKETESTS" ++ MSYSTEM= ./python.exe "$SMOKETESTS" ++ ++ - name: Compress ++ if: always() ++ shell: msys2 {0} ++ run: | ++ cd _build ++ tar -zcf python.tar.gz python_pkgdir/ ++ ++ - name: Upload ++ uses: actions/upload-artifact@v2 ++ if: always() ++ with: ++ name: build-${{ matrix.msystem }} ++ path: _build/python.tar.gz ++ ++ cross: ++ runs-on: ubuntu-latest ++ container: ++ image: archlinux:base-devel ++ steps: ++ - uses: actions/checkout@v2 ++ - name: Install deps ++ run: | ++ pacman --noconfirm -Suuy ++ pacman --needed --noconfirm -S mingw-w64-gcc autoconf-archive autoconf automake python zip ++ ++ - name: Build ++ run: | ++ autoreconf -vfi ++ ++ mkdir _build && cd _build ++ ++ ../configure \ ++ --host=x86_64-w64-mingw32 \ ++ --build=x86_64-pc-linux-gnu \ ++ --enable-shared \ ++ --with-system-expat \ ++ --with-system-ffi \ ++ --with-system-libmpdec \ ++ --without-ensurepip \ ++ --without-c-locale-coercion \ ++ --enable-loadable-sqlite-extensions ++ ++ make -j8 ++ ++ make install DESTDIR="$(pwd)/install" ++ ++ - name: 'Zip files' ++ run: | ++ zip -r install.zip _build/install ++ ++ - name: Upload ++ uses: actions/upload-artifact@v2 ++ with: ++ name: build-cross ++ path: install.zip ++ ++ cross-test: ++ needs: [cross] ++ runs-on: windows-latest ++ steps: ++ - uses: actions/download-artifact@v2 ++ with: ++ name: build-cross ++ ++ - name: 'Run tests' ++ run: | ++ 7z x install.zip ++ ./_build/install/usr/local/bin/python3.exe -c "import sysconfig, pprint; pprint.pprint(sysconfig.get_config_vars())" +diff --git a/mingw_ignorefile.txt b/mingw_ignorefile.txt +new file mode 100644 +index 0000000..dc3802e +--- /dev/null ++++ b/mingw_ignorefile.txt +@@ -0,0 +1,34 @@ ++ctypes.test.test_loading.LoaderTest.test_load_dll_with_flags ++distutils.tests.test_bdist_dumb.BuildDumbTestCase.test_simple_built ++distutils.tests.test_cygwinccompiler.CygwinCCompilerTestCase.test_get_versions ++distutils.tests.test_util.UtilTestCase.test_change_root ++test.datetimetester.TestLocalTimeDisambiguation_Fast.* ++test.datetimetester.TestLocalTimeDisambiguation_Pure.* ++test.test_cmath.CMathTests.test_specific_values ++test.test_cmd_line_script.CmdLineTest.test_consistent_sys_path_for_direct_execution ++test.test_compileall.CommandLineTestsNoSourceEpoch.* ++test.test_compileall.CommandLineTestsWithSourceEpoch.* ++test.test_compileall.CompileallTestsWithoutSourceEpoch.* ++test.test_compileall.CompileallTestsWithSourceEpoch.* ++test.test_import.ImportTests.test_dll_dependency_import ++test.test_math.MathTests.* ++test.test_ntpath.NtCommonTest.test_import ++test.test_os.StatAttributeTests.test_stat_block_device ++test.test_os.TestScandir.test_attributes ++test.test_os.UtimeTests.test_large_time ++test.test_platform.PlatformTest.test_architecture_via_symlink ++test.test_regrtest.ProgramsTestCase.test_pcbuild_rt ++test.test_regrtest.ProgramsTestCase.test_tools_buildbot_test ++test.test_site._pthFileTests.* ++test.test_site.HelperFunctionsTests.* ++test.test_site.StartupImportTests.* ++test.test_ssl.* ++test.test_strptime.CalculationTests.* ++test.test_strptime.StrptimeTests.test_weekday ++test.test_strptime.TimeRETests.test_compile ++test.test_tools.test_i18n.Test_pygettext.test_POT_Creation_Date ++test.test_venv.BasicTest.* ++test.test_venv.EnsurePipTest.* ++# flaky ++test.test__xxsubinterpreters.* ++test.test_asyncio.test_subprocess.SubprocessProactorTests.test_stdin_broken_pipe +\ No newline at end of file +diff --git a/mingw_smoketests.py b/mingw_smoketests.py +new file mode 100644 +index 0000000..70acbd1 +--- /dev/null ++++ b/mingw_smoketests.py +@@ -0,0 +1,310 @@ ++#!/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 ++import sysconfig ++ ++if "MSYSTEM" in os.environ: ++ SEP = "/" ++else: ++ SEP = "\\" ++ ++_UCRT = "clang" in sysconfig.get_platform() or "ucrt" in sysconfig.get_platform() ++ ++ ++class Tests(unittest.TestCase): ++ ++ def test_zoneinfo(self): ++ # https://github.com/msys2-contrib/cpython-mingw/issues/32 ++ import zoneinfo ++ self.assertTrue(any(os.path.exists(p) for p in zoneinfo.TZPATH)) ++ zoneinfo.ZoneInfo("America/Sao_Paulo") ++ ++ def test_userdir_path_sep(self): ++ # Make sure os.path and pathlib use the same path separators ++ from unittest import mock ++ from os.path import expanduser ++ from pathlib import Path ++ ++ profiles = ["C:\\foo", "C:/foo"] ++ for profile in profiles: ++ with mock.patch.dict(os.environ, {"USERPROFILE": profile}): ++ self.assertEqual(expanduser("~"), os.path.normpath(expanduser("~"))) ++ self.assertEqual(str(Path("~").expanduser()), expanduser("~")) ++ self.assertEqual(str(Path.home()), expanduser("~")) ++ ++ def test_sysconfig_schemes(self): ++ # https://github.com/msys2/MINGW-packages/issues/9319 ++ import sysconfig ++ from distutils.dist import Distribution ++ from distutils.command.install import install ++ ++ names = ['scripts', 'purelib', 'platlib', 'data', 'include'] ++ for scheme in ["nt", "nt_user"]: ++ for name in names: ++ c = install(Distribution({"name": "foobar"})) ++ c.user = (scheme == "nt_user") ++ c.finalize_options() ++ if name == "include": ++ dist_path = os.path.dirname(getattr(c, "install_" + "headers")) ++ else: ++ dist_path = getattr(c, "install_" + name) ++ sys_path = sysconfig.get_path(name, scheme) ++ self.assertEqual(dist_path, sys_path, (scheme, name)) ++ ++ def test_ctypes_find_library(self): ++ from ctypes.util import find_library ++ from ctypes import cdll ++ self.assertTrue(cdll.msvcrt) ++ if _UCRT: ++ self.assertIsNone(find_library('c')) ++ else: ++ self.assertEqual(find_library('c'), 'msvcrt.dll') ++ ++ def test_ctypes_dlopen(self): ++ import ctypes ++ import sys ++ self.assertEqual(ctypes.RTLD_GLOBAL, 0) ++ self.assertEqual(ctypes.RTLD_GLOBAL, ctypes.RTLD_LOCAL) ++ self.assertFalse(hasattr(sys, 'setdlopenflags')) ++ self.assertFalse(hasattr(sys, 'getdlopenflags')) ++ self.assertFalse([n for n in dir(os) if n.startswith("RTLD_")]) ++ ++ def test_time_no_unix_stuff(self): ++ import time ++ self.assertFalse([n for n in dir(time) if n.startswith("clock_")]) ++ self.assertFalse([n for n in dir(time) if n.startswith("CLOCK_")]) ++ self.assertFalse([n for n in dir(time) if n.startswith("pthread_")]) ++ self.assertFalse(hasattr(time, 'tzset')) ++ ++ def test_strftime(self): ++ import time ++ with self.assertRaises(ValueError): ++ time.strftime('%Y', (12345,) + (0,) * 8) ++ ++ 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 ++ import curses ++ ++ 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 test_platform_things(self): ++ import sys ++ import sysconfig ++ import platform ++ import importlib.machinery ++ self.assertEqual(sys.implementation.name, "cpython") ++ self.assertEqual(sys.platform, "win32") ++ self.assertTrue(sysconfig.get_platform().startswith("mingw")) ++ self.assertTrue(sysconfig.get_config_var('SOABI').startswith("cpython-")) ++ ext_suffix = sysconfig.get_config_var('EXT_SUFFIX') ++ self.assertTrue(ext_suffix.endswith(".pyd")) ++ self.assertTrue("mingw" in ext_suffix) ++ self.assertEqual(sysconfig.get_config_var('SHLIB_SUFFIX'), ".pyd") ++ ext_suffixes = importlib.machinery.EXTENSION_SUFFIXES ++ self.assertTrue(ext_suffix in ext_suffixes) ++ self.assertTrue(".pyd" in ext_suffixes) ++ self.assertEqual(sys.winver, ".".join(map(str, sys.version_info[:2]))) ++ self.assertEqual(platform.python_implementation(), "CPython") ++ self.assertEqual(platform.system(), "Windows") ++ self.assertTrue(isinstance(sys.api_version, int) and sys.api_version > 0) ++ ++ def test_c_ext_build(self): ++ import tempfile ++ import sys ++ import subprocess ++ import textwrap ++ from pathlib import Path ++ ++ with tempfile.TemporaryDirectory() as tmppro: ++ subprocess.check_call([sys.executable, "-m", "ensurepip", "--user"]) ++ with Path(tmppro, "setup.py").open("w") as f: ++ f.write( ++ textwrap.dedent( ++ """\ ++ from setuptools import setup, Extension ++ ++ setup( ++ name='cwrapper', ++ version='1.0', ++ ext_modules=[ ++ Extension( ++ 'cwrapper', ++ sources=['cwrapper.c']), ++ ], ++ ) ++ """ ++ ) ++ ) ++ with Path(tmppro, "cwrapper.c").open("w") as f: ++ f.write( ++ textwrap.dedent( ++ """\ ++ #include ++ static PyObject * ++ helloworld(PyObject *self, PyObject *args) ++ { ++ printf("Hello World\\n"); ++ return Py_None; ++ } ++ static PyMethodDef ++ myMethods[] = { ++ { "helloworld", helloworld, METH_NOARGS, "Prints Hello World" }, ++ { NULL, NULL, 0, NULL } ++ }; ++ static struct PyModuleDef cwrapper = { ++ PyModuleDef_HEAD_INIT, ++ "cwrapper", ++ "Test Module", ++ -1, ++ myMethods ++ }; ++ ++ PyMODINIT_FUNC ++ PyInit_cwrapper(void) ++ { ++ return PyModule_Create(&cwrapper); ++ } ++ """ ++ ) ++ ) ++ subprocess.check_call( ++ [sys.executable, "-c", "import struct"], ++ ) ++ subprocess.check_call( ++ [ ++ sys.executable, ++ "-m", ++ "pip", ++ "install", ++ "wheel", ++ ], ++ ) ++ subprocess.check_call( ++ [ ++ sys.executable, ++ "-m", ++ "pip", ++ "install", ++ tmppro, ++ ], ++ ) ++ subprocess.check_call( ++ [sys.executable, "-c", "import cwrapper"], ++ ) ++ ++ ++ ++def suite(): ++ return unittest.TestLoader().loadTestsFromName(__name__) ++ ++ ++if __name__ == '__main__': ++ unittest.main(defaultTest='suite') +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0113-smoketests-test-that-_decimal-exists.patch b/mingw-w64-python3.10/0113-smoketests-test-that-_decimal-exists.patch new file mode 100644 index 0000000000..01876ad603 --- /dev/null +++ b/mingw-w64-python3.10/0113-smoketests-test-that-_decimal-exists.patch @@ -0,0 +1,27 @@ +From c6765ac66cdd2a518beb24fee89bf311c0f44ce5 Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Thu, 23 Sep 2021 09:57:56 +0200 +Subject: [PATCH 113/N] smoketests: test that _decimal exists + +Signed-off-by: Naveen M K +--- + mingw_smoketests.py | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/mingw_smoketests.py b/mingw_smoketests.py +index 70acbd1..527aafb 100644 +--- a/mingw_smoketests.py ++++ b/mingw_smoketests.py +@@ -139,6 +139,9 @@ class Tests(unittest.TestCase): + import ctypes + import curses + ++ def test_c_modules_import(self): ++ import _decimal ++ + def test_socket_inet_ntop(self): + import socket + self.assertTrue(hasattr(socket, "inet_ntop")) +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0114-Prefer-sysconfig.python_build.patch b/mingw-w64-python3.10/0114-Prefer-sysconfig.python_build.patch new file mode 100644 index 0000000000..2f2668eca3 --- /dev/null +++ b/mingw-w64-python3.10/0114-Prefer-sysconfig.python_build.patch @@ -0,0 +1,26 @@ +From 210c8cdff32fd39f8b6f1c0093cda49b4816fcd7 Mon Sep 17 00:00:00 2001 +From: Long Nguyen +Date: Fri, 1 Oct 2021 07:28:36 +0700 +Subject: [PATCH 114/N] Prefer sysconfig.python_build + +Signed-off-by: Naveen M K +--- + Lib/distutils/command/build_ext.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Lib/distutils/command/build_ext.py b/Lib/distutils/command/build_ext.py +index 1598735..82a21d2 100644 +--- a/Lib/distutils/command/build_ext.py ++++ b/Lib/distutils/command/build_ext.py +@@ -219,7 +219,7 @@ class build_ext(Command): + # For extensions under Cygwin, Python's library directory must be + # appended to library_dirs + if sys.platform[:6] == 'cygwin' or self.plat_name.startswith(('mingw')): +- if sys.executable.startswith(os.path.join(sys.exec_prefix, "bin")): ++ if not sysconfig.python_build: + # building third party extensions + config_dir_name = os.path.basename(sysconfig.get_config_var('LIBPL')) + self.library_dirs.append(os.path.join(sys.prefix, "lib", +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0115-Define-PY3_DLLNAME-to-fix-build.patch b/mingw-w64-python3.10/0115-Define-PY3_DLLNAME-to-fix-build.patch new file mode 100644 index 0000000000..21cb8df857 --- /dev/null +++ b/mingw-w64-python3.10/0115-Define-PY3_DLLNAME-to-fix-build.patch @@ -0,0 +1,29 @@ +From 5354bf6801cee8770820bc9c0ca187022a0246f4 Mon Sep 17 00:00:00 2001 +From: Naveen M K +Date: Tue, 12 Oct 2021 18:35:21 +0530 +Subject: [PATCH 115/N] Define PY3_DLLNAME to fix build + +PY3_DLLNAME is used in Python/pathconfig.c but isn't +defined. I guess it is useless but it will fix the build. + +Signed-off-by: Naveen M K +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 44e1f74..9538ba6 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3961,7 +3961,7 @@ then + *-*-mingw*) + DYNLOADFILE="dynload_win.o" + extra_machdep_objs="$extra_machdep_objs PC/dl_nt.o" +- CFLAGS_NODIST="$CFLAGS_NODIST -DMS_DLL_ID='\"$VERSION\"'" ++ CFLAGS_NODIST="$CFLAGS_NODIST -DMS_DLL_ID='\"$VERSION\"' -DPY3_DLLNAME='\"libpython3.dll\"'" + ;; + esac + fi +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0116-Commit-regenerated-importlib.patch b/mingw-w64-python3.10/0116-Commit-regenerated-importlib.patch new file mode 100644 index 0000000000..3430ec950a --- /dev/null +++ b/mingw-w64-python3.10/0116-Commit-regenerated-importlib.patch @@ -0,0 +1,5509 @@ +From 2ea5fa382996dc48069fb18fe55491fafd8cbeb8 Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Fri, 29 Oct 2021 10:16:24 +0200 +Subject: [PATCH 116/N] Commit regenerated importlib + +It needs a native Python when building which isn't available when cross compiling + +Generated using "make regen-importlib" with line endings normalized. + +Signed-off-by: Naveen M K +--- + Python/importlib_external.h | 5443 ++++++++++++++++++----------------- + 1 file changed, 2723 insertions(+), 2720 deletions(-) + +diff --git a/Python/importlib_external.h b/Python/importlib_external.h +index 01fdef7..197d525 100644 +--- a/Python/importlib_external.h ++++ b/Python/importlib_external.h +@@ -1,817 +1,752 @@ + /* Auto-generated by Programs/_freeze_importlib.c */ + const unsigned char _Py_M__importlib_bootstrap_external[] = { + 99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +- 0,5,0,0,0,64,0,0,0,115,250,2,0,0,100,0, ++ 0,5,0,0,0,64,0,0,0,115,18,3,0,0,100,0, + 90,0,100,1,97,1,100,2,100,1,108,2,90,2,100,2, + 100,1,108,3,90,3,100,2,100,1,108,4,90,4,100,2, + 100,1,108,5,90,5,100,2,100,1,108,6,90,6,101,4, + 106,7,100,3,107,2,90,8,101,8,114,40,100,2,100,1, + 108,9,90,10,100,2,100,1,108,11,90,11,110,4,100,2, + 100,1,108,12,90,10,101,8,114,51,100,4,100,5,103,2, +- 90,13,110,3,100,5,103,1,90,13,101,14,100,6,100,7, +- 132,0,101,13,68,0,131,1,131,1,115,65,74,0,130,1, +- 101,13,100,2,25,0,90,15,101,16,101,13,131,1,90,17, +- 100,8,160,18,101,13,161,1,90,13,100,9,100,10,132,0, +- 101,13,68,0,131,1,90,19,100,11,90,20,100,12,90,21, +- 101,21,101,20,23,0,90,22,100,13,100,14,132,0,90,23, +- 101,23,131,0,90,24,100,15,100,16,132,0,90,25,100,17, +- 100,18,132,0,90,26,100,19,100,20,132,0,90,27,101,8, +- 114,119,100,21,100,22,132,0,90,28,110,4,100,23,100,22, +- 132,0,90,28,100,24,100,25,132,0,90,29,100,26,100,27, ++ 90,13,110,3,100,5,103,1,90,13,100,6,101,10,106,14, ++ 118,0,114,66,101,13,100,1,100,1,100,7,133,3,25,0, ++ 90,13,101,15,100,8,100,9,132,0,101,13,68,0,131,1, ++ 131,1,115,77,74,0,130,1,101,13,100,2,25,0,90,16, ++ 101,17,101,13,131,1,90,18,100,10,160,19,101,13,161,1, ++ 90,13,100,11,100,12,132,0,101,13,68,0,131,1,90,20, ++ 100,13,90,21,100,14,90,22,101,22,101,21,23,0,90,23, ++ 100,15,100,16,132,0,90,24,101,24,131,0,90,25,100,17, ++ 100,18,132,0,90,26,100,19,100,20,132,0,90,27,100,21, ++ 100,22,132,0,90,28,101,8,114,131,100,23,100,24,132,0, ++ 90,29,110,4,100,25,100,24,132,0,90,29,100,26,100,27, + 132,0,90,30,100,28,100,29,132,0,90,31,100,30,100,31, +- 132,0,90,32,100,32,100,33,132,0,90,33,101,8,114,150, +- 100,34,100,35,132,0,90,34,110,4,100,36,100,35,132,0, +- 90,34,100,112,100,38,100,39,132,1,90,35,101,36,101,35, +- 106,37,131,1,90,38,100,40,160,39,100,41,100,42,161,2, +- 100,43,23,0,90,40,101,41,160,42,101,40,100,42,161,2, +- 90,43,100,44,90,44,100,45,90,45,100,46,103,1,90,46, +- 101,8,114,192,101,46,160,47,100,47,161,1,1,0,101,2, +- 160,48,161,0,90,49,100,48,103,1,90,50,101,50,4,0, +- 90,51,90,52,100,113,100,1,100,49,156,1,100,50,100,51, +- 132,3,90,53,100,52,100,53,132,0,90,54,100,54,100,55, ++ 132,0,90,32,100,32,100,33,132,0,90,33,100,34,100,35, ++ 132,0,90,34,101,8,114,162,100,36,100,37,132,0,90,35, ++ 110,4,100,38,100,37,132,0,90,35,100,114,100,40,100,41, ++ 132,1,90,36,101,37,101,36,106,38,131,1,90,39,100,42, ++ 160,40,100,43,100,44,161,2,100,45,23,0,90,41,101,42, ++ 160,43,101,41,100,44,161,2,90,44,100,46,90,45,100,47, ++ 90,46,100,48,103,1,90,47,101,8,114,204,101,47,160,48, ++ 100,49,161,1,1,0,101,2,160,49,161,0,90,50,100,50, ++ 103,1,90,51,101,51,4,0,90,52,90,53,100,115,100,1, ++ 100,51,156,1,100,52,100,53,132,3,90,54,100,54,100,55, + 132,0,90,55,100,56,100,57,132,0,90,56,100,58,100,59, + 132,0,90,57,100,60,100,61,132,0,90,58,100,62,100,63, + 132,0,90,59,100,64,100,65,132,0,90,60,100,66,100,67, +- 132,0,90,61,100,68,100,69,132,0,90,62,100,114,100,70, +- 100,71,132,1,90,63,100,115,100,72,100,73,132,1,90,64, +- 100,116,100,75,100,76,132,1,90,65,100,77,100,78,132,0, +- 90,66,101,67,131,0,90,68,100,113,100,1,101,68,100,79, +- 156,2,100,80,100,81,132,3,90,69,71,0,100,82,100,83, +- 132,0,100,83,131,2,90,70,71,0,100,84,100,85,132,0, +- 100,85,131,2,90,71,71,0,100,86,100,87,132,0,100,87, +- 101,71,131,3,90,72,71,0,100,88,100,89,132,0,100,89, +- 131,2,90,73,71,0,100,90,100,91,132,0,100,91,101,73, +- 101,72,131,4,90,74,71,0,100,92,100,93,132,0,100,93, +- 101,73,101,71,131,4,90,75,71,0,100,94,100,95,132,0, +- 100,95,101,73,101,71,131,4,90,76,71,0,100,96,100,97, +- 132,0,100,97,131,2,90,77,71,0,100,98,100,99,132,0, +- 100,99,131,2,90,78,71,0,100,100,100,101,132,0,100,101, +- 131,2,90,79,71,0,100,102,100,103,132,0,100,103,131,2, +- 90,80,100,113,100,104,100,105,132,1,90,81,100,106,100,107, +- 132,0,90,82,100,108,100,109,132,0,90,83,100,110,100,111, +- 132,0,90,84,100,1,83,0,41,117,97,94,1,0,0,67, +- 111,114,101,32,105,109,112,108,101,109,101,110,116,97,116,105, +- 111,110,32,111,102,32,112,97,116,104,45,98,97,115,101,100, +- 32,105,109,112,111,114,116,46,10,10,84,104,105,115,32,109, +- 111,100,117,108,101,32,105,115,32,78,79,84,32,109,101,97, +- 110,116,32,116,111,32,98,101,32,100,105,114,101,99,116,108, +- 121,32,105,109,112,111,114,116,101,100,33,32,73,116,32,104, +- 97,115,32,98,101,101,110,32,100,101,115,105,103,110,101,100, +- 32,115,117,99,104,10,116,104,97,116,32,105,116,32,99,97, +- 110,32,98,101,32,98,111,111,116,115,116,114,97,112,112,101, +- 100,32,105,110,116,111,32,80,121,116,104,111,110,32,97,115, +- 32,116,104,101,32,105,109,112,108,101,109,101,110,116,97,116, +- 105,111,110,32,111,102,32,105,109,112,111,114,116,46,32,65, +- 115,10,115,117,99,104,32,105,116,32,114,101,113,117,105,114, +- 101,115,32,116,104,101,32,105,110,106,101,99,116,105,111,110, +- 32,111,102,32,115,112,101,99,105,102,105,99,32,109,111,100, +- 117,108,101,115,32,97,110,100,32,97,116,116,114,105,98,117, +- 116,101,115,32,105,110,32,111,114,100,101,114,32,116,111,10, +- 119,111,114,107,46,32,79,110,101,32,115,104,111,117,108,100, +- 32,117,115,101,32,105,109,112,111,114,116,108,105,98,32,97, +- 115,32,116,104,101,32,112,117,98,108,105,99,45,102,97,99, +- 105,110,103,32,118,101,114,115,105,111,110,32,111,102,32,116, +- 104,105,115,32,109,111,100,117,108,101,46,10,10,78,233,0, +- 0,0,0,90,5,119,105,110,51,50,250,1,92,250,1,47, +- 99,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0, +- 0,3,0,0,0,99,0,0,0,115,28,0,0,0,129,0, +- 124,0,93,9,125,1,116,0,124,1,131,1,100,0,107,2, +- 86,0,1,0,113,2,100,1,83,0,41,2,233,1,0,0, +- 0,78,41,1,218,3,108,101,110,41,2,218,2,46,48,218, +- 3,115,101,112,169,0,114,7,0,0,0,250,38,60,102,114, +- 111,122,101,110,32,105,109,112,111,114,116,108,105,98,46,95, +- 98,111,111,116,115,116,114,97,112,95,101,120,116,101,114,110, +- 97,108,62,218,9,60,103,101,110,101,120,112,114,62,46,0, +- 0,0,115,4,0,0,0,2,128,26,0,114,9,0,0,0, +- 218,0,99,1,0,0,0,0,0,0,0,0,0,0,0,2, +- 0,0,0,4,0,0,0,67,0,0,0,115,22,0,0,0, +- 104,0,124,0,93,7,125,1,100,0,124,1,155,0,157,2, +- 146,2,113,2,83,0,41,1,250,1,58,114,7,0,0,0, +- 41,2,114,5,0,0,0,218,1,115,114,7,0,0,0,114, +- 7,0,0,0,114,8,0,0,0,218,9,60,115,101,116,99, +- 111,109,112,62,50,0,0,0,115,2,0,0,0,22,0,114, +- 13,0,0,0,41,1,218,3,119,105,110,41,2,90,6,99, +- 121,103,119,105,110,90,6,100,97,114,119,105,110,99,0,0, +- 0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0, +- 0,0,3,0,0,0,115,62,0,0,0,116,0,106,1,160, +- 2,116,3,161,1,114,25,116,0,106,1,160,2,116,4,161, +- 1,114,15,100,1,137,0,110,2,100,2,137,0,135,0,102, +- 1,100,3,100,4,132,8,125,0,124,0,83,0,100,5,100, +- 4,132,0,125,0,124,0,83,0,41,6,78,90,12,80,89, +- 84,72,79,78,67,65,83,69,79,75,115,12,0,0,0,80, +- 89,84,72,79,78,67,65,83,69,79,75,99,0,0,0,0, +- 0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, +- 19,0,0,0,115,20,0,0,0,116,0,106,1,106,2,12, +- 0,111,9,136,0,116,3,106,4,118,0,83,0,41,2,122, +- 94,84,114,117,101,32,105,102,32,102,105,108,101,110,97,109, ++ 132,0,90,61,100,68,100,69,132,0,90,62,100,70,100,71, ++ 132,0,90,63,100,116,100,72,100,73,132,1,90,64,100,117, ++ 100,74,100,75,132,1,90,65,100,118,100,77,100,78,132,1, ++ 90,66,100,79,100,80,132,0,90,67,101,68,131,0,90,69, ++ 100,115,100,1,101,69,100,81,156,2,100,82,100,83,132,3, ++ 90,70,71,0,100,84,100,85,132,0,100,85,131,2,90,71, ++ 71,0,100,86,100,87,132,0,100,87,131,2,90,72,71,0, ++ 100,88,100,89,132,0,100,89,101,72,131,3,90,73,71,0, ++ 100,90,100,91,132,0,100,91,131,2,90,74,71,0,100,92, ++ 100,93,132,0,100,93,101,74,101,73,131,4,90,75,71,0, ++ 100,94,100,95,132,0,100,95,101,74,101,72,131,4,90,76, ++ 71,0,100,96,100,97,132,0,100,97,101,74,101,72,131,4, ++ 90,77,71,0,100,98,100,99,132,0,100,99,131,2,90,78, ++ 71,0,100,100,100,101,132,0,100,101,131,2,90,79,71,0, ++ 100,102,100,103,132,0,100,103,131,2,90,80,71,0,100,104, ++ 100,105,132,0,100,105,131,2,90,81,100,115,100,106,100,107, ++ 132,1,90,82,100,108,100,109,132,0,90,83,100,110,100,111, ++ 132,0,90,84,100,112,100,113,132,0,90,85,100,1,83,0, ++ 41,119,97,94,1,0,0,67,111,114,101,32,105,109,112,108, ++ 101,109,101,110,116,97,116,105,111,110,32,111,102,32,112,97, ++ 116,104,45,98,97,115,101,100,32,105,109,112,111,114,116,46, ++ 10,10,84,104,105,115,32,109,111,100,117,108,101,32,105,115, ++ 32,78,79,84,32,109,101,97,110,116,32,116,111,32,98,101, ++ 32,100,105,114,101,99,116,108,121,32,105,109,112,111,114,116, ++ 101,100,33,32,73,116,32,104,97,115,32,98,101,101,110,32, ++ 100,101,115,105,103,110,101,100,32,115,117,99,104,10,116,104, ++ 97,116,32,105,116,32,99,97,110,32,98,101,32,98,111,111, ++ 116,115,116,114,97,112,112,101,100,32,105,110,116,111,32,80, ++ 121,116,104,111,110,32,97,115,32,116,104,101,32,105,109,112, ++ 108,101,109,101,110,116,97,116,105,111,110,32,111,102,32,105, ++ 109,112,111,114,116,46,32,65,115,10,115,117,99,104,32,105, ++ 116,32,114,101,113,117,105,114,101,115,32,116,104,101,32,105, ++ 110,106,101,99,116,105,111,110,32,111,102,32,115,112,101,99, ++ 105,102,105,99,32,109,111,100,117,108,101,115,32,97,110,100, ++ 32,97,116,116,114,105,98,117,116,101,115,32,105,110,32,111, ++ 114,100,101,114,32,116,111,10,119,111,114,107,46,32,79,110, ++ 101,32,115,104,111,117,108,100,32,117,115,101,32,105,109,112, ++ 111,114,116,108,105,98,32,97,115,32,116,104,101,32,112,117, ++ 98,108,105,99,45,102,97,99,105,110,103,32,118,101,114,115, ++ 105,111,110,32,111,102,32,116,104,105,115,32,109,111,100,117, ++ 108,101,46,10,10,78,233,0,0,0,0,90,5,119,105,110, ++ 51,50,250,1,92,250,1,47,90,7,77,83,89,83,84,69, ++ 77,233,255,255,255,255,99,1,0,0,0,0,0,0,0,0, ++ 0,0,0,2,0,0,0,3,0,0,0,99,0,0,0,115, ++ 28,0,0,0,129,0,124,0,93,9,125,1,116,0,124,1, ++ 131,1,100,0,107,2,86,0,1,0,113,2,100,1,83,0, ++ 41,2,233,1,0,0,0,78,41,1,218,3,108,101,110,41, ++ 2,218,2,46,48,218,3,115,101,112,169,0,114,8,0,0, ++ 0,250,38,60,102,114,111,122,101,110,32,105,109,112,111,114, ++ 116,108,105,98,46,95,98,111,111,116,115,116,114,97,112,95, ++ 101,120,116,101,114,110,97,108,62,218,9,60,103,101,110,101, ++ 120,112,114,62,50,0,0,0,115,4,0,0,0,2,128,26, ++ 0,114,10,0,0,0,218,0,99,1,0,0,0,0,0,0, ++ 0,0,0,0,0,2,0,0,0,4,0,0,0,67,0,0, ++ 0,115,22,0,0,0,104,0,124,0,93,7,125,1,100,0, ++ 124,1,155,0,157,2,146,2,113,2,83,0,41,1,250,1, ++ 58,114,8,0,0,0,41,2,114,6,0,0,0,218,1,115, ++ 114,8,0,0,0,114,8,0,0,0,114,9,0,0,0,218, ++ 9,60,115,101,116,99,111,109,112,62,54,0,0,0,115,2, ++ 0,0,0,22,0,114,14,0,0,0,41,1,218,3,119,105, ++ 110,41,2,90,6,99,121,103,119,105,110,90,6,100,97,114, ++ 119,105,110,99,0,0,0,0,0,0,0,0,0,0,0,0, ++ 1,0,0,0,3,0,0,0,3,0,0,0,115,62,0,0, ++ 0,116,0,106,1,160,2,116,3,161,1,114,25,116,0,106, ++ 1,160,2,116,4,161,1,114,15,100,1,137,0,110,2,100, ++ 2,137,0,135,0,102,1,100,3,100,4,132,8,125,0,124, ++ 0,83,0,100,5,100,4,132,0,125,0,124,0,83,0,41, ++ 6,78,90,12,80,89,84,72,79,78,67,65,83,69,79,75, ++ 115,12,0,0,0,80,89,84,72,79,78,67,65,83,69,79, ++ 75,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 0,0,2,0,0,0,19,0,0,0,115,20,0,0,0,116, ++ 0,106,1,106,2,12,0,111,9,136,0,116,3,106,4,118, ++ 0,83,0,41,2,122,94,84,114,117,101,32,105,102,32,102, ++ 105,108,101,110,97,109,101,115,32,109,117,115,116,32,98,101, ++ 32,99,104,101,99,107,101,100,32,99,97,115,101,45,105,110, ++ 115,101,110,115,105,116,105,118,101,108,121,32,97,110,100,32, ++ 105,103,110,111,114,101,32,101,110,118,105,114,111,110,109,101, ++ 110,116,32,102,108,97,103,115,32,97,114,101,32,110,111,116, ++ 32,115,101,116,46,78,41,5,218,3,115,121,115,218,5,102, ++ 108,97,103,115,218,18,105,103,110,111,114,101,95,101,110,118, ++ 105,114,111,110,109,101,110,116,218,3,95,111,115,218,7,101, ++ 110,118,105,114,111,110,114,8,0,0,0,169,1,218,3,107, ++ 101,121,114,8,0,0,0,114,9,0,0,0,218,11,95,114, ++ 101,108,97,120,95,99,97,115,101,71,0,0,0,243,2,0, ++ 0,0,20,2,122,37,95,109,97,107,101,95,114,101,108,97, ++ 120,95,99,97,115,101,46,60,108,111,99,97,108,115,62,46, ++ 95,114,101,108,97,120,95,99,97,115,101,99,0,0,0,0, ++ 0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, ++ 83,0,0,0,243,4,0,0,0,100,1,83,0,41,3,122, ++ 53,84,114,117,101,32,105,102,32,102,105,108,101,110,97,109, + 101,115,32,109,117,115,116,32,98,101,32,99,104,101,99,107, + 101,100,32,99,97,115,101,45,105,110,115,101,110,115,105,116, +- 105,118,101,108,121,32,97,110,100,32,105,103,110,111,114,101, +- 32,101,110,118,105,114,111,110,109,101,110,116,32,102,108,97, +- 103,115,32,97,114,101,32,110,111,116,32,115,101,116,46,78, +- 41,5,218,3,115,121,115,218,5,102,108,97,103,115,218,18, +- 105,103,110,111,114,101,95,101,110,118,105,114,111,110,109,101, +- 110,116,218,3,95,111,115,90,7,101,110,118,105,114,111,110, +- 114,7,0,0,0,169,1,218,3,107,101,121,114,7,0,0, +- 0,114,8,0,0,0,218,11,95,114,101,108,97,120,95,99, +- 97,115,101,67,0,0,0,243,2,0,0,0,20,2,122,37, +- 95,109,97,107,101,95,114,101,108,97,120,95,99,97,115,101, +- 46,60,108,111,99,97,108,115,62,46,95,114,101,108,97,120, +- 95,99,97,115,101,99,0,0,0,0,0,0,0,0,0,0, +- 0,0,0,0,0,0,1,0,0,0,83,0,0,0,243,4, +- 0,0,0,100,1,83,0,41,3,122,53,84,114,117,101,32, +- 105,102,32,102,105,108,101,110,97,109,101,115,32,109,117,115, +- 116,32,98,101,32,99,104,101,99,107,101,100,32,99,97,115, +- 101,45,105,110,115,101,110,115,105,116,105,118,101,108,121,46, +- 70,78,114,7,0,0,0,114,7,0,0,0,114,7,0,0, +- 0,114,7,0,0,0,114,8,0,0,0,114,21,0,0,0, +- 71,0,0,0,243,2,0,0,0,4,2,41,5,114,15,0, +- 0,0,218,8,112,108,97,116,102,111,114,109,218,10,115,116, +- 97,114,116,115,119,105,116,104,218,27,95,67,65,83,69,95, +- 73,78,83,69,78,83,73,84,73,86,69,95,80,76,65,84, +- 70,79,82,77,83,218,35,95,67,65,83,69,95,73,78,83, +- 69,78,83,73,84,73,86,69,95,80,76,65,84,70,79,82, +- 77,83,95,83,84,82,95,75,69,89,41,1,114,21,0,0, +- 0,114,7,0,0,0,114,19,0,0,0,114,8,0,0,0, +- 218,16,95,109,97,107,101,95,114,101,108,97,120,95,99,97, +- 115,101,60,0,0,0,115,16,0,0,0,12,1,12,1,6, +- 1,4,2,12,2,4,7,8,253,4,3,114,29,0,0,0, ++ 105,118,101,108,121,46,70,78,114,8,0,0,0,114,8,0, ++ 0,0,114,8,0,0,0,114,8,0,0,0,114,9,0,0, ++ 0,114,23,0,0,0,75,0,0,0,243,2,0,0,0,4, ++ 2,41,5,114,16,0,0,0,218,8,112,108,97,116,102,111, ++ 114,109,218,10,115,116,97,114,116,115,119,105,116,104,218,27, ++ 95,67,65,83,69,95,73,78,83,69,78,83,73,84,73,86, ++ 69,95,80,76,65,84,70,79,82,77,83,218,35,95,67,65, ++ 83,69,95,73,78,83,69,78,83,73,84,73,86,69,95,80, ++ 76,65,84,70,79,82,77,83,95,83,84,82,95,75,69,89, ++ 41,1,114,23,0,0,0,114,8,0,0,0,114,21,0,0, ++ 0,114,9,0,0,0,218,16,95,109,97,107,101,95,114,101, ++ 108,97,120,95,99,97,115,101,64,0,0,0,115,16,0,0, ++ 0,12,1,12,1,6,1,4,2,12,2,4,7,8,253,4, ++ 3,114,31,0,0,0,99,1,0,0,0,0,0,0,0,0, ++ 0,0,0,1,0,0,0,4,0,0,0,67,0,0,0,115, ++ 20,0,0,0,116,0,124,0,131,1,100,1,64,0,160,1, ++ 100,2,100,3,161,2,83,0,41,5,122,42,67,111,110,118, ++ 101,114,116,32,97,32,51,50,45,98,105,116,32,105,110,116, ++ 101,103,101,114,32,116,111,32,108,105,116,116,108,101,45,101, ++ 110,100,105,97,110,46,236,3,0,0,0,255,127,255,127,3, ++ 0,233,4,0,0,0,218,6,108,105,116,116,108,101,78,41, ++ 2,218,3,105,110,116,218,8,116,111,95,98,121,116,101,115, ++ 41,1,218,1,120,114,8,0,0,0,114,8,0,0,0,114, ++ 9,0,0,0,218,12,95,112,97,99,107,95,117,105,110,116, ++ 51,50,83,0,0,0,114,24,0,0,0,114,38,0,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0, +- 0,4,0,0,0,67,0,0,0,115,20,0,0,0,116,0, +- 124,0,131,1,100,1,64,0,160,1,100,2,100,3,161,2, +- 83,0,41,5,122,42,67,111,110,118,101,114,116,32,97,32, +- 51,50,45,98,105,116,32,105,110,116,101,103,101,114,32,116, +- 111,32,108,105,116,116,108,101,45,101,110,100,105,97,110,46, +- 236,3,0,0,0,255,127,255,127,3,0,233,4,0,0,0, +- 218,6,108,105,116,116,108,101,78,41,2,218,3,105,110,116, +- 218,8,116,111,95,98,121,116,101,115,41,1,218,1,120,114, +- 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,12, +- 95,112,97,99,107,95,117,105,110,116,51,50,79,0,0,0, +- 114,22,0,0,0,114,36,0,0,0,99,1,0,0,0,0, +- 0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,67, +- 0,0,0,243,28,0,0,0,116,0,124,0,131,1,100,1, +- 107,2,115,8,74,0,130,1,116,1,160,2,124,0,100,2, +- 161,2,83,0,41,4,122,47,67,111,110,118,101,114,116,32, +- 52,32,98,121,116,101,115,32,105,110,32,108,105,116,116,108, +- 101,45,101,110,100,105,97,110,32,116,111,32,97,110,32,105, +- 110,116,101,103,101,114,46,114,31,0,0,0,114,32,0,0, +- 0,78,169,3,114,4,0,0,0,114,33,0,0,0,218,10, +- 102,114,111,109,95,98,121,116,101,115,169,1,218,4,100,97, +- 116,97,114,7,0,0,0,114,7,0,0,0,114,8,0,0, +- 0,218,14,95,117,110,112,97,99,107,95,117,105,110,116,51, +- 50,84,0,0,0,243,4,0,0,0,16,2,12,1,114,42, +- 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, +- 1,0,0,0,4,0,0,0,67,0,0,0,114,37,0,0, +- 0,41,4,122,47,67,111,110,118,101,114,116,32,50,32,98, +- 121,116,101,115,32,105,110,32,108,105,116,116,108,101,45,101, +- 110,100,105,97,110,32,116,111,32,97,110,32,105,110,116,101, +- 103,101,114,46,233,2,0,0,0,114,32,0,0,0,78,114, +- 38,0,0,0,114,40,0,0,0,114,7,0,0,0,114,7, +- 0,0,0,114,8,0,0,0,218,14,95,117,110,112,97,99, +- 107,95,117,105,110,116,49,54,89,0,0,0,114,43,0,0, +- 0,114,45,0,0,0,99,0,0,0,0,0,0,0,0,0, +- 0,0,0,5,0,0,0,4,0,0,0,71,0,0,0,115, +- 228,0,0,0,124,0,115,4,100,1,83,0,116,0,124,0, +- 131,1,100,2,107,2,114,14,124,0,100,3,25,0,83,0, +- 100,1,125,1,103,0,125,2,116,1,116,2,106,3,124,0, +- 131,2,68,0,93,61,92,2,125,3,125,4,124,3,160,4, +- 116,5,161,1,115,38,124,3,160,6,116,5,161,1,114,51, +- 124,3,160,7,116,8,161,1,112,44,124,1,125,1,116,9, +- 124,4,23,0,103,1,125,2,113,24,124,3,160,6,100,4, +- 161,1,114,76,124,1,160,10,161,0,124,3,160,10,161,0, +- 107,3,114,70,124,3,125,1,124,4,103,1,125,2,113,24, +- 124,2,160,11,124,4,161,1,1,0,113,24,124,3,112,79, +- 124,1,125,1,124,2,160,11,124,4,161,1,1,0,113,24, +- 100,5,100,6,132,0,124,2,68,0,131,1,125,2,116,0, +- 124,2,131,1,100,2,107,2,114,107,124,2,100,3,25,0, +- 115,107,124,1,116,9,23,0,83,0,124,1,116,9,160,12, +- 124,2,161,1,23,0,83,0,41,8,250,31,82,101,112,108, +- 97,99,101,109,101,110,116,32,102,111,114,32,111,115,46,112, +- 97,116,104,46,106,111,105,110,40,41,46,114,10,0,0,0, +- 114,3,0,0,0,114,0,0,0,0,114,11,0,0,0,99, +- 1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, +- 5,0,0,0,83,0,0,0,243,26,0,0,0,103,0,124, +- 0,93,9,125,1,124,1,114,2,124,1,160,0,116,1,161, +- 1,145,2,113,2,83,0,114,7,0,0,0,169,2,218,6, +- 114,115,116,114,105,112,218,15,112,97,116,104,95,115,101,112, +- 97,114,97,116,111,114,115,169,2,114,5,0,0,0,218,1, +- 112,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, +- 218,10,60,108,105,115,116,99,111,109,112,62,119,0,0,0, +- 115,2,0,0,0,26,0,250,30,95,112,97,116,104,95,106, +- 111,105,110,46,60,108,111,99,97,108,115,62,46,60,108,105, +- 115,116,99,111,109,112,62,78,41,13,114,4,0,0,0,218, +- 3,109,97,112,114,18,0,0,0,218,15,95,112,97,116,104, +- 95,115,112,108,105,116,114,111,111,116,114,26,0,0,0,218, +- 14,112,97,116,104,95,115,101,112,95,116,117,112,108,101,218, +- 8,101,110,100,115,119,105,116,104,114,49,0,0,0,114,50, +- 0,0,0,218,8,112,97,116,104,95,115,101,112,218,8,99, +- 97,115,101,102,111,108,100,218,6,97,112,112,101,110,100,218, +- 4,106,111,105,110,41,5,218,10,112,97,116,104,95,112,97, +- 114,116,115,218,4,114,111,111,116,218,4,112,97,116,104,90, +- 8,110,101,119,95,114,111,111,116,218,4,116,97,105,108,114, +- 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,10, +- 95,112,97,116,104,95,106,111,105,110,96,0,0,0,115,42, +- 0,0,0,4,2,4,1,12,1,8,1,4,1,4,1,20, +- 1,20,1,14,1,12,1,10,1,16,1,4,3,8,1,12, +- 2,8,2,12,1,14,1,20,1,8,2,14,1,114,67,0, +- 0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,1, +- 0,0,0,4,0,0,0,71,0,0,0,115,20,0,0,0, +- 116,0,160,1,100,1,100,2,132,0,124,0,68,0,131,1, +- 161,1,83,0,41,4,114,46,0,0,0,99,1,0,0,0, +- 0,0,0,0,0,0,0,0,2,0,0,0,5,0,0,0, +- 83,0,0,0,114,47,0,0,0,114,7,0,0,0,114,48, +- 0,0,0,41,2,114,5,0,0,0,218,4,112,97,114,116, +- 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, +- 53,0,0,0,128,0,0,0,115,6,0,0,0,6,0,4, +- 1,16,255,114,54,0,0,0,78,41,2,114,59,0,0,0, +- 114,62,0,0,0,41,1,114,63,0,0,0,114,7,0,0, +- 0,114,7,0,0,0,114,8,0,0,0,114,67,0,0,0, +- 126,0,0,0,115,6,0,0,0,10,2,2,1,8,255,99, +- 1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, +- 4,0,0,0,3,0,0,0,115,66,0,0,0,116,0,135, +- 0,102,1,100,1,100,2,132,8,116,1,68,0,131,1,131, +- 1,125,1,124,1,100,3,107,0,114,19,100,4,136,0,102, +- 2,83,0,136,0,100,5,124,1,133,2,25,0,136,0,124, +- 1,100,6,23,0,100,5,133,2,25,0,102,2,83,0,41, +- 7,122,32,82,101,112,108,97,99,101,109,101,110,116,32,102, +- 111,114,32,111,115,46,112,97,116,104,46,115,112,108,105,116, +- 40,41,46,99,1,0,0,0,0,0,0,0,0,0,0,0, +- 2,0,0,0,4,0,0,0,51,0,0,0,115,26,0,0, +- 0,129,0,124,0,93,8,125,1,136,0,160,0,124,1,161, +- 1,86,0,1,0,113,2,100,0,83,0,169,1,78,41,1, +- 218,5,114,102,105,110,100,114,51,0,0,0,169,1,114,65, +- 0,0,0,114,7,0,0,0,114,8,0,0,0,114,9,0, +- 0,0,134,0,0,0,115,4,0,0,0,2,128,24,0,122, +- 30,95,112,97,116,104,95,115,112,108,105,116,46,60,108,111, +- 99,97,108,115,62,46,60,103,101,110,101,120,112,114,62,114, +- 0,0,0,0,114,10,0,0,0,78,114,3,0,0,0,41, +- 2,218,3,109,97,120,114,50,0,0,0,41,2,114,65,0, +- 0,0,218,1,105,114,7,0,0,0,114,71,0,0,0,114, +- 8,0,0,0,218,11,95,112,97,116,104,95,115,112,108,105, +- 116,132,0,0,0,115,8,0,0,0,22,2,8,1,8,1, +- 28,1,114,74,0,0,0,99,1,0,0,0,0,0,0,0, +- 0,0,0,0,1,0,0,0,3,0,0,0,67,0,0,0, +- 115,10,0,0,0,116,0,160,1,124,0,161,1,83,0,41, +- 2,122,126,83,116,97,116,32,116,104,101,32,112,97,116,104, +- 46,10,10,32,32,32,32,77,97,100,101,32,97,32,115,101, +- 112,97,114,97,116,101,32,102,117,110,99,116,105,111,110,32, +- 116,111,32,109,97,107,101,32,105,116,32,101,97,115,105,101, +- 114,32,116,111,32,111,118,101,114,114,105,100,101,32,105,110, +- 32,101,120,112,101,114,105,109,101,110,116,115,10,32,32,32, +- 32,40,101,46,103,46,32,99,97,99,104,101,32,115,116,97, +- 116,32,114,101,115,117,108,116,115,41,46,10,10,32,32,32, +- 32,78,41,2,114,18,0,0,0,90,4,115,116,97,116,114, +- 71,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, +- 0,0,0,218,10,95,112,97,116,104,95,115,116,97,116,140, +- 0,0,0,115,2,0,0,0,10,7,114,75,0,0,0,99, +- 2,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, +- 8,0,0,0,67,0,0,0,115,48,0,0,0,122,6,116, +- 0,124,0,131,1,125,2,87,0,110,10,4,0,116,1,121, +- 16,1,0,1,0,1,0,89,0,100,1,83,0,119,0,124, +- 2,106,2,100,2,64,0,124,1,107,2,83,0,41,4,122, +- 49,84,101,115,116,32,119,104,101,116,104,101,114,32,116,104, +- 101,32,112,97,116,104,32,105,115,32,116,104,101,32,115,112, +- 101,99,105,102,105,101,100,32,109,111,100,101,32,116,121,112, +- 101,46,70,105,0,240,0,0,78,41,3,114,75,0,0,0, +- 218,7,79,83,69,114,114,111,114,218,7,115,116,95,109,111, +- 100,101,41,3,114,65,0,0,0,218,4,109,111,100,101,90, +- 9,115,116,97,116,95,105,110,102,111,114,7,0,0,0,114, +- 7,0,0,0,114,8,0,0,0,218,18,95,112,97,116,104, +- 95,105,115,95,109,111,100,101,95,116,121,112,101,150,0,0, +- 0,115,12,0,0,0,2,2,12,1,12,1,6,1,2,255, +- 14,2,114,79,0,0,0,99,1,0,0,0,0,0,0,0, +- 0,0,0,0,1,0,0,0,3,0,0,0,67,0,0,0, +- 115,10,0,0,0,116,0,124,0,100,1,131,2,83,0,41, +- 3,122,31,82,101,112,108,97,99,101,109,101,110,116,32,102, +- 111,114,32,111,115,46,112,97,116,104,46,105,115,102,105,108, +- 101,46,105,0,128,0,0,78,41,1,114,79,0,0,0,114, +- 71,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, +- 0,0,0,218,12,95,112,97,116,104,95,105,115,102,105,108, +- 101,159,0,0,0,243,2,0,0,0,10,2,114,80,0,0, +- 0,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0, +- 0,0,3,0,0,0,67,0,0,0,115,22,0,0,0,124, +- 0,115,6,116,0,160,1,161,0,125,0,116,2,124,0,100, +- 1,131,2,83,0,41,3,122,30,82,101,112,108,97,99,101, ++ 0,4,0,0,0,67,0,0,0,243,28,0,0,0,116,0, ++ 124,0,131,1,100,1,107,2,115,8,74,0,130,1,116,1, ++ 160,2,124,0,100,2,161,2,83,0,41,4,122,47,67,111, ++ 110,118,101,114,116,32,52,32,98,121,116,101,115,32,105,110, ++ 32,108,105,116,116,108,101,45,101,110,100,105,97,110,32,116, ++ 111,32,97,110,32,105,110,116,101,103,101,114,46,114,33,0, ++ 0,0,114,34,0,0,0,78,169,3,114,5,0,0,0,114, ++ 35,0,0,0,218,10,102,114,111,109,95,98,121,116,101,115, ++ 169,1,218,4,100,97,116,97,114,8,0,0,0,114,8,0, ++ 0,0,114,9,0,0,0,218,14,95,117,110,112,97,99,107, ++ 95,117,105,110,116,51,50,88,0,0,0,243,4,0,0,0, ++ 16,2,12,1,114,44,0,0,0,99,1,0,0,0,0,0, ++ 0,0,0,0,0,0,1,0,0,0,4,0,0,0,67,0, ++ 0,0,114,39,0,0,0,41,4,122,47,67,111,110,118,101, ++ 114,116,32,50,32,98,121,116,101,115,32,105,110,32,108,105, ++ 116,116,108,101,45,101,110,100,105,97,110,32,116,111,32,97, ++ 110,32,105,110,116,101,103,101,114,46,233,2,0,0,0,114, ++ 34,0,0,0,78,114,40,0,0,0,114,42,0,0,0,114, ++ 8,0,0,0,114,8,0,0,0,114,9,0,0,0,218,14, ++ 95,117,110,112,97,99,107,95,117,105,110,116,49,54,93,0, ++ 0,0,114,45,0,0,0,114,47,0,0,0,99,0,0,0, ++ 0,0,0,0,0,0,0,0,0,5,0,0,0,4,0,0, ++ 0,71,0,0,0,115,228,0,0,0,124,0,115,4,100,1, ++ 83,0,116,0,124,0,131,1,100,2,107,2,114,14,124,0, ++ 100,3,25,0,83,0,100,1,125,1,103,0,125,2,116,1, ++ 116,2,106,3,124,0,131,2,68,0,93,61,92,2,125,3, ++ 125,4,124,3,160,4,116,5,161,1,115,38,124,3,160,6, ++ 116,5,161,1,114,51,124,3,160,7,116,8,161,1,112,44, ++ 124,1,125,1,116,9,124,4,23,0,103,1,125,2,113,24, ++ 124,3,160,6,100,4,161,1,114,76,124,1,160,10,161,0, ++ 124,3,160,10,161,0,107,3,114,70,124,3,125,1,124,4, ++ 103,1,125,2,113,24,124,2,160,11,124,4,161,1,1,0, ++ 113,24,124,3,112,79,124,1,125,1,124,2,160,11,124,4, ++ 161,1,1,0,113,24,100,5,100,6,132,0,124,2,68,0, ++ 131,1,125,2,116,0,124,2,131,1,100,2,107,2,114,107, ++ 124,2,100,3,25,0,115,107,124,1,116,9,23,0,83,0, ++ 124,1,116,9,160,12,124,2,161,1,23,0,83,0,41,8, ++ 250,31,82,101,112,108,97,99,101,109,101,110,116,32,102,111, ++ 114,32,111,115,46,112,97,116,104,46,106,111,105,110,40,41, ++ 46,114,11,0,0,0,114,4,0,0,0,114,0,0,0,0, ++ 114,12,0,0,0,99,1,0,0,0,0,0,0,0,0,0, ++ 0,0,2,0,0,0,5,0,0,0,83,0,0,0,243,26, ++ 0,0,0,103,0,124,0,93,9,125,1,124,1,114,2,124, ++ 1,160,0,116,1,161,1,145,2,113,2,83,0,114,8,0, ++ 0,0,169,2,218,6,114,115,116,114,105,112,218,15,112,97, ++ 116,104,95,115,101,112,97,114,97,116,111,114,115,169,2,114, ++ 6,0,0,0,218,1,112,114,8,0,0,0,114,8,0,0, ++ 0,114,9,0,0,0,218,10,60,108,105,115,116,99,111,109, ++ 112,62,123,0,0,0,115,2,0,0,0,26,0,250,30,95, ++ 112,97,116,104,95,106,111,105,110,46,60,108,111,99,97,108, ++ 115,62,46,60,108,105,115,116,99,111,109,112,62,78,41,13, ++ 114,5,0,0,0,218,3,109,97,112,114,19,0,0,0,218, ++ 15,95,112,97,116,104,95,115,112,108,105,116,114,111,111,116, ++ 114,28,0,0,0,218,14,112,97,116,104,95,115,101,112,95, ++ 116,117,112,108,101,218,8,101,110,100,115,119,105,116,104,114, ++ 51,0,0,0,114,52,0,0,0,218,8,112,97,116,104,95, ++ 115,101,112,218,8,99,97,115,101,102,111,108,100,218,6,97, ++ 112,112,101,110,100,218,4,106,111,105,110,41,5,218,10,112, ++ 97,116,104,95,112,97,114,116,115,218,4,114,111,111,116,218, ++ 4,112,97,116,104,90,8,110,101,119,95,114,111,111,116,218, ++ 4,116,97,105,108,114,8,0,0,0,114,8,0,0,0,114, ++ 9,0,0,0,218,10,95,112,97,116,104,95,106,111,105,110, ++ 100,0,0,0,115,42,0,0,0,4,2,4,1,12,1,8, ++ 1,4,1,4,1,20,1,20,1,14,1,12,1,10,1,16, ++ 1,4,3,8,1,12,2,8,2,12,1,14,1,20,1,8, ++ 2,14,1,114,69,0,0,0,99,0,0,0,0,0,0,0, ++ 0,0,0,0,0,1,0,0,0,4,0,0,0,71,0,0, ++ 0,115,20,0,0,0,116,0,160,1,100,1,100,2,132,0, ++ 124,0,68,0,131,1,161,1,83,0,41,4,114,48,0,0, ++ 0,99,1,0,0,0,0,0,0,0,0,0,0,0,2,0, ++ 0,0,5,0,0,0,83,0,0,0,114,49,0,0,0,114, ++ 8,0,0,0,114,50,0,0,0,41,2,114,6,0,0,0, ++ 218,4,112,97,114,116,114,8,0,0,0,114,8,0,0,0, ++ 114,9,0,0,0,114,55,0,0,0,132,0,0,0,115,6, ++ 0,0,0,6,0,4,1,16,255,114,56,0,0,0,78,41, ++ 2,114,61,0,0,0,114,64,0,0,0,41,1,114,65,0, ++ 0,0,114,8,0,0,0,114,8,0,0,0,114,9,0,0, ++ 0,114,69,0,0,0,130,0,0,0,115,6,0,0,0,10, ++ 2,2,1,8,255,99,1,0,0,0,0,0,0,0,0,0, ++ 0,0,2,0,0,0,4,0,0,0,3,0,0,0,115,66, ++ 0,0,0,116,0,135,0,102,1,100,1,100,2,132,8,116, ++ 1,68,0,131,1,131,1,125,1,124,1,100,3,107,0,114, ++ 19,100,4,136,0,102,2,83,0,136,0,100,5,124,1,133, ++ 2,25,0,136,0,124,1,100,6,23,0,100,5,133,2,25, ++ 0,102,2,83,0,41,7,122,32,82,101,112,108,97,99,101, + 109,101,110,116,32,102,111,114,32,111,115,46,112,97,116,104, +- 46,105,115,100,105,114,46,105,0,64,0,0,78,41,3,114, +- 18,0,0,0,218,6,103,101,116,99,119,100,114,79,0,0, +- 0,114,71,0,0,0,114,7,0,0,0,114,7,0,0,0, +- 114,8,0,0,0,218,11,95,112,97,116,104,95,105,115,100, +- 105,114,164,0,0,0,115,6,0,0,0,4,2,8,1,10, +- 1,114,83,0,0,0,99,1,0,0,0,0,0,0,0,0, +- 0,0,0,2,0,0,0,4,0,0,0,67,0,0,0,115, +- 62,0,0,0,124,0,115,4,100,1,83,0,116,0,160,1, +- 124,0,161,1,100,2,25,0,160,2,100,3,100,4,161,2, +- 125,1,116,3,124,1,131,1,100,5,107,4,111,30,124,1, +- 160,4,100,6,161,1,112,30,124,1,160,5,100,4,161,1, +- 83,0,41,8,250,30,82,101,112,108,97,99,101,109,101,110, +- 116,32,102,111,114,32,111,115,46,112,97,116,104,46,105,115, +- 97,98,115,46,70,114,0,0,0,0,114,2,0,0,0,114, +- 1,0,0,0,114,3,0,0,0,122,2,92,92,78,41,6, +- 114,18,0,0,0,114,56,0,0,0,218,7,114,101,112,108, +- 97,99,101,114,4,0,0,0,114,26,0,0,0,114,58,0, +- 0,0,41,2,114,65,0,0,0,114,64,0,0,0,114,7, +- 0,0,0,114,7,0,0,0,114,8,0,0,0,218,11,95, +- 112,97,116,104,95,105,115,97,98,115,172,0,0,0,115,8, +- 0,0,0,4,2,4,1,22,1,32,1,114,86,0,0,0, +- 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0, +- 0,3,0,0,0,67,0,0,0,115,10,0,0,0,124,0, +- 160,0,116,1,161,1,83,0,41,2,114,84,0,0,0,78, +- 41,2,114,26,0,0,0,114,50,0,0,0,114,71,0,0, +- 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, +- 114,86,0,0,0,180,0,0,0,114,81,0,0,0,233,182, +- 1,0,0,99,3,0,0,0,0,0,0,0,0,0,0,0, +- 6,0,0,0,11,0,0,0,67,0,0,0,115,170,0,0, +- 0,100,1,160,0,124,0,116,1,124,0,131,1,161,2,125, +- 3,116,2,160,3,124,3,116,2,106,4,116,2,106,5,66, +- 0,116,2,106,6,66,0,124,2,100,2,64,0,161,3,125, +- 4,122,36,116,7,160,8,124,4,100,3,161,2,143,13,125, +- 5,124,5,160,9,124,1,161,1,1,0,87,0,100,4,4, +- 0,4,0,131,3,1,0,110,8,49,0,115,47,119,1,1, +- 0,1,0,1,0,89,0,1,0,116,2,160,10,124,3,124, +- 0,161,2,1,0,87,0,100,4,83,0,4,0,116,11,121, +- 84,1,0,1,0,1,0,122,7,116,2,160,12,124,3,161, +- 1,1,0,87,0,130,0,4,0,116,11,121,83,1,0,1, +- 0,1,0,89,0,130,0,119,0,119,0,41,5,122,162,66, +- 101,115,116,45,101,102,102,111,114,116,32,102,117,110,99,116, +- 105,111,110,32,116,111,32,119,114,105,116,101,32,100,97,116, +- 97,32,116,111,32,97,32,112,97,116,104,32,97,116,111,109, +- 105,99,97,108,108,121,46,10,32,32,32,32,66,101,32,112, +- 114,101,112,97,114,101,100,32,116,111,32,104,97,110,100,108, +- 101,32,97,32,70,105,108,101,69,120,105,115,116,115,69,114, +- 114,111,114,32,105,102,32,99,111,110,99,117,114,114,101,110, +- 116,32,119,114,105,116,105,110,103,32,111,102,32,116,104,101, +- 10,32,32,32,32,116,101,109,112,111,114,97,114,121,32,102, +- 105,108,101,32,105,115,32,97,116,116,101,109,112,116,101,100, +- 46,250,5,123,125,46,123,125,114,87,0,0,0,90,2,119, +- 98,78,41,13,218,6,102,111,114,109,97,116,218,2,105,100, +- 114,18,0,0,0,90,4,111,112,101,110,90,6,79,95,69, +- 88,67,76,90,7,79,95,67,82,69,65,84,90,8,79,95, +- 87,82,79,78,76,89,218,3,95,105,111,218,6,70,105,108, +- 101,73,79,218,5,119,114,105,116,101,114,85,0,0,0,114, +- 76,0,0,0,90,6,117,110,108,105,110,107,41,6,114,65, +- 0,0,0,114,41,0,0,0,114,78,0,0,0,90,8,112, +- 97,116,104,95,116,109,112,90,2,102,100,218,4,102,105,108, +- 101,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, +- 218,13,95,119,114,105,116,101,95,97,116,111,109,105,99,185, +- 0,0,0,115,36,0,0,0,16,5,6,1,22,1,4,255, +- 2,2,14,3,12,1,28,255,18,2,12,1,2,1,12,1, +- 2,3,12,254,2,1,2,1,2,254,2,253,114,95,0,0, +- 0,105,111,13,0,0,114,44,0,0,0,114,32,0,0,0, +- 115,2,0,0,0,13,10,90,11,95,95,112,121,99,97,99, +- 104,101,95,95,122,4,111,112,116,45,122,3,46,112,121,122, +- 4,46,112,121,119,122,4,46,112,121,99,41,1,218,12,111, +- 112,116,105,109,105,122,97,116,105,111,110,99,2,0,0,0, +- 0,0,0,0,1,0,0,0,12,0,0,0,5,0,0,0, +- 67,0,0,0,115,80,1,0,0,124,1,100,1,117,1,114, +- 26,116,0,160,1,100,2,116,2,161,2,1,0,124,2,100, +- 1,117,1,114,20,100,3,125,3,116,3,124,3,131,1,130, +- 1,124,1,114,24,100,4,110,1,100,5,125,2,116,4,160, +- 5,124,0,161,1,125,0,116,6,124,0,131,1,92,2,125, +- 4,125,5,124,5,160,7,100,6,161,1,92,3,125,6,125, +- 7,125,8,116,8,106,9,106,10,125,9,124,9,100,1,117, +- 0,114,57,116,11,100,7,131,1,130,1,100,4,160,12,124, +- 6,114,63,124,6,110,1,124,8,124,7,124,9,103,3,161, +- 1,125,10,124,2,100,1,117,0,114,86,116,8,106,13,106, +- 14,100,8,107,2,114,82,100,4,125,2,110,4,116,8,106, +- 13,106,14,125,2,116,15,124,2,131,1,125,2,124,2,100, +- 4,107,3,114,112,124,2,160,16,161,0,115,105,116,17,100, +- 9,160,18,124,2,161,1,131,1,130,1,100,10,160,18,124, +- 10,116,19,124,2,161,3,125,10,124,10,116,20,100,8,25, +- 0,23,0,125,11,116,8,106,21,100,1,117,1,114,162,116, +- 22,124,4,131,1,115,134,116,23,116,4,160,24,161,0,124, +- 4,131,2,125,4,124,4,100,5,25,0,100,11,107,2,114, +- 152,124,4,100,8,25,0,116,25,118,1,114,152,124,4,100, +- 12,100,1,133,2,25,0,125,4,116,23,116,8,106,21,124, +- 4,160,26,116,25,161,1,124,11,131,3,83,0,116,23,124, +- 4,116,27,124,11,131,3,83,0,41,13,97,254,2,0,0, +- 71,105,118,101,110,32,116,104,101,32,112,97,116,104,32,116, +- 111,32,97,32,46,112,121,32,102,105,108,101,44,32,114,101, +- 116,117,114,110,32,116,104,101,32,112,97,116,104,32,116,111, +- 32,105,116,115,32,46,112,121,99,32,102,105,108,101,46,10, +- 10,32,32,32,32,84,104,101,32,46,112,121,32,102,105,108, +- 101,32,100,111,101,115,32,110,111,116,32,110,101,101,100,32, +- 116,111,32,101,120,105,115,116,59,32,116,104,105,115,32,115, +- 105,109,112,108,121,32,114,101,116,117,114,110,115,32,116,104, +- 101,32,112,97,116,104,32,116,111,32,116,104,101,10,32,32, +- 32,32,46,112,121,99,32,102,105,108,101,32,99,97,108,99, +- 117,108,97,116,101,100,32,97,115,32,105,102,32,116,104,101, +- 32,46,112,121,32,102,105,108,101,32,119,101,114,101,32,105, +- 109,112,111,114,116,101,100,46,10,10,32,32,32,32,84,104, +- 101,32,39,111,112,116,105,109,105,122,97,116,105,111,110,39, +- 32,112,97,114,97,109,101,116,101,114,32,99,111,110,116,114, +- 111,108,115,32,116,104,101,32,112,114,101,115,117,109,101,100, +- 32,111,112,116,105,109,105,122,97,116,105,111,110,32,108,101, +- 118,101,108,32,111,102,10,32,32,32,32,116,104,101,32,98, +- 121,116,101,99,111,100,101,32,102,105,108,101,46,32,73,102, +- 32,39,111,112,116,105,109,105,122,97,116,105,111,110,39,32, +- 105,115,32,110,111,116,32,78,111,110,101,44,32,116,104,101, +- 32,115,116,114,105,110,103,32,114,101,112,114,101,115,101,110, +- 116,97,116,105,111,110,10,32,32,32,32,111,102,32,116,104, +- 101,32,97,114,103,117,109,101,110,116,32,105,115,32,116,97, +- 107,101,110,32,97,110,100,32,118,101,114,105,102,105,101,100, +- 32,116,111,32,98,101,32,97,108,112,104,97,110,117,109,101, +- 114,105,99,32,40,101,108,115,101,32,86,97,108,117,101,69, +- 114,114,111,114,10,32,32,32,32,105,115,32,114,97,105,115, +- 101,100,41,46,10,10,32,32,32,32,84,104,101,32,100,101, +- 98,117,103,95,111,118,101,114,114,105,100,101,32,112,97,114, +- 97,109,101,116,101,114,32,105,115,32,100,101,112,114,101,99, +- 97,116,101,100,46,32,73,102,32,100,101,98,117,103,95,111, +- 118,101,114,114,105,100,101,32,105,115,32,110,111,116,32,78, +- 111,110,101,44,10,32,32,32,32,97,32,84,114,117,101,32, +- 118,97,108,117,101,32,105,115,32,116,104,101,32,115,97,109, +- 101,32,97,115,32,115,101,116,116,105,110,103,32,39,111,112, +- 116,105,109,105,122,97,116,105,111,110,39,32,116,111,32,116, +- 104,101,32,101,109,112,116,121,32,115,116,114,105,110,103,10, +- 32,32,32,32,119,104,105,108,101,32,97,32,70,97,108,115, +- 101,32,118,97,108,117,101,32,105,115,32,101,113,117,105,118, +- 97,108,101,110,116,32,116,111,32,115,101,116,116,105,110,103, +- 32,39,111,112,116,105,109,105,122,97,116,105,111,110,39,32, +- 116,111,32,39,49,39,46,10,10,32,32,32,32,73,102,32, ++ 46,115,112,108,105,116,40,41,46,99,1,0,0,0,0,0, ++ 0,0,0,0,0,0,2,0,0,0,4,0,0,0,51,0, ++ 0,0,115,26,0,0,0,129,0,124,0,93,8,125,1,136, ++ 0,160,0,124,1,161,1,86,0,1,0,113,2,100,0,83, ++ 0,169,1,78,41,1,218,5,114,102,105,110,100,114,53,0, ++ 0,0,169,1,114,67,0,0,0,114,8,0,0,0,114,9, ++ 0,0,0,114,10,0,0,0,138,0,0,0,115,4,0,0, ++ 0,2,128,24,0,122,30,95,112,97,116,104,95,115,112,108, ++ 105,116,46,60,108,111,99,97,108,115,62,46,60,103,101,110, ++ 101,120,112,114,62,114,0,0,0,0,114,11,0,0,0,78, ++ 114,4,0,0,0,41,2,218,3,109,97,120,114,52,0,0, ++ 0,41,2,114,67,0,0,0,218,1,105,114,8,0,0,0, ++ 114,73,0,0,0,114,9,0,0,0,218,11,95,112,97,116, ++ 104,95,115,112,108,105,116,136,0,0,0,115,8,0,0,0, ++ 22,2,8,1,8,1,28,1,114,76,0,0,0,99,1,0, ++ 0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0, ++ 0,0,67,0,0,0,115,10,0,0,0,116,0,160,1,124, ++ 0,161,1,83,0,41,2,122,126,83,116,97,116,32,116,104, ++ 101,32,112,97,116,104,46,10,10,32,32,32,32,77,97,100, ++ 101,32,97,32,115,101,112,97,114,97,116,101,32,102,117,110, ++ 99,116,105,111,110,32,116,111,32,109,97,107,101,32,105,116, ++ 32,101,97,115,105,101,114,32,116,111,32,111,118,101,114,114, ++ 105,100,101,32,105,110,32,101,120,112,101,114,105,109,101,110, ++ 116,115,10,32,32,32,32,40,101,46,103,46,32,99,97,99, ++ 104,101,32,115,116,97,116,32,114,101,115,117,108,116,115,41, ++ 46,10,10,32,32,32,32,78,41,2,114,19,0,0,0,90, ++ 4,115,116,97,116,114,73,0,0,0,114,8,0,0,0,114, ++ 8,0,0,0,114,9,0,0,0,218,10,95,112,97,116,104, ++ 95,115,116,97,116,144,0,0,0,115,2,0,0,0,10,7, ++ 114,77,0,0,0,99,2,0,0,0,0,0,0,0,0,0, ++ 0,0,3,0,0,0,8,0,0,0,67,0,0,0,115,48, ++ 0,0,0,122,6,116,0,124,0,131,1,125,2,87,0,110, ++ 10,4,0,116,1,121,16,1,0,1,0,1,0,89,0,100, ++ 1,83,0,119,0,124,2,106,2,100,2,64,0,124,1,107, ++ 2,83,0,41,4,122,49,84,101,115,116,32,119,104,101,116, ++ 104,101,114,32,116,104,101,32,112,97,116,104,32,105,115,32, ++ 116,104,101,32,115,112,101,99,105,102,105,101,100,32,109,111, ++ 100,101,32,116,121,112,101,46,70,105,0,240,0,0,78,41, ++ 3,114,77,0,0,0,218,7,79,83,69,114,114,111,114,218, ++ 7,115,116,95,109,111,100,101,41,3,114,67,0,0,0,218, ++ 4,109,111,100,101,90,9,115,116,97,116,95,105,110,102,111, ++ 114,8,0,0,0,114,8,0,0,0,114,9,0,0,0,218, ++ 18,95,112,97,116,104,95,105,115,95,109,111,100,101,95,116, ++ 121,112,101,154,0,0,0,115,12,0,0,0,2,2,12,1, ++ 12,1,6,1,2,255,14,2,114,81,0,0,0,99,1,0, ++ 0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0, ++ 0,0,67,0,0,0,115,10,0,0,0,116,0,124,0,100, ++ 1,131,2,83,0,41,3,122,31,82,101,112,108,97,99,101, ++ 109,101,110,116,32,102,111,114,32,111,115,46,112,97,116,104, ++ 46,105,115,102,105,108,101,46,105,0,128,0,0,78,41,1, ++ 114,81,0,0,0,114,73,0,0,0,114,8,0,0,0,114, ++ 8,0,0,0,114,9,0,0,0,218,12,95,112,97,116,104, ++ 95,105,115,102,105,108,101,163,0,0,0,243,2,0,0,0, ++ 10,2,114,82,0,0,0,99,1,0,0,0,0,0,0,0, ++ 0,0,0,0,1,0,0,0,3,0,0,0,67,0,0,0, ++ 115,22,0,0,0,124,0,115,6,116,0,160,1,161,0,125, ++ 0,116,2,124,0,100,1,131,2,83,0,41,3,122,30,82, ++ 101,112,108,97,99,101,109,101,110,116,32,102,111,114,32,111, ++ 115,46,112,97,116,104,46,105,115,100,105,114,46,105,0,64, ++ 0,0,78,41,3,114,19,0,0,0,218,6,103,101,116,99, ++ 119,100,114,81,0,0,0,114,73,0,0,0,114,8,0,0, ++ 0,114,8,0,0,0,114,9,0,0,0,218,11,95,112,97, ++ 116,104,95,105,115,100,105,114,168,0,0,0,115,6,0,0, ++ 0,4,2,8,1,10,1,114,85,0,0,0,99,1,0,0, ++ 0,0,0,0,0,0,0,0,0,2,0,0,0,4,0,0, ++ 0,67,0,0,0,115,62,0,0,0,124,0,115,4,100,1, ++ 83,0,116,0,160,1,124,0,161,1,100,2,25,0,160,2, ++ 100,3,100,4,161,2,125,1,116,3,124,1,131,1,100,5, ++ 107,4,111,30,124,1,160,4,100,6,161,1,112,30,124,1, ++ 160,5,100,4,161,1,83,0,41,8,250,30,82,101,112,108, ++ 97,99,101,109,101,110,116,32,102,111,114,32,111,115,46,112, ++ 97,116,104,46,105,115,97,98,115,46,70,114,0,0,0,0, ++ 114,2,0,0,0,114,1,0,0,0,114,4,0,0,0,122, ++ 2,92,92,78,41,6,114,19,0,0,0,114,58,0,0,0, ++ 218,7,114,101,112,108,97,99,101,114,5,0,0,0,114,28, ++ 0,0,0,114,60,0,0,0,41,2,114,67,0,0,0,114, ++ 66,0,0,0,114,8,0,0,0,114,8,0,0,0,114,9, ++ 0,0,0,218,11,95,112,97,116,104,95,105,115,97,98,115, ++ 176,0,0,0,115,8,0,0,0,4,2,4,1,22,1,32, ++ 1,114,88,0,0,0,99,1,0,0,0,0,0,0,0,0, ++ 0,0,0,1,0,0,0,3,0,0,0,67,0,0,0,115, ++ 10,0,0,0,124,0,160,0,116,1,161,1,83,0,41,2, ++ 114,86,0,0,0,78,41,2,114,28,0,0,0,114,52,0, ++ 0,0,114,73,0,0,0,114,8,0,0,0,114,8,0,0, ++ 0,114,9,0,0,0,114,88,0,0,0,184,0,0,0,114, ++ 83,0,0,0,233,182,1,0,0,99,3,0,0,0,0,0, ++ 0,0,0,0,0,0,6,0,0,0,11,0,0,0,67,0, ++ 0,0,115,170,0,0,0,100,1,160,0,124,0,116,1,124, ++ 0,131,1,161,2,125,3,116,2,160,3,124,3,116,2,106, ++ 4,116,2,106,5,66,0,116,2,106,6,66,0,124,2,100, ++ 2,64,0,161,3,125,4,122,36,116,7,160,8,124,4,100, ++ 3,161,2,143,13,125,5,124,5,160,9,124,1,161,1,1, ++ 0,87,0,100,4,4,0,4,0,131,3,1,0,110,8,49, ++ 0,115,47,119,1,1,0,1,0,1,0,89,0,1,0,116, ++ 2,160,10,124,3,124,0,161,2,1,0,87,0,100,4,83, ++ 0,4,0,116,11,121,84,1,0,1,0,1,0,122,7,116, ++ 2,160,12,124,3,161,1,1,0,87,0,130,0,4,0,116, ++ 11,121,83,1,0,1,0,1,0,89,0,130,0,119,0,119, ++ 0,41,5,122,162,66,101,115,116,45,101,102,102,111,114,116, ++ 32,102,117,110,99,116,105,111,110,32,116,111,32,119,114,105, ++ 116,101,32,100,97,116,97,32,116,111,32,97,32,112,97,116, ++ 104,32,97,116,111,109,105,99,97,108,108,121,46,10,32,32, ++ 32,32,66,101,32,112,114,101,112,97,114,101,100,32,116,111, ++ 32,104,97,110,100,108,101,32,97,32,70,105,108,101,69,120, ++ 105,115,116,115,69,114,114,111,114,32,105,102,32,99,111,110, ++ 99,117,114,114,101,110,116,32,119,114,105,116,105,110,103,32, ++ 111,102,32,116,104,101,10,32,32,32,32,116,101,109,112,111, ++ 114,97,114,121,32,102,105,108,101,32,105,115,32,97,116,116, ++ 101,109,112,116,101,100,46,250,5,123,125,46,123,125,114,89, ++ 0,0,0,90,2,119,98,78,41,13,218,6,102,111,114,109, ++ 97,116,218,2,105,100,114,19,0,0,0,90,4,111,112,101, ++ 110,90,6,79,95,69,88,67,76,90,7,79,95,67,82,69, ++ 65,84,90,8,79,95,87,82,79,78,76,89,218,3,95,105, ++ 111,218,6,70,105,108,101,73,79,218,5,119,114,105,116,101, ++ 114,87,0,0,0,114,78,0,0,0,90,6,117,110,108,105, ++ 110,107,41,6,114,67,0,0,0,114,43,0,0,0,114,80, ++ 0,0,0,90,8,112,97,116,104,95,116,109,112,90,2,102, ++ 100,218,4,102,105,108,101,114,8,0,0,0,114,8,0,0, ++ 0,114,9,0,0,0,218,13,95,119,114,105,116,101,95,97, ++ 116,111,109,105,99,189,0,0,0,115,36,0,0,0,16,5, ++ 6,1,22,1,4,255,2,2,14,3,12,1,28,255,18,2, ++ 12,1,2,1,12,1,2,3,12,254,2,1,2,1,2,254, ++ 2,253,114,97,0,0,0,105,111,13,0,0,114,46,0,0, ++ 0,114,34,0,0,0,115,2,0,0,0,13,10,90,11,95, ++ 95,112,121,99,97,99,104,101,95,95,122,4,111,112,116,45, ++ 122,3,46,112,121,122,4,46,112,121,119,122,4,46,112,121, ++ 99,41,1,218,12,111,112,116,105,109,105,122,97,116,105,111, ++ 110,99,2,0,0,0,0,0,0,0,1,0,0,0,12,0, ++ 0,0,5,0,0,0,67,0,0,0,115,80,1,0,0,124, ++ 1,100,1,117,1,114,26,116,0,160,1,100,2,116,2,161, ++ 2,1,0,124,2,100,1,117,1,114,20,100,3,125,3,116, ++ 3,124,3,131,1,130,1,124,1,114,24,100,4,110,1,100, ++ 5,125,2,116,4,160,5,124,0,161,1,125,0,116,6,124, ++ 0,131,1,92,2,125,4,125,5,124,5,160,7,100,6,161, ++ 1,92,3,125,6,125,7,125,8,116,8,106,9,106,10,125, ++ 9,124,9,100,1,117,0,114,57,116,11,100,7,131,1,130, ++ 1,100,4,160,12,124,6,114,63,124,6,110,1,124,8,124, ++ 7,124,9,103,3,161,1,125,10,124,2,100,1,117,0,114, ++ 86,116,8,106,13,106,14,100,8,107,2,114,82,100,4,125, ++ 2,110,4,116,8,106,13,106,14,125,2,116,15,124,2,131, ++ 1,125,2,124,2,100,4,107,3,114,112,124,2,160,16,161, ++ 0,115,105,116,17,100,9,160,18,124,2,161,1,131,1,130, ++ 1,100,10,160,18,124,10,116,19,124,2,161,3,125,10,124, ++ 10,116,20,100,8,25,0,23,0,125,11,116,8,106,21,100, ++ 1,117,1,114,162,116,22,124,4,131,1,115,134,116,23,116, ++ 4,160,24,161,0,124,4,131,2,125,4,124,4,100,5,25, ++ 0,100,11,107,2,114,152,124,4,100,8,25,0,116,25,118, ++ 1,114,152,124,4,100,12,100,1,133,2,25,0,125,4,116, ++ 23,116,8,106,21,124,4,160,26,116,25,161,1,124,11,131, ++ 3,83,0,116,23,124,4,116,27,124,11,131,3,83,0,41, ++ 13,97,254,2,0,0,71,105,118,101,110,32,116,104,101,32, ++ 112,97,116,104,32,116,111,32,97,32,46,112,121,32,102,105, ++ 108,101,44,32,114,101,116,117,114,110,32,116,104,101,32,112, ++ 97,116,104,32,116,111,32,105,116,115,32,46,112,121,99,32, ++ 102,105,108,101,46,10,10,32,32,32,32,84,104,101,32,46, ++ 112,121,32,102,105,108,101,32,100,111,101,115,32,110,111,116, ++ 32,110,101,101,100,32,116,111,32,101,120,105,115,116,59,32, ++ 116,104,105,115,32,115,105,109,112,108,121,32,114,101,116,117, ++ 114,110,115,32,116,104,101,32,112,97,116,104,32,116,111,32, ++ 116,104,101,10,32,32,32,32,46,112,121,99,32,102,105,108, ++ 101,32,99,97,108,99,117,108,97,116,101,100,32,97,115,32, ++ 105,102,32,116,104,101,32,46,112,121,32,102,105,108,101,32, ++ 119,101,114,101,32,105,109,112,111,114,116,101,100,46,10,10, ++ 32,32,32,32,84,104,101,32,39,111,112,116,105,109,105,122, ++ 97,116,105,111,110,39,32,112,97,114,97,109,101,116,101,114, ++ 32,99,111,110,116,114,111,108,115,32,116,104,101,32,112,114, ++ 101,115,117,109,101,100,32,111,112,116,105,109,105,122,97,116, ++ 105,111,110,32,108,101,118,101,108,32,111,102,10,32,32,32, ++ 32,116,104,101,32,98,121,116,101,99,111,100,101,32,102,105, ++ 108,101,46,32,73,102,32,39,111,112,116,105,109,105,122,97, ++ 116,105,111,110,39,32,105,115,32,110,111,116,32,78,111,110, ++ 101,44,32,116,104,101,32,115,116,114,105,110,103,32,114,101, ++ 112,114,101,115,101,110,116,97,116,105,111,110,10,32,32,32, ++ 32,111,102,32,116,104,101,32,97,114,103,117,109,101,110,116, ++ 32,105,115,32,116,97,107,101,110,32,97,110,100,32,118,101, ++ 114,105,102,105,101,100,32,116,111,32,98,101,32,97,108,112, ++ 104,97,110,117,109,101,114,105,99,32,40,101,108,115,101,32, ++ 86,97,108,117,101,69,114,114,111,114,10,32,32,32,32,105, ++ 115,32,114,97,105,115,101,100,41,46,10,10,32,32,32,32, ++ 84,104,101,32,100,101,98,117,103,95,111,118,101,114,114,105, ++ 100,101,32,112,97,114,97,109,101,116,101,114,32,105,115,32, ++ 100,101,112,114,101,99,97,116,101,100,46,32,73,102,32,100, ++ 101,98,117,103,95,111,118,101,114,114,105,100,101,32,105,115, ++ 32,110,111,116,32,78,111,110,101,44,10,32,32,32,32,97, ++ 32,84,114,117,101,32,118,97,108,117,101,32,105,115,32,116, ++ 104,101,32,115,97,109,101,32,97,115,32,115,101,116,116,105, ++ 110,103,32,39,111,112,116,105,109,105,122,97,116,105,111,110, ++ 39,32,116,111,32,116,104,101,32,101,109,112,116,121,32,115, ++ 116,114,105,110,103,10,32,32,32,32,119,104,105,108,101,32, ++ 97,32,70,97,108,115,101,32,118,97,108,117,101,32,105,115, ++ 32,101,113,117,105,118,97,108,101,110,116,32,116,111,32,115, ++ 101,116,116,105,110,103,32,39,111,112,116,105,109,105,122,97, ++ 116,105,111,110,39,32,116,111,32,39,49,39,46,10,10,32, ++ 32,32,32,73,102,32,115,121,115,46,105,109,112,108,101,109, ++ 101,110,116,97,116,105,111,110,46,99,97,99,104,101,95,116, ++ 97,103,32,105,115,32,78,111,110,101,32,116,104,101,110,32, ++ 78,111,116,73,109,112,108,101,109,101,110,116,101,100,69,114, ++ 114,111,114,32,105,115,32,114,97,105,115,101,100,46,10,10, ++ 32,32,32,32,78,122,70,116,104,101,32,100,101,98,117,103, ++ 95,111,118,101,114,114,105,100,101,32,112,97,114,97,109,101, ++ 116,101,114,32,105,115,32,100,101,112,114,101,99,97,116,101, ++ 100,59,32,117,115,101,32,39,111,112,116,105,109,105,122,97, ++ 116,105,111,110,39,32,105,110,115,116,101,97,100,122,50,100, ++ 101,98,117,103,95,111,118,101,114,114,105,100,101,32,111,114, ++ 32,111,112,116,105,109,105,122,97,116,105,111,110,32,109,117, ++ 115,116,32,98,101,32,115,101,116,32,116,111,32,78,111,110, ++ 101,114,11,0,0,0,114,4,0,0,0,218,1,46,250,36, + 115,121,115,46,105,109,112,108,101,109,101,110,116,97,116,105, + 111,110,46,99,97,99,104,101,95,116,97,103,32,105,115,32, +- 78,111,110,101,32,116,104,101,110,32,78,111,116,73,109,112, +- 108,101,109,101,110,116,101,100,69,114,114,111,114,32,105,115, +- 32,114,97,105,115,101,100,46,10,10,32,32,32,32,78,122, +- 70,116,104,101,32,100,101,98,117,103,95,111,118,101,114,114, +- 105,100,101,32,112,97,114,97,109,101,116,101,114,32,105,115, +- 32,100,101,112,114,101,99,97,116,101,100,59,32,117,115,101, +- 32,39,111,112,116,105,109,105,122,97,116,105,111,110,39,32, +- 105,110,115,116,101,97,100,122,50,100,101,98,117,103,95,111, +- 118,101,114,114,105,100,101,32,111,114,32,111,112,116,105,109, +- 105,122,97,116,105,111,110,32,109,117,115,116,32,98,101,32, +- 115,101,116,32,116,111,32,78,111,110,101,114,10,0,0,0, +- 114,3,0,0,0,218,1,46,250,36,115,121,115,46,105,109, +- 112,108,101,109,101,110,116,97,116,105,111,110,46,99,97,99, +- 104,101,95,116,97,103,32,105,115,32,78,111,110,101,114,0, +- 0,0,0,122,24,123,33,114,125,32,105,115,32,110,111,116, +- 32,97,108,112,104,97,110,117,109,101,114,105,99,122,7,123, +- 125,46,123,125,123,125,114,11,0,0,0,114,44,0,0,0, +- 41,28,218,9,95,119,97,114,110,105,110,103,115,218,4,119, +- 97,114,110,218,18,68,101,112,114,101,99,97,116,105,111,110, +- 87,97,114,110,105,110,103,218,9,84,121,112,101,69,114,114, +- 111,114,114,18,0,0,0,218,6,102,115,112,97,116,104,114, +- 74,0,0,0,218,10,114,112,97,114,116,105,116,105,111,110, +- 114,15,0,0,0,218,14,105,109,112,108,101,109,101,110,116, +- 97,116,105,111,110,218,9,99,97,99,104,101,95,116,97,103, +- 218,19,78,111,116,73,109,112,108,101,109,101,110,116,101,100, +- 69,114,114,111,114,114,62,0,0,0,114,16,0,0,0,218, +- 8,111,112,116,105,109,105,122,101,218,3,115,116,114,218,7, +- 105,115,97,108,110,117,109,218,10,86,97,108,117,101,69,114, +- 114,111,114,114,89,0,0,0,218,4,95,79,80,84,218,17, +- 66,89,84,69,67,79,68,69,95,83,85,70,70,73,88,69, +- 83,218,14,112,121,99,97,99,104,101,95,112,114,101,102,105, +- 120,114,86,0,0,0,114,67,0,0,0,114,82,0,0,0, +- 114,50,0,0,0,218,6,108,115,116,114,105,112,218,8,95, +- 80,89,67,65,67,72,69,41,12,114,65,0,0,0,90,14, +- 100,101,98,117,103,95,111,118,101,114,114,105,100,101,114,96, +- 0,0,0,218,7,109,101,115,115,97,103,101,218,4,104,101, +- 97,100,114,66,0,0,0,90,4,98,97,115,101,114,6,0, +- 0,0,218,4,114,101,115,116,90,3,116,97,103,90,15,97, +- 108,109,111,115,116,95,102,105,108,101,110,97,109,101,218,8, +- 102,105,108,101,110,97,109,101,114,7,0,0,0,114,7,0, +- 0,0,114,8,0,0,0,218,17,99,97,99,104,101,95,102, +- 114,111,109,95,115,111,117,114,99,101,124,1,0,0,115,72, +- 0,0,0,8,18,6,1,2,1,4,255,8,2,4,1,8, +- 1,12,1,10,1,12,1,16,1,8,1,8,1,8,1,24, +- 1,8,1,12,1,6,1,8,2,8,1,8,1,8,1,14, +- 1,14,1,12,1,10,1,8,9,14,1,24,5,12,1,2, +- 4,4,1,8,1,2,1,4,253,12,5,114,121,0,0,0, +- 99,1,0,0,0,0,0,0,0,0,0,0,0,10,0,0, +- 0,5,0,0,0,67,0,0,0,115,40,1,0,0,116,0, +- 106,1,106,2,100,1,117,0,114,10,116,3,100,2,131,1, +- 130,1,116,4,160,5,124,0,161,1,125,0,116,6,124,0, +- 131,1,92,2,125,1,125,2,100,3,125,3,116,0,106,7, +- 100,1,117,1,114,51,116,0,106,7,160,8,116,9,161,1, +- 125,4,124,1,160,10,124,4,116,11,23,0,161,1,114,51, +- 124,1,116,12,124,4,131,1,100,1,133,2,25,0,125,1, +- 100,4,125,3,124,3,115,72,116,6,124,1,131,1,92,2, +- 125,1,125,5,124,5,116,13,107,3,114,72,116,14,116,13, +- 155,0,100,5,124,0,155,2,157,3,131,1,130,1,124,2, +- 160,15,100,6,161,1,125,6,124,6,100,7,118,1,114,88, +- 116,14,100,8,124,2,155,2,157,2,131,1,130,1,124,6, +- 100,9,107,2,114,132,124,2,160,16,100,6,100,10,161,2, +- 100,11,25,0,125,7,124,7,160,10,116,17,161,1,115,112, +- 116,14,100,12,116,17,155,2,157,2,131,1,130,1,124,7, +- 116,12,116,17,131,1,100,1,133,2,25,0,125,8,124,8, +- 160,18,161,0,115,132,116,14,100,13,124,7,155,2,100,14, +- 157,3,131,1,130,1,124,2,160,19,100,6,161,1,100,15, +- 25,0,125,9,116,20,124,1,124,9,116,21,100,15,25,0, +- 23,0,131,2,83,0,41,16,97,110,1,0,0,71,105,118, +- 101,110,32,116,104,101,32,112,97,116,104,32,116,111,32,97, +- 32,46,112,121,99,46,32,102,105,108,101,44,32,114,101,116, +- 117,114,110,32,116,104,101,32,112,97,116,104,32,116,111,32, +- 105,116,115,32,46,112,121,32,102,105,108,101,46,10,10,32, +- 32,32,32,84,104,101,32,46,112,121,99,32,102,105,108,101, +- 32,100,111,101,115,32,110,111,116,32,110,101,101,100,32,116, +- 111,32,101,120,105,115,116,59,32,116,104,105,115,32,115,105, +- 109,112,108,121,32,114,101,116,117,114,110,115,32,116,104,101, +- 32,112,97,116,104,32,116,111,10,32,32,32,32,116,104,101, +- 32,46,112,121,32,102,105,108,101,32,99,97,108,99,117,108, +- 97,116,101,100,32,116,111,32,99,111,114,114,101,115,112,111, +- 110,100,32,116,111,32,116,104,101,32,46,112,121,99,32,102, +- 105,108,101,46,32,32,73,102,32,112,97,116,104,32,100,111, +- 101,115,10,32,32,32,32,110,111,116,32,99,111,110,102,111, +- 114,109,32,116,111,32,80,69,80,32,51,49,52,55,47,52, +- 56,56,32,102,111,114,109,97,116,44,32,86,97,108,117,101, +- 69,114,114,111,114,32,119,105,108,108,32,98,101,32,114,97, +- 105,115,101,100,46,32,73,102,10,32,32,32,32,115,121,115, +- 46,105,109,112,108,101,109,101,110,116,97,116,105,111,110,46, +- 99,97,99,104,101,95,116,97,103,32,105,115,32,78,111,110, +- 101,32,116,104,101,110,32,78,111,116,73,109,112,108,101,109, +- 101,110,116,101,100,69,114,114,111,114,32,105,115,32,114,97, +- 105,115,101,100,46,10,10,32,32,32,32,78,114,98,0,0, +- 0,70,84,122,31,32,110,111,116,32,98,111,116,116,111,109, +- 45,108,101,118,101,108,32,100,105,114,101,99,116,111,114,121, +- 32,105,110,32,114,97,0,0,0,62,2,0,0,0,114,44, +- 0,0,0,233,3,0,0,0,122,29,101,120,112,101,99,116, +- 101,100,32,111,110,108,121,32,50,32,111,114,32,51,32,100, +- 111,116,115,32,105,110,32,114,122,0,0,0,114,44,0,0, +- 0,233,254,255,255,255,122,53,111,112,116,105,109,105,122,97, +- 116,105,111,110,32,112,111,114,116,105,111,110,32,111,102,32, +- 102,105,108,101,110,97,109,101,32,100,111,101,115,32,110,111, +- 116,32,115,116,97,114,116,32,119,105,116,104,32,122,19,111, +- 112,116,105,109,105,122,97,116,105,111,110,32,108,101,118,101, +- 108,32,122,29,32,105,115,32,110,111,116,32,97,110,32,97, +- 108,112,104,97,110,117,109,101,114,105,99,32,118,97,108,117, +- 101,114,0,0,0,0,41,22,114,15,0,0,0,114,105,0, +- 0,0,114,106,0,0,0,114,107,0,0,0,114,18,0,0, +- 0,114,103,0,0,0,114,74,0,0,0,114,114,0,0,0, +- 114,49,0,0,0,114,50,0,0,0,114,26,0,0,0,114, +- 59,0,0,0,114,4,0,0,0,114,116,0,0,0,114,111, +- 0,0,0,218,5,99,111,117,110,116,218,6,114,115,112,108, +- 105,116,114,112,0,0,0,114,110,0,0,0,218,9,112,97, +- 114,116,105,116,105,111,110,114,67,0,0,0,218,15,83,79, +- 85,82,67,69,95,83,85,70,70,73,88,69,83,41,10,114, +- 65,0,0,0,114,118,0,0,0,90,16,112,121,99,97,99, +- 104,101,95,102,105,108,101,110,97,109,101,90,23,102,111,117, +- 110,100,95,105,110,95,112,121,99,97,99,104,101,95,112,114, +- 101,102,105,120,90,13,115,116,114,105,112,112,101,100,95,112, +- 97,116,104,90,7,112,121,99,97,99,104,101,90,9,100,111, +- 116,95,99,111,117,110,116,114,96,0,0,0,90,9,111,112, +- 116,95,108,101,118,101,108,90,13,98,97,115,101,95,102,105, +- 108,101,110,97,109,101,114,7,0,0,0,114,7,0,0,0, +- 114,8,0,0,0,218,17,115,111,117,114,99,101,95,102,114, +- 111,109,95,99,97,99,104,101,195,1,0,0,115,60,0,0, +- 0,12,9,8,1,10,1,12,1,4,1,10,1,12,1,14, +- 1,16,1,4,1,4,1,12,1,8,1,8,1,2,1,8, +- 255,10,2,8,1,14,1,8,1,16,1,10,1,4,1,2, +- 1,8,255,16,2,8,1,16,1,14,2,18,1,114,128,0, +- 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,5, +- 0,0,0,9,0,0,0,67,0,0,0,115,124,0,0,0, +- 116,0,124,0,131,1,100,1,107,2,114,8,100,2,83,0, +- 124,0,160,1,100,3,161,1,92,3,125,1,125,2,125,3, +- 124,1,114,28,124,3,160,2,161,0,100,4,100,5,133,2, +- 25,0,100,6,107,3,114,30,124,0,83,0,122,6,116,3, +- 124,0,131,1,125,4,87,0,110,17,4,0,116,4,116,5, +- 102,2,121,53,1,0,1,0,1,0,124,0,100,2,100,5, +- 133,2,25,0,125,4,89,0,110,1,119,0,116,6,124,4, +- 131,1,114,60,124,4,83,0,124,0,83,0,41,7,122,188, +- 67,111,110,118,101,114,116,32,97,32,98,121,116,101,99,111, +- 100,101,32,102,105,108,101,32,112,97,116,104,32,116,111,32, +- 97,32,115,111,117,114,99,101,32,112,97,116,104,32,40,105, +- 102,32,112,111,115,115,105,98,108,101,41,46,10,10,32,32, +- 32,32,84,104,105,115,32,102,117,110,99,116,105,111,110,32, +- 101,120,105,115,116,115,32,112,117,114,101,108,121,32,102,111, +- 114,32,98,97,99,107,119,97,114,100,115,45,99,111,109,112, +- 97,116,105,98,105,108,105,116,121,32,102,111,114,10,32,32, +- 32,32,80,121,73,109,112,111,114,116,95,69,120,101,99,67, +- 111,100,101,77,111,100,117,108,101,87,105,116,104,70,105,108, +- 101,110,97,109,101,115,40,41,32,105,110,32,116,104,101,32, +- 67,32,65,80,73,46,10,10,32,32,32,32,114,0,0,0, +- 0,78,114,97,0,0,0,233,253,255,255,255,233,255,255,255, +- 255,90,2,112,121,41,7,114,4,0,0,0,114,104,0,0, +- 0,218,5,108,111,119,101,114,114,128,0,0,0,114,107,0, +- 0,0,114,111,0,0,0,114,80,0,0,0,41,5,218,13, +- 98,121,116,101,99,111,100,101,95,112,97,116,104,114,119,0, +- 0,0,218,1,95,90,9,101,120,116,101,110,115,105,111,110, +- 218,11,115,111,117,114,99,101,95,112,97,116,104,114,7,0, +- 0,0,114,7,0,0,0,114,8,0,0,0,218,15,95,103, +- 101,116,95,115,111,117,114,99,101,102,105,108,101,235,1,0, +- 0,115,22,0,0,0,12,7,4,1,16,1,24,1,4,1, +- 2,1,12,1,16,1,16,1,2,255,16,2,114,135,0,0, +- 0,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0, +- 0,0,8,0,0,0,67,0,0,0,115,68,0,0,0,124, +- 0,160,0,116,1,116,2,131,1,161,1,114,23,122,5,116, +- 3,124,0,131,1,87,0,83,0,4,0,116,4,121,22,1, +- 0,1,0,1,0,89,0,100,0,83,0,119,0,124,0,160, +- 0,116,1,116,5,131,1,161,1,114,32,124,0,83,0,100, +- 0,83,0,114,69,0,0,0,41,6,114,58,0,0,0,218, +- 5,116,117,112,108,101,114,127,0,0,0,114,121,0,0,0, +- 114,107,0,0,0,114,113,0,0,0,41,1,114,120,0,0, +- 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, +- 218,11,95,103,101,116,95,99,97,99,104,101,100,254,1,0, +- 0,115,18,0,0,0,14,1,2,1,10,1,12,1,6,1, +- 2,255,14,2,4,1,4,2,114,137,0,0,0,99,1,0, +- 0,0,0,0,0,0,0,0,0,0,2,0,0,0,8,0, +- 0,0,67,0,0,0,115,50,0,0,0,122,7,116,0,124, +- 0,131,1,106,1,125,1,87,0,110,11,4,0,116,2,121, +- 18,1,0,1,0,1,0,100,1,125,1,89,0,110,1,119, +- 0,124,1,100,2,79,0,125,1,124,1,83,0,41,4,122, +- 51,67,97,108,99,117,108,97,116,101,32,116,104,101,32,109, +- 111,100,101,32,112,101,114,109,105,115,115,105,111,110,115,32, +- 102,111,114,32,97,32,98,121,116,101,99,111,100,101,32,102, +- 105,108,101,46,114,87,0,0,0,233,128,0,0,0,78,41, +- 3,114,75,0,0,0,114,77,0,0,0,114,76,0,0,0, +- 41,2,114,65,0,0,0,114,78,0,0,0,114,7,0,0, +- 0,114,7,0,0,0,114,8,0,0,0,218,10,95,99,97, +- 108,99,95,109,111,100,101,10,2,0,0,115,14,0,0,0, +- 2,2,14,1,12,1,8,1,2,255,8,4,4,1,114,139, ++ 78,111,110,101,114,0,0,0,0,122,24,123,33,114,125,32, ++ 105,115,32,110,111,116,32,97,108,112,104,97,110,117,109,101, ++ 114,105,99,122,7,123,125,46,123,125,123,125,114,12,0,0, ++ 0,114,46,0,0,0,41,28,218,9,95,119,97,114,110,105, ++ 110,103,115,218,4,119,97,114,110,218,18,68,101,112,114,101, ++ 99,97,116,105,111,110,87,97,114,110,105,110,103,218,9,84, ++ 121,112,101,69,114,114,111,114,114,19,0,0,0,218,6,102, ++ 115,112,97,116,104,114,76,0,0,0,218,10,114,112,97,114, ++ 116,105,116,105,111,110,114,16,0,0,0,218,14,105,109,112, ++ 108,101,109,101,110,116,97,116,105,111,110,218,9,99,97,99, ++ 104,101,95,116,97,103,218,19,78,111,116,73,109,112,108,101, ++ 109,101,110,116,101,100,69,114,114,111,114,114,64,0,0,0, ++ 114,17,0,0,0,218,8,111,112,116,105,109,105,122,101,218, ++ 3,115,116,114,218,7,105,115,97,108,110,117,109,218,10,86, ++ 97,108,117,101,69,114,114,111,114,114,91,0,0,0,218,4, ++ 95,79,80,84,218,17,66,89,84,69,67,79,68,69,95,83, ++ 85,70,70,73,88,69,83,218,14,112,121,99,97,99,104,101, ++ 95,112,114,101,102,105,120,114,88,0,0,0,114,69,0,0, ++ 0,114,84,0,0,0,114,52,0,0,0,218,6,108,115,116, ++ 114,105,112,218,8,95,80,89,67,65,67,72,69,41,12,114, ++ 67,0,0,0,90,14,100,101,98,117,103,95,111,118,101,114, ++ 114,105,100,101,114,98,0,0,0,218,7,109,101,115,115,97, ++ 103,101,218,4,104,101,97,100,114,68,0,0,0,90,4,98, ++ 97,115,101,114,7,0,0,0,218,4,114,101,115,116,90,3, ++ 116,97,103,90,15,97,108,109,111,115,116,95,102,105,108,101, ++ 110,97,109,101,218,8,102,105,108,101,110,97,109,101,114,8, ++ 0,0,0,114,8,0,0,0,114,9,0,0,0,218,17,99, ++ 97,99,104,101,95,102,114,111,109,95,115,111,117,114,99,101, ++ 128,1,0,0,115,72,0,0,0,8,18,6,1,2,1,4, ++ 255,8,2,4,1,8,1,12,1,10,1,12,1,16,1,8, ++ 1,8,1,8,1,24,1,8,1,12,1,6,1,8,2,8, ++ 1,8,1,8,1,14,1,14,1,12,1,10,1,8,9,14, ++ 1,24,5,12,1,2,4,4,1,8,1,2,1,4,253,12, ++ 5,114,123,0,0,0,99,1,0,0,0,0,0,0,0,0, ++ 0,0,0,10,0,0,0,5,0,0,0,67,0,0,0,115, ++ 40,1,0,0,116,0,106,1,106,2,100,1,117,0,114,10, ++ 116,3,100,2,131,1,130,1,116,4,160,5,124,0,161,1, ++ 125,0,116,6,124,0,131,1,92,2,125,1,125,2,100,3, ++ 125,3,116,0,106,7,100,1,117,1,114,51,116,0,106,7, ++ 160,8,116,9,161,1,125,4,124,1,160,10,124,4,116,11, ++ 23,0,161,1,114,51,124,1,116,12,124,4,131,1,100,1, ++ 133,2,25,0,125,1,100,4,125,3,124,3,115,72,116,6, ++ 124,1,131,1,92,2,125,1,125,5,124,5,116,13,107,3, ++ 114,72,116,14,116,13,155,0,100,5,124,0,155,2,157,3, ++ 131,1,130,1,124,2,160,15,100,6,161,1,125,6,124,6, ++ 100,7,118,1,114,88,116,14,100,8,124,2,155,2,157,2, ++ 131,1,130,1,124,6,100,9,107,2,114,132,124,2,160,16, ++ 100,6,100,10,161,2,100,11,25,0,125,7,124,7,160,10, ++ 116,17,161,1,115,112,116,14,100,12,116,17,155,2,157,2, ++ 131,1,130,1,124,7,116,12,116,17,131,1,100,1,133,2, ++ 25,0,125,8,124,8,160,18,161,0,115,132,116,14,100,13, ++ 124,7,155,2,100,14,157,3,131,1,130,1,124,2,160,19, ++ 100,6,161,1,100,15,25,0,125,9,116,20,124,1,124,9, ++ 116,21,100,15,25,0,23,0,131,2,83,0,41,16,97,110, ++ 1,0,0,71,105,118,101,110,32,116,104,101,32,112,97,116, ++ 104,32,116,111,32,97,32,46,112,121,99,46,32,102,105,108, ++ 101,44,32,114,101,116,117,114,110,32,116,104,101,32,112,97, ++ 116,104,32,116,111,32,105,116,115,32,46,112,121,32,102,105, ++ 108,101,46,10,10,32,32,32,32,84,104,101,32,46,112,121, ++ 99,32,102,105,108,101,32,100,111,101,115,32,110,111,116,32, ++ 110,101,101,100,32,116,111,32,101,120,105,115,116,59,32,116, ++ 104,105,115,32,115,105,109,112,108,121,32,114,101,116,117,114, ++ 110,115,32,116,104,101,32,112,97,116,104,32,116,111,10,32, ++ 32,32,32,116,104,101,32,46,112,121,32,102,105,108,101,32, ++ 99,97,108,99,117,108,97,116,101,100,32,116,111,32,99,111, ++ 114,114,101,115,112,111,110,100,32,116,111,32,116,104,101,32, ++ 46,112,121,99,32,102,105,108,101,46,32,32,73,102,32,112, ++ 97,116,104,32,100,111,101,115,10,32,32,32,32,110,111,116, ++ 32,99,111,110,102,111,114,109,32,116,111,32,80,69,80,32, ++ 51,49,52,55,47,52,56,56,32,102,111,114,109,97,116,44, ++ 32,86,97,108,117,101,69,114,114,111,114,32,119,105,108,108, ++ 32,98,101,32,114,97,105,115,101,100,46,32,73,102,10,32, ++ 32,32,32,115,121,115,46,105,109,112,108,101,109,101,110,116, ++ 97,116,105,111,110,46,99,97,99,104,101,95,116,97,103,32, ++ 105,115,32,78,111,110,101,32,116,104,101,110,32,78,111,116, ++ 73,109,112,108,101,109,101,110,116,101,100,69,114,114,111,114, ++ 32,105,115,32,114,97,105,115,101,100,46,10,10,32,32,32, ++ 32,78,114,100,0,0,0,70,84,122,31,32,110,111,116,32, ++ 98,111,116,116,111,109,45,108,101,118,101,108,32,100,105,114, ++ 101,99,116,111,114,121,32,105,110,32,114,99,0,0,0,62, ++ 2,0,0,0,114,46,0,0,0,233,3,0,0,0,122,29, ++ 101,120,112,101,99,116,101,100,32,111,110,108,121,32,50,32, ++ 111,114,32,51,32,100,111,116,115,32,105,110,32,114,124,0, ++ 0,0,114,46,0,0,0,233,254,255,255,255,122,53,111,112, ++ 116,105,109,105,122,97,116,105,111,110,32,112,111,114,116,105, ++ 111,110,32,111,102,32,102,105,108,101,110,97,109,101,32,100, ++ 111,101,115,32,110,111,116,32,115,116,97,114,116,32,119,105, ++ 116,104,32,122,19,111,112,116,105,109,105,122,97,116,105,111, ++ 110,32,108,101,118,101,108,32,122,29,32,105,115,32,110,111, ++ 116,32,97,110,32,97,108,112,104,97,110,117,109,101,114,105, ++ 99,32,118,97,108,117,101,114,0,0,0,0,41,22,114,16, ++ 0,0,0,114,107,0,0,0,114,108,0,0,0,114,109,0, ++ 0,0,114,19,0,0,0,114,105,0,0,0,114,76,0,0, ++ 0,114,116,0,0,0,114,51,0,0,0,114,52,0,0,0, ++ 114,28,0,0,0,114,61,0,0,0,114,5,0,0,0,114, ++ 118,0,0,0,114,113,0,0,0,218,5,99,111,117,110,116, ++ 218,6,114,115,112,108,105,116,114,114,0,0,0,114,112,0, ++ 0,0,218,9,112,97,114,116,105,116,105,111,110,114,69,0, ++ 0,0,218,15,83,79,85,82,67,69,95,83,85,70,70,73, ++ 88,69,83,41,10,114,67,0,0,0,114,120,0,0,0,90, ++ 16,112,121,99,97,99,104,101,95,102,105,108,101,110,97,109, ++ 101,90,23,102,111,117,110,100,95,105,110,95,112,121,99,97, ++ 99,104,101,95,112,114,101,102,105,120,90,13,115,116,114,105, ++ 112,112,101,100,95,112,97,116,104,90,7,112,121,99,97,99, ++ 104,101,90,9,100,111,116,95,99,111,117,110,116,114,98,0, ++ 0,0,90,9,111,112,116,95,108,101,118,101,108,90,13,98, ++ 97,115,101,95,102,105,108,101,110,97,109,101,114,8,0,0, ++ 0,114,8,0,0,0,114,9,0,0,0,218,17,115,111,117, ++ 114,99,101,95,102,114,111,109,95,99,97,99,104,101,199,1, ++ 0,0,115,60,0,0,0,12,9,8,1,10,1,12,1,4, ++ 1,10,1,12,1,14,1,16,1,4,1,4,1,12,1,8, ++ 1,8,1,2,1,8,255,10,2,8,1,14,1,8,1,16, ++ 1,10,1,4,1,2,1,8,255,16,2,8,1,16,1,14, ++ 2,18,1,114,130,0,0,0,99,1,0,0,0,0,0,0, ++ 0,0,0,0,0,5,0,0,0,9,0,0,0,67,0,0, ++ 0,115,124,0,0,0,116,0,124,0,131,1,100,1,107,2, ++ 114,8,100,2,83,0,124,0,160,1,100,3,161,1,92,3, ++ 125,1,125,2,125,3,124,1,114,28,124,3,160,2,161,0, ++ 100,4,100,5,133,2,25,0,100,6,107,3,114,30,124,0, ++ 83,0,122,6,116,3,124,0,131,1,125,4,87,0,110,17, ++ 4,0,116,4,116,5,102,2,121,53,1,0,1,0,1,0, ++ 124,0,100,2,100,5,133,2,25,0,125,4,89,0,110,1, ++ 119,0,116,6,124,4,131,1,114,60,124,4,83,0,124,0, ++ 83,0,41,7,122,188,67,111,110,118,101,114,116,32,97,32, ++ 98,121,116,101,99,111,100,101,32,102,105,108,101,32,112,97, ++ 116,104,32,116,111,32,97,32,115,111,117,114,99,101,32,112, ++ 97,116,104,32,40,105,102,32,112,111,115,115,105,98,108,101, ++ 41,46,10,10,32,32,32,32,84,104,105,115,32,102,117,110, ++ 99,116,105,111,110,32,101,120,105,115,116,115,32,112,117,114, ++ 101,108,121,32,102,111,114,32,98,97,99,107,119,97,114,100, ++ 115,45,99,111,109,112,97,116,105,98,105,108,105,116,121,32, ++ 102,111,114,10,32,32,32,32,80,121,73,109,112,111,114,116, ++ 95,69,120,101,99,67,111,100,101,77,111,100,117,108,101,87, ++ 105,116,104,70,105,108,101,110,97,109,101,115,40,41,32,105, ++ 110,32,116,104,101,32,67,32,65,80,73,46,10,10,32,32, ++ 32,32,114,0,0,0,0,78,114,99,0,0,0,233,253,255, ++ 255,255,114,3,0,0,0,90,2,112,121,41,7,114,5,0, ++ 0,0,114,106,0,0,0,218,5,108,111,119,101,114,114,130, ++ 0,0,0,114,109,0,0,0,114,113,0,0,0,114,82,0, ++ 0,0,41,5,218,13,98,121,116,101,99,111,100,101,95,112, ++ 97,116,104,114,121,0,0,0,218,1,95,90,9,101,120,116, ++ 101,110,115,105,111,110,218,11,115,111,117,114,99,101,95,112, ++ 97,116,104,114,8,0,0,0,114,8,0,0,0,114,9,0, ++ 0,0,218,15,95,103,101,116,95,115,111,117,114,99,101,102, ++ 105,108,101,239,1,0,0,115,22,0,0,0,12,7,4,1, ++ 16,1,24,1,4,1,2,1,12,1,16,1,16,1,2,255, ++ 16,2,114,136,0,0,0,99,1,0,0,0,0,0,0,0, ++ 0,0,0,0,1,0,0,0,8,0,0,0,67,0,0,0, ++ 115,68,0,0,0,124,0,160,0,116,1,116,2,131,1,161, ++ 1,114,23,122,5,116,3,124,0,131,1,87,0,83,0,4, ++ 0,116,4,121,22,1,0,1,0,1,0,89,0,100,0,83, ++ 0,119,0,124,0,160,0,116,1,116,5,131,1,161,1,114, ++ 32,124,0,83,0,100,0,83,0,114,71,0,0,0,41,6, ++ 114,60,0,0,0,218,5,116,117,112,108,101,114,129,0,0, ++ 0,114,123,0,0,0,114,109,0,0,0,114,115,0,0,0, ++ 41,1,114,122,0,0,0,114,8,0,0,0,114,8,0,0, ++ 0,114,9,0,0,0,218,11,95,103,101,116,95,99,97,99, ++ 104,101,100,2,2,0,0,115,18,0,0,0,14,1,2,1, ++ 10,1,12,1,6,1,2,255,14,2,4,1,4,2,114,138, + 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, +- 3,0,0,0,4,0,0,0,3,0,0,0,115,52,0,0, +- 0,100,6,135,0,102,1,100,2,100,3,132,9,125,1,116, +- 0,100,1,117,1,114,15,116,0,106,1,125,2,110,4,100, +- 4,100,5,132,0,125,2,124,2,124,1,136,0,131,2,1, +- 0,124,1,83,0,41,7,122,252,68,101,99,111,114,97,116, +- 111,114,32,116,111,32,118,101,114,105,102,121,32,116,104,97, +- 116,32,116,104,101,32,109,111,100,117,108,101,32,98,101,105, +- 110,103,32,114,101,113,117,101,115,116,101,100,32,109,97,116, +- 99,104,101,115,32,116,104,101,32,111,110,101,32,116,104,101, +- 10,32,32,32,32,108,111,97,100,101,114,32,99,97,110,32, +- 104,97,110,100,108,101,46,10,10,32,32,32,32,84,104,101, +- 32,102,105,114,115,116,32,97,114,103,117,109,101,110,116,32, +- 40,115,101,108,102,41,32,109,117,115,116,32,100,101,102,105, +- 110,101,32,95,110,97,109,101,32,119,104,105,99,104,32,116, +- 104,101,32,115,101,99,111,110,100,32,97,114,103,117,109,101, +- 110,116,32,105,115,10,32,32,32,32,99,111,109,112,97,114, +- 101,100,32,97,103,97,105,110,115,116,46,32,73,102,32,116, +- 104,101,32,99,111,109,112,97,114,105,115,111,110,32,102,97, +- 105,108,115,32,116,104,101,110,32,73,109,112,111,114,116,69, +- 114,114,111,114,32,105,115,32,114,97,105,115,101,100,46,10, +- 10,32,32,32,32,78,99,2,0,0,0,0,0,0,0,0, +- 0,0,0,4,0,0,0,4,0,0,0,31,0,0,0,115, +- 72,0,0,0,124,1,100,0,117,0,114,8,124,0,106,0, +- 125,1,110,16,124,0,106,0,124,1,107,3,114,24,116,1, +- 100,1,124,0,106,0,124,1,102,2,22,0,124,1,100,2, +- 141,2,130,1,136,0,124,0,124,1,103,2,124,2,162,1, +- 82,0,105,0,124,3,164,1,142,1,83,0,41,3,78,122, +- 30,108,111,97,100,101,114,32,102,111,114,32,37,115,32,99, +- 97,110,110,111,116,32,104,97,110,100,108,101,32,37,115,169, +- 1,218,4,110,97,109,101,41,2,114,141,0,0,0,218,11, +- 73,109,112,111,114,116,69,114,114,111,114,41,4,218,4,115, +- 101,108,102,114,141,0,0,0,218,4,97,114,103,115,218,6, +- 107,119,97,114,103,115,169,1,218,6,109,101,116,104,111,100, +- 114,7,0,0,0,114,8,0,0,0,218,19,95,99,104,101, +- 99,107,95,110,97,109,101,95,119,114,97,112,112,101,114,30, +- 2,0,0,115,18,0,0,0,8,1,8,1,10,1,4,1, +- 8,1,2,255,2,1,6,255,24,2,122,40,95,99,104,101, +- 99,107,95,110,97,109,101,46,60,108,111,99,97,108,115,62, +- 46,95,99,104,101,99,107,95,110,97,109,101,95,119,114,97, +- 112,112,101,114,99,2,0,0,0,0,0,0,0,0,0,0, +- 0,3,0,0,0,7,0,0,0,83,0,0,0,115,56,0, +- 0,0,100,1,68,0,93,16,125,2,116,0,124,1,124,2, +- 131,2,114,18,116,1,124,0,124,2,116,2,124,1,124,2, +- 131,2,131,3,1,0,113,2,124,0,106,3,160,4,124,1, +- 106,3,161,1,1,0,100,0,83,0,41,2,78,41,4,218, +- 10,95,95,109,111,100,117,108,101,95,95,218,8,95,95,110, +- 97,109,101,95,95,218,12,95,95,113,117,97,108,110,97,109, +- 101,95,95,218,7,95,95,100,111,99,95,95,41,5,218,7, +- 104,97,115,97,116,116,114,218,7,115,101,116,97,116,116,114, +- 218,7,103,101,116,97,116,116,114,218,8,95,95,100,105,99, +- 116,95,95,218,6,117,112,100,97,116,101,41,3,90,3,110, +- 101,119,90,3,111,108,100,114,85,0,0,0,114,7,0,0, +- 0,114,7,0,0,0,114,8,0,0,0,218,5,95,119,114, +- 97,112,43,2,0,0,115,10,0,0,0,8,1,10,1,18, +- 1,2,128,18,1,122,26,95,99,104,101,99,107,95,110,97, +- 109,101,46,60,108,111,99,97,108,115,62,46,95,119,114,97, +- 112,114,69,0,0,0,41,2,218,10,95,98,111,111,116,115, +- 116,114,97,112,114,158,0,0,0,41,3,114,147,0,0,0, +- 114,148,0,0,0,114,158,0,0,0,114,7,0,0,0,114, +- 146,0,0,0,114,8,0,0,0,218,11,95,99,104,101,99, +- 107,95,110,97,109,101,22,2,0,0,115,12,0,0,0,14, +- 8,8,10,8,1,8,2,10,6,4,1,114,160,0,0,0, +- 99,2,0,0,0,0,0,0,0,0,0,0,0,5,0,0, +- 0,6,0,0,0,67,0,0,0,115,72,0,0,0,116,0, +- 160,1,100,1,116,2,161,2,1,0,124,0,160,3,124,1, +- 161,1,92,2,125,2,125,3,124,2,100,2,117,0,114,34, +- 116,4,124,3,131,1,114,34,100,3,125,4,116,0,160,1, +- 124,4,160,5,124,3,100,4,25,0,161,1,116,6,161,2, +- 1,0,124,2,83,0,41,5,122,155,84,114,121,32,116,111, +- 32,102,105,110,100,32,97,32,108,111,97,100,101,114,32,102, +- 111,114,32,116,104,101,32,115,112,101,99,105,102,105,101,100, +- 32,109,111,100,117,108,101,32,98,121,32,100,101,108,101,103, +- 97,116,105,110,103,32,116,111,10,32,32,32,32,115,101,108, +- 102,46,102,105,110,100,95,108,111,97,100,101,114,40,41,46, +- 10,10,32,32,32,32,84,104,105,115,32,109,101,116,104,111, +- 100,32,105,115,32,100,101,112,114,101,99,97,116,101,100,32, +- 105,110,32,102,97,118,111,114,32,111,102,32,102,105,110,100, +- 101,114,46,102,105,110,100,95,115,112,101,99,40,41,46,10, +- 10,32,32,32,32,122,90,102,105,110,100,95,109,111,100,117, +- 108,101,40,41,32,105,115,32,100,101,112,114,101,99,97,116, +- 101,100,32,97,110,100,32,115,108,97,116,101,100,32,102,111, +- 114,32,114,101,109,111,118,97,108,32,105,110,32,80,121,116, +- 104,111,110,32,51,46,49,50,59,32,117,115,101,32,102,105, +- 110,100,95,115,112,101,99,40,41,32,105,110,115,116,101,97, +- 100,78,122,44,78,111,116,32,105,109,112,111,114,116,105,110, +- 103,32,100,105,114,101,99,116,111,114,121,32,123,125,58,32, +- 109,105,115,115,105,110,103,32,95,95,105,110,105,116,95,95, +- 114,0,0,0,0,41,7,114,99,0,0,0,114,100,0,0, +- 0,114,101,0,0,0,218,11,102,105,110,100,95,108,111,97, +- 100,101,114,114,4,0,0,0,114,89,0,0,0,218,13,73, +- 109,112,111,114,116,87,97,114,110,105,110,103,41,5,114,143, +- 0,0,0,218,8,102,117,108,108,110,97,109,101,218,6,108, +- 111,97,100,101,114,218,8,112,111,114,116,105,111,110,115,218, +- 3,109,115,103,114,7,0,0,0,114,7,0,0,0,114,8, +- 0,0,0,218,17,95,102,105,110,100,95,109,111,100,117,108, +- 101,95,115,104,105,109,53,2,0,0,115,16,0,0,0,6, +- 7,2,2,4,254,14,6,16,1,4,1,22,1,4,1,114, +- 167,0,0,0,99,3,0,0,0,0,0,0,0,0,0,0, +- 0,6,0,0,0,4,0,0,0,67,0,0,0,115,166,0, +- 0,0,124,0,100,1,100,2,133,2,25,0,125,3,124,3, +- 116,0,107,3,114,32,100,3,124,1,155,2,100,4,124,3, +- 155,2,157,4,125,4,116,1,160,2,100,5,124,4,161,2, +- 1,0,116,3,124,4,102,1,105,0,124,2,164,1,142,1, +- 130,1,116,4,124,0,131,1,100,6,107,0,114,53,100,7, +- 124,1,155,2,157,2,125,4,116,1,160,2,100,5,124,4, +- 161,2,1,0,116,5,124,4,131,1,130,1,116,6,124,0, +- 100,2,100,8,133,2,25,0,131,1,125,5,124,5,100,9, +- 64,0,114,81,100,10,124,5,155,2,100,11,124,1,155,2, +- 157,4,125,4,116,3,124,4,102,1,105,0,124,2,164,1, +- 142,1,130,1,124,5,83,0,41,12,97,84,2,0,0,80, +- 101,114,102,111,114,109,32,98,97,115,105,99,32,118,97,108, +- 105,100,105,116,121,32,99,104,101,99,107,105,110,103,32,111, +- 102,32,97,32,112,121,99,32,104,101,97,100,101,114,32,97, +- 110,100,32,114,101,116,117,114,110,32,116,104,101,32,102,108, +- 97,103,115,32,102,105,101,108,100,44,10,32,32,32,32,119, +- 104,105,99,104,32,100,101,116,101,114,109,105,110,101,115,32, +- 104,111,119,32,116,104,101,32,112,121,99,32,115,104,111,117, +- 108,100,32,98,101,32,102,117,114,116,104,101,114,32,118,97, +- 108,105,100,97,116,101,100,32,97,103,97,105,110,115,116,32, +- 116,104,101,32,115,111,117,114,99,101,46,10,10,32,32,32, +- 32,42,100,97,116,97,42,32,105,115,32,116,104,101,32,99, +- 111,110,116,101,110,116,115,32,111,102,32,116,104,101,32,112, +- 121,99,32,102,105,108,101,46,32,40,79,110,108,121,32,116, +- 104,101,32,102,105,114,115,116,32,49,54,32,98,121,116,101, +- 115,32,97,114,101,10,32,32,32,32,114,101,113,117,105,114, +- 101,100,44,32,116,104,111,117,103,104,46,41,10,10,32,32, +- 32,32,42,110,97,109,101,42,32,105,115,32,116,104,101,32, +- 110,97,109,101,32,111,102,32,116,104,101,32,109,111,100,117, +- 108,101,32,98,101,105,110,103,32,105,109,112,111,114,116,101, +- 100,46,32,73,116,32,105,115,32,117,115,101,100,32,102,111, +- 114,32,108,111,103,103,105,110,103,46,10,10,32,32,32,32, +- 42,101,120,99,95,100,101,116,97,105,108,115,42,32,105,115, +- 32,97,32,100,105,99,116,105,111,110,97,114,121,32,112,97, +- 115,115,101,100,32,116,111,32,73,109,112,111,114,116,69,114, +- 114,111,114,32,105,102,32,105,116,32,114,97,105,115,101,100, +- 32,102,111,114,10,32,32,32,32,105,109,112,114,111,118,101, +- 100,32,100,101,98,117,103,103,105,110,103,46,10,10,32,32, +- 32,32,73,109,112,111,114,116,69,114,114,111,114,32,105,115, +- 32,114,97,105,115,101,100,32,119,104,101,110,32,116,104,101, +- 32,109,97,103,105,99,32,110,117,109,98,101,114,32,105,115, +- 32,105,110,99,111,114,114,101,99,116,32,111,114,32,119,104, +- 101,110,32,116,104,101,32,102,108,97,103,115,10,32,32,32, +- 32,102,105,101,108,100,32,105,115,32,105,110,118,97,108,105, +- 100,46,32,69,79,70,69,114,114,111,114,32,105,115,32,114, +- 97,105,115,101,100,32,119,104,101,110,32,116,104,101,32,100, +- 97,116,97,32,105,115,32,102,111,117,110,100,32,116,111,32, +- 98,101,32,116,114,117,110,99,97,116,101,100,46,10,10,32, +- 32,32,32,78,114,31,0,0,0,122,20,98,97,100,32,109, +- 97,103,105,99,32,110,117,109,98,101,114,32,105,110,32,122, +- 2,58,32,250,2,123,125,233,16,0,0,0,122,40,114,101, +- 97,99,104,101,100,32,69,79,70,32,119,104,105,108,101,32, +- 114,101,97,100,105,110,103,32,112,121,99,32,104,101,97,100, +- 101,114,32,111,102,32,233,8,0,0,0,233,252,255,255,255, +- 122,14,105,110,118,97,108,105,100,32,102,108,97,103,115,32, +- 122,4,32,105,110,32,41,7,218,12,77,65,71,73,67,95, +- 78,85,77,66,69,82,114,159,0,0,0,218,16,95,118,101, +- 114,98,111,115,101,95,109,101,115,115,97,103,101,114,142,0, +- 0,0,114,4,0,0,0,218,8,69,79,70,69,114,114,111, +- 114,114,42,0,0,0,41,6,114,41,0,0,0,114,141,0, +- 0,0,218,11,101,120,99,95,100,101,116,97,105,108,115,90, +- 5,109,97,103,105,99,114,117,0,0,0,114,16,0,0,0, +- 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, +- 13,95,99,108,97,115,115,105,102,121,95,112,121,99,73,2, +- 0,0,115,28,0,0,0,12,16,8,1,16,1,12,1,16, +- 1,12,1,10,1,12,1,8,1,16,1,8,2,16,1,16, +- 1,4,1,114,176,0,0,0,99,5,0,0,0,0,0,0, +- 0,0,0,0,0,6,0,0,0,4,0,0,0,67,0,0, +- 0,115,124,0,0,0,116,0,124,0,100,1,100,2,133,2, +- 25,0,131,1,124,1,100,3,64,0,107,3,114,31,100,4, +- 124,3,155,2,157,2,125,5,116,1,160,2,100,5,124,5, +- 161,2,1,0,116,3,124,5,102,1,105,0,124,4,164,1, +- 142,1,130,1,124,2,100,6,117,1,114,58,116,0,124,0, +- 100,2,100,7,133,2,25,0,131,1,124,2,100,3,64,0, +- 107,3,114,60,116,3,100,4,124,3,155,2,157,2,102,1, +- 105,0,124,4,164,1,142,1,130,1,100,6,83,0,100,6, +- 83,0,41,8,97,7,2,0,0,86,97,108,105,100,97,116, +- 101,32,97,32,112,121,99,32,97,103,97,105,110,115,116,32, +- 116,104,101,32,115,111,117,114,99,101,32,108,97,115,116,45, +- 109,111,100,105,102,105,101,100,32,116,105,109,101,46,10,10, +- 32,32,32,32,42,100,97,116,97,42,32,105,115,32,116,104, +- 101,32,99,111,110,116,101,110,116,115,32,111,102,32,116,104, +- 101,32,112,121,99,32,102,105,108,101,46,32,40,79,110,108, +- 121,32,116,104,101,32,102,105,114,115,116,32,49,54,32,98, +- 121,116,101,115,32,97,114,101,10,32,32,32,32,114,101,113, +- 117,105,114,101,100,46,41,10,10,32,32,32,32,42,115,111, +- 117,114,99,101,95,109,116,105,109,101,42,32,105,115,32,116, +- 104,101,32,108,97,115,116,32,109,111,100,105,102,105,101,100, +- 32,116,105,109,101,115,116,97,109,112,32,111,102,32,116,104, +- 101,32,115,111,117,114,99,101,32,102,105,108,101,46,10,10, +- 32,32,32,32,42,115,111,117,114,99,101,95,115,105,122,101, +- 42,32,105,115,32,78,111,110,101,32,111,114,32,116,104,101, +- 32,115,105,122,101,32,111,102,32,116,104,101,32,115,111,117, +- 114,99,101,32,102,105,108,101,32,105,110,32,98,121,116,101, +- 115,46,10,10,32,32,32,32,42,110,97,109,101,42,32,105, ++ 2,0,0,0,8,0,0,0,67,0,0,0,115,50,0,0, ++ 0,122,7,116,0,124,0,131,1,106,1,125,1,87,0,110, ++ 11,4,0,116,2,121,18,1,0,1,0,1,0,100,1,125, ++ 1,89,0,110,1,119,0,124,1,100,2,79,0,125,1,124, ++ 1,83,0,41,4,122,51,67,97,108,99,117,108,97,116,101, ++ 32,116,104,101,32,109,111,100,101,32,112,101,114,109,105,115, ++ 115,105,111,110,115,32,102,111,114,32,97,32,98,121,116,101, ++ 99,111,100,101,32,102,105,108,101,46,114,89,0,0,0,233, ++ 128,0,0,0,78,41,3,114,77,0,0,0,114,79,0,0, ++ 0,114,78,0,0,0,41,2,114,67,0,0,0,114,80,0, ++ 0,0,114,8,0,0,0,114,8,0,0,0,114,9,0,0, ++ 0,218,10,95,99,97,108,99,95,109,111,100,101,14,2,0, ++ 0,115,14,0,0,0,2,2,14,1,12,1,8,1,2,255, ++ 8,4,4,1,114,140,0,0,0,99,1,0,0,0,0,0, ++ 0,0,0,0,0,0,3,0,0,0,4,0,0,0,3,0, ++ 0,0,115,52,0,0,0,100,6,135,0,102,1,100,2,100, ++ 3,132,9,125,1,116,0,100,1,117,1,114,15,116,0,106, ++ 1,125,2,110,4,100,4,100,5,132,0,125,2,124,2,124, ++ 1,136,0,131,2,1,0,124,1,83,0,41,7,122,252,68, ++ 101,99,111,114,97,116,111,114,32,116,111,32,118,101,114,105, ++ 102,121,32,116,104,97,116,32,116,104,101,32,109,111,100,117, ++ 108,101,32,98,101,105,110,103,32,114,101,113,117,101,115,116, ++ 101,100,32,109,97,116,99,104,101,115,32,116,104,101,32,111, ++ 110,101,32,116,104,101,10,32,32,32,32,108,111,97,100,101, ++ 114,32,99,97,110,32,104,97,110,100,108,101,46,10,10,32, ++ 32,32,32,84,104,101,32,102,105,114,115,116,32,97,114,103, ++ 117,109,101,110,116,32,40,115,101,108,102,41,32,109,117,115, ++ 116,32,100,101,102,105,110,101,32,95,110,97,109,101,32,119, ++ 104,105,99,104,32,116,104,101,32,115,101,99,111,110,100,32, ++ 97,114,103,117,109,101,110,116,32,105,115,10,32,32,32,32, ++ 99,111,109,112,97,114,101,100,32,97,103,97,105,110,115,116, ++ 46,32,73,102,32,116,104,101,32,99,111,109,112,97,114,105, ++ 115,111,110,32,102,97,105,108,115,32,116,104,101,110,32,73, ++ 109,112,111,114,116,69,114,114,111,114,32,105,115,32,114,97, ++ 105,115,101,100,46,10,10,32,32,32,32,78,99,2,0,0, ++ 0,0,0,0,0,0,0,0,0,4,0,0,0,4,0,0, ++ 0,31,0,0,0,115,72,0,0,0,124,1,100,0,117,0, ++ 114,8,124,0,106,0,125,1,110,16,124,0,106,0,124,1, ++ 107,3,114,24,116,1,100,1,124,0,106,0,124,1,102,2, ++ 22,0,124,1,100,2,141,2,130,1,136,0,124,0,124,1, ++ 103,2,124,2,162,1,82,0,105,0,124,3,164,1,142,1, ++ 83,0,41,3,78,122,30,108,111,97,100,101,114,32,102,111, ++ 114,32,37,115,32,99,97,110,110,111,116,32,104,97,110,100, ++ 108,101,32,37,115,169,1,218,4,110,97,109,101,41,2,114, ++ 142,0,0,0,218,11,73,109,112,111,114,116,69,114,114,111, ++ 114,41,4,218,4,115,101,108,102,114,142,0,0,0,218,4, ++ 97,114,103,115,218,6,107,119,97,114,103,115,169,1,218,6, ++ 109,101,116,104,111,100,114,8,0,0,0,114,9,0,0,0, ++ 218,19,95,99,104,101,99,107,95,110,97,109,101,95,119,114, ++ 97,112,112,101,114,34,2,0,0,115,18,0,0,0,8,1, ++ 8,1,10,1,4,1,8,1,2,255,2,1,6,255,24,2, ++ 122,40,95,99,104,101,99,107,95,110,97,109,101,46,60,108, ++ 111,99,97,108,115,62,46,95,99,104,101,99,107,95,110,97, ++ 109,101,95,119,114,97,112,112,101,114,99,2,0,0,0,0, ++ 0,0,0,0,0,0,0,3,0,0,0,7,0,0,0,83, ++ 0,0,0,115,56,0,0,0,100,1,68,0,93,16,125,2, ++ 116,0,124,1,124,2,131,2,114,18,116,1,124,0,124,2, ++ 116,2,124,1,124,2,131,2,131,3,1,0,113,2,124,0, ++ 106,3,160,4,124,1,106,3,161,1,1,0,100,0,83,0, ++ 41,2,78,41,4,218,10,95,95,109,111,100,117,108,101,95, ++ 95,218,8,95,95,110,97,109,101,95,95,218,12,95,95,113, ++ 117,97,108,110,97,109,101,95,95,218,7,95,95,100,111,99, ++ 95,95,41,5,218,7,104,97,115,97,116,116,114,218,7,115, ++ 101,116,97,116,116,114,218,7,103,101,116,97,116,116,114,218, ++ 8,95,95,100,105,99,116,95,95,218,6,117,112,100,97,116, ++ 101,41,3,90,3,110,101,119,90,3,111,108,100,114,87,0, ++ 0,0,114,8,0,0,0,114,8,0,0,0,114,9,0,0, ++ 0,218,5,95,119,114,97,112,47,2,0,0,115,10,0,0, ++ 0,8,1,10,1,18,1,2,128,18,1,122,26,95,99,104, ++ 101,99,107,95,110,97,109,101,46,60,108,111,99,97,108,115, ++ 62,46,95,119,114,97,112,114,71,0,0,0,41,2,218,10, ++ 95,98,111,111,116,115,116,114,97,112,114,159,0,0,0,41, ++ 3,114,148,0,0,0,114,149,0,0,0,114,159,0,0,0, ++ 114,8,0,0,0,114,147,0,0,0,114,9,0,0,0,218, ++ 11,95,99,104,101,99,107,95,110,97,109,101,26,2,0,0, ++ 115,12,0,0,0,14,8,8,10,8,1,8,2,10,6,4, ++ 1,114,161,0,0,0,99,2,0,0,0,0,0,0,0,0, ++ 0,0,0,5,0,0,0,6,0,0,0,67,0,0,0,115, ++ 72,0,0,0,116,0,160,1,100,1,116,2,161,2,1,0, ++ 124,0,160,3,124,1,161,1,92,2,125,2,125,3,124,2, ++ 100,2,117,0,114,34,116,4,124,3,131,1,114,34,100,3, ++ 125,4,116,0,160,1,124,4,160,5,124,3,100,4,25,0, ++ 161,1,116,6,161,2,1,0,124,2,83,0,41,5,122,155, ++ 84,114,121,32,116,111,32,102,105,110,100,32,97,32,108,111, ++ 97,100,101,114,32,102,111,114,32,116,104,101,32,115,112,101, ++ 99,105,102,105,101,100,32,109,111,100,117,108,101,32,98,121, ++ 32,100,101,108,101,103,97,116,105,110,103,32,116,111,10,32, ++ 32,32,32,115,101,108,102,46,102,105,110,100,95,108,111,97, ++ 100,101,114,40,41,46,10,10,32,32,32,32,84,104,105,115, ++ 32,109,101,116,104,111,100,32,105,115,32,100,101,112,114,101, ++ 99,97,116,101,100,32,105,110,32,102,97,118,111,114,32,111, ++ 102,32,102,105,110,100,101,114,46,102,105,110,100,95,115,112, ++ 101,99,40,41,46,10,10,32,32,32,32,122,90,102,105,110, ++ 100,95,109,111,100,117,108,101,40,41,32,105,115,32,100,101, ++ 112,114,101,99,97,116,101,100,32,97,110,100,32,115,108,97, ++ 116,101,100,32,102,111,114,32,114,101,109,111,118,97,108,32, ++ 105,110,32,80,121,116,104,111,110,32,51,46,49,50,59,32, ++ 117,115,101,32,102,105,110,100,95,115,112,101,99,40,41,32, ++ 105,110,115,116,101,97,100,78,122,44,78,111,116,32,105,109, ++ 112,111,114,116,105,110,103,32,100,105,114,101,99,116,111,114, ++ 121,32,123,125,58,32,109,105,115,115,105,110,103,32,95,95, ++ 105,110,105,116,95,95,114,0,0,0,0,41,7,114,101,0, ++ 0,0,114,102,0,0,0,114,103,0,0,0,218,11,102,105, ++ 110,100,95,108,111,97,100,101,114,114,5,0,0,0,114,91, ++ 0,0,0,218,13,73,109,112,111,114,116,87,97,114,110,105, ++ 110,103,41,5,114,144,0,0,0,218,8,102,117,108,108,110, ++ 97,109,101,218,6,108,111,97,100,101,114,218,8,112,111,114, ++ 116,105,111,110,115,218,3,109,115,103,114,8,0,0,0,114, ++ 8,0,0,0,114,9,0,0,0,218,17,95,102,105,110,100, ++ 95,109,111,100,117,108,101,95,115,104,105,109,57,2,0,0, ++ 115,16,0,0,0,6,7,2,2,4,254,14,6,16,1,4, ++ 1,22,1,4,1,114,168,0,0,0,99,3,0,0,0,0, ++ 0,0,0,0,0,0,0,6,0,0,0,4,0,0,0,67, ++ 0,0,0,115,166,0,0,0,124,0,100,1,100,2,133,2, ++ 25,0,125,3,124,3,116,0,107,3,114,32,100,3,124,1, ++ 155,2,100,4,124,3,155,2,157,4,125,4,116,1,160,2, ++ 100,5,124,4,161,2,1,0,116,3,124,4,102,1,105,0, ++ 124,2,164,1,142,1,130,1,116,4,124,0,131,1,100,6, ++ 107,0,114,53,100,7,124,1,155,2,157,2,125,4,116,1, ++ 160,2,100,5,124,4,161,2,1,0,116,5,124,4,131,1, ++ 130,1,116,6,124,0,100,2,100,8,133,2,25,0,131,1, ++ 125,5,124,5,100,9,64,0,114,81,100,10,124,5,155,2, ++ 100,11,124,1,155,2,157,4,125,4,116,3,124,4,102,1, ++ 105,0,124,2,164,1,142,1,130,1,124,5,83,0,41,12, ++ 97,84,2,0,0,80,101,114,102,111,114,109,32,98,97,115, ++ 105,99,32,118,97,108,105,100,105,116,121,32,99,104,101,99, ++ 107,105,110,103,32,111,102,32,97,32,112,121,99,32,104,101, ++ 97,100,101,114,32,97,110,100,32,114,101,116,117,114,110,32, ++ 116,104,101,32,102,108,97,103,115,32,102,105,101,108,100,44, ++ 10,32,32,32,32,119,104,105,99,104,32,100,101,116,101,114, ++ 109,105,110,101,115,32,104,111,119,32,116,104,101,32,112,121, ++ 99,32,115,104,111,117,108,100,32,98,101,32,102,117,114,116, ++ 104,101,114,32,118,97,108,105,100,97,116,101,100,32,97,103, ++ 97,105,110,115,116,32,116,104,101,32,115,111,117,114,99,101, ++ 46,10,10,32,32,32,32,42,100,97,116,97,42,32,105,115, ++ 32,116,104,101,32,99,111,110,116,101,110,116,115,32,111,102, ++ 32,116,104,101,32,112,121,99,32,102,105,108,101,46,32,40, ++ 79,110,108,121,32,116,104,101,32,102,105,114,115,116,32,49, ++ 54,32,98,121,116,101,115,32,97,114,101,10,32,32,32,32, ++ 114,101,113,117,105,114,101,100,44,32,116,104,111,117,103,104, ++ 46,41,10,10,32,32,32,32,42,110,97,109,101,42,32,105, + 115,32,116,104,101,32,110,97,109,101,32,111,102,32,116,104, + 101,32,109,111,100,117,108,101,32,98,101,105,110,103,32,105, + 109,112,111,114,116,101,100,46,32,73,116,32,105,115,32,117, +@@ -822,1946 +757,2014 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { + 112,111,114,116,69,114,114,111,114,32,105,102,32,105,116,32, + 114,97,105,115,101,100,32,102,111,114,10,32,32,32,32,105, + 109,112,114,111,118,101,100,32,100,101,98,117,103,103,105,110, +- 103,46,10,10,32,32,32,32,65,110,32,73,109,112,111,114, +- 116,69,114,114,111,114,32,105,115,32,114,97,105,115,101,100, +- 32,105,102,32,116,104,101,32,98,121,116,101,99,111,100,101, +- 32,105,115,32,115,116,97,108,101,46,10,10,32,32,32,32, +- 114,170,0,0,0,233,12,0,0,0,114,30,0,0,0,122, +- 22,98,121,116,101,99,111,100,101,32,105,115,32,115,116,97, +- 108,101,32,102,111,114,32,114,168,0,0,0,78,114,169,0, +- 0,0,41,4,114,42,0,0,0,114,159,0,0,0,114,173, +- 0,0,0,114,142,0,0,0,41,6,114,41,0,0,0,218, +- 12,115,111,117,114,99,101,95,109,116,105,109,101,218,11,115, +- 111,117,114,99,101,95,115,105,122,101,114,141,0,0,0,114, +- 175,0,0,0,114,117,0,0,0,114,7,0,0,0,114,7, +- 0,0,0,114,8,0,0,0,218,23,95,118,97,108,105,100, +- 97,116,101,95,116,105,109,101,115,116,97,109,112,95,112,121, +- 99,106,2,0,0,115,18,0,0,0,24,19,10,1,12,1, +- 16,1,8,1,22,1,2,255,22,2,8,254,114,180,0,0, +- 0,99,4,0,0,0,0,0,0,0,0,0,0,0,4,0, +- 0,0,4,0,0,0,67,0,0,0,115,42,0,0,0,124, +- 0,100,1,100,2,133,2,25,0,124,1,107,3,114,19,116, +- 0,100,3,124,2,155,2,157,2,102,1,105,0,124,3,164, +- 1,142,1,130,1,100,4,83,0,41,5,97,243,1,0,0, +- 86,97,108,105,100,97,116,101,32,97,32,104,97,115,104,45, +- 98,97,115,101,100,32,112,121,99,32,98,121,32,99,104,101, +- 99,107,105,110,103,32,116,104,101,32,114,101,97,108,32,115, +- 111,117,114,99,101,32,104,97,115,104,32,97,103,97,105,110, +- 115,116,32,116,104,101,32,111,110,101,32,105,110,10,32,32, +- 32,32,116,104,101,32,112,121,99,32,104,101,97,100,101,114, +- 46,10,10,32,32,32,32,42,100,97,116,97,42,32,105,115, +- 32,116,104,101,32,99,111,110,116,101,110,116,115,32,111,102, +- 32,116,104,101,32,112,121,99,32,102,105,108,101,46,32,40, +- 79,110,108,121,32,116,104,101,32,102,105,114,115,116,32,49, +- 54,32,98,121,116,101,115,32,97,114,101,10,32,32,32,32, +- 114,101,113,117,105,114,101,100,46,41,10,10,32,32,32,32, +- 42,115,111,117,114,99,101,95,104,97,115,104,42,32,105,115, +- 32,116,104,101,32,105,109,112,111,114,116,108,105,98,46,117, +- 116,105,108,46,115,111,117,114,99,101,95,104,97,115,104,40, +- 41,32,111,102,32,116,104,101,32,115,111,117,114,99,101,32, +- 102,105,108,101,46,10,10,32,32,32,32,42,110,97,109,101, +- 42,32,105,115,32,116,104,101,32,110,97,109,101,32,111,102, +- 32,116,104,101,32,109,111,100,117,108,101,32,98,101,105,110, +- 103,32,105,109,112,111,114,116,101,100,46,32,73,116,32,105, +- 115,32,117,115,101,100,32,102,111,114,32,108,111,103,103,105, +- 110,103,46,10,10,32,32,32,32,42,101,120,99,95,100,101, +- 116,97,105,108,115,42,32,105,115,32,97,32,100,105,99,116, +- 105,111,110,97,114,121,32,112,97,115,115,101,100,32,116,111, +- 32,73,109,112,111,114,116,69,114,114,111,114,32,105,102,32, +- 105,116,32,114,97,105,115,101,100,32,102,111,114,10,32,32, +- 32,32,105,109,112,114,111,118,101,100,32,100,101,98,117,103, +- 103,105,110,103,46,10,10,32,32,32,32,65,110,32,73,109, +- 112,111,114,116,69,114,114,111,114,32,105,115,32,114,97,105, +- 115,101,100,32,105,102,32,116,104,101,32,98,121,116,101,99, +- 111,100,101,32,105,115,32,115,116,97,108,101,46,10,10,32, +- 32,32,32,114,170,0,0,0,114,169,0,0,0,122,46,104, +- 97,115,104,32,105,110,32,98,121,116,101,99,111,100,101,32, +- 100,111,101,115,110,39,116,32,109,97,116,99,104,32,104,97, +- 115,104,32,111,102,32,115,111,117,114,99,101,32,78,41,1, +- 114,142,0,0,0,41,4,114,41,0,0,0,218,11,115,111, +- 117,114,99,101,95,104,97,115,104,114,141,0,0,0,114,175, +- 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, +- 0,0,218,18,95,118,97,108,105,100,97,116,101,95,104,97, +- 115,104,95,112,121,99,134,2,0,0,115,14,0,0,0,16, +- 17,2,1,8,1,4,255,2,2,6,254,4,255,114,182,0, +- 0,0,99,4,0,0,0,0,0,0,0,0,0,0,0,5, +- 0,0,0,5,0,0,0,67,0,0,0,115,76,0,0,0, +- 116,0,160,1,124,0,161,1,125,4,116,2,124,4,116,3, +- 131,2,114,28,116,4,160,5,100,1,124,2,161,2,1,0, +- 124,3,100,2,117,1,114,26,116,6,160,7,124,4,124,3, +- 161,2,1,0,124,4,83,0,116,8,100,3,160,9,124,2, +- 161,1,124,1,124,2,100,4,141,3,130,1,41,5,122,35, +- 67,111,109,112,105,108,101,32,98,121,116,101,99,111,100,101, +- 32,97,115,32,102,111,117,110,100,32,105,110,32,97,32,112, +- 121,99,46,122,21,99,111,100,101,32,111,98,106,101,99,116, +- 32,102,114,111,109,32,123,33,114,125,78,122,23,78,111,110, +- 45,99,111,100,101,32,111,98,106,101,99,116,32,105,110,32, +- 123,33,114,125,169,2,114,141,0,0,0,114,65,0,0,0, +- 41,10,218,7,109,97,114,115,104,97,108,90,5,108,111,97, +- 100,115,218,10,105,115,105,110,115,116,97,110,99,101,218,10, +- 95,99,111,100,101,95,116,121,112,101,114,159,0,0,0,114, +- 173,0,0,0,218,4,95,105,109,112,90,16,95,102,105,120, +- 95,99,111,95,102,105,108,101,110,97,109,101,114,142,0,0, +- 0,114,89,0,0,0,41,5,114,41,0,0,0,114,141,0, +- 0,0,114,132,0,0,0,114,134,0,0,0,218,4,99,111, +- 100,101,114,7,0,0,0,114,7,0,0,0,114,8,0,0, +- 0,218,17,95,99,111,109,112,105,108,101,95,98,121,116,101, +- 99,111,100,101,158,2,0,0,115,18,0,0,0,10,2,10, +- 1,12,1,8,1,12,1,4,1,10,2,4,1,6,255,114, +- 189,0,0,0,99,3,0,0,0,0,0,0,0,0,0,0, +- 0,4,0,0,0,5,0,0,0,67,0,0,0,115,70,0, +- 0,0,116,0,116,1,131,1,125,3,124,3,160,2,116,3, +- 100,1,131,1,161,1,1,0,124,3,160,2,116,3,124,1, +- 131,1,161,1,1,0,124,3,160,2,116,3,124,2,131,1, +- 161,1,1,0,124,3,160,2,116,4,160,5,124,0,161,1, +- 161,1,1,0,124,3,83,0,41,3,122,43,80,114,111,100, +- 117,99,101,32,116,104,101,32,100,97,116,97,32,102,111,114, +- 32,97,32,116,105,109,101,115,116,97,109,112,45,98,97,115, +- 101,100,32,112,121,99,46,114,0,0,0,0,78,41,6,218, +- 9,98,121,116,101,97,114,114,97,121,114,172,0,0,0,218, +- 6,101,120,116,101,110,100,114,36,0,0,0,114,184,0,0, +- 0,218,5,100,117,109,112,115,41,4,114,188,0,0,0,218, +- 5,109,116,105,109,101,114,179,0,0,0,114,41,0,0,0, +- 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, +- 22,95,99,111,100,101,95,116,111,95,116,105,109,101,115,116, +- 97,109,112,95,112,121,99,171,2,0,0,115,12,0,0,0, +- 8,2,14,1,14,1,14,1,16,1,4,1,114,194,0,0, +- 0,84,99,3,0,0,0,0,0,0,0,0,0,0,0,5, +- 0,0,0,5,0,0,0,67,0,0,0,115,80,0,0,0, +- 116,0,116,1,131,1,125,3,100,1,124,2,100,1,62,0, +- 66,0,125,4,124,3,160,2,116,3,124,4,131,1,161,1, +- 1,0,116,4,124,1,131,1,100,2,107,2,115,25,74,0, +- 130,1,124,3,160,2,124,1,161,1,1,0,124,3,160,2, +- 116,5,160,6,124,0,161,1,161,1,1,0,124,3,83,0, +- 41,4,122,38,80,114,111,100,117,99,101,32,116,104,101,32, +- 100,97,116,97,32,102,111,114,32,97,32,104,97,115,104,45, +- 98,97,115,101,100,32,112,121,99,46,114,3,0,0,0,114, +- 170,0,0,0,78,41,7,114,190,0,0,0,114,172,0,0, +- 0,114,191,0,0,0,114,36,0,0,0,114,4,0,0,0, +- 114,184,0,0,0,114,192,0,0,0,41,5,114,188,0,0, +- 0,114,181,0,0,0,90,7,99,104,101,99,107,101,100,114, +- 41,0,0,0,114,16,0,0,0,114,7,0,0,0,114,7, +- 0,0,0,114,8,0,0,0,218,17,95,99,111,100,101,95, +- 116,111,95,104,97,115,104,95,112,121,99,181,2,0,0,115, +- 14,0,0,0,8,2,12,1,14,1,16,1,10,1,16,1, +- 4,1,114,195,0,0,0,99,1,0,0,0,0,0,0,0, +- 0,0,0,0,5,0,0,0,6,0,0,0,67,0,0,0, +- 115,62,0,0,0,100,1,100,2,108,0,125,1,116,1,160, +- 2,124,0,161,1,106,3,125,2,124,1,160,4,124,2,161, +- 1,125,3,116,1,160,5,100,2,100,3,161,2,125,4,124, +- 4,160,6,124,0,160,6,124,3,100,1,25,0,161,1,161, +- 1,83,0,41,4,122,121,68,101,99,111,100,101,32,98,121, +- 116,101,115,32,114,101,112,114,101,115,101,110,116,105,110,103, +- 32,115,111,117,114,99,101,32,99,111,100,101,32,97,110,100, +- 32,114,101,116,117,114,110,32,116,104,101,32,115,116,114,105, +- 110,103,46,10,10,32,32,32,32,85,110,105,118,101,114,115, +- 97,108,32,110,101,119,108,105,110,101,32,115,117,112,112,111, +- 114,116,32,105,115,32,117,115,101,100,32,105,110,32,116,104, +- 101,32,100,101,99,111,100,105,110,103,46,10,32,32,32,32, +- 114,0,0,0,0,78,84,41,7,218,8,116,111,107,101,110, +- 105,122,101,114,91,0,0,0,90,7,66,121,116,101,115,73, +- 79,90,8,114,101,97,100,108,105,110,101,90,15,100,101,116, +- 101,99,116,95,101,110,99,111,100,105,110,103,90,25,73,110, +- 99,114,101,109,101,110,116,97,108,78,101,119,108,105,110,101, +- 68,101,99,111,100,101,114,218,6,100,101,99,111,100,101,41, +- 5,218,12,115,111,117,114,99,101,95,98,121,116,101,115,114, +- 196,0,0,0,90,21,115,111,117,114,99,101,95,98,121,116, +- 101,115,95,114,101,97,100,108,105,110,101,218,8,101,110,99, +- 111,100,105,110,103,90,15,110,101,119,108,105,110,101,95,100, +- 101,99,111,100,101,114,114,7,0,0,0,114,7,0,0,0, +- 114,8,0,0,0,218,13,100,101,99,111,100,101,95,115,111, +- 117,114,99,101,192,2,0,0,115,10,0,0,0,8,5,12, +- 1,10,1,12,1,20,1,114,200,0,0,0,169,2,114,164, +- 0,0,0,218,26,115,117,98,109,111,100,117,108,101,95,115, +- 101,97,114,99,104,95,108,111,99,97,116,105,111,110,115,99, +- 2,0,0,0,0,0,0,0,2,0,0,0,9,0,0,0, +- 8,0,0,0,67,0,0,0,115,54,1,0,0,124,1,100, +- 1,117,0,114,29,100,2,125,1,116,0,124,2,100,3,131, +- 2,114,28,122,7,124,2,160,1,124,0,161,1,125,1,87, +- 0,110,38,4,0,116,2,121,27,1,0,1,0,1,0,89, +- 0,110,30,119,0,110,28,116,3,160,4,124,1,161,1,125, +- 1,116,5,124,1,131,1,115,57,122,9,116,6,116,3,160, +- 7,161,0,124,1,131,2,125,1,87,0,110,9,4,0,116, +- 8,121,56,1,0,1,0,1,0,89,0,110,1,119,0,116, +- 9,106,10,124,0,124,2,124,1,100,4,141,3,125,4,100, +- 5,124,4,95,11,124,2,100,1,117,0,114,99,116,12,131, +- 0,68,0,93,21,92,2,125,5,125,6,124,1,160,13,116, +- 14,124,6,131,1,161,1,114,96,124,5,124,0,124,1,131, +- 2,125,2,124,2,124,4,95,15,1,0,113,99,113,75,100, +- 1,83,0,124,3,116,16,117,0,114,131,116,0,124,2,100, +- 6,131,2,114,130,122,7,124,2,160,17,124,0,161,1,125, +- 7,87,0,110,9,4,0,116,2,121,124,1,0,1,0,1, +- 0,89,0,110,10,119,0,124,7,114,130,103,0,124,4,95, +- 18,110,3,124,3,124,4,95,18,124,4,106,18,103,0,107, +- 2,114,153,124,1,114,153,116,19,124,1,131,1,100,7,25, +- 0,125,8,124,4,106,18,160,20,124,8,161,1,1,0,124, +- 4,83,0,41,8,97,61,1,0,0,82,101,116,117,114,110, +- 32,97,32,109,111,100,117,108,101,32,115,112,101,99,32,98, +- 97,115,101,100,32,111,110,32,97,32,102,105,108,101,32,108, +- 111,99,97,116,105,111,110,46,10,10,32,32,32,32,84,111, +- 32,105,110,100,105,99,97,116,101,32,116,104,97,116,32,116, +- 104,101,32,109,111,100,117,108,101,32,105,115,32,97,32,112, +- 97,99,107,97,103,101,44,32,115,101,116,10,32,32,32,32, +- 115,117,98,109,111,100,117,108,101,95,115,101,97,114,99,104, +- 95,108,111,99,97,116,105,111,110,115,32,116,111,32,97,32, +- 108,105,115,116,32,111,102,32,100,105,114,101,99,116,111,114, +- 121,32,112,97,116,104,115,46,32,32,65,110,10,32,32,32, +- 32,101,109,112,116,121,32,108,105,115,116,32,105,115,32,115, +- 117,102,102,105,99,105,101,110,116,44,32,116,104,111,117,103, +- 104,32,105,116,115,32,110,111,116,32,111,116,104,101,114,119, +- 105,115,101,32,117,115,101,102,117,108,32,116,111,32,116,104, +- 101,10,32,32,32,32,105,109,112,111,114,116,32,115,121,115, +- 116,101,109,46,10,10,32,32,32,32,84,104,101,32,108,111, +- 97,100,101,114,32,109,117,115,116,32,116,97,107,101,32,97, +- 32,115,112,101,99,32,97,115,32,105,116,115,32,111,110,108, +- 121,32,95,95,105,110,105,116,95,95,40,41,32,97,114,103, +- 46,10,10,32,32,32,32,78,122,9,60,117,110,107,110,111, +- 119,110,62,218,12,103,101,116,95,102,105,108,101,110,97,109, +- 101,169,1,218,6,111,114,105,103,105,110,84,218,10,105,115, +- 95,112,97,99,107,97,103,101,114,0,0,0,0,41,21,114, +- 153,0,0,0,114,203,0,0,0,114,142,0,0,0,114,18, +- 0,0,0,114,103,0,0,0,114,86,0,0,0,114,67,0, +- 0,0,114,82,0,0,0,114,76,0,0,0,114,159,0,0, +- 0,218,10,77,111,100,117,108,101,83,112,101,99,90,13,95, +- 115,101,116,95,102,105,108,101,97,116,116,114,218,27,95,103, +- 101,116,95,115,117,112,112,111,114,116,101,100,95,102,105,108, +- 101,95,108,111,97,100,101,114,115,114,58,0,0,0,114,136, +- 0,0,0,114,164,0,0,0,218,9,95,80,79,80,85,76, +- 65,84,69,114,206,0,0,0,114,202,0,0,0,114,74,0, +- 0,0,114,61,0,0,0,41,9,114,141,0,0,0,90,8, +- 108,111,99,97,116,105,111,110,114,164,0,0,0,114,202,0, +- 0,0,218,4,115,112,101,99,218,12,108,111,97,100,101,114, +- 95,99,108,97,115,115,218,8,115,117,102,102,105,120,101,115, +- 114,206,0,0,0,90,7,100,105,114,110,97,109,101,114,7, +- 0,0,0,114,7,0,0,0,114,8,0,0,0,218,23,115, +- 112,101,99,95,102,114,111,109,95,102,105,108,101,95,108,111, +- 99,97,116,105,111,110,209,2,0,0,115,84,0,0,0,8, +- 12,4,4,10,1,2,2,14,1,12,1,4,1,2,255,2, +- 252,10,7,8,1,2,1,18,1,12,1,4,1,2,255,16, +- 9,6,1,8,3,14,1,14,1,10,1,6,1,4,1,2, +- 253,4,5,8,3,10,2,2,1,14,1,12,1,4,1,2, +- 255,4,3,6,1,2,128,6,2,10,1,4,1,12,1,12, +- 1,4,2,114,213,0,0,0,99,0,0,0,0,0,0,0, +- 0,0,0,0,0,0,0,0,0,4,0,0,0,64,0,0, +- 0,115,88,0,0,0,101,0,90,1,100,0,90,2,100,1, +- 90,3,100,2,90,4,100,3,90,5,101,6,111,15,100,4, +- 101,7,118,0,90,8,101,9,100,5,100,6,132,0,131,1, +- 90,10,101,11,100,7,100,8,132,0,131,1,90,12,101,11, +- 100,14,100,10,100,11,132,1,131,1,90,13,101,11,100,15, +- 100,12,100,13,132,1,131,1,90,14,100,9,83,0,41,16, +- 218,21,87,105,110,100,111,119,115,82,101,103,105,115,116,114, +- 121,70,105,110,100,101,114,122,62,77,101,116,97,32,112,97, +- 116,104,32,102,105,110,100,101,114,32,102,111,114,32,109,111, +- 100,117,108,101,115,32,100,101,99,108,97,114,101,100,32,105, +- 110,32,116,104,101,32,87,105,110,100,111,119,115,32,114,101, +- 103,105,115,116,114,121,46,122,59,83,111,102,116,119,97,114, +- 101,92,80,121,116,104,111,110,92,80,121,116,104,111,110,67, +- 111,114,101,92,123,115,121,115,95,118,101,114,115,105,111,110, +- 125,92,77,111,100,117,108,101,115,92,123,102,117,108,108,110, +- 97,109,101,125,122,65,83,111,102,116,119,97,114,101,92,80, +- 121,116,104,111,110,92,80,121,116,104,111,110,67,111,114,101, +- 92,123,115,121,115,95,118,101,114,115,105,111,110,125,92,77, +- 111,100,117,108,101,115,92,123,102,117,108,108,110,97,109,101, +- 125,92,68,101,98,117,103,122,6,95,100,46,112,121,100,99, +- 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, +- 8,0,0,0,67,0,0,0,115,50,0,0,0,122,8,116, +- 0,160,1,116,0,106,2,124,0,161,2,87,0,83,0,4, +- 0,116,3,121,24,1,0,1,0,1,0,116,0,160,1,116, +- 0,106,4,124,0,161,2,6,0,89,0,83,0,119,0,114, +- 69,0,0,0,41,5,218,6,119,105,110,114,101,103,90,7, +- 79,112,101,110,75,101,121,90,17,72,75,69,89,95,67,85, +- 82,82,69,78,84,95,85,83,69,82,114,76,0,0,0,90, +- 18,72,75,69,89,95,76,79,67,65,76,95,77,65,67,72, +- 73,78,69,114,19,0,0,0,114,7,0,0,0,114,7,0, +- 0,0,114,8,0,0,0,218,14,95,111,112,101,110,95,114, +- 101,103,105,115,116,114,121,38,3,0,0,115,10,0,0,0, +- 2,2,16,1,12,1,18,1,2,255,122,36,87,105,110,100, +- 111,119,115,82,101,103,105,115,116,114,121,70,105,110,100,101, +- 114,46,95,111,112,101,110,95,114,101,103,105,115,116,114,121, +- 99,2,0,0,0,0,0,0,0,0,0,0,0,6,0,0, +- 0,8,0,0,0,67,0,0,0,115,134,0,0,0,124,0, +- 106,0,114,7,124,0,106,1,125,2,110,3,124,0,106,2, +- 125,2,124,2,106,3,124,1,100,1,116,4,106,5,100,0, +- 100,2,133,2,25,0,22,0,100,3,141,2,125,3,122,32, +- 124,0,160,6,124,3,161,1,143,16,125,4,116,7,160,8, +- 124,4,100,4,161,2,125,5,87,0,100,0,4,0,4,0, +- 131,3,1,0,87,0,124,5,83,0,49,0,115,49,119,1, +- 1,0,1,0,1,0,89,0,1,0,87,0,124,5,83,0, +- 4,0,116,9,121,66,1,0,1,0,1,0,89,0,100,0, +- 83,0,119,0,41,5,78,122,5,37,100,46,37,100,114,44, +- 0,0,0,41,2,114,163,0,0,0,90,11,115,121,115,95, +- 118,101,114,115,105,111,110,114,10,0,0,0,41,10,218,11, +- 68,69,66,85,71,95,66,85,73,76,68,218,18,82,69,71, +- 73,83,84,82,89,95,75,69,89,95,68,69,66,85,71,218, +- 12,82,69,71,73,83,84,82,89,95,75,69,89,114,89,0, +- 0,0,114,15,0,0,0,218,12,118,101,114,115,105,111,110, +- 95,105,110,102,111,114,216,0,0,0,114,215,0,0,0,90, +- 10,81,117,101,114,121,86,97,108,117,101,114,76,0,0,0, +- 41,6,218,3,99,108,115,114,163,0,0,0,90,12,114,101, +- 103,105,115,116,114,121,95,107,101,121,114,20,0,0,0,90, +- 4,104,107,101,121,218,8,102,105,108,101,112,97,116,104,114, +- 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,16, +- 95,115,101,97,114,99,104,95,114,101,103,105,115,116,114,121, +- 45,3,0,0,115,32,0,0,0,6,2,8,1,6,2,6, +- 1,16,1,6,255,2,2,12,1,14,1,12,255,4,4,18, +- 252,4,4,12,254,6,1,2,255,122,38,87,105,110,100,111, +- 119,115,82,101,103,105,115,116,114,121,70,105,110,100,101,114, +- 46,95,115,101,97,114,99,104,95,114,101,103,105,115,116,114, +- 121,78,99,4,0,0,0,0,0,0,0,0,0,0,0,8, +- 0,0,0,8,0,0,0,67,0,0,0,115,120,0,0,0, +- 124,0,160,0,124,1,161,1,125,4,124,4,100,0,117,0, +- 114,11,100,0,83,0,122,6,116,1,124,4,131,1,1,0, +- 87,0,110,10,4,0,116,2,121,27,1,0,1,0,1,0, +- 89,0,100,0,83,0,119,0,116,3,131,0,68,0,93,26, +- 92,2,125,5,125,6,124,4,160,4,116,5,124,6,131,1, +- 161,1,114,57,116,6,106,7,124,1,124,5,124,1,124,4, +- 131,2,124,4,100,1,141,3,125,7,124,7,2,0,1,0, +- 83,0,113,31,100,0,83,0,41,2,78,114,204,0,0,0, +- 41,8,114,223,0,0,0,114,75,0,0,0,114,76,0,0, +- 0,114,208,0,0,0,114,58,0,0,0,114,136,0,0,0, +- 114,159,0,0,0,218,16,115,112,101,99,95,102,114,111,109, +- 95,108,111,97,100,101,114,41,8,114,221,0,0,0,114,163, +- 0,0,0,114,65,0,0,0,218,6,116,97,114,103,101,116, +- 114,222,0,0,0,114,164,0,0,0,114,212,0,0,0,114, +- 210,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, +- 0,0,0,218,9,102,105,110,100,95,115,112,101,99,60,3, +- 0,0,115,34,0,0,0,10,2,8,1,4,1,2,1,12, +- 1,12,1,6,1,2,255,14,2,14,1,6,1,8,1,2, +- 1,6,254,8,3,2,252,4,255,122,31,87,105,110,100,111, +- 119,115,82,101,103,105,115,116,114,121,70,105,110,100,101,114, +- 46,102,105,110,100,95,115,112,101,99,99,3,0,0,0,0, +- 0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,67, +- 0,0,0,115,42,0,0,0,116,0,160,1,100,1,116,2, +- 161,2,1,0,124,0,160,3,124,1,124,2,161,2,125,3, +- 124,3,100,2,117,1,114,19,124,3,106,4,83,0,100,2, +- 83,0,41,3,122,106,70,105,110,100,32,109,111,100,117,108, +- 101,32,110,97,109,101,100,32,105,110,32,116,104,101,32,114, +- 101,103,105,115,116,114,121,46,10,10,32,32,32,32,32,32, +- 32,32,84,104,105,115,32,109,101,116,104,111,100,32,105,115, +- 32,100,101,112,114,101,99,97,116,101,100,46,32,32,85,115, +- 101,32,102,105,110,100,95,115,112,101,99,40,41,32,105,110, +- 115,116,101,97,100,46,10,10,32,32,32,32,32,32,32,32, +- 122,112,87,105,110,100,111,119,115,82,101,103,105,115,116,114, +- 121,70,105,110,100,101,114,46,102,105,110,100,95,109,111,100, +- 117,108,101,40,41,32,105,115,32,100,101,112,114,101,99,97, +- 116,101,100,32,97,110,100,32,115,108,97,116,101,100,32,102, +- 111,114,32,114,101,109,111,118,97,108,32,105,110,32,80,121, +- 116,104,111,110,32,51,46,49,50,59,32,117,115,101,32,102, +- 105,110,100,95,115,112,101,99,40,41,32,105,110,115,116,101, +- 97,100,78,169,5,114,99,0,0,0,114,100,0,0,0,114, +- 101,0,0,0,114,226,0,0,0,114,164,0,0,0,169,4, +- 114,221,0,0,0,114,163,0,0,0,114,65,0,0,0,114, +- 210,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, +- 0,0,0,218,11,102,105,110,100,95,109,111,100,117,108,101, +- 76,3,0,0,115,14,0,0,0,6,7,2,2,4,254,12, +- 3,8,1,6,1,4,2,122,33,87,105,110,100,111,119,115, +- 82,101,103,105,115,116,114,121,70,105,110,100,101,114,46,102, +- 105,110,100,95,109,111,100,117,108,101,169,2,78,78,114,69, +- 0,0,0,41,15,114,150,0,0,0,114,149,0,0,0,114, +- 151,0,0,0,114,152,0,0,0,114,219,0,0,0,114,218, +- 0,0,0,218,11,95,77,83,95,87,73,78,68,79,87,83, +- 218,18,69,88,84,69,78,83,73,79,78,95,83,85,70,70, +- 73,88,69,83,114,217,0,0,0,218,12,115,116,97,116,105, +- 99,109,101,116,104,111,100,114,216,0,0,0,218,11,99,108, +- 97,115,115,109,101,116,104,111,100,114,223,0,0,0,114,226, +- 0,0,0,114,229,0,0,0,114,7,0,0,0,114,7,0, +- 0,0,114,7,0,0,0,114,8,0,0,0,114,214,0,0, +- 0,26,3,0,0,115,30,0,0,0,8,0,4,2,2,3, +- 2,255,2,4,2,255,12,3,2,2,10,1,2,6,10,1, +- 2,14,12,1,2,15,16,1,114,214,0,0,0,99,0,0, +- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0, +- 0,0,64,0,0,0,115,48,0,0,0,101,0,90,1,100, +- 0,90,2,100,1,90,3,100,2,100,3,132,0,90,4,100, +- 4,100,5,132,0,90,5,100,6,100,7,132,0,90,6,100, +- 8,100,9,132,0,90,7,100,10,83,0,41,11,218,13,95, +- 76,111,97,100,101,114,66,97,115,105,99,115,122,83,66,97, +- 115,101,32,99,108,97,115,115,32,111,102,32,99,111,109,109, +- 111,110,32,99,111,100,101,32,110,101,101,100,101,100,32,98, +- 121,32,98,111,116,104,32,83,111,117,114,99,101,76,111,97, +- 100,101,114,32,97,110,100,10,32,32,32,32,83,111,117,114, +- 99,101,108,101,115,115,70,105,108,101,76,111,97,100,101,114, +- 46,99,2,0,0,0,0,0,0,0,0,0,0,0,5,0, +- 0,0,4,0,0,0,67,0,0,0,115,64,0,0,0,116, +- 0,124,0,160,1,124,1,161,1,131,1,100,1,25,0,125, +- 2,124,2,160,2,100,2,100,1,161,2,100,3,25,0,125, +- 3,124,1,160,3,100,2,161,1,100,4,25,0,125,4,124, +- 3,100,5,107,2,111,31,124,4,100,5,107,3,83,0,41, +- 7,122,141,67,111,110,99,114,101,116,101,32,105,109,112,108, +- 101,109,101,110,116,97,116,105,111,110,32,111,102,32,73,110, +- 115,112,101,99,116,76,111,97,100,101,114,46,105,115,95,112, +- 97,99,107,97,103,101,32,98,121,32,99,104,101,99,107,105, +- 110,103,32,105,102,10,32,32,32,32,32,32,32,32,116,104, +- 101,32,112,97,116,104,32,114,101,116,117,114,110,101,100,32, +- 98,121,32,103,101,116,95,102,105,108,101,110,97,109,101,32, +- 104,97,115,32,97,32,102,105,108,101,110,97,109,101,32,111, +- 102,32,39,95,95,105,110,105,116,95,95,46,112,121,39,46, +- 114,3,0,0,0,114,97,0,0,0,114,0,0,0,0,114, +- 44,0,0,0,218,8,95,95,105,110,105,116,95,95,78,41, +- 4,114,74,0,0,0,114,203,0,0,0,114,125,0,0,0, +- 114,104,0,0,0,41,5,114,143,0,0,0,114,163,0,0, +- 0,114,120,0,0,0,90,13,102,105,108,101,110,97,109,101, +- 95,98,97,115,101,90,9,116,97,105,108,95,110,97,109,101, +- 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, +- 206,0,0,0,98,3,0,0,115,8,0,0,0,18,3,16, +- 1,14,1,16,1,122,24,95,76,111,97,100,101,114,66,97, +- 115,105,99,115,46,105,115,95,112,97,99,107,97,103,101,99, +- 2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, +- 1,0,0,0,67,0,0,0,114,23,0,0,0,169,2,122, +- 42,85,115,101,32,100,101,102,97,117,108,116,32,115,101,109, +- 97,110,116,105,99,115,32,102,111,114,32,109,111,100,117,108, +- 101,32,99,114,101,97,116,105,111,110,46,78,114,7,0,0, +- 0,169,2,114,143,0,0,0,114,210,0,0,0,114,7,0, +- 0,0,114,7,0,0,0,114,8,0,0,0,218,13,99,114, +- 101,97,116,101,95,109,111,100,117,108,101,106,3,0,0,243, +- 2,0,0,0,4,0,122,27,95,76,111,97,100,101,114,66, +- 97,115,105,99,115,46,99,114,101,97,116,101,95,109,111,100, ++ 103,46,10,10,32,32,32,32,73,109,112,111,114,116,69,114, ++ 114,111,114,32,105,115,32,114,97,105,115,101,100,32,119,104, ++ 101,110,32,116,104,101,32,109,97,103,105,99,32,110,117,109, ++ 98,101,114,32,105,115,32,105,110,99,111,114,114,101,99,116, ++ 32,111,114,32,119,104,101,110,32,116,104,101,32,102,108,97, ++ 103,115,10,32,32,32,32,102,105,101,108,100,32,105,115,32, ++ 105,110,118,97,108,105,100,46,32,69,79,70,69,114,114,111, ++ 114,32,105,115,32,114,97,105,115,101,100,32,119,104,101,110, ++ 32,116,104,101,32,100,97,116,97,32,105,115,32,102,111,117, ++ 110,100,32,116,111,32,98,101,32,116,114,117,110,99,97,116, ++ 101,100,46,10,10,32,32,32,32,78,114,33,0,0,0,122, ++ 20,98,97,100,32,109,97,103,105,99,32,110,117,109,98,101, ++ 114,32,105,110,32,122,2,58,32,250,2,123,125,233,16,0, ++ 0,0,122,40,114,101,97,99,104,101,100,32,69,79,70,32, ++ 119,104,105,108,101,32,114,101,97,100,105,110,103,32,112,121, ++ 99,32,104,101,97,100,101,114,32,111,102,32,233,8,0,0, ++ 0,233,252,255,255,255,122,14,105,110,118,97,108,105,100,32, ++ 102,108,97,103,115,32,122,4,32,105,110,32,41,7,218,12, ++ 77,65,71,73,67,95,78,85,77,66,69,82,114,160,0,0, ++ 0,218,16,95,118,101,114,98,111,115,101,95,109,101,115,115, ++ 97,103,101,114,143,0,0,0,114,5,0,0,0,218,8,69, ++ 79,70,69,114,114,111,114,114,44,0,0,0,41,6,114,43, ++ 0,0,0,114,142,0,0,0,218,11,101,120,99,95,100,101, ++ 116,97,105,108,115,90,5,109,97,103,105,99,114,119,0,0, ++ 0,114,17,0,0,0,114,8,0,0,0,114,8,0,0,0, ++ 114,9,0,0,0,218,13,95,99,108,97,115,115,105,102,121, ++ 95,112,121,99,77,2,0,0,115,28,0,0,0,12,16,8, ++ 1,16,1,12,1,16,1,12,1,10,1,12,1,8,1,16, ++ 1,8,2,16,1,16,1,4,1,114,177,0,0,0,99,5, ++ 0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,4, ++ 0,0,0,67,0,0,0,115,124,0,0,0,116,0,124,0, ++ 100,1,100,2,133,2,25,0,131,1,124,1,100,3,64,0, ++ 107,3,114,31,100,4,124,3,155,2,157,2,125,5,116,1, ++ 160,2,100,5,124,5,161,2,1,0,116,3,124,5,102,1, ++ 105,0,124,4,164,1,142,1,130,1,124,2,100,6,117,1, ++ 114,58,116,0,124,0,100,2,100,7,133,2,25,0,131,1, ++ 124,2,100,3,64,0,107,3,114,60,116,3,100,4,124,3, ++ 155,2,157,2,102,1,105,0,124,4,164,1,142,1,130,1, ++ 100,6,83,0,100,6,83,0,41,8,97,7,2,0,0,86, ++ 97,108,105,100,97,116,101,32,97,32,112,121,99,32,97,103, ++ 97,105,110,115,116,32,116,104,101,32,115,111,117,114,99,101, ++ 32,108,97,115,116,45,109,111,100,105,102,105,101,100,32,116, ++ 105,109,101,46,10,10,32,32,32,32,42,100,97,116,97,42, ++ 32,105,115,32,116,104,101,32,99,111,110,116,101,110,116,115, ++ 32,111,102,32,116,104,101,32,112,121,99,32,102,105,108,101, ++ 46,32,40,79,110,108,121,32,116,104,101,32,102,105,114,115, ++ 116,32,49,54,32,98,121,116,101,115,32,97,114,101,10,32, ++ 32,32,32,114,101,113,117,105,114,101,100,46,41,10,10,32, ++ 32,32,32,42,115,111,117,114,99,101,95,109,116,105,109,101, ++ 42,32,105,115,32,116,104,101,32,108,97,115,116,32,109,111, ++ 100,105,102,105,101,100,32,116,105,109,101,115,116,97,109,112, ++ 32,111,102,32,116,104,101,32,115,111,117,114,99,101,32,102, ++ 105,108,101,46,10,10,32,32,32,32,42,115,111,117,114,99, ++ 101,95,115,105,122,101,42,32,105,115,32,78,111,110,101,32, ++ 111,114,32,116,104,101,32,115,105,122,101,32,111,102,32,116, ++ 104,101,32,115,111,117,114,99,101,32,102,105,108,101,32,105, ++ 110,32,98,121,116,101,115,46,10,10,32,32,32,32,42,110, ++ 97,109,101,42,32,105,115,32,116,104,101,32,110,97,109,101, ++ 32,111,102,32,116,104,101,32,109,111,100,117,108,101,32,98, ++ 101,105,110,103,32,105,109,112,111,114,116,101,100,46,32,73, ++ 116,32,105,115,32,117,115,101,100,32,102,111,114,32,108,111, ++ 103,103,105,110,103,46,10,10,32,32,32,32,42,101,120,99, ++ 95,100,101,116,97,105,108,115,42,32,105,115,32,97,32,100, ++ 105,99,116,105,111,110,97,114,121,32,112,97,115,115,101,100, ++ 32,116,111,32,73,109,112,111,114,116,69,114,114,111,114,32, ++ 105,102,32,105,116,32,114,97,105,115,101,100,32,102,111,114, ++ 10,32,32,32,32,105,109,112,114,111,118,101,100,32,100,101, ++ 98,117,103,103,105,110,103,46,10,10,32,32,32,32,65,110, ++ 32,73,109,112,111,114,116,69,114,114,111,114,32,105,115,32, ++ 114,97,105,115,101,100,32,105,102,32,116,104,101,32,98,121, ++ 116,101,99,111,100,101,32,105,115,32,115,116,97,108,101,46, ++ 10,10,32,32,32,32,114,171,0,0,0,233,12,0,0,0, ++ 114,32,0,0,0,122,22,98,121,116,101,99,111,100,101,32, ++ 105,115,32,115,116,97,108,101,32,102,111,114,32,114,169,0, ++ 0,0,78,114,170,0,0,0,41,4,114,44,0,0,0,114, ++ 160,0,0,0,114,174,0,0,0,114,143,0,0,0,41,6, ++ 114,43,0,0,0,218,12,115,111,117,114,99,101,95,109,116, ++ 105,109,101,218,11,115,111,117,114,99,101,95,115,105,122,101, ++ 114,142,0,0,0,114,176,0,0,0,114,119,0,0,0,114, ++ 8,0,0,0,114,8,0,0,0,114,9,0,0,0,218,23, ++ 95,118,97,108,105,100,97,116,101,95,116,105,109,101,115,116, ++ 97,109,112,95,112,121,99,110,2,0,0,115,18,0,0,0, ++ 24,19,10,1,12,1,16,1,8,1,22,1,2,255,22,2, ++ 8,254,114,181,0,0,0,99,4,0,0,0,0,0,0,0, ++ 0,0,0,0,4,0,0,0,4,0,0,0,67,0,0,0, ++ 115,42,0,0,0,124,0,100,1,100,2,133,2,25,0,124, ++ 1,107,3,114,19,116,0,100,3,124,2,155,2,157,2,102, ++ 1,105,0,124,3,164,1,142,1,130,1,100,4,83,0,41, ++ 5,97,243,1,0,0,86,97,108,105,100,97,116,101,32,97, ++ 32,104,97,115,104,45,98,97,115,101,100,32,112,121,99,32, ++ 98,121,32,99,104,101,99,107,105,110,103,32,116,104,101,32, ++ 114,101,97,108,32,115,111,117,114,99,101,32,104,97,115,104, ++ 32,97,103,97,105,110,115,116,32,116,104,101,32,111,110,101, ++ 32,105,110,10,32,32,32,32,116,104,101,32,112,121,99,32, ++ 104,101,97,100,101,114,46,10,10,32,32,32,32,42,100,97, ++ 116,97,42,32,105,115,32,116,104,101,32,99,111,110,116,101, ++ 110,116,115,32,111,102,32,116,104,101,32,112,121,99,32,102, ++ 105,108,101,46,32,40,79,110,108,121,32,116,104,101,32,102, ++ 105,114,115,116,32,49,54,32,98,121,116,101,115,32,97,114, ++ 101,10,32,32,32,32,114,101,113,117,105,114,101,100,46,41, ++ 10,10,32,32,32,32,42,115,111,117,114,99,101,95,104,97, ++ 115,104,42,32,105,115,32,116,104,101,32,105,109,112,111,114, ++ 116,108,105,98,46,117,116,105,108,46,115,111,117,114,99,101, ++ 95,104,97,115,104,40,41,32,111,102,32,116,104,101,32,115, ++ 111,117,114,99,101,32,102,105,108,101,46,10,10,32,32,32, ++ 32,42,110,97,109,101,42,32,105,115,32,116,104,101,32,110, ++ 97,109,101,32,111,102,32,116,104,101,32,109,111,100,117,108, ++ 101,32,98,101,105,110,103,32,105,109,112,111,114,116,101,100, ++ 46,32,73,116,32,105,115,32,117,115,101,100,32,102,111,114, ++ 32,108,111,103,103,105,110,103,46,10,10,32,32,32,32,42, ++ 101,120,99,95,100,101,116,97,105,108,115,42,32,105,115,32, ++ 97,32,100,105,99,116,105,111,110,97,114,121,32,112,97,115, ++ 115,101,100,32,116,111,32,73,109,112,111,114,116,69,114,114, ++ 111,114,32,105,102,32,105,116,32,114,97,105,115,101,100,32, ++ 102,111,114,10,32,32,32,32,105,109,112,114,111,118,101,100, ++ 32,100,101,98,117,103,103,105,110,103,46,10,10,32,32,32, ++ 32,65,110,32,73,109,112,111,114,116,69,114,114,111,114,32, ++ 105,115,32,114,97,105,115,101,100,32,105,102,32,116,104,101, ++ 32,98,121,116,101,99,111,100,101,32,105,115,32,115,116,97, ++ 108,101,46,10,10,32,32,32,32,114,171,0,0,0,114,170, ++ 0,0,0,122,46,104,97,115,104,32,105,110,32,98,121,116, ++ 101,99,111,100,101,32,100,111,101,115,110,39,116,32,109,97, ++ 116,99,104,32,104,97,115,104,32,111,102,32,115,111,117,114, ++ 99,101,32,78,41,1,114,143,0,0,0,41,4,114,43,0, ++ 0,0,218,11,115,111,117,114,99,101,95,104,97,115,104,114, ++ 142,0,0,0,114,176,0,0,0,114,8,0,0,0,114,8, ++ 0,0,0,114,9,0,0,0,218,18,95,118,97,108,105,100, ++ 97,116,101,95,104,97,115,104,95,112,121,99,138,2,0,0, ++ 115,14,0,0,0,16,17,2,1,8,1,4,255,2,2,6, ++ 254,4,255,114,183,0,0,0,99,4,0,0,0,0,0,0, ++ 0,0,0,0,0,5,0,0,0,5,0,0,0,67,0,0, ++ 0,115,76,0,0,0,116,0,160,1,124,0,161,1,125,4, ++ 116,2,124,4,116,3,131,2,114,28,116,4,160,5,100,1, ++ 124,2,161,2,1,0,124,3,100,2,117,1,114,26,116,6, ++ 160,7,124,4,124,3,161,2,1,0,124,4,83,0,116,8, ++ 100,3,160,9,124,2,161,1,124,1,124,2,100,4,141,3, ++ 130,1,41,5,122,35,67,111,109,112,105,108,101,32,98,121, ++ 116,101,99,111,100,101,32,97,115,32,102,111,117,110,100,32, ++ 105,110,32,97,32,112,121,99,46,122,21,99,111,100,101,32, ++ 111,98,106,101,99,116,32,102,114,111,109,32,123,33,114,125, ++ 78,122,23,78,111,110,45,99,111,100,101,32,111,98,106,101, ++ 99,116,32,105,110,32,123,33,114,125,169,2,114,142,0,0, ++ 0,114,67,0,0,0,41,10,218,7,109,97,114,115,104,97, ++ 108,90,5,108,111,97,100,115,218,10,105,115,105,110,115,116, ++ 97,110,99,101,218,10,95,99,111,100,101,95,116,121,112,101, ++ 114,160,0,0,0,114,174,0,0,0,218,4,95,105,109,112, ++ 90,16,95,102,105,120,95,99,111,95,102,105,108,101,110,97, ++ 109,101,114,143,0,0,0,114,91,0,0,0,41,5,114,43, ++ 0,0,0,114,142,0,0,0,114,133,0,0,0,114,135,0, ++ 0,0,218,4,99,111,100,101,114,8,0,0,0,114,8,0, ++ 0,0,114,9,0,0,0,218,17,95,99,111,109,112,105,108, ++ 101,95,98,121,116,101,99,111,100,101,162,2,0,0,115,18, ++ 0,0,0,10,2,10,1,12,1,8,1,12,1,4,1,10, ++ 2,4,1,6,255,114,190,0,0,0,99,3,0,0,0,0, ++ 0,0,0,0,0,0,0,4,0,0,0,5,0,0,0,67, ++ 0,0,0,115,70,0,0,0,116,0,116,1,131,1,125,3, ++ 124,3,160,2,116,3,100,1,131,1,161,1,1,0,124,3, ++ 160,2,116,3,124,1,131,1,161,1,1,0,124,3,160,2, ++ 116,3,124,2,131,1,161,1,1,0,124,3,160,2,116,4, ++ 160,5,124,0,161,1,161,1,1,0,124,3,83,0,41,3, ++ 122,43,80,114,111,100,117,99,101,32,116,104,101,32,100,97, ++ 116,97,32,102,111,114,32,97,32,116,105,109,101,115,116,97, ++ 109,112,45,98,97,115,101,100,32,112,121,99,46,114,0,0, ++ 0,0,78,41,6,218,9,98,121,116,101,97,114,114,97,121, ++ 114,173,0,0,0,218,6,101,120,116,101,110,100,114,38,0, ++ 0,0,114,185,0,0,0,218,5,100,117,109,112,115,41,4, ++ 114,189,0,0,0,218,5,109,116,105,109,101,114,180,0,0, ++ 0,114,43,0,0,0,114,8,0,0,0,114,8,0,0,0, ++ 114,9,0,0,0,218,22,95,99,111,100,101,95,116,111,95, ++ 116,105,109,101,115,116,97,109,112,95,112,121,99,175,2,0, ++ 0,115,12,0,0,0,8,2,14,1,14,1,14,1,16,1, ++ 4,1,114,195,0,0,0,84,99,3,0,0,0,0,0,0, ++ 0,0,0,0,0,5,0,0,0,5,0,0,0,67,0,0, ++ 0,115,80,0,0,0,116,0,116,1,131,1,125,3,100,1, ++ 124,2,100,1,62,0,66,0,125,4,124,3,160,2,116,3, ++ 124,4,131,1,161,1,1,0,116,4,124,1,131,1,100,2, ++ 107,2,115,25,74,0,130,1,124,3,160,2,124,1,161,1, ++ 1,0,124,3,160,2,116,5,160,6,124,0,161,1,161,1, ++ 1,0,124,3,83,0,41,4,122,38,80,114,111,100,117,99, ++ 101,32,116,104,101,32,100,97,116,97,32,102,111,114,32,97, ++ 32,104,97,115,104,45,98,97,115,101,100,32,112,121,99,46, ++ 114,4,0,0,0,114,171,0,0,0,78,41,7,114,191,0, ++ 0,0,114,173,0,0,0,114,192,0,0,0,114,38,0,0, ++ 0,114,5,0,0,0,114,185,0,0,0,114,193,0,0,0, ++ 41,5,114,189,0,0,0,114,182,0,0,0,90,7,99,104, ++ 101,99,107,101,100,114,43,0,0,0,114,17,0,0,0,114, ++ 8,0,0,0,114,8,0,0,0,114,9,0,0,0,218,17, ++ 95,99,111,100,101,95,116,111,95,104,97,115,104,95,112,121, ++ 99,185,2,0,0,115,14,0,0,0,8,2,12,1,14,1, ++ 16,1,10,1,16,1,4,1,114,196,0,0,0,99,1,0, ++ 0,0,0,0,0,0,0,0,0,0,5,0,0,0,6,0, ++ 0,0,67,0,0,0,115,62,0,0,0,100,1,100,2,108, ++ 0,125,1,116,1,160,2,124,0,161,1,106,3,125,2,124, ++ 1,160,4,124,2,161,1,125,3,116,1,160,5,100,2,100, ++ 3,161,2,125,4,124,4,160,6,124,0,160,6,124,3,100, ++ 1,25,0,161,1,161,1,83,0,41,4,122,121,68,101,99, ++ 111,100,101,32,98,121,116,101,115,32,114,101,112,114,101,115, ++ 101,110,116,105,110,103,32,115,111,117,114,99,101,32,99,111, ++ 100,101,32,97,110,100,32,114,101,116,117,114,110,32,116,104, ++ 101,32,115,116,114,105,110,103,46,10,10,32,32,32,32,85, ++ 110,105,118,101,114,115,97,108,32,110,101,119,108,105,110,101, ++ 32,115,117,112,112,111,114,116,32,105,115,32,117,115,101,100, ++ 32,105,110,32,116,104,101,32,100,101,99,111,100,105,110,103, ++ 46,10,32,32,32,32,114,0,0,0,0,78,84,41,7,218, ++ 8,116,111,107,101,110,105,122,101,114,93,0,0,0,90,7, ++ 66,121,116,101,115,73,79,90,8,114,101,97,100,108,105,110, ++ 101,90,15,100,101,116,101,99,116,95,101,110,99,111,100,105, ++ 110,103,90,25,73,110,99,114,101,109,101,110,116,97,108,78, ++ 101,119,108,105,110,101,68,101,99,111,100,101,114,218,6,100, ++ 101,99,111,100,101,41,5,218,12,115,111,117,114,99,101,95, ++ 98,121,116,101,115,114,197,0,0,0,90,21,115,111,117,114, ++ 99,101,95,98,121,116,101,115,95,114,101,97,100,108,105,110, ++ 101,218,8,101,110,99,111,100,105,110,103,90,15,110,101,119, ++ 108,105,110,101,95,100,101,99,111,100,101,114,114,8,0,0, ++ 0,114,8,0,0,0,114,9,0,0,0,218,13,100,101,99, ++ 111,100,101,95,115,111,117,114,99,101,196,2,0,0,115,10, ++ 0,0,0,8,5,12,1,10,1,12,1,20,1,114,201,0, ++ 0,0,169,2,114,165,0,0,0,218,26,115,117,98,109,111, ++ 100,117,108,101,95,115,101,97,114,99,104,95,108,111,99,97, ++ 116,105,111,110,115,99,2,0,0,0,0,0,0,0,2,0, ++ 0,0,9,0,0,0,8,0,0,0,67,0,0,0,115,54, ++ 1,0,0,124,1,100,1,117,0,114,29,100,2,125,1,116, ++ 0,124,2,100,3,131,2,114,28,122,7,124,2,160,1,124, ++ 0,161,1,125,1,87,0,110,38,4,0,116,2,121,27,1, ++ 0,1,0,1,0,89,0,110,30,119,0,110,28,116,3,160, ++ 4,124,1,161,1,125,1,116,5,124,1,131,1,115,57,122, ++ 9,116,6,116,3,160,7,161,0,124,1,131,2,125,1,87, ++ 0,110,9,4,0,116,8,121,56,1,0,1,0,1,0,89, ++ 0,110,1,119,0,116,9,106,10,124,0,124,2,124,1,100, ++ 4,141,3,125,4,100,5,124,4,95,11,124,2,100,1,117, ++ 0,114,99,116,12,131,0,68,0,93,21,92,2,125,5,125, ++ 6,124,1,160,13,116,14,124,6,131,1,161,1,114,96,124, ++ 5,124,0,124,1,131,2,125,2,124,2,124,4,95,15,1, ++ 0,113,99,113,75,100,1,83,0,124,3,116,16,117,0,114, ++ 131,116,0,124,2,100,6,131,2,114,130,122,7,124,2,160, ++ 17,124,0,161,1,125,7,87,0,110,9,4,0,116,2,121, ++ 124,1,0,1,0,1,0,89,0,110,10,119,0,124,7,114, ++ 130,103,0,124,4,95,18,110,3,124,3,124,4,95,18,124, ++ 4,106,18,103,0,107,2,114,153,124,1,114,153,116,19,124, ++ 1,131,1,100,7,25,0,125,8,124,4,106,18,160,20,124, ++ 8,161,1,1,0,124,4,83,0,41,8,97,61,1,0,0, ++ 82,101,116,117,114,110,32,97,32,109,111,100,117,108,101,32, ++ 115,112,101,99,32,98,97,115,101,100,32,111,110,32,97,32, ++ 102,105,108,101,32,108,111,99,97,116,105,111,110,46,10,10, ++ 32,32,32,32,84,111,32,105,110,100,105,99,97,116,101,32, ++ 116,104,97,116,32,116,104,101,32,109,111,100,117,108,101,32, ++ 105,115,32,97,32,112,97,99,107,97,103,101,44,32,115,101, ++ 116,10,32,32,32,32,115,117,98,109,111,100,117,108,101,95, ++ 115,101,97,114,99,104,95,108,111,99,97,116,105,111,110,115, ++ 32,116,111,32,97,32,108,105,115,116,32,111,102,32,100,105, ++ 114,101,99,116,111,114,121,32,112,97,116,104,115,46,32,32, ++ 65,110,10,32,32,32,32,101,109,112,116,121,32,108,105,115, ++ 116,32,105,115,32,115,117,102,102,105,99,105,101,110,116,44, ++ 32,116,104,111,117,103,104,32,105,116,115,32,110,111,116,32, ++ 111,116,104,101,114,119,105,115,101,32,117,115,101,102,117,108, ++ 32,116,111,32,116,104,101,10,32,32,32,32,105,109,112,111, ++ 114,116,32,115,121,115,116,101,109,46,10,10,32,32,32,32, ++ 84,104,101,32,108,111,97,100,101,114,32,109,117,115,116,32, ++ 116,97,107,101,32,97,32,115,112,101,99,32,97,115,32,105, ++ 116,115,32,111,110,108,121,32,95,95,105,110,105,116,95,95, ++ 40,41,32,97,114,103,46,10,10,32,32,32,32,78,122,9, ++ 60,117,110,107,110,111,119,110,62,218,12,103,101,116,95,102, ++ 105,108,101,110,97,109,101,169,1,218,6,111,114,105,103,105, ++ 110,84,218,10,105,115,95,112,97,99,107,97,103,101,114,0, ++ 0,0,0,41,21,114,154,0,0,0,114,204,0,0,0,114, ++ 143,0,0,0,114,19,0,0,0,114,105,0,0,0,114,88, ++ 0,0,0,114,69,0,0,0,114,84,0,0,0,114,78,0, ++ 0,0,114,160,0,0,0,218,10,77,111,100,117,108,101,83, ++ 112,101,99,90,13,95,115,101,116,95,102,105,108,101,97,116, ++ 116,114,218,27,95,103,101,116,95,115,117,112,112,111,114,116, ++ 101,100,95,102,105,108,101,95,108,111,97,100,101,114,115,114, ++ 60,0,0,0,114,137,0,0,0,114,165,0,0,0,218,9, ++ 95,80,79,80,85,76,65,84,69,114,207,0,0,0,114,203, ++ 0,0,0,114,76,0,0,0,114,63,0,0,0,41,9,114, ++ 142,0,0,0,90,8,108,111,99,97,116,105,111,110,114,165, ++ 0,0,0,114,203,0,0,0,218,4,115,112,101,99,218,12, ++ 108,111,97,100,101,114,95,99,108,97,115,115,218,8,115,117, ++ 102,102,105,120,101,115,114,207,0,0,0,90,7,100,105,114, ++ 110,97,109,101,114,8,0,0,0,114,8,0,0,0,114,9, ++ 0,0,0,218,23,115,112,101,99,95,102,114,111,109,95,102, ++ 105,108,101,95,108,111,99,97,116,105,111,110,213,2,0,0, ++ 115,84,0,0,0,8,12,4,4,10,1,2,2,14,1,12, ++ 1,4,1,2,255,2,252,10,7,8,1,2,1,18,1,12, ++ 1,4,1,2,255,16,9,6,1,8,3,14,1,14,1,10, ++ 1,6,1,4,1,2,253,4,5,8,3,10,2,2,1,14, ++ 1,12,1,4,1,2,255,4,3,6,1,2,128,6,2,10, ++ 1,4,1,12,1,12,1,4,2,114,214,0,0,0,99,0, ++ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, ++ 0,0,0,64,0,0,0,115,88,0,0,0,101,0,90,1, ++ 100,0,90,2,100,1,90,3,100,2,90,4,100,3,90,5, ++ 101,6,111,15,100,4,101,7,118,0,90,8,101,9,100,5, ++ 100,6,132,0,131,1,90,10,101,11,100,7,100,8,132,0, ++ 131,1,90,12,101,11,100,14,100,10,100,11,132,1,131,1, ++ 90,13,101,11,100,15,100,12,100,13,132,1,131,1,90,14, ++ 100,9,83,0,41,16,218,21,87,105,110,100,111,119,115,82, ++ 101,103,105,115,116,114,121,70,105,110,100,101,114,122,62,77, ++ 101,116,97,32,112,97,116,104,32,102,105,110,100,101,114,32, ++ 102,111,114,32,109,111,100,117,108,101,115,32,100,101,99,108, ++ 97,114,101,100,32,105,110,32,116,104,101,32,87,105,110,100, ++ 111,119,115,32,114,101,103,105,115,116,114,121,46,122,59,83, ++ 111,102,116,119,97,114,101,92,80,121,116,104,111,110,92,80, ++ 121,116,104,111,110,67,111,114,101,92,123,115,121,115,95,118, ++ 101,114,115,105,111,110,125,92,77,111,100,117,108,101,115,92, ++ 123,102,117,108,108,110,97,109,101,125,122,65,83,111,102,116, ++ 119,97,114,101,92,80,121,116,104,111,110,92,80,121,116,104, ++ 111,110,67,111,114,101,92,123,115,121,115,95,118,101,114,115, ++ 105,111,110,125,92,77,111,100,117,108,101,115,92,123,102,117, ++ 108,108,110,97,109,101,125,92,68,101,98,117,103,122,6,95, ++ 100,46,112,121,100,99,1,0,0,0,0,0,0,0,0,0, ++ 0,0,1,0,0,0,8,0,0,0,67,0,0,0,115,50, ++ 0,0,0,122,8,116,0,160,1,116,0,106,2,124,0,161, ++ 2,87,0,83,0,4,0,116,3,121,24,1,0,1,0,1, ++ 0,116,0,160,1,116,0,106,4,124,0,161,2,6,0,89, ++ 0,83,0,119,0,114,71,0,0,0,41,5,218,6,119,105, ++ 110,114,101,103,90,7,79,112,101,110,75,101,121,90,17,72, ++ 75,69,89,95,67,85,82,82,69,78,84,95,85,83,69,82, ++ 114,78,0,0,0,90,18,72,75,69,89,95,76,79,67,65, ++ 76,95,77,65,67,72,73,78,69,114,21,0,0,0,114,8, ++ 0,0,0,114,8,0,0,0,114,9,0,0,0,218,14,95, ++ 111,112,101,110,95,114,101,103,105,115,116,114,121,42,3,0, ++ 0,115,10,0,0,0,2,2,16,1,12,1,18,1,2,255, ++ 122,36,87,105,110,100,111,119,115,82,101,103,105,115,116,114, ++ 121,70,105,110,100,101,114,46,95,111,112,101,110,95,114,101, ++ 103,105,115,116,114,121,99,2,0,0,0,0,0,0,0,0, ++ 0,0,0,6,0,0,0,8,0,0,0,67,0,0,0,115, ++ 134,0,0,0,124,0,106,0,114,7,124,0,106,1,125,2, ++ 110,3,124,0,106,2,125,2,124,2,106,3,124,1,100,1, ++ 116,4,106,5,100,0,100,2,133,2,25,0,22,0,100,3, ++ 141,2,125,3,122,32,124,0,160,6,124,3,161,1,143,16, ++ 125,4,116,7,160,8,124,4,100,4,161,2,125,5,87,0, ++ 100,0,4,0,4,0,131,3,1,0,87,0,124,5,83,0, ++ 49,0,115,49,119,1,1,0,1,0,1,0,89,0,1,0, ++ 87,0,124,5,83,0,4,0,116,9,121,66,1,0,1,0, ++ 1,0,89,0,100,0,83,0,119,0,41,5,78,122,5,37, ++ 100,46,37,100,114,46,0,0,0,41,2,114,164,0,0,0, ++ 90,11,115,121,115,95,118,101,114,115,105,111,110,114,11,0, ++ 0,0,41,10,218,11,68,69,66,85,71,95,66,85,73,76, ++ 68,218,18,82,69,71,73,83,84,82,89,95,75,69,89,95, ++ 68,69,66,85,71,218,12,82,69,71,73,83,84,82,89,95, ++ 75,69,89,114,91,0,0,0,114,16,0,0,0,218,12,118, ++ 101,114,115,105,111,110,95,105,110,102,111,114,217,0,0,0, ++ 114,216,0,0,0,90,10,81,117,101,114,121,86,97,108,117, ++ 101,114,78,0,0,0,41,6,218,3,99,108,115,114,164,0, ++ 0,0,90,12,114,101,103,105,115,116,114,121,95,107,101,121, ++ 114,22,0,0,0,90,4,104,107,101,121,218,8,102,105,108, ++ 101,112,97,116,104,114,8,0,0,0,114,8,0,0,0,114, ++ 9,0,0,0,218,16,95,115,101,97,114,99,104,95,114,101, ++ 103,105,115,116,114,121,49,3,0,0,115,32,0,0,0,6, ++ 2,8,1,6,2,6,1,16,1,6,255,2,2,12,1,14, ++ 1,12,255,4,4,18,252,4,4,12,254,6,1,2,255,122, ++ 38,87,105,110,100,111,119,115,82,101,103,105,115,116,114,121, ++ 70,105,110,100,101,114,46,95,115,101,97,114,99,104,95,114, ++ 101,103,105,115,116,114,121,78,99,4,0,0,0,0,0,0, ++ 0,0,0,0,0,8,0,0,0,8,0,0,0,67,0,0, ++ 0,115,120,0,0,0,124,0,160,0,124,1,161,1,125,4, ++ 124,4,100,0,117,0,114,11,100,0,83,0,122,6,116,1, ++ 124,4,131,1,1,0,87,0,110,10,4,0,116,2,121,27, ++ 1,0,1,0,1,0,89,0,100,0,83,0,119,0,116,3, ++ 131,0,68,0,93,26,92,2,125,5,125,6,124,4,160,4, ++ 116,5,124,6,131,1,161,1,114,57,116,6,106,7,124,1, ++ 124,5,124,1,124,4,131,2,124,4,100,1,141,3,125,7, ++ 124,7,2,0,1,0,83,0,113,31,100,0,83,0,41,2, ++ 78,114,205,0,0,0,41,8,114,224,0,0,0,114,77,0, ++ 0,0,114,78,0,0,0,114,209,0,0,0,114,60,0,0, ++ 0,114,137,0,0,0,114,160,0,0,0,218,16,115,112,101, ++ 99,95,102,114,111,109,95,108,111,97,100,101,114,41,8,114, ++ 222,0,0,0,114,164,0,0,0,114,67,0,0,0,218,6, ++ 116,97,114,103,101,116,114,223,0,0,0,114,165,0,0,0, ++ 114,213,0,0,0,114,211,0,0,0,114,8,0,0,0,114, ++ 8,0,0,0,114,9,0,0,0,218,9,102,105,110,100,95, ++ 115,112,101,99,64,3,0,0,115,34,0,0,0,10,2,8, ++ 1,4,1,2,1,12,1,12,1,6,1,2,255,14,2,14, ++ 1,6,1,8,1,2,1,6,254,8,3,2,252,4,255,122, ++ 31,87,105,110,100,111,119,115,82,101,103,105,115,116,114,121, ++ 70,105,110,100,101,114,46,102,105,110,100,95,115,112,101,99, ++ 99,3,0,0,0,0,0,0,0,0,0,0,0,4,0,0, ++ 0,4,0,0,0,67,0,0,0,115,42,0,0,0,116,0, ++ 160,1,100,1,116,2,161,2,1,0,124,0,160,3,124,1, ++ 124,2,161,2,125,3,124,3,100,2,117,1,114,19,124,3, ++ 106,4,83,0,100,2,83,0,41,3,122,106,70,105,110,100, ++ 32,109,111,100,117,108,101,32,110,97,109,101,100,32,105,110, ++ 32,116,104,101,32,114,101,103,105,115,116,114,121,46,10,10, ++ 32,32,32,32,32,32,32,32,84,104,105,115,32,109,101,116, ++ 104,111,100,32,105,115,32,100,101,112,114,101,99,97,116,101, ++ 100,46,32,32,85,115,101,32,102,105,110,100,95,115,112,101, ++ 99,40,41,32,105,110,115,116,101,97,100,46,10,10,32,32, ++ 32,32,32,32,32,32,122,112,87,105,110,100,111,119,115,82, ++ 101,103,105,115,116,114,121,70,105,110,100,101,114,46,102,105, ++ 110,100,95,109,111,100,117,108,101,40,41,32,105,115,32,100, ++ 101,112,114,101,99,97,116,101,100,32,97,110,100,32,115,108, ++ 97,116,101,100,32,102,111,114,32,114,101,109,111,118,97,108, ++ 32,105,110,32,80,121,116,104,111,110,32,51,46,49,50,59, ++ 32,117,115,101,32,102,105,110,100,95,115,112,101,99,40,41, ++ 32,105,110,115,116,101,97,100,78,169,5,114,101,0,0,0, ++ 114,102,0,0,0,114,103,0,0,0,114,227,0,0,0,114, ++ 165,0,0,0,169,4,114,222,0,0,0,114,164,0,0,0, ++ 114,67,0,0,0,114,211,0,0,0,114,8,0,0,0,114, ++ 8,0,0,0,114,9,0,0,0,218,11,102,105,110,100,95, ++ 109,111,100,117,108,101,80,3,0,0,115,14,0,0,0,6, ++ 7,2,2,4,254,12,3,8,1,6,1,4,2,122,33,87, ++ 105,110,100,111,119,115,82,101,103,105,115,116,114,121,70,105, ++ 110,100,101,114,46,102,105,110,100,95,109,111,100,117,108,101, ++ 169,2,78,78,114,71,0,0,0,41,15,114,151,0,0,0, ++ 114,150,0,0,0,114,152,0,0,0,114,153,0,0,0,114, ++ 220,0,0,0,114,219,0,0,0,218,11,95,77,83,95,87, ++ 73,78,68,79,87,83,218,18,69,88,84,69,78,83,73,79, ++ 78,95,83,85,70,70,73,88,69,83,114,218,0,0,0,218, ++ 12,115,116,97,116,105,99,109,101,116,104,111,100,114,217,0, ++ 0,0,218,11,99,108,97,115,115,109,101,116,104,111,100,114, ++ 224,0,0,0,114,227,0,0,0,114,230,0,0,0,114,8, ++ 0,0,0,114,8,0,0,0,114,8,0,0,0,114,9,0, ++ 0,0,114,215,0,0,0,30,3,0,0,115,30,0,0,0, ++ 8,0,4,2,2,3,2,255,2,4,2,255,12,3,2,2, ++ 10,1,2,6,10,1,2,14,12,1,2,15,16,1,114,215, ++ 0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0, ++ 0,0,0,0,2,0,0,0,64,0,0,0,115,48,0,0, ++ 0,101,0,90,1,100,0,90,2,100,1,90,3,100,2,100, ++ 3,132,0,90,4,100,4,100,5,132,0,90,5,100,6,100, ++ 7,132,0,90,6,100,8,100,9,132,0,90,7,100,10,83, ++ 0,41,11,218,13,95,76,111,97,100,101,114,66,97,115,105, ++ 99,115,122,83,66,97,115,101,32,99,108,97,115,115,32,111, ++ 102,32,99,111,109,109,111,110,32,99,111,100,101,32,110,101, ++ 101,100,101,100,32,98,121,32,98,111,116,104,32,83,111,117, ++ 114,99,101,76,111,97,100,101,114,32,97,110,100,10,32,32, ++ 32,32,83,111,117,114,99,101,108,101,115,115,70,105,108,101, ++ 76,111,97,100,101,114,46,99,2,0,0,0,0,0,0,0, ++ 0,0,0,0,5,0,0,0,4,0,0,0,67,0,0,0, ++ 115,64,0,0,0,116,0,124,0,160,1,124,1,161,1,131, ++ 1,100,1,25,0,125,2,124,2,160,2,100,2,100,1,161, ++ 2,100,3,25,0,125,3,124,1,160,3,100,2,161,1,100, ++ 4,25,0,125,4,124,3,100,5,107,2,111,31,124,4,100, ++ 5,107,3,83,0,41,7,122,141,67,111,110,99,114,101,116, ++ 101,32,105,109,112,108,101,109,101,110,116,97,116,105,111,110, ++ 32,111,102,32,73,110,115,112,101,99,116,76,111,97,100,101, ++ 114,46,105,115,95,112,97,99,107,97,103,101,32,98,121,32, ++ 99,104,101,99,107,105,110,103,32,105,102,10,32,32,32,32, ++ 32,32,32,32,116,104,101,32,112,97,116,104,32,114,101,116, ++ 117,114,110,101,100,32,98,121,32,103,101,116,95,102,105,108, ++ 101,110,97,109,101,32,104,97,115,32,97,32,102,105,108,101, ++ 110,97,109,101,32,111,102,32,39,95,95,105,110,105,116,95, ++ 95,46,112,121,39,46,114,4,0,0,0,114,99,0,0,0, ++ 114,0,0,0,0,114,46,0,0,0,218,8,95,95,105,110, ++ 105,116,95,95,78,41,4,114,76,0,0,0,114,204,0,0, ++ 0,114,127,0,0,0,114,106,0,0,0,41,5,114,144,0, ++ 0,0,114,164,0,0,0,114,122,0,0,0,90,13,102,105, ++ 108,101,110,97,109,101,95,98,97,115,101,90,9,116,97,105, ++ 108,95,110,97,109,101,114,8,0,0,0,114,8,0,0,0, ++ 114,9,0,0,0,114,207,0,0,0,102,3,0,0,115,8, ++ 0,0,0,18,3,16,1,14,1,16,1,122,24,95,76,111, ++ 97,100,101,114,66,97,115,105,99,115,46,105,115,95,112,97, ++ 99,107,97,103,101,99,2,0,0,0,0,0,0,0,0,0, ++ 0,0,2,0,0,0,1,0,0,0,67,0,0,0,114,25, ++ 0,0,0,169,2,122,42,85,115,101,32,100,101,102,97,117, ++ 108,116,32,115,101,109,97,110,116,105,99,115,32,102,111,114, ++ 32,109,111,100,117,108,101,32,99,114,101,97,116,105,111,110, ++ 46,78,114,8,0,0,0,169,2,114,144,0,0,0,114,211, ++ 0,0,0,114,8,0,0,0,114,8,0,0,0,114,9,0, ++ 0,0,218,13,99,114,101,97,116,101,95,109,111,100,117,108, ++ 101,110,3,0,0,243,2,0,0,0,4,0,122,27,95,76, ++ 111,97,100,101,114,66,97,115,105,99,115,46,99,114,101,97, ++ 116,101,95,109,111,100,117,108,101,99,2,0,0,0,0,0, ++ 0,0,0,0,0,0,3,0,0,0,5,0,0,0,67,0, ++ 0,0,115,56,0,0,0,124,0,160,0,124,1,106,1,161, ++ 1,125,2,124,2,100,1,117,0,114,18,116,2,100,2,160, ++ 3,124,1,106,1,161,1,131,1,130,1,116,4,160,5,116, ++ 6,124,2,124,1,106,7,161,3,1,0,100,1,83,0,41, ++ 3,122,19,69,120,101,99,117,116,101,32,116,104,101,32,109, ++ 111,100,117,108,101,46,78,122,52,99,97,110,110,111,116,32, ++ 108,111,97,100,32,109,111,100,117,108,101,32,123,33,114,125, ++ 32,119,104,101,110,32,103,101,116,95,99,111,100,101,40,41, ++ 32,114,101,116,117,114,110,115,32,78,111,110,101,41,8,218, ++ 8,103,101,116,95,99,111,100,101,114,151,0,0,0,114,143, ++ 0,0,0,114,91,0,0,0,114,160,0,0,0,218,25,95, ++ 99,97,108,108,95,119,105,116,104,95,102,114,97,109,101,115, ++ 95,114,101,109,111,118,101,100,218,4,101,120,101,99,114,157, ++ 0,0,0,41,3,114,144,0,0,0,218,6,109,111,100,117, ++ 108,101,114,189,0,0,0,114,8,0,0,0,114,8,0,0, ++ 0,114,9,0,0,0,218,11,101,120,101,99,95,109,111,100, ++ 117,108,101,113,3,0,0,115,12,0,0,0,12,2,8,1, ++ 4,1,8,1,4,255,20,2,122,25,95,76,111,97,100,101, ++ 114,66,97,115,105,99,115,46,101,120,101,99,95,109,111,100, + 117,108,101,99,2,0,0,0,0,0,0,0,0,0,0,0, +- 3,0,0,0,5,0,0,0,67,0,0,0,115,56,0,0, +- 0,124,0,160,0,124,1,106,1,161,1,125,2,124,2,100, +- 1,117,0,114,18,116,2,100,2,160,3,124,1,106,1,161, +- 1,131,1,130,1,116,4,160,5,116,6,124,2,124,1,106, +- 7,161,3,1,0,100,1,83,0,41,3,122,19,69,120,101, +- 99,117,116,101,32,116,104,101,32,109,111,100,117,108,101,46, +- 78,122,52,99,97,110,110,111,116,32,108,111,97,100,32,109, +- 111,100,117,108,101,32,123,33,114,125,32,119,104,101,110,32, +- 103,101,116,95,99,111,100,101,40,41,32,114,101,116,117,114, +- 110,115,32,78,111,110,101,41,8,218,8,103,101,116,95,99, +- 111,100,101,114,150,0,0,0,114,142,0,0,0,114,89,0, +- 0,0,114,159,0,0,0,218,25,95,99,97,108,108,95,119, +- 105,116,104,95,102,114,97,109,101,115,95,114,101,109,111,118, +- 101,100,218,4,101,120,101,99,114,156,0,0,0,41,3,114, +- 143,0,0,0,218,6,109,111,100,117,108,101,114,188,0,0, +- 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, +- 218,11,101,120,101,99,95,109,111,100,117,108,101,109,3,0, +- 0,115,12,0,0,0,12,2,8,1,4,1,8,1,4,255, +- 20,2,122,25,95,76,111,97,100,101,114,66,97,115,105,99, +- 115,46,101,120,101,99,95,109,111,100,117,108,101,99,2,0, +- 0,0,0,0,0,0,0,0,0,0,2,0,0,0,4,0, +- 0,0,67,0,0,0,115,12,0,0,0,116,0,160,1,124, +- 0,124,1,161,2,83,0,41,2,122,26,84,104,105,115,32, +- 109,101,116,104,111,100,32,105,115,32,100,101,112,114,101,99, +- 97,116,101,100,46,78,41,2,114,159,0,0,0,218,17,95, +- 108,111,97,100,95,109,111,100,117,108,101,95,115,104,105,109, +- 169,2,114,143,0,0,0,114,163,0,0,0,114,7,0,0, +- 0,114,7,0,0,0,114,8,0,0,0,218,11,108,111,97, +- 100,95,109,111,100,117,108,101,117,3,0,0,115,2,0,0, +- 0,12,3,122,25,95,76,111,97,100,101,114,66,97,115,105, +- 99,115,46,108,111,97,100,95,109,111,100,117,108,101,78,41, +- 8,114,150,0,0,0,114,149,0,0,0,114,151,0,0,0, +- 114,152,0,0,0,114,206,0,0,0,114,239,0,0,0,114, +- 245,0,0,0,114,248,0,0,0,114,7,0,0,0,114,7, +- 0,0,0,114,7,0,0,0,114,8,0,0,0,114,235,0, +- 0,0,93,3,0,0,115,12,0,0,0,8,0,4,2,8, +- 3,8,8,8,3,12,8,114,235,0,0,0,99,0,0,0, +- 0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0, +- 0,64,0,0,0,115,74,0,0,0,101,0,90,1,100,0, +- 90,2,100,1,100,2,132,0,90,3,100,3,100,4,132,0, +- 90,4,100,5,100,6,132,0,90,5,100,7,100,8,132,0, +- 90,6,100,9,100,10,132,0,90,7,100,11,100,12,156,1, +- 100,13,100,14,132,2,90,8,100,15,100,16,132,0,90,9, +- 100,17,83,0,41,18,218,12,83,111,117,114,99,101,76,111, +- 97,100,101,114,99,2,0,0,0,0,0,0,0,0,0,0, +- 0,2,0,0,0,1,0,0,0,67,0,0,0,115,4,0, +- 0,0,116,0,130,1,41,2,122,165,79,112,116,105,111,110, +- 97,108,32,109,101,116,104,111,100,32,116,104,97,116,32,114, +- 101,116,117,114,110,115,32,116,104,101,32,109,111,100,105,102, +- 105,99,97,116,105,111,110,32,116,105,109,101,32,40,97,110, +- 32,105,110,116,41,32,102,111,114,32,116,104,101,10,32,32, +- 32,32,32,32,32,32,115,112,101,99,105,102,105,101,100,32, +- 112,97,116,104,32,40,97,32,115,116,114,41,46,10,10,32, +- 32,32,32,32,32,32,32,82,97,105,115,101,115,32,79,83, +- 69,114,114,111,114,32,119,104,101,110,32,116,104,101,32,112, +- 97,116,104,32,99,97,110,110,111,116,32,98,101,32,104,97, +- 110,100,108,101,100,46,10,32,32,32,32,32,32,32,32,78, +- 41,1,114,76,0,0,0,169,2,114,143,0,0,0,114,65, +- 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, +- 0,0,218,10,112,97,116,104,95,109,116,105,109,101,125,3, +- 0,0,115,2,0,0,0,4,6,122,23,83,111,117,114,99, +- 101,76,111,97,100,101,114,46,112,97,116,104,95,109,116,105, +- 109,101,99,2,0,0,0,0,0,0,0,0,0,0,0,2, +- 0,0,0,4,0,0,0,67,0,0,0,115,14,0,0,0, +- 100,1,124,0,160,0,124,1,161,1,105,1,83,0,41,3, +- 97,158,1,0,0,79,112,116,105,111,110,97,108,32,109,101, +- 116,104,111,100,32,114,101,116,117,114,110,105,110,103,32,97, +- 32,109,101,116,97,100,97,116,97,32,100,105,99,116,32,102, +- 111,114,32,116,104,101,32,115,112,101,99,105,102,105,101,100, +- 10,32,32,32,32,32,32,32,32,112,97,116,104,32,40,97, +- 32,115,116,114,41,46,10,10,32,32,32,32,32,32,32,32, +- 80,111,115,115,105,98,108,101,32,107,101,121,115,58,10,32, +- 32,32,32,32,32,32,32,45,32,39,109,116,105,109,101,39, +- 32,40,109,97,110,100,97,116,111,114,121,41,32,105,115,32, +- 116,104,101,32,110,117,109,101,114,105,99,32,116,105,109,101, +- 115,116,97,109,112,32,111,102,32,108,97,115,116,32,115,111, +- 117,114,99,101,10,32,32,32,32,32,32,32,32,32,32,99, +- 111,100,101,32,109,111,100,105,102,105,99,97,116,105,111,110, +- 59,10,32,32,32,32,32,32,32,32,45,32,39,115,105,122, +- 101,39,32,40,111,112,116,105,111,110,97,108,41,32,105,115, +- 32,116,104,101,32,115,105,122,101,32,105,110,32,98,121,116, +- 101,115,32,111,102,32,116,104,101,32,115,111,117,114,99,101, +- 32,99,111,100,101,46,10,10,32,32,32,32,32,32,32,32, +- 73,109,112,108,101,109,101,110,116,105,110,103,32,116,104,105, +- 115,32,109,101,116,104,111,100,32,97,108,108,111,119,115,32, +- 116,104,101,32,108,111,97,100,101,114,32,116,111,32,114,101, +- 97,100,32,98,121,116,101,99,111,100,101,32,102,105,108,101, +- 115,46,10,32,32,32,32,32,32,32,32,82,97,105,115,101, +- 115,32,79,83,69,114,114,111,114,32,119,104,101,110,32,116, +- 104,101,32,112,97,116,104,32,99,97,110,110,111,116,32,98, +- 101,32,104,97,110,100,108,101,100,46,10,32,32,32,32,32, +- 32,32,32,114,193,0,0,0,78,41,1,114,251,0,0,0, +- 114,250,0,0,0,114,7,0,0,0,114,7,0,0,0,114, +- 8,0,0,0,218,10,112,97,116,104,95,115,116,97,116,115, +- 133,3,0,0,115,2,0,0,0,14,12,122,23,83,111,117, +- 114,99,101,76,111,97,100,101,114,46,112,97,116,104,95,115, +- 116,97,116,115,99,4,0,0,0,0,0,0,0,0,0,0, +- 0,4,0,0,0,4,0,0,0,67,0,0,0,115,12,0, +- 0,0,124,0,160,0,124,2,124,3,161,2,83,0,41,2, +- 122,228,79,112,116,105,111,110,97,108,32,109,101,116,104,111, +- 100,32,119,104,105,99,104,32,119,114,105,116,101,115,32,100, +- 97,116,97,32,40,98,121,116,101,115,41,32,116,111,32,97, +- 32,102,105,108,101,32,112,97,116,104,32,40,97,32,115,116, +- 114,41,46,10,10,32,32,32,32,32,32,32,32,73,109,112, +- 108,101,109,101,110,116,105,110,103,32,116,104,105,115,32,109, +- 101,116,104,111,100,32,97,108,108,111,119,115,32,102,111,114, +- 32,116,104,101,32,119,114,105,116,105,110,103,32,111,102,32, +- 98,121,116,101,99,111,100,101,32,102,105,108,101,115,46,10, +- 10,32,32,32,32,32,32,32,32,84,104,101,32,115,111,117, +- 114,99,101,32,112,97,116,104,32,105,115,32,110,101,101,100, +- 101,100,32,105,110,32,111,114,100,101,114,32,116,111,32,99, +- 111,114,114,101,99,116,108,121,32,116,114,97,110,115,102,101, +- 114,32,112,101,114,109,105,115,115,105,111,110,115,10,32,32, +- 32,32,32,32,32,32,78,41,1,218,8,115,101,116,95,100, +- 97,116,97,41,4,114,143,0,0,0,114,134,0,0,0,90, +- 10,99,97,99,104,101,95,112,97,116,104,114,41,0,0,0, +- 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, +- 15,95,99,97,99,104,101,95,98,121,116,101,99,111,100,101, +- 147,3,0,0,115,2,0,0,0,12,8,122,28,83,111,117, +- 114,99,101,76,111,97,100,101,114,46,95,99,97,99,104,101, +- 95,98,121,116,101,99,111,100,101,99,3,0,0,0,0,0, +- 0,0,0,0,0,0,3,0,0,0,1,0,0,0,67,0, +- 0,0,114,23,0,0,0,41,2,122,150,79,112,116,105,111, +- 110,97,108,32,109,101,116,104,111,100,32,119,104,105,99,104, +- 32,119,114,105,116,101,115,32,100,97,116,97,32,40,98,121, +- 116,101,115,41,32,116,111,32,97,32,102,105,108,101,32,112, ++ 2,0,0,0,4,0,0,0,67,0,0,0,115,12,0,0, ++ 0,116,0,160,1,124,0,124,1,161,2,83,0,41,2,122, ++ 26,84,104,105,115,32,109,101,116,104,111,100,32,105,115,32, ++ 100,101,112,114,101,99,97,116,101,100,46,78,41,2,114,160, ++ 0,0,0,218,17,95,108,111,97,100,95,109,111,100,117,108, ++ 101,95,115,104,105,109,169,2,114,144,0,0,0,114,164,0, ++ 0,0,114,8,0,0,0,114,8,0,0,0,114,9,0,0, ++ 0,218,11,108,111,97,100,95,109,111,100,117,108,101,121,3, ++ 0,0,115,2,0,0,0,12,3,122,25,95,76,111,97,100, ++ 101,114,66,97,115,105,99,115,46,108,111,97,100,95,109,111, ++ 100,117,108,101,78,41,8,114,151,0,0,0,114,150,0,0, ++ 0,114,152,0,0,0,114,153,0,0,0,114,207,0,0,0, ++ 114,240,0,0,0,114,246,0,0,0,114,249,0,0,0,114, ++ 8,0,0,0,114,8,0,0,0,114,8,0,0,0,114,9, ++ 0,0,0,114,236,0,0,0,97,3,0,0,115,12,0,0, ++ 0,8,0,4,2,8,3,8,8,8,3,12,8,114,236,0, ++ 0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 0,0,0,3,0,0,0,64,0,0,0,115,74,0,0,0, ++ 101,0,90,1,100,0,90,2,100,1,100,2,132,0,90,3, ++ 100,3,100,4,132,0,90,4,100,5,100,6,132,0,90,5, ++ 100,7,100,8,132,0,90,6,100,9,100,10,132,0,90,7, ++ 100,11,100,12,156,1,100,13,100,14,132,2,90,8,100,15, ++ 100,16,132,0,90,9,100,17,83,0,41,18,218,12,83,111, ++ 117,114,99,101,76,111,97,100,101,114,99,2,0,0,0,0, ++ 0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,67, ++ 0,0,0,115,4,0,0,0,116,0,130,1,41,2,122,165, ++ 79,112,116,105,111,110,97,108,32,109,101,116,104,111,100,32, ++ 116,104,97,116,32,114,101,116,117,114,110,115,32,116,104,101, ++ 32,109,111,100,105,102,105,99,97,116,105,111,110,32,116,105, ++ 109,101,32,40,97,110,32,105,110,116,41,32,102,111,114,32, ++ 116,104,101,10,32,32,32,32,32,32,32,32,115,112,101,99, ++ 105,102,105,101,100,32,112,97,116,104,32,40,97,32,115,116, ++ 114,41,46,10,10,32,32,32,32,32,32,32,32,82,97,105, ++ 115,101,115,32,79,83,69,114,114,111,114,32,119,104,101,110, ++ 32,116,104,101,32,112,97,116,104,32,99,97,110,110,111,116, ++ 32,98,101,32,104,97,110,100,108,101,100,46,10,32,32,32, ++ 32,32,32,32,32,78,41,1,114,78,0,0,0,169,2,114, ++ 144,0,0,0,114,67,0,0,0,114,8,0,0,0,114,8, ++ 0,0,0,114,9,0,0,0,218,10,112,97,116,104,95,109, ++ 116,105,109,101,129,3,0,0,115,2,0,0,0,4,6,122, ++ 23,83,111,117,114,99,101,76,111,97,100,101,114,46,112,97, ++ 116,104,95,109,116,105,109,101,99,2,0,0,0,0,0,0, ++ 0,0,0,0,0,2,0,0,0,4,0,0,0,67,0,0, ++ 0,115,14,0,0,0,100,1,124,0,160,0,124,1,161,1, ++ 105,1,83,0,41,3,97,158,1,0,0,79,112,116,105,111, ++ 110,97,108,32,109,101,116,104,111,100,32,114,101,116,117,114, ++ 110,105,110,103,32,97,32,109,101,116,97,100,97,116,97,32, ++ 100,105,99,116,32,102,111,114,32,116,104,101,32,115,112,101, ++ 99,105,102,105,101,100,10,32,32,32,32,32,32,32,32,112, + 97,116,104,32,40,97,32,115,116,114,41,46,10,10,32,32, ++ 32,32,32,32,32,32,80,111,115,115,105,98,108,101,32,107, ++ 101,121,115,58,10,32,32,32,32,32,32,32,32,45,32,39, ++ 109,116,105,109,101,39,32,40,109,97,110,100,97,116,111,114, ++ 121,41,32,105,115,32,116,104,101,32,110,117,109,101,114,105, ++ 99,32,116,105,109,101,115,116,97,109,112,32,111,102,32,108, ++ 97,115,116,32,115,111,117,114,99,101,10,32,32,32,32,32, ++ 32,32,32,32,32,99,111,100,101,32,109,111,100,105,102,105, ++ 99,97,116,105,111,110,59,10,32,32,32,32,32,32,32,32, ++ 45,32,39,115,105,122,101,39,32,40,111,112,116,105,111,110, ++ 97,108,41,32,105,115,32,116,104,101,32,115,105,122,101,32, ++ 105,110,32,98,121,116,101,115,32,111,102,32,116,104,101,32, ++ 115,111,117,114,99,101,32,99,111,100,101,46,10,10,32,32, + 32,32,32,32,32,32,73,109,112,108,101,109,101,110,116,105, + 110,103,32,116,104,105,115,32,109,101,116,104,111,100,32,97, +- 108,108,111,119,115,32,102,111,114,32,116,104,101,32,119,114, +- 105,116,105,110,103,32,111,102,32,98,121,116,101,99,111,100, ++ 108,108,111,119,115,32,116,104,101,32,108,111,97,100,101,114, ++ 32,116,111,32,114,101,97,100,32,98,121,116,101,99,111,100, + 101,32,102,105,108,101,115,46,10,32,32,32,32,32,32,32, +- 32,78,114,7,0,0,0,41,3,114,143,0,0,0,114,65, +- 0,0,0,114,41,0,0,0,114,7,0,0,0,114,7,0, +- 0,0,114,8,0,0,0,114,253,0,0,0,157,3,0,0, +- 114,240,0,0,0,122,21,83,111,117,114,99,101,76,111,97, +- 100,101,114,46,115,101,116,95,100,97,116,97,99,2,0,0, +- 0,0,0,0,0,0,0,0,0,5,0,0,0,10,0,0, +- 0,67,0,0,0,115,70,0,0,0,124,0,160,0,124,1, +- 161,1,125,2,122,10,124,0,160,1,124,2,161,1,125,3, +- 87,0,116,4,124,3,131,1,83,0,4,0,116,2,121,34, +- 1,0,125,4,1,0,122,7,116,3,100,1,124,1,100,2, +- 141,2,124,4,130,2,100,3,125,4,126,4,119,1,119,0, +- 41,4,122,52,67,111,110,99,114,101,116,101,32,105,109,112, +- 108,101,109,101,110,116,97,116,105,111,110,32,111,102,32,73, +- 110,115,112,101,99,116,76,111,97,100,101,114,46,103,101,116, +- 95,115,111,117,114,99,101,46,122,39,115,111,117,114,99,101, +- 32,110,111,116,32,97,118,97,105,108,97,98,108,101,32,116, +- 104,114,111,117,103,104,32,103,101,116,95,100,97,116,97,40, +- 41,114,140,0,0,0,78,41,5,114,203,0,0,0,218,8, +- 103,101,116,95,100,97,116,97,114,76,0,0,0,114,142,0, +- 0,0,114,200,0,0,0,41,5,114,143,0,0,0,114,163, +- 0,0,0,114,65,0,0,0,114,198,0,0,0,218,3,101, +- 120,99,114,7,0,0,0,114,7,0,0,0,114,8,0,0, +- 0,218,10,103,101,116,95,115,111,117,114,99,101,164,3,0, +- 0,115,24,0,0,0,10,2,2,1,12,1,8,4,14,253, +- 4,1,2,1,4,255,2,1,2,255,8,128,2,255,122,23, +- 83,111,117,114,99,101,76,111,97,100,101,114,46,103,101,116, +- 95,115,111,117,114,99,101,114,130,0,0,0,41,1,218,9, +- 95,111,112,116,105,109,105,122,101,99,3,0,0,0,0,0, +- 0,0,1,0,0,0,4,0,0,0,8,0,0,0,67,0, +- 0,0,115,22,0,0,0,116,0,106,1,116,2,124,1,124, +- 2,100,1,100,2,124,3,100,3,141,6,83,0,41,5,122, +- 130,82,101,116,117,114,110,32,116,104,101,32,99,111,100,101, +- 32,111,98,106,101,99,116,32,99,111,109,112,105,108,101,100, +- 32,102,114,111,109,32,115,111,117,114,99,101,46,10,10,32, +- 32,32,32,32,32,32,32,84,104,101,32,39,100,97,116,97, +- 39,32,97,114,103,117,109,101,110,116,32,99,97,110,32,98, +- 101,32,97,110,121,32,111,98,106,101,99,116,32,116,121,112, +- 101,32,116,104,97,116,32,99,111,109,112,105,108,101,40,41, +- 32,115,117,112,112,111,114,116,115,46,10,32,32,32,32,32, +- 32,32,32,114,243,0,0,0,84,41,2,218,12,100,111,110, +- 116,95,105,110,104,101,114,105,116,114,108,0,0,0,78,41, +- 3,114,159,0,0,0,114,242,0,0,0,218,7,99,111,109, +- 112,105,108,101,41,4,114,143,0,0,0,114,41,0,0,0, +- 114,65,0,0,0,114,2,1,0,0,114,7,0,0,0,114, +- 7,0,0,0,114,8,0,0,0,218,14,115,111,117,114,99, +- 101,95,116,111,95,99,111,100,101,174,3,0,0,115,6,0, +- 0,0,12,5,4,1,6,255,122,27,83,111,117,114,99,101, +- 76,111,97,100,101,114,46,115,111,117,114,99,101,95,116,111, +- 95,99,111,100,101,99,2,0,0,0,0,0,0,0,0,0, +- 0,0,15,0,0,0,9,0,0,0,67,0,0,0,115,2, +- 2,0,0,124,0,160,0,124,1,161,1,125,2,100,1,125, +- 3,100,1,125,4,100,1,125,5,100,2,125,6,100,3,125, +- 7,122,6,116,1,124,2,131,1,125,8,87,0,110,11,4, +- 0,116,2,121,32,1,0,1,0,1,0,100,1,125,8,89, +- 0,110,144,119,0,122,7,124,0,160,3,124,2,161,1,125, +- 9,87,0,110,9,4,0,116,4,121,49,1,0,1,0,1, +- 0,89,0,110,127,119,0,116,5,124,9,100,4,25,0,131, +- 1,125,3,122,7,124,0,160,6,124,8,161,1,125,10,87, +- 0,110,9,4,0,116,4,121,72,1,0,1,0,1,0,89, +- 0,110,104,119,0,124,1,124,8,100,5,156,2,125,11,122, +- 71,116,7,124,10,124,1,124,11,131,3,125,12,116,8,124, +- 10,131,1,100,6,100,1,133,2,25,0,125,13,124,12,100, +- 7,64,0,100,8,107,3,125,6,124,6,114,138,124,12,100, +- 9,64,0,100,8,107,3,125,7,116,9,106,10,100,10,107, +- 3,114,137,124,7,115,119,116,9,106,10,100,11,107,2,114, +- 137,124,0,160,6,124,2,161,1,125,4,116,9,160,11,116, +- 12,124,4,161,2,125,5,116,13,124,10,124,5,124,1,124, +- 11,131,4,1,0,110,10,116,14,124,10,124,3,124,9,100, +- 12,25,0,124,1,124,11,131,5,1,0,87,0,110,11,4, +- 0,116,15,116,16,102,2,121,160,1,0,1,0,1,0,89, +- 0,110,16,119,0,116,17,160,18,100,13,124,8,124,2,161, +- 3,1,0,116,19,124,13,124,1,124,8,124,2,100,14,141, +- 4,83,0,124,4,100,1,117,0,114,185,124,0,160,6,124, +- 2,161,1,125,4,124,0,160,20,124,4,124,2,161,2,125, +- 14,116,17,160,18,100,15,124,2,161,2,1,0,116,21,106, +- 22,115,255,124,8,100,1,117,1,114,255,124,3,100,1,117, +- 1,114,255,124,6,114,226,124,5,100,1,117,0,114,219,116, +- 9,160,11,124,4,161,1,125,5,116,23,124,14,124,5,124, +- 7,131,3,125,10,110,8,116,24,124,14,124,3,116,25,124, +- 4,131,1,131,3,125,10,122,10,124,0,160,26,124,2,124, +- 8,124,10,161,3,1,0,87,0,124,14,83,0,4,0,116, +- 2,121,254,1,0,1,0,1,0,89,0,124,14,83,0,119, +- 0,124,14,83,0,41,16,122,190,67,111,110,99,114,101,116, +- 101,32,105,109,112,108,101,109,101,110,116,97,116,105,111,110, +- 32,111,102,32,73,110,115,112,101,99,116,76,111,97,100,101, +- 114,46,103,101,116,95,99,111,100,101,46,10,10,32,32,32, +- 32,32,32,32,32,82,101,97,100,105,110,103,32,111,102,32, +- 98,121,116,101,99,111,100,101,32,114,101,113,117,105,114,101, +- 115,32,112,97,116,104,95,115,116,97,116,115,32,116,111,32, +- 98,101,32,105,109,112,108,101,109,101,110,116,101,100,46,32, +- 84,111,32,119,114,105,116,101,10,32,32,32,32,32,32,32, +- 32,98,121,116,101,99,111,100,101,44,32,115,101,116,95,100, +- 97,116,97,32,109,117,115,116,32,97,108,115,111,32,98,101, +- 32,105,109,112,108,101,109,101,110,116,101,100,46,10,10,32, +- 32,32,32,32,32,32,32,78,70,84,114,193,0,0,0,114, +- 183,0,0,0,114,169,0,0,0,114,3,0,0,0,114,0, +- 0,0,0,114,44,0,0,0,90,5,110,101,118,101,114,90, +- 6,97,108,119,97,121,115,218,4,115,105,122,101,122,13,123, +- 125,32,109,97,116,99,104,101,115,32,123,125,41,3,114,141, +- 0,0,0,114,132,0,0,0,114,134,0,0,0,122,19,99, +- 111,100,101,32,111,98,106,101,99,116,32,102,114,111,109,32, +- 123,125,41,27,114,203,0,0,0,114,121,0,0,0,114,107, +- 0,0,0,114,252,0,0,0,114,76,0,0,0,114,33,0, +- 0,0,114,255,0,0,0,114,176,0,0,0,218,10,109,101, +- 109,111,114,121,118,105,101,119,114,187,0,0,0,90,21,99, +- 104,101,99,107,95,104,97,115,104,95,98,97,115,101,100,95, +- 112,121,99,115,114,181,0,0,0,218,17,95,82,65,87,95, +- 77,65,71,73,67,95,78,85,77,66,69,82,114,182,0,0, +- 0,114,180,0,0,0,114,142,0,0,0,114,174,0,0,0, +- 114,159,0,0,0,114,173,0,0,0,114,189,0,0,0,114, +- 5,1,0,0,114,15,0,0,0,218,19,100,111,110,116,95, +- 119,114,105,116,101,95,98,121,116,101,99,111,100,101,114,195, +- 0,0,0,114,194,0,0,0,114,4,0,0,0,114,254,0, +- 0,0,41,15,114,143,0,0,0,114,163,0,0,0,114,134, +- 0,0,0,114,178,0,0,0,114,198,0,0,0,114,181,0, +- 0,0,90,10,104,97,115,104,95,98,97,115,101,100,90,12, +- 99,104,101,99,107,95,115,111,117,114,99,101,114,132,0,0, +- 0,218,2,115,116,114,41,0,0,0,114,175,0,0,0,114, +- 16,0,0,0,90,10,98,121,116,101,115,95,100,97,116,97, +- 90,11,99,111,100,101,95,111,98,106,101,99,116,114,7,0, +- 0,0,114,7,0,0,0,114,8,0,0,0,114,241,0,0, +- 0,182,3,0,0,115,170,0,0,0,10,7,4,1,4,1, +- 4,1,4,1,4,1,2,1,12,1,12,1,8,1,2,255, +- 2,3,14,1,12,1,4,1,2,255,12,3,2,1,14,1, +- 12,1,4,1,2,255,2,4,2,1,6,254,2,4,12,1, +- 16,1,12,1,4,1,12,1,10,1,2,1,2,255,8,2, +- 2,254,10,3,4,1,2,1,2,1,4,254,8,4,2,1, +- 4,255,2,128,2,3,2,1,2,1,6,1,2,1,2,1, +- 4,251,4,128,16,7,4,1,2,255,8,3,2,1,4,255, +- 6,2,2,1,2,1,6,254,8,3,10,1,12,1,12,1, +- 14,1,6,1,2,255,4,2,8,1,10,1,14,1,6,2, +- 6,1,4,255,2,2,16,1,4,3,12,254,2,1,4,1, +- 2,254,4,2,122,21,83,111,117,114,99,101,76,111,97,100, +- 101,114,46,103,101,116,95,99,111,100,101,78,41,10,114,150, +- 0,0,0,114,149,0,0,0,114,151,0,0,0,114,251,0, +- 0,0,114,252,0,0,0,114,254,0,0,0,114,253,0,0, +- 0,114,1,1,0,0,114,5,1,0,0,114,241,0,0,0, +- 114,7,0,0,0,114,7,0,0,0,114,7,0,0,0,114, +- 8,0,0,0,114,249,0,0,0,123,3,0,0,115,16,0, +- 0,0,8,0,8,2,8,8,8,14,8,10,8,7,14,10, +- 12,8,114,249,0,0,0,99,0,0,0,0,0,0,0,0, +- 0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0, +- 115,92,0,0,0,101,0,90,1,100,0,90,2,100,1,90, +- 3,100,2,100,3,132,0,90,4,100,4,100,5,132,0,90, +- 5,100,6,100,7,132,0,90,6,101,7,135,0,102,1,100, +- 8,100,9,132,8,131,1,90,8,101,7,100,10,100,11,132, +- 0,131,1,90,9,100,12,100,13,132,0,90,10,101,7,100, +- 14,100,15,132,0,131,1,90,11,135,0,4,0,90,12,83, +- 0,41,16,218,10,70,105,108,101,76,111,97,100,101,114,122, +- 103,66,97,115,101,32,102,105,108,101,32,108,111,97,100,101, +- 114,32,99,108,97,115,115,32,119,104,105,99,104,32,105,109, +- 112,108,101,109,101,110,116,115,32,116,104,101,32,108,111,97, +- 100,101,114,32,112,114,111,116,111,99,111,108,32,109,101,116, +- 104,111,100,115,32,116,104,97,116,10,32,32,32,32,114,101, +- 113,117,105,114,101,32,102,105,108,101,32,115,121,115,116,101, +- 109,32,117,115,97,103,101,46,99,3,0,0,0,0,0,0, +- 0,0,0,0,0,3,0,0,0,2,0,0,0,67,0,0, +- 0,115,16,0,0,0,124,1,124,0,95,0,124,2,124,0, +- 95,1,100,1,83,0,41,2,122,75,67,97,99,104,101,32, +- 116,104,101,32,109,111,100,117,108,101,32,110,97,109,101,32, +- 97,110,100,32,116,104,101,32,112,97,116,104,32,116,111,32, +- 116,104,101,32,102,105,108,101,32,102,111,117,110,100,32,98, +- 121,32,116,104,101,10,32,32,32,32,32,32,32,32,102,105, +- 110,100,101,114,46,78,114,183,0,0,0,41,3,114,143,0, +- 0,0,114,163,0,0,0,114,65,0,0,0,114,7,0,0, +- 0,114,7,0,0,0,114,8,0,0,0,114,236,0,0,0, +- 16,4,0,0,115,4,0,0,0,6,3,10,1,122,19,70, +- 105,108,101,76,111,97,100,101,114,46,95,95,105,110,105,116, +- 95,95,99,2,0,0,0,0,0,0,0,0,0,0,0,2, +- 0,0,0,2,0,0,0,67,0,0,0,243,24,0,0,0, +- 124,0,106,0,124,1,106,0,107,2,111,11,124,0,106,1, +- 124,1,106,1,107,2,83,0,114,69,0,0,0,169,2,218, +- 9,95,95,99,108,97,115,115,95,95,114,156,0,0,0,169, +- 2,114,143,0,0,0,90,5,111,116,104,101,114,114,7,0, +- 0,0,114,7,0,0,0,114,8,0,0,0,218,6,95,95, +- 101,113,95,95,22,4,0,0,243,6,0,0,0,12,1,10, +- 1,2,255,122,17,70,105,108,101,76,111,97,100,101,114,46, +- 95,95,101,113,95,95,99,1,0,0,0,0,0,0,0,0, +- 0,0,0,1,0,0,0,3,0,0,0,67,0,0,0,243, +- 20,0,0,0,116,0,124,0,106,1,131,1,116,0,124,0, +- 106,2,131,1,65,0,83,0,114,69,0,0,0,169,3,218, +- 4,104,97,115,104,114,141,0,0,0,114,65,0,0,0,169, +- 1,114,143,0,0,0,114,7,0,0,0,114,7,0,0,0, +- 114,8,0,0,0,218,8,95,95,104,97,115,104,95,95,26, +- 4,0,0,243,2,0,0,0,20,1,122,19,70,105,108,101, +- 76,111,97,100,101,114,46,95,95,104,97,115,104,95,95,99, +- 2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, +- 3,0,0,0,3,0,0,0,115,16,0,0,0,116,0,116, +- 1,124,0,131,2,160,2,124,1,161,1,83,0,41,2,122, +- 100,76,111,97,100,32,97,32,109,111,100,117,108,101,32,102, +- 114,111,109,32,97,32,102,105,108,101,46,10,10,32,32,32, +- 32,32,32,32,32,84,104,105,115,32,109,101,116,104,111,100, +- 32,105,115,32,100,101,112,114,101,99,97,116,101,100,46,32, +- 32,85,115,101,32,101,120,101,99,95,109,111,100,117,108,101, +- 40,41,32,105,110,115,116,101,97,100,46,10,10,32,32,32, +- 32,32,32,32,32,78,41,3,218,5,115,117,112,101,114,114, +- 11,1,0,0,114,248,0,0,0,114,247,0,0,0,169,1, +- 114,14,1,0,0,114,7,0,0,0,114,8,0,0,0,114, +- 248,0,0,0,29,4,0,0,115,2,0,0,0,16,10,122, +- 22,70,105,108,101,76,111,97,100,101,114,46,108,111,97,100, +- 95,109,111,100,117,108,101,99,2,0,0,0,0,0,0,0, +- 0,0,0,0,2,0,0,0,1,0,0,0,67,0,0,0, +- 243,6,0,0,0,124,0,106,0,83,0,169,2,122,58,82, +- 101,116,117,114,110,32,116,104,101,32,112,97,116,104,32,116, +- 111,32,116,104,101,32,115,111,117,114,99,101,32,102,105,108, +- 101,32,97,115,32,102,111,117,110,100,32,98,121,32,116,104, +- 101,32,102,105,110,100,101,114,46,78,114,71,0,0,0,114, +- 247,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, +- 0,0,0,114,203,0,0,0,41,4,0,0,243,2,0,0, +- 0,6,3,122,23,70,105,108,101,76,111,97,100,101,114,46, +- 103,101,116,95,102,105,108,101,110,97,109,101,99,2,0,0, +- 0,0,0,0,0,0,0,0,0,3,0,0,0,8,0,0, +- 0,67,0,0,0,115,128,0,0,0,116,0,124,0,116,1, +- 116,2,102,2,131,2,114,36,116,3,160,4,116,5,124,1, +- 131,1,161,1,143,12,125,2,124,2,160,6,161,0,87,0, +- 2,0,100,1,4,0,4,0,131,3,1,0,83,0,49,0, +- 115,29,119,1,1,0,1,0,1,0,89,0,1,0,100,1, +- 83,0,116,3,160,7,124,1,100,2,161,2,143,12,125,2, +- 124,2,160,6,161,0,87,0,2,0,100,1,4,0,4,0, +- 131,3,1,0,83,0,49,0,115,57,119,1,1,0,1,0, +- 1,0,89,0,1,0,100,1,83,0,41,3,122,39,82,101, +- 116,117,114,110,32,116,104,101,32,100,97,116,97,32,102,114, +- 111,109,32,112,97,116,104,32,97,115,32,114,97,119,32,98, +- 121,116,101,115,46,78,218,1,114,41,8,114,185,0,0,0, +- 114,249,0,0,0,218,19,69,120,116,101,110,115,105,111,110, +- 70,105,108,101,76,111,97,100,101,114,114,91,0,0,0,90, +- 9,111,112,101,110,95,99,111,100,101,114,109,0,0,0,90, +- 4,114,101,97,100,114,92,0,0,0,41,3,114,143,0,0, +- 0,114,65,0,0,0,114,94,0,0,0,114,7,0,0,0, +- 114,7,0,0,0,114,8,0,0,0,114,255,0,0,0,46, +- 4,0,0,115,14,0,0,0,14,2,16,1,6,1,36,255, +- 14,3,6,1,36,255,122,19,70,105,108,101,76,111,97,100, +- 101,114,46,103,101,116,95,100,97,116,97,99,2,0,0,0, +- 0,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0, +- 67,0,0,0,115,20,0,0,0,100,1,100,2,108,0,109, +- 1,125,2,1,0,124,2,124,0,131,1,83,0,41,3,78, +- 114,0,0,0,0,41,1,218,10,70,105,108,101,82,101,97, +- 100,101,114,41,2,218,17,105,109,112,111,114,116,108,105,98, +- 46,114,101,97,100,101,114,115,114,31,1,0,0,41,3,114, +- 143,0,0,0,114,244,0,0,0,114,31,1,0,0,114,7, +- 0,0,0,114,7,0,0,0,114,8,0,0,0,218,19,103, +- 101,116,95,114,101,115,111,117,114,99,101,95,114,101,97,100, +- 101,114,55,4,0,0,115,4,0,0,0,12,2,8,1,122, +- 30,70,105,108,101,76,111,97,100,101,114,46,103,101,116,95, +- 114,101,115,111,117,114,99,101,95,114,101,97,100,101,114,41, +- 13,114,150,0,0,0,114,149,0,0,0,114,151,0,0,0, +- 114,152,0,0,0,114,236,0,0,0,114,16,1,0,0,114, +- 22,1,0,0,114,160,0,0,0,114,248,0,0,0,114,203, +- 0,0,0,114,255,0,0,0,114,33,1,0,0,90,13,95, +- 95,99,108,97,115,115,99,101,108,108,95,95,114,7,0,0, +- 0,114,7,0,0,0,114,25,1,0,0,114,8,0,0,0, +- 114,11,1,0,0,11,4,0,0,115,24,0,0,0,8,0, +- 4,2,8,3,8,6,8,4,2,3,14,1,2,11,10,1, +- 8,4,2,9,18,1,114,11,1,0,0,99,0,0,0,0, +- 0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, +- 64,0,0,0,115,46,0,0,0,101,0,90,1,100,0,90, +- 2,100,1,90,3,100,2,100,3,132,0,90,4,100,4,100, +- 5,132,0,90,5,100,6,100,7,156,1,100,8,100,9,132, +- 2,90,6,100,10,83,0,41,11,218,16,83,111,117,114,99, +- 101,70,105,108,101,76,111,97,100,101,114,122,62,67,111,110, +- 99,114,101,116,101,32,105,109,112,108,101,109,101,110,116,97, +- 116,105,111,110,32,111,102,32,83,111,117,114,99,101,76,111, +- 97,100,101,114,32,117,115,105,110,103,32,116,104,101,32,102, +- 105,108,101,32,115,121,115,116,101,109,46,99,2,0,0,0, +- 0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0, +- 67,0,0,0,115,22,0,0,0,116,0,124,1,131,1,125, +- 2,124,2,106,1,124,2,106,2,100,1,156,2,83,0,41, +- 3,122,33,82,101,116,117,114,110,32,116,104,101,32,109,101, +- 116,97,100,97,116,97,32,102,111,114,32,116,104,101,32,112, +- 97,116,104,46,41,2,114,193,0,0,0,114,6,1,0,0, +- 78,41,3,114,75,0,0,0,218,8,115,116,95,109,116,105, +- 109,101,90,7,115,116,95,115,105,122,101,41,3,114,143,0, +- 0,0,114,65,0,0,0,114,10,1,0,0,114,7,0,0, +- 0,114,7,0,0,0,114,8,0,0,0,114,252,0,0,0, +- 65,4,0,0,115,4,0,0,0,8,2,14,1,122,27,83, +- 111,117,114,99,101,70,105,108,101,76,111,97,100,101,114,46, ++ 32,82,97,105,115,101,115,32,79,83,69,114,114,111,114,32, ++ 119,104,101,110,32,116,104,101,32,112,97,116,104,32,99,97, ++ 110,110,111,116,32,98,101,32,104,97,110,100,108,101,100,46, ++ 10,32,32,32,32,32,32,32,32,114,194,0,0,0,78,41, ++ 1,114,252,0,0,0,114,251,0,0,0,114,8,0,0,0, ++ 114,8,0,0,0,114,9,0,0,0,218,10,112,97,116,104, ++ 95,115,116,97,116,115,137,3,0,0,115,2,0,0,0,14, ++ 12,122,23,83,111,117,114,99,101,76,111,97,100,101,114,46, + 112,97,116,104,95,115,116,97,116,115,99,4,0,0,0,0, +- 0,0,0,0,0,0,0,5,0,0,0,5,0,0,0,67, +- 0,0,0,115,24,0,0,0,116,0,124,1,131,1,125,4, +- 124,0,106,1,124,2,124,3,124,4,100,1,141,3,83,0, +- 41,2,78,169,1,218,5,95,109,111,100,101,41,2,114,139, +- 0,0,0,114,253,0,0,0,41,5,114,143,0,0,0,114, +- 134,0,0,0,114,132,0,0,0,114,41,0,0,0,114,78, +- 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, +- 0,0,114,254,0,0,0,70,4,0,0,115,4,0,0,0, +- 8,2,16,1,122,32,83,111,117,114,99,101,70,105,108,101, +- 76,111,97,100,101,114,46,95,99,97,99,104,101,95,98,121, +- 116,101,99,111,100,101,114,87,0,0,0,114,36,1,0,0, +- 99,3,0,0,0,0,0,0,0,1,0,0,0,9,0,0, +- 0,11,0,0,0,67,0,0,0,115,254,0,0,0,116,0, +- 124,1,131,1,92,2,125,4,125,5,103,0,125,6,124,4, +- 114,31,116,1,124,4,131,1,115,31,116,0,124,4,131,1, +- 92,2,125,4,125,7,124,6,160,2,124,7,161,1,1,0, +- 124,4,114,31,116,1,124,4,131,1,114,14,116,3,124,6, +- 131,1,68,0,93,49,125,7,116,4,124,4,124,7,131,2, +- 125,4,122,7,116,5,160,6,124,4,161,1,1,0,87,0, +- 113,35,4,0,116,7,121,58,1,0,1,0,1,0,89,0, +- 113,35,4,0,116,8,121,84,1,0,125,8,1,0,122,15, +- 116,9,160,10,100,1,124,4,124,8,161,3,1,0,87,0, +- 89,0,100,2,125,8,126,8,1,0,100,2,83,0,100,2, +- 125,8,126,8,119,1,119,0,122,15,116,11,124,1,124,2, +- 124,3,131,3,1,0,116,9,160,10,100,3,124,1,161,2, +- 1,0,87,0,100,2,83,0,4,0,116,8,121,126,1,0, +- 125,8,1,0,122,14,116,9,160,10,100,1,124,1,124,8, +- 161,3,1,0,87,0,89,0,100,2,125,8,126,8,100,2, +- 83,0,100,2,125,8,126,8,119,1,119,0,41,4,122,27, +- 87,114,105,116,101,32,98,121,116,101,115,32,100,97,116,97, +- 32,116,111,32,97,32,102,105,108,101,46,122,27,99,111,117, +- 108,100,32,110,111,116,32,99,114,101,97,116,101,32,123,33, +- 114,125,58,32,123,33,114,125,78,122,12,99,114,101,97,116, +- 101,100,32,123,33,114,125,41,12,114,74,0,0,0,114,83, +- 0,0,0,114,61,0,0,0,218,8,114,101,118,101,114,115, +- 101,100,114,67,0,0,0,114,18,0,0,0,90,5,109,107, +- 100,105,114,218,15,70,105,108,101,69,120,105,115,116,115,69, +- 114,114,111,114,114,76,0,0,0,114,159,0,0,0,114,173, +- 0,0,0,114,95,0,0,0,41,9,114,143,0,0,0,114, +- 65,0,0,0,114,41,0,0,0,114,37,1,0,0,218,6, +- 112,97,114,101,110,116,114,120,0,0,0,114,63,0,0,0, +- 114,68,0,0,0,114,0,1,0,0,114,7,0,0,0,114, +- 7,0,0,0,114,8,0,0,0,114,253,0,0,0,75,4, +- 0,0,115,56,0,0,0,12,2,4,1,12,2,12,1,10, +- 1,12,254,12,4,10,1,2,1,14,1,12,1,4,2,14, +- 1,6,3,4,1,4,255,16,2,8,128,2,251,2,6,12, +- 1,18,1,14,1,8,2,2,1,18,255,8,128,2,254,122, +- 25,83,111,117,114,99,101,70,105,108,101,76,111,97,100,101, +- 114,46,115,101,116,95,100,97,116,97,78,41,7,114,150,0, +- 0,0,114,149,0,0,0,114,151,0,0,0,114,152,0,0, +- 0,114,252,0,0,0,114,254,0,0,0,114,253,0,0,0, +- 114,7,0,0,0,114,7,0,0,0,114,7,0,0,0,114, +- 8,0,0,0,114,34,1,0,0,61,4,0,0,115,10,0, +- 0,0,8,0,4,2,8,2,8,5,18,5,114,34,1,0, ++ 0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,67, ++ 0,0,0,115,12,0,0,0,124,0,160,0,124,2,124,3, ++ 161,2,83,0,41,2,122,228,79,112,116,105,111,110,97,108, ++ 32,109,101,116,104,111,100,32,119,104,105,99,104,32,119,114, ++ 105,116,101,115,32,100,97,116,97,32,40,98,121,116,101,115, ++ 41,32,116,111,32,97,32,102,105,108,101,32,112,97,116,104, ++ 32,40,97,32,115,116,114,41,46,10,10,32,32,32,32,32, ++ 32,32,32,73,109,112,108,101,109,101,110,116,105,110,103,32, ++ 116,104,105,115,32,109,101,116,104,111,100,32,97,108,108,111, ++ 119,115,32,102,111,114,32,116,104,101,32,119,114,105,116,105, ++ 110,103,32,111,102,32,98,121,116,101,99,111,100,101,32,102, ++ 105,108,101,115,46,10,10,32,32,32,32,32,32,32,32,84, ++ 104,101,32,115,111,117,114,99,101,32,112,97,116,104,32,105, ++ 115,32,110,101,101,100,101,100,32,105,110,32,111,114,100,101, ++ 114,32,116,111,32,99,111,114,114,101,99,116,108,121,32,116, ++ 114,97,110,115,102,101,114,32,112,101,114,109,105,115,115,105, ++ 111,110,115,10,32,32,32,32,32,32,32,32,78,41,1,218, ++ 8,115,101,116,95,100,97,116,97,41,4,114,144,0,0,0, ++ 114,135,0,0,0,90,10,99,97,99,104,101,95,112,97,116, ++ 104,114,43,0,0,0,114,8,0,0,0,114,8,0,0,0, ++ 114,9,0,0,0,218,15,95,99,97,99,104,101,95,98,121, ++ 116,101,99,111,100,101,151,3,0,0,115,2,0,0,0,12, ++ 8,122,28,83,111,117,114,99,101,76,111,97,100,101,114,46, ++ 95,99,97,99,104,101,95,98,121,116,101,99,111,100,101,99, ++ 3,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, ++ 1,0,0,0,67,0,0,0,114,25,0,0,0,41,2,122, ++ 150,79,112,116,105,111,110,97,108,32,109,101,116,104,111,100, ++ 32,119,104,105,99,104,32,119,114,105,116,101,115,32,100,97, ++ 116,97,32,40,98,121,116,101,115,41,32,116,111,32,97,32, ++ 102,105,108,101,32,112,97,116,104,32,40,97,32,115,116,114, ++ 41,46,10,10,32,32,32,32,32,32,32,32,73,109,112,108, ++ 101,109,101,110,116,105,110,103,32,116,104,105,115,32,109,101, ++ 116,104,111,100,32,97,108,108,111,119,115,32,102,111,114,32, ++ 116,104,101,32,119,114,105,116,105,110,103,32,111,102,32,98, ++ 121,116,101,99,111,100,101,32,102,105,108,101,115,46,10,32, ++ 32,32,32,32,32,32,32,78,114,8,0,0,0,41,3,114, ++ 144,0,0,0,114,67,0,0,0,114,43,0,0,0,114,8, ++ 0,0,0,114,8,0,0,0,114,9,0,0,0,114,254,0, ++ 0,0,161,3,0,0,114,241,0,0,0,122,21,83,111,117, ++ 114,99,101,76,111,97,100,101,114,46,115,101,116,95,100,97, ++ 116,97,99,2,0,0,0,0,0,0,0,0,0,0,0,5, ++ 0,0,0,10,0,0,0,67,0,0,0,115,70,0,0,0, ++ 124,0,160,0,124,1,161,1,125,2,122,10,124,0,160,1, ++ 124,2,161,1,125,3,87,0,116,4,124,3,131,1,83,0, ++ 4,0,116,2,121,34,1,0,125,4,1,0,122,7,116,3, ++ 100,1,124,1,100,2,141,2,124,4,130,2,100,3,125,4, ++ 126,4,119,1,119,0,41,4,122,52,67,111,110,99,114,101, ++ 116,101,32,105,109,112,108,101,109,101,110,116,97,116,105,111, ++ 110,32,111,102,32,73,110,115,112,101,99,116,76,111,97,100, ++ 101,114,46,103,101,116,95,115,111,117,114,99,101,46,122,39, ++ 115,111,117,114,99,101,32,110,111,116,32,97,118,97,105,108, ++ 97,98,108,101,32,116,104,114,111,117,103,104,32,103,101,116, ++ 95,100,97,116,97,40,41,114,141,0,0,0,78,41,5,114, ++ 204,0,0,0,218,8,103,101,116,95,100,97,116,97,114,78, ++ 0,0,0,114,143,0,0,0,114,201,0,0,0,41,5,114, ++ 144,0,0,0,114,164,0,0,0,114,67,0,0,0,114,199, ++ 0,0,0,218,3,101,120,99,114,8,0,0,0,114,8,0, ++ 0,0,114,9,0,0,0,218,10,103,101,116,95,115,111,117, ++ 114,99,101,168,3,0,0,115,24,0,0,0,10,2,2,1, ++ 12,1,8,4,14,253,4,1,2,1,4,255,2,1,2,255, ++ 8,128,2,255,122,23,83,111,117,114,99,101,76,111,97,100, ++ 101,114,46,103,101,116,95,115,111,117,114,99,101,114,3,0, ++ 0,0,41,1,218,9,95,111,112,116,105,109,105,122,101,99, ++ 3,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0, ++ 8,0,0,0,67,0,0,0,115,22,0,0,0,116,0,106, ++ 1,116,2,124,1,124,2,100,1,100,2,124,3,100,3,141, ++ 6,83,0,41,5,122,130,82,101,116,117,114,110,32,116,104, ++ 101,32,99,111,100,101,32,111,98,106,101,99,116,32,99,111, ++ 109,112,105,108,101,100,32,102,114,111,109,32,115,111,117,114, ++ 99,101,46,10,10,32,32,32,32,32,32,32,32,84,104,101, ++ 32,39,100,97,116,97,39,32,97,114,103,117,109,101,110,116, ++ 32,99,97,110,32,98,101,32,97,110,121,32,111,98,106,101, ++ 99,116,32,116,121,112,101,32,116,104,97,116,32,99,111,109, ++ 112,105,108,101,40,41,32,115,117,112,112,111,114,116,115,46, ++ 10,32,32,32,32,32,32,32,32,114,244,0,0,0,84,41, ++ 2,218,12,100,111,110,116,95,105,110,104,101,114,105,116,114, ++ 110,0,0,0,78,41,3,114,160,0,0,0,114,243,0,0, ++ 0,218,7,99,111,109,112,105,108,101,41,4,114,144,0,0, ++ 0,114,43,0,0,0,114,67,0,0,0,114,3,1,0,0, ++ 114,8,0,0,0,114,8,0,0,0,114,9,0,0,0,218, ++ 14,115,111,117,114,99,101,95,116,111,95,99,111,100,101,178, ++ 3,0,0,115,6,0,0,0,12,5,4,1,6,255,122,27, ++ 83,111,117,114,99,101,76,111,97,100,101,114,46,115,111,117, ++ 114,99,101,95,116,111,95,99,111,100,101,99,2,0,0,0, ++ 0,0,0,0,0,0,0,0,15,0,0,0,9,0,0,0, ++ 67,0,0,0,115,2,2,0,0,124,0,160,0,124,1,161, ++ 1,125,2,100,1,125,3,100,1,125,4,100,1,125,5,100, ++ 2,125,6,100,3,125,7,122,6,116,1,124,2,131,1,125, ++ 8,87,0,110,11,4,0,116,2,121,32,1,0,1,0,1, ++ 0,100,1,125,8,89,0,110,144,119,0,122,7,124,0,160, ++ 3,124,2,161,1,125,9,87,0,110,9,4,0,116,4,121, ++ 49,1,0,1,0,1,0,89,0,110,127,119,0,116,5,124, ++ 9,100,4,25,0,131,1,125,3,122,7,124,0,160,6,124, ++ 8,161,1,125,10,87,0,110,9,4,0,116,4,121,72,1, ++ 0,1,0,1,0,89,0,110,104,119,0,124,1,124,8,100, ++ 5,156,2,125,11,122,71,116,7,124,10,124,1,124,11,131, ++ 3,125,12,116,8,124,10,131,1,100,6,100,1,133,2,25, ++ 0,125,13,124,12,100,7,64,0,100,8,107,3,125,6,124, ++ 6,114,138,124,12,100,9,64,0,100,8,107,3,125,7,116, ++ 9,106,10,100,10,107,3,114,137,124,7,115,119,116,9,106, ++ 10,100,11,107,2,114,137,124,0,160,6,124,2,161,1,125, ++ 4,116,9,160,11,116,12,124,4,161,2,125,5,116,13,124, ++ 10,124,5,124,1,124,11,131,4,1,0,110,10,116,14,124, ++ 10,124,3,124,9,100,12,25,0,124,1,124,11,131,5,1, ++ 0,87,0,110,11,4,0,116,15,116,16,102,2,121,160,1, ++ 0,1,0,1,0,89,0,110,16,119,0,116,17,160,18,100, ++ 13,124,8,124,2,161,3,1,0,116,19,124,13,124,1,124, ++ 8,124,2,100,14,141,4,83,0,124,4,100,1,117,0,114, ++ 185,124,0,160,6,124,2,161,1,125,4,124,0,160,20,124, ++ 4,124,2,161,2,125,14,116,17,160,18,100,15,124,2,161, ++ 2,1,0,116,21,106,22,115,255,124,8,100,1,117,1,114, ++ 255,124,3,100,1,117,1,114,255,124,6,114,226,124,5,100, ++ 1,117,0,114,219,116,9,160,11,124,4,161,1,125,5,116, ++ 23,124,14,124,5,124,7,131,3,125,10,110,8,116,24,124, ++ 14,124,3,116,25,124,4,131,1,131,3,125,10,122,10,124, ++ 0,160,26,124,2,124,8,124,10,161,3,1,0,87,0,124, ++ 14,83,0,4,0,116,2,121,254,1,0,1,0,1,0,89, ++ 0,124,14,83,0,119,0,124,14,83,0,41,16,122,190,67, ++ 111,110,99,114,101,116,101,32,105,109,112,108,101,109,101,110, ++ 116,97,116,105,111,110,32,111,102,32,73,110,115,112,101,99, ++ 116,76,111,97,100,101,114,46,103,101,116,95,99,111,100,101, ++ 46,10,10,32,32,32,32,32,32,32,32,82,101,97,100,105, ++ 110,103,32,111,102,32,98,121,116,101,99,111,100,101,32,114, ++ 101,113,117,105,114,101,115,32,112,97,116,104,95,115,116,97, ++ 116,115,32,116,111,32,98,101,32,105,109,112,108,101,109,101, ++ 110,116,101,100,46,32,84,111,32,119,114,105,116,101,10,32, ++ 32,32,32,32,32,32,32,98,121,116,101,99,111,100,101,44, ++ 32,115,101,116,95,100,97,116,97,32,109,117,115,116,32,97, ++ 108,115,111,32,98,101,32,105,109,112,108,101,109,101,110,116, ++ 101,100,46,10,10,32,32,32,32,32,32,32,32,78,70,84, ++ 114,194,0,0,0,114,184,0,0,0,114,170,0,0,0,114, ++ 4,0,0,0,114,0,0,0,0,114,46,0,0,0,90,5, ++ 110,101,118,101,114,90,6,97,108,119,97,121,115,218,4,115, ++ 105,122,101,122,13,123,125,32,109,97,116,99,104,101,115,32, ++ 123,125,41,3,114,142,0,0,0,114,133,0,0,0,114,135, ++ 0,0,0,122,19,99,111,100,101,32,111,98,106,101,99,116, ++ 32,102,114,111,109,32,123,125,41,27,114,204,0,0,0,114, ++ 123,0,0,0,114,109,0,0,0,114,253,0,0,0,114,78, ++ 0,0,0,114,35,0,0,0,114,0,1,0,0,114,177,0, ++ 0,0,218,10,109,101,109,111,114,121,118,105,101,119,114,188, ++ 0,0,0,90,21,99,104,101,99,107,95,104,97,115,104,95, ++ 98,97,115,101,100,95,112,121,99,115,114,182,0,0,0,218, ++ 17,95,82,65,87,95,77,65,71,73,67,95,78,85,77,66, ++ 69,82,114,183,0,0,0,114,181,0,0,0,114,143,0,0, ++ 0,114,175,0,0,0,114,160,0,0,0,114,174,0,0,0, ++ 114,190,0,0,0,114,6,1,0,0,114,16,0,0,0,218, ++ 19,100,111,110,116,95,119,114,105,116,101,95,98,121,116,101, ++ 99,111,100,101,114,196,0,0,0,114,195,0,0,0,114,5, ++ 0,0,0,114,255,0,0,0,41,15,114,144,0,0,0,114, ++ 164,0,0,0,114,135,0,0,0,114,179,0,0,0,114,199, ++ 0,0,0,114,182,0,0,0,90,10,104,97,115,104,95,98, ++ 97,115,101,100,90,12,99,104,101,99,107,95,115,111,117,114, ++ 99,101,114,133,0,0,0,218,2,115,116,114,43,0,0,0, ++ 114,176,0,0,0,114,17,0,0,0,90,10,98,121,116,101, ++ 115,95,100,97,116,97,90,11,99,111,100,101,95,111,98,106, ++ 101,99,116,114,8,0,0,0,114,8,0,0,0,114,9,0, ++ 0,0,114,242,0,0,0,186,3,0,0,115,170,0,0,0, ++ 10,7,4,1,4,1,4,1,4,1,4,1,2,1,12,1, ++ 12,1,8,1,2,255,2,3,14,1,12,1,4,1,2,255, ++ 12,3,2,1,14,1,12,1,4,1,2,255,2,4,2,1, ++ 6,254,2,4,12,1,16,1,12,1,4,1,12,1,10,1, ++ 2,1,2,255,8,2,2,254,10,3,4,1,2,1,2,1, ++ 4,254,8,4,2,1,4,255,2,128,2,3,2,1,2,1, ++ 6,1,2,1,2,1,4,251,4,128,16,7,4,1,2,255, ++ 8,3,2,1,4,255,6,2,2,1,2,1,6,254,8,3, ++ 10,1,12,1,12,1,14,1,6,1,2,255,4,2,8,1, ++ 10,1,14,1,6,2,6,1,4,255,2,2,16,1,4,3, ++ 12,254,2,1,4,1,2,254,4,2,122,21,83,111,117,114, ++ 99,101,76,111,97,100,101,114,46,103,101,116,95,99,111,100, ++ 101,78,41,10,114,151,0,0,0,114,150,0,0,0,114,152, ++ 0,0,0,114,252,0,0,0,114,253,0,0,0,114,255,0, ++ 0,0,114,254,0,0,0,114,2,1,0,0,114,6,1,0, ++ 0,114,242,0,0,0,114,8,0,0,0,114,8,0,0,0, ++ 114,8,0,0,0,114,9,0,0,0,114,250,0,0,0,127, ++ 3,0,0,115,16,0,0,0,8,0,8,2,8,8,8,14, ++ 8,10,8,7,14,10,12,8,114,250,0,0,0,99,0,0, ++ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0, ++ 0,0,0,0,0,0,115,92,0,0,0,101,0,90,1,100, ++ 0,90,2,100,1,90,3,100,2,100,3,132,0,90,4,100, ++ 4,100,5,132,0,90,5,100,6,100,7,132,0,90,6,101, ++ 7,135,0,102,1,100,8,100,9,132,8,131,1,90,8,101, ++ 7,100,10,100,11,132,0,131,1,90,9,100,12,100,13,132, ++ 0,90,10,101,7,100,14,100,15,132,0,131,1,90,11,135, ++ 0,4,0,90,12,83,0,41,16,218,10,70,105,108,101,76, ++ 111,97,100,101,114,122,103,66,97,115,101,32,102,105,108,101, ++ 32,108,111,97,100,101,114,32,99,108,97,115,115,32,119,104, ++ 105,99,104,32,105,109,112,108,101,109,101,110,116,115,32,116, ++ 104,101,32,108,111,97,100,101,114,32,112,114,111,116,111,99, ++ 111,108,32,109,101,116,104,111,100,115,32,116,104,97,116,10, ++ 32,32,32,32,114,101,113,117,105,114,101,32,102,105,108,101, ++ 32,115,121,115,116,101,109,32,117,115,97,103,101,46,99,3, ++ 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,2, ++ 0,0,0,67,0,0,0,115,16,0,0,0,124,1,124,0, ++ 95,0,124,2,124,0,95,1,100,1,83,0,41,2,122,75, ++ 67,97,99,104,101,32,116,104,101,32,109,111,100,117,108,101, ++ 32,110,97,109,101,32,97,110,100,32,116,104,101,32,112,97, ++ 116,104,32,116,111,32,116,104,101,32,102,105,108,101,32,102, ++ 111,117,110,100,32,98,121,32,116,104,101,10,32,32,32,32, ++ 32,32,32,32,102,105,110,100,101,114,46,78,114,184,0,0, ++ 0,41,3,114,144,0,0,0,114,164,0,0,0,114,67,0, ++ 0,0,114,8,0,0,0,114,8,0,0,0,114,9,0,0, ++ 0,114,237,0,0,0,20,4,0,0,115,4,0,0,0,6, ++ 3,10,1,122,19,70,105,108,101,76,111,97,100,101,114,46, ++ 95,95,105,110,105,116,95,95,99,2,0,0,0,0,0,0, ++ 0,0,0,0,0,2,0,0,0,2,0,0,0,67,0,0, ++ 0,243,24,0,0,0,124,0,106,0,124,1,106,0,107,2, ++ 111,11,124,0,106,1,124,1,106,1,107,2,83,0,114,71, ++ 0,0,0,169,2,218,9,95,95,99,108,97,115,115,95,95, ++ 114,157,0,0,0,169,2,114,144,0,0,0,90,5,111,116, ++ 104,101,114,114,8,0,0,0,114,8,0,0,0,114,9,0, ++ 0,0,218,6,95,95,101,113,95,95,26,4,0,0,243,6, ++ 0,0,0,12,1,10,1,2,255,122,17,70,105,108,101,76, ++ 111,97,100,101,114,46,95,95,101,113,95,95,99,1,0,0, ++ 0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0, ++ 0,67,0,0,0,243,20,0,0,0,116,0,124,0,106,1, ++ 131,1,116,0,124,0,106,2,131,1,65,0,83,0,114,71, ++ 0,0,0,169,3,218,4,104,97,115,104,114,142,0,0,0, ++ 114,67,0,0,0,169,1,114,144,0,0,0,114,8,0,0, ++ 0,114,8,0,0,0,114,9,0,0,0,218,8,95,95,104, ++ 97,115,104,95,95,30,4,0,0,243,2,0,0,0,20,1, ++ 122,19,70,105,108,101,76,111,97,100,101,114,46,95,95,104, ++ 97,115,104,95,95,99,2,0,0,0,0,0,0,0,0,0, ++ 0,0,2,0,0,0,3,0,0,0,3,0,0,0,115,16, ++ 0,0,0,116,0,116,1,124,0,131,2,160,2,124,1,161, ++ 1,83,0,41,2,122,100,76,111,97,100,32,97,32,109,111, ++ 100,117,108,101,32,102,114,111,109,32,97,32,102,105,108,101, ++ 46,10,10,32,32,32,32,32,32,32,32,84,104,105,115,32, ++ 109,101,116,104,111,100,32,105,115,32,100,101,112,114,101,99, ++ 97,116,101,100,46,32,32,85,115,101,32,101,120,101,99,95, ++ 109,111,100,117,108,101,40,41,32,105,110,115,116,101,97,100, ++ 46,10,10,32,32,32,32,32,32,32,32,78,41,3,218,5, ++ 115,117,112,101,114,114,12,1,0,0,114,249,0,0,0,114, ++ 248,0,0,0,169,1,114,15,1,0,0,114,8,0,0,0, ++ 114,9,0,0,0,114,249,0,0,0,33,4,0,0,115,2, ++ 0,0,0,16,10,122,22,70,105,108,101,76,111,97,100,101, ++ 114,46,108,111,97,100,95,109,111,100,117,108,101,99,2,0, ++ 0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0, ++ 0,0,67,0,0,0,243,6,0,0,0,124,0,106,0,83, ++ 0,169,2,122,58,82,101,116,117,114,110,32,116,104,101,32, ++ 112,97,116,104,32,116,111,32,116,104,101,32,115,111,117,114, ++ 99,101,32,102,105,108,101,32,97,115,32,102,111,117,110,100, ++ 32,98,121,32,116,104,101,32,102,105,110,100,101,114,46,78, ++ 114,73,0,0,0,114,248,0,0,0,114,8,0,0,0,114, ++ 8,0,0,0,114,9,0,0,0,114,204,0,0,0,45,4, ++ 0,0,243,2,0,0,0,6,3,122,23,70,105,108,101,76, ++ 111,97,100,101,114,46,103,101,116,95,102,105,108,101,110,97, ++ 109,101,99,2,0,0,0,0,0,0,0,0,0,0,0,3, ++ 0,0,0,8,0,0,0,67,0,0,0,115,128,0,0,0, ++ 116,0,124,0,116,1,116,2,102,2,131,2,114,36,116,3, ++ 160,4,116,5,124,1,131,1,161,1,143,12,125,2,124,2, ++ 160,6,161,0,87,0,2,0,100,1,4,0,4,0,131,3, ++ 1,0,83,0,49,0,115,29,119,1,1,0,1,0,1,0, ++ 89,0,1,0,100,1,83,0,116,3,160,7,124,1,100,2, ++ 161,2,143,12,125,2,124,2,160,6,161,0,87,0,2,0, ++ 100,1,4,0,4,0,131,3,1,0,83,0,49,0,115,57, ++ 119,1,1,0,1,0,1,0,89,0,1,0,100,1,83,0, ++ 41,3,122,39,82,101,116,117,114,110,32,116,104,101,32,100, ++ 97,116,97,32,102,114,111,109,32,112,97,116,104,32,97,115, ++ 32,114,97,119,32,98,121,116,101,115,46,78,218,1,114,41, ++ 8,114,186,0,0,0,114,250,0,0,0,218,19,69,120,116, ++ 101,110,115,105,111,110,70,105,108,101,76,111,97,100,101,114, ++ 114,93,0,0,0,90,9,111,112,101,110,95,99,111,100,101, ++ 114,111,0,0,0,90,4,114,101,97,100,114,94,0,0,0, ++ 41,3,114,144,0,0,0,114,67,0,0,0,114,96,0,0, ++ 0,114,8,0,0,0,114,8,0,0,0,114,9,0,0,0, ++ 114,0,1,0,0,50,4,0,0,115,14,0,0,0,14,2, ++ 16,1,6,1,36,255,14,3,6,1,36,255,122,19,70,105, ++ 108,101,76,111,97,100,101,114,46,103,101,116,95,100,97,116, ++ 97,99,2,0,0,0,0,0,0,0,0,0,0,0,3,0, ++ 0,0,2,0,0,0,67,0,0,0,115,20,0,0,0,100, ++ 1,100,2,108,0,109,1,125,2,1,0,124,2,124,0,131, ++ 1,83,0,41,3,78,114,0,0,0,0,41,1,218,10,70, ++ 105,108,101,82,101,97,100,101,114,41,2,218,17,105,109,112, ++ 111,114,116,108,105,98,46,114,101,97,100,101,114,115,114,32, ++ 1,0,0,41,3,114,144,0,0,0,114,245,0,0,0,114, ++ 32,1,0,0,114,8,0,0,0,114,8,0,0,0,114,9, ++ 0,0,0,218,19,103,101,116,95,114,101,115,111,117,114,99, ++ 101,95,114,101,97,100,101,114,59,4,0,0,115,4,0,0, ++ 0,12,2,8,1,122,30,70,105,108,101,76,111,97,100,101, ++ 114,46,103,101,116,95,114,101,115,111,117,114,99,101,95,114, ++ 101,97,100,101,114,41,13,114,151,0,0,0,114,150,0,0, ++ 0,114,152,0,0,0,114,153,0,0,0,114,237,0,0,0, ++ 114,17,1,0,0,114,23,1,0,0,114,161,0,0,0,114, ++ 249,0,0,0,114,204,0,0,0,114,0,1,0,0,114,34, ++ 1,0,0,90,13,95,95,99,108,97,115,115,99,101,108,108, ++ 95,95,114,8,0,0,0,114,8,0,0,0,114,26,1,0, ++ 0,114,9,0,0,0,114,12,1,0,0,15,4,0,0,115, ++ 24,0,0,0,8,0,4,2,8,3,8,6,8,4,2,3, ++ 14,1,2,11,10,1,8,4,2,9,18,1,114,12,1,0, + 0,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +- 0,0,2,0,0,0,64,0,0,0,115,32,0,0,0,101, ++ 0,0,3,0,0,0,64,0,0,0,115,46,0,0,0,101, + 0,90,1,100,0,90,2,100,1,90,3,100,2,100,3,132, +- 0,90,4,100,4,100,5,132,0,90,5,100,6,83,0,41, +- 7,218,20,83,111,117,114,99,101,108,101,115,115,70,105,108, +- 101,76,111,97,100,101,114,122,45,76,111,97,100,101,114,32, +- 119,104,105,99,104,32,104,97,110,100,108,101,115,32,115,111, +- 117,114,99,101,108,101,115,115,32,102,105,108,101,32,105,109, +- 112,111,114,116,115,46,99,2,0,0,0,0,0,0,0,0, +- 0,0,0,5,0,0,0,5,0,0,0,67,0,0,0,115, +- 68,0,0,0,124,0,160,0,124,1,161,1,125,2,124,0, +- 160,1,124,2,161,1,125,3,124,1,124,2,100,1,156,2, +- 125,4,116,2,124,3,124,1,124,4,131,3,1,0,116,3, +- 116,4,124,3,131,1,100,2,100,0,133,2,25,0,124,1, +- 124,2,100,3,141,3,83,0,41,4,78,114,183,0,0,0, +- 114,169,0,0,0,41,2,114,141,0,0,0,114,132,0,0, +- 0,41,5,114,203,0,0,0,114,255,0,0,0,114,176,0, +- 0,0,114,189,0,0,0,114,7,1,0,0,41,5,114,143, +- 0,0,0,114,163,0,0,0,114,65,0,0,0,114,41,0, +- 0,0,114,175,0,0,0,114,7,0,0,0,114,7,0,0, +- 0,114,8,0,0,0,114,241,0,0,0,110,4,0,0,115, +- 22,0,0,0,10,1,10,1,2,4,2,1,6,254,12,4, +- 2,1,14,1,2,1,2,1,6,253,122,29,83,111,117,114, +- 99,101,108,101,115,115,70,105,108,101,76,111,97,100,101,114, +- 46,103,101,116,95,99,111,100,101,99,2,0,0,0,0,0, +- 0,0,0,0,0,0,2,0,0,0,1,0,0,0,67,0, +- 0,0,114,23,0,0,0,41,2,122,39,82,101,116,117,114, +- 110,32,78,111,110,101,32,97,115,32,116,104,101,114,101,32, +- 105,115,32,110,111,32,115,111,117,114,99,101,32,99,111,100, +- 101,46,78,114,7,0,0,0,114,247,0,0,0,114,7,0, +- 0,0,114,7,0,0,0,114,8,0,0,0,114,1,1,0, +- 0,126,4,0,0,114,24,0,0,0,122,31,83,111,117,114, +- 99,101,108,101,115,115,70,105,108,101,76,111,97,100,101,114, +- 46,103,101,116,95,115,111,117,114,99,101,78,41,6,114,150, +- 0,0,0,114,149,0,0,0,114,151,0,0,0,114,152,0, +- 0,0,114,241,0,0,0,114,1,1,0,0,114,7,0,0, +- 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, +- 114,41,1,0,0,106,4,0,0,115,8,0,0,0,8,0, +- 4,2,8,2,12,16,114,41,1,0,0,99,0,0,0,0, +- 0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, +- 64,0,0,0,115,92,0,0,0,101,0,90,1,100,0,90, +- 2,100,1,90,3,100,2,100,3,132,0,90,4,100,4,100, +- 5,132,0,90,5,100,6,100,7,132,0,90,6,100,8,100, +- 9,132,0,90,7,100,10,100,11,132,0,90,8,100,12,100, +- 13,132,0,90,9,100,14,100,15,132,0,90,10,100,16,100, +- 17,132,0,90,11,101,12,100,18,100,19,132,0,131,1,90, +- 13,100,20,83,0,41,21,114,30,1,0,0,122,93,76,111, +- 97,100,101,114,32,102,111,114,32,101,120,116,101,110,115,105, +- 111,110,32,109,111,100,117,108,101,115,46,10,10,32,32,32, +- 32,84,104,101,32,99,111,110,115,116,114,117,99,116,111,114, +- 32,105,115,32,100,101,115,105,103,110,101,100,32,116,111,32, +- 119,111,114,107,32,119,105,116,104,32,70,105,108,101,70,105, +- 110,100,101,114,46,10,10,32,32,32,32,99,3,0,0,0, +- 0,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0, +- 67,0,0,0,115,16,0,0,0,124,1,124,0,95,0,124, +- 2,124,0,95,1,100,0,83,0,114,69,0,0,0,114,183, +- 0,0,0,41,3,114,143,0,0,0,114,141,0,0,0,114, +- 65,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, +- 0,0,0,114,236,0,0,0,139,4,0,0,115,4,0,0, +- 0,6,1,10,1,122,28,69,120,116,101,110,115,105,111,110, +- 70,105,108,101,76,111,97,100,101,114,46,95,95,105,110,105, +- 116,95,95,99,2,0,0,0,0,0,0,0,0,0,0,0, +- 2,0,0,0,2,0,0,0,67,0,0,0,114,12,1,0, +- 0,114,69,0,0,0,114,13,1,0,0,114,15,1,0,0, +- 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, +- 16,1,0,0,143,4,0,0,114,17,1,0,0,122,26,69, +- 120,116,101,110,115,105,111,110,70,105,108,101,76,111,97,100, +- 101,114,46,95,95,101,113,95,95,99,1,0,0,0,0,0, +- 0,0,0,0,0,0,1,0,0,0,3,0,0,0,67,0, +- 0,0,114,18,1,0,0,114,69,0,0,0,114,19,1,0, +- 0,114,21,1,0,0,114,7,0,0,0,114,7,0,0,0, +- 114,8,0,0,0,114,22,1,0,0,147,4,0,0,114,23, +- 1,0,0,122,28,69,120,116,101,110,115,105,111,110,70,105, +- 108,101,76,111,97,100,101,114,46,95,95,104,97,115,104,95, +- 95,99,2,0,0,0,0,0,0,0,0,0,0,0,3,0, +- 0,0,5,0,0,0,67,0,0,0,115,36,0,0,0,116, +- 0,160,1,116,2,106,3,124,1,161,2,125,2,116,0,160, +- 4,100,1,124,1,106,5,124,0,106,6,161,3,1,0,124, +- 2,83,0,41,3,122,38,67,114,101,97,116,101,32,97,110, +- 32,117,110,105,116,105,97,108,105,122,101,100,32,101,120,116, +- 101,110,115,105,111,110,32,109,111,100,117,108,101,122,38,101, +- 120,116,101,110,115,105,111,110,32,109,111,100,117,108,101,32, +- 123,33,114,125,32,108,111,97,100,101,100,32,102,114,111,109, +- 32,123,33,114,125,78,41,7,114,159,0,0,0,114,242,0, +- 0,0,114,187,0,0,0,90,14,99,114,101,97,116,101,95, +- 100,121,110,97,109,105,99,114,173,0,0,0,114,141,0,0, +- 0,114,65,0,0,0,41,3,114,143,0,0,0,114,210,0, +- 0,0,114,244,0,0,0,114,7,0,0,0,114,7,0,0, +- 0,114,8,0,0,0,114,239,0,0,0,150,4,0,0,115, +- 14,0,0,0,4,2,6,1,4,255,6,2,8,1,4,255, +- 4,2,122,33,69,120,116,101,110,115,105,111,110,70,105,108, +- 101,76,111,97,100,101,114,46,99,114,101,97,116,101,95,109, +- 111,100,117,108,101,99,2,0,0,0,0,0,0,0,0,0, +- 0,0,2,0,0,0,5,0,0,0,67,0,0,0,115,36, +- 0,0,0,116,0,160,1,116,2,106,3,124,1,161,2,1, +- 0,116,0,160,4,100,1,124,0,106,5,124,0,106,6,161, +- 3,1,0,100,2,83,0,41,3,122,30,73,110,105,116,105, +- 97,108,105,122,101,32,97,110,32,101,120,116,101,110,115,105, +- 111,110,32,109,111,100,117,108,101,122,40,101,120,116,101,110, +- 115,105,111,110,32,109,111,100,117,108,101,32,123,33,114,125, +- 32,101,120,101,99,117,116,101,100,32,102,114,111,109,32,123, +- 33,114,125,78,41,7,114,159,0,0,0,114,242,0,0,0, +- 114,187,0,0,0,90,12,101,120,101,99,95,100,121,110,97, +- 109,105,99,114,173,0,0,0,114,141,0,0,0,114,65,0, +- 0,0,169,2,114,143,0,0,0,114,244,0,0,0,114,7, +- 0,0,0,114,7,0,0,0,114,8,0,0,0,114,245,0, +- 0,0,158,4,0,0,115,8,0,0,0,14,2,6,1,8, +- 1,8,255,122,31,69,120,116,101,110,115,105,111,110,70,105, +- 108,101,76,111,97,100,101,114,46,101,120,101,99,95,109,111, +- 100,117,108,101,99,2,0,0,0,0,0,0,0,0,0,0, +- 0,2,0,0,0,4,0,0,0,3,0,0,0,115,36,0, +- 0,0,116,0,124,0,106,1,131,1,100,1,25,0,137,0, +- 116,2,135,0,102,1,100,2,100,3,132,8,116,3,68,0, +- 131,1,131,1,83,0,41,5,122,49,82,101,116,117,114,110, +- 32,84,114,117,101,32,105,102,32,116,104,101,32,101,120,116, +- 101,110,115,105,111,110,32,109,111,100,117,108,101,32,105,115, +- 32,97,32,112,97,99,107,97,103,101,46,114,3,0,0,0, +- 99,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0, +- 0,4,0,0,0,51,0,0,0,115,28,0,0,0,129,0, +- 124,0,93,9,125,1,136,0,100,0,124,1,23,0,107,2, +- 86,0,1,0,113,2,100,1,83,0,41,2,114,236,0,0, +- 0,78,114,7,0,0,0,169,2,114,5,0,0,0,218,6, +- 115,117,102,102,105,120,169,1,90,9,102,105,108,101,95,110, +- 97,109,101,114,7,0,0,0,114,8,0,0,0,114,9,0, +- 0,0,167,4,0,0,115,8,0,0,0,2,128,4,0,2, +- 1,20,255,122,49,69,120,116,101,110,115,105,111,110,70,105, +- 108,101,76,111,97,100,101,114,46,105,115,95,112,97,99,107, +- 97,103,101,46,60,108,111,99,97,108,115,62,46,60,103,101, +- 110,101,120,112,114,62,78,41,4,114,74,0,0,0,114,65, +- 0,0,0,218,3,97,110,121,114,232,0,0,0,114,247,0, +- 0,0,114,7,0,0,0,114,45,1,0,0,114,8,0,0, +- 0,114,206,0,0,0,164,4,0,0,115,8,0,0,0,14, +- 2,12,1,2,1,8,255,122,30,69,120,116,101,110,115,105, +- 111,110,70,105,108,101,76,111,97,100,101,114,46,105,115,95, +- 112,97,99,107,97,103,101,99,2,0,0,0,0,0,0,0, +- 0,0,0,0,2,0,0,0,1,0,0,0,67,0,0,0, +- 114,23,0,0,0,41,2,122,63,82,101,116,117,114,110,32, +- 78,111,110,101,32,97,115,32,97,110,32,101,120,116,101,110, +- 115,105,111,110,32,109,111,100,117,108,101,32,99,97,110,110, +- 111,116,32,99,114,101,97,116,101,32,97,32,99,111,100,101, +- 32,111,98,106,101,99,116,46,78,114,7,0,0,0,114,247, +- 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, +- 0,0,114,241,0,0,0,170,4,0,0,114,24,0,0,0, +- 122,28,69,120,116,101,110,115,105,111,110,70,105,108,101,76, +- 111,97,100,101,114,46,103,101,116,95,99,111,100,101,99,2, +- 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1, +- 0,0,0,67,0,0,0,114,23,0,0,0,41,2,122,53, +- 82,101,116,117,114,110,32,78,111,110,101,32,97,115,32,101, +- 120,116,101,110,115,105,111,110,32,109,111,100,117,108,101,115, +- 32,104,97,118,101,32,110,111,32,115,111,117,114,99,101,32, +- 99,111,100,101,46,78,114,7,0,0,0,114,247,0,0,0, +- 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, +- 1,1,0,0,174,4,0,0,114,24,0,0,0,122,30,69, +- 120,116,101,110,115,105,111,110,70,105,108,101,76,111,97,100, +- 101,114,46,103,101,116,95,115,111,117,114,99,101,99,2,0, +- 0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0, +- 0,0,67,0,0,0,114,26,1,0,0,114,27,1,0,0, +- 114,71,0,0,0,114,247,0,0,0,114,7,0,0,0,114, +- 7,0,0,0,114,8,0,0,0,114,203,0,0,0,178,4, +- 0,0,114,28,1,0,0,122,32,69,120,116,101,110,115,105, +- 111,110,70,105,108,101,76,111,97,100,101,114,46,103,101,116, +- 95,102,105,108,101,110,97,109,101,78,41,14,114,150,0,0, +- 0,114,149,0,0,0,114,151,0,0,0,114,152,0,0,0, +- 114,236,0,0,0,114,16,1,0,0,114,22,1,0,0,114, +- 239,0,0,0,114,245,0,0,0,114,206,0,0,0,114,241, +- 0,0,0,114,1,1,0,0,114,160,0,0,0,114,203,0, +- 0,0,114,7,0,0,0,114,7,0,0,0,114,7,0,0, +- 0,114,8,0,0,0,114,30,1,0,0,131,4,0,0,115, +- 24,0,0,0,8,0,4,2,8,6,8,4,8,4,8,3, +- 8,8,8,6,8,6,8,4,2,4,14,1,114,30,1,0, ++ 0,90,4,100,4,100,5,132,0,90,5,100,6,100,7,156, ++ 1,100,8,100,9,132,2,90,6,100,10,83,0,41,11,218, ++ 16,83,111,117,114,99,101,70,105,108,101,76,111,97,100,101, ++ 114,122,62,67,111,110,99,114,101,116,101,32,105,109,112,108, ++ 101,109,101,110,116,97,116,105,111,110,32,111,102,32,83,111, ++ 117,114,99,101,76,111,97,100,101,114,32,117,115,105,110,103, ++ 32,116,104,101,32,102,105,108,101,32,115,121,115,116,101,109, ++ 46,99,2,0,0,0,0,0,0,0,0,0,0,0,3,0, ++ 0,0,3,0,0,0,67,0,0,0,115,22,0,0,0,116, ++ 0,124,1,131,1,125,2,124,2,106,1,124,2,106,2,100, ++ 1,156,2,83,0,41,3,122,33,82,101,116,117,114,110,32, ++ 116,104,101,32,109,101,116,97,100,97,116,97,32,102,111,114, ++ 32,116,104,101,32,112,97,116,104,46,41,2,114,194,0,0, ++ 0,114,7,1,0,0,78,41,3,114,77,0,0,0,218,8, ++ 115,116,95,109,116,105,109,101,90,7,115,116,95,115,105,122, ++ 101,41,3,114,144,0,0,0,114,67,0,0,0,114,11,1, ++ 0,0,114,8,0,0,0,114,8,0,0,0,114,9,0,0, ++ 0,114,253,0,0,0,69,4,0,0,115,4,0,0,0,8, ++ 2,14,1,122,27,83,111,117,114,99,101,70,105,108,101,76, ++ 111,97,100,101,114,46,112,97,116,104,95,115,116,97,116,115, ++ 99,4,0,0,0,0,0,0,0,0,0,0,0,5,0,0, ++ 0,5,0,0,0,67,0,0,0,115,24,0,0,0,116,0, ++ 124,1,131,1,125,4,124,0,106,1,124,2,124,3,124,4, ++ 100,1,141,3,83,0,41,2,78,169,1,218,5,95,109,111, ++ 100,101,41,2,114,140,0,0,0,114,254,0,0,0,41,5, ++ 114,144,0,0,0,114,135,0,0,0,114,133,0,0,0,114, ++ 43,0,0,0,114,80,0,0,0,114,8,0,0,0,114,8, ++ 0,0,0,114,9,0,0,0,114,255,0,0,0,74,4,0, ++ 0,115,4,0,0,0,8,2,16,1,122,32,83,111,117,114, ++ 99,101,70,105,108,101,76,111,97,100,101,114,46,95,99,97, ++ 99,104,101,95,98,121,116,101,99,111,100,101,114,89,0,0, ++ 0,114,37,1,0,0,99,3,0,0,0,0,0,0,0,1, ++ 0,0,0,9,0,0,0,11,0,0,0,67,0,0,0,115, ++ 254,0,0,0,116,0,124,1,131,1,92,2,125,4,125,5, ++ 103,0,125,6,124,4,114,31,116,1,124,4,131,1,115,31, ++ 116,0,124,4,131,1,92,2,125,4,125,7,124,6,160,2, ++ 124,7,161,1,1,0,124,4,114,31,116,1,124,4,131,1, ++ 114,14,116,3,124,6,131,1,68,0,93,49,125,7,116,4, ++ 124,4,124,7,131,2,125,4,122,7,116,5,160,6,124,4, ++ 161,1,1,0,87,0,113,35,4,0,116,7,121,58,1,0, ++ 1,0,1,0,89,0,113,35,4,0,116,8,121,84,1,0, ++ 125,8,1,0,122,15,116,9,160,10,100,1,124,4,124,8, ++ 161,3,1,0,87,0,89,0,100,2,125,8,126,8,1,0, ++ 100,2,83,0,100,2,125,8,126,8,119,1,119,0,122,15, ++ 116,11,124,1,124,2,124,3,131,3,1,0,116,9,160,10, ++ 100,3,124,1,161,2,1,0,87,0,100,2,83,0,4,0, ++ 116,8,121,126,1,0,125,8,1,0,122,14,116,9,160,10, ++ 100,1,124,1,124,8,161,3,1,0,87,0,89,0,100,2, ++ 125,8,126,8,100,2,83,0,100,2,125,8,126,8,119,1, ++ 119,0,41,4,122,27,87,114,105,116,101,32,98,121,116,101, ++ 115,32,100,97,116,97,32,116,111,32,97,32,102,105,108,101, ++ 46,122,27,99,111,117,108,100,32,110,111,116,32,99,114,101, ++ 97,116,101,32,123,33,114,125,58,32,123,33,114,125,78,122, ++ 12,99,114,101,97,116,101,100,32,123,33,114,125,41,12,114, ++ 76,0,0,0,114,85,0,0,0,114,63,0,0,0,218,8, ++ 114,101,118,101,114,115,101,100,114,69,0,0,0,114,19,0, ++ 0,0,90,5,109,107,100,105,114,218,15,70,105,108,101,69, ++ 120,105,115,116,115,69,114,114,111,114,114,78,0,0,0,114, ++ 160,0,0,0,114,174,0,0,0,114,97,0,0,0,41,9, ++ 114,144,0,0,0,114,67,0,0,0,114,43,0,0,0,114, ++ 38,1,0,0,218,6,112,97,114,101,110,116,114,122,0,0, ++ 0,114,65,0,0,0,114,70,0,0,0,114,1,1,0,0, ++ 114,8,0,0,0,114,8,0,0,0,114,9,0,0,0,114, ++ 254,0,0,0,79,4,0,0,115,56,0,0,0,12,2,4, ++ 1,12,2,12,1,10,1,12,254,12,4,10,1,2,1,14, ++ 1,12,1,4,2,14,1,6,3,4,1,4,255,16,2,8, ++ 128,2,251,2,6,12,1,18,1,14,1,8,2,2,1,18, ++ 255,8,128,2,254,122,25,83,111,117,114,99,101,70,105,108, ++ 101,76,111,97,100,101,114,46,115,101,116,95,100,97,116,97, ++ 78,41,7,114,151,0,0,0,114,150,0,0,0,114,152,0, ++ 0,0,114,153,0,0,0,114,253,0,0,0,114,255,0,0, ++ 0,114,254,0,0,0,114,8,0,0,0,114,8,0,0,0, ++ 114,8,0,0,0,114,9,0,0,0,114,35,1,0,0,65, ++ 4,0,0,115,10,0,0,0,8,0,4,2,8,2,8,5, ++ 18,5,114,35,1,0,0,99,0,0,0,0,0,0,0,0, ++ 0,0,0,0,0,0,0,0,2,0,0,0,64,0,0,0, ++ 115,32,0,0,0,101,0,90,1,100,0,90,2,100,1,90, ++ 3,100,2,100,3,132,0,90,4,100,4,100,5,132,0,90, ++ 5,100,6,83,0,41,7,218,20,83,111,117,114,99,101,108, ++ 101,115,115,70,105,108,101,76,111,97,100,101,114,122,45,76, ++ 111,97,100,101,114,32,119,104,105,99,104,32,104,97,110,100, ++ 108,101,115,32,115,111,117,114,99,101,108,101,115,115,32,102, ++ 105,108,101,32,105,109,112,111,114,116,115,46,99,2,0,0, ++ 0,0,0,0,0,0,0,0,0,5,0,0,0,5,0,0, ++ 0,67,0,0,0,115,68,0,0,0,124,0,160,0,124,1, ++ 161,1,125,2,124,0,160,1,124,2,161,1,125,3,124,1, ++ 124,2,100,1,156,2,125,4,116,2,124,3,124,1,124,4, ++ 131,3,1,0,116,3,116,4,124,3,131,1,100,2,100,0, ++ 133,2,25,0,124,1,124,2,100,3,141,3,83,0,41,4, ++ 78,114,184,0,0,0,114,170,0,0,0,41,2,114,142,0, ++ 0,0,114,133,0,0,0,41,5,114,204,0,0,0,114,0, ++ 1,0,0,114,177,0,0,0,114,190,0,0,0,114,8,1, ++ 0,0,41,5,114,144,0,0,0,114,164,0,0,0,114,67, ++ 0,0,0,114,43,0,0,0,114,176,0,0,0,114,8,0, ++ 0,0,114,8,0,0,0,114,9,0,0,0,114,242,0,0, ++ 0,114,4,0,0,115,22,0,0,0,10,1,10,1,2,4, ++ 2,1,6,254,12,4,2,1,14,1,2,1,2,1,6,253, ++ 122,29,83,111,117,114,99,101,108,101,115,115,70,105,108,101, ++ 76,111,97,100,101,114,46,103,101,116,95,99,111,100,101,99, ++ 2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, ++ 1,0,0,0,67,0,0,0,114,25,0,0,0,41,2,122, ++ 39,82,101,116,117,114,110,32,78,111,110,101,32,97,115,32, ++ 116,104,101,114,101,32,105,115,32,110,111,32,115,111,117,114, ++ 99,101,32,99,111,100,101,46,78,114,8,0,0,0,114,248, ++ 0,0,0,114,8,0,0,0,114,8,0,0,0,114,9,0, ++ 0,0,114,2,1,0,0,130,4,0,0,114,26,0,0,0, ++ 122,31,83,111,117,114,99,101,108,101,115,115,70,105,108,101, ++ 76,111,97,100,101,114,46,103,101,116,95,115,111,117,114,99, ++ 101,78,41,6,114,151,0,0,0,114,150,0,0,0,114,152, ++ 0,0,0,114,153,0,0,0,114,242,0,0,0,114,2,1, ++ 0,0,114,8,0,0,0,114,8,0,0,0,114,8,0,0, ++ 0,114,9,0,0,0,114,42,1,0,0,110,4,0,0,115, ++ 8,0,0,0,8,0,4,2,8,2,12,16,114,42,1,0, + 0,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +- 0,0,2,0,0,0,64,0,0,0,115,104,0,0,0,101, ++ 0,0,3,0,0,0,64,0,0,0,115,92,0,0,0,101, + 0,90,1,100,0,90,2,100,1,90,3,100,2,100,3,132, + 0,90,4,100,4,100,5,132,0,90,5,100,6,100,7,132, + 0,90,6,100,8,100,9,132,0,90,7,100,10,100,11,132, + 0,90,8,100,12,100,13,132,0,90,9,100,14,100,15,132, +- 0,90,10,100,16,100,17,132,0,90,11,100,18,100,19,132, +- 0,90,12,100,20,100,21,132,0,90,13,100,22,100,23,132, +- 0,90,14,100,24,83,0,41,25,218,14,95,78,97,109,101, +- 115,112,97,99,101,80,97,116,104,97,38,1,0,0,82,101, +- 112,114,101,115,101,110,116,115,32,97,32,110,97,109,101,115, +- 112,97,99,101,32,112,97,99,107,97,103,101,39,115,32,112, +- 97,116,104,46,32,32,73,116,32,117,115,101,115,32,116,104, +- 101,32,109,111,100,117,108,101,32,110,97,109,101,10,32,32, +- 32,32,116,111,32,102,105,110,100,32,105,116,115,32,112,97, +- 114,101,110,116,32,109,111,100,117,108,101,44,32,97,110,100, +- 32,102,114,111,109,32,116,104,101,114,101,32,105,116,32,108, +- 111,111,107,115,32,117,112,32,116,104,101,32,112,97,114,101, +- 110,116,39,115,10,32,32,32,32,95,95,112,97,116,104,95, +- 95,46,32,32,87,104,101,110,32,116,104,105,115,32,99,104, +- 97,110,103,101,115,44,32,116,104,101,32,109,111,100,117,108, +- 101,39,115,32,111,119,110,32,112,97,116,104,32,105,115,32, +- 114,101,99,111,109,112,117,116,101,100,44,10,32,32,32,32, +- 117,115,105,110,103,32,112,97,116,104,95,102,105,110,100,101, +- 114,46,32,32,70,111,114,32,116,111,112,45,108,101,118,101, +- 108,32,109,111,100,117,108,101,115,44,32,116,104,101,32,112, +- 97,114,101,110,116,32,109,111,100,117,108,101,39,115,32,112, +- 97,116,104,10,32,32,32,32,105,115,32,115,121,115,46,112, +- 97,116,104,46,99,4,0,0,0,0,0,0,0,0,0,0, +- 0,4,0,0,0,3,0,0,0,67,0,0,0,115,36,0, +- 0,0,124,1,124,0,95,0,124,2,124,0,95,1,116,2, +- 124,0,160,3,161,0,131,1,124,0,95,4,124,3,124,0, +- 95,5,100,0,83,0,114,69,0,0,0,41,6,218,5,95, +- 110,97,109,101,218,5,95,112,97,116,104,114,136,0,0,0, +- 218,16,95,103,101,116,95,112,97,114,101,110,116,95,112,97, +- 116,104,218,17,95,108,97,115,116,95,112,97,114,101,110,116, +- 95,112,97,116,104,218,12,95,112,97,116,104,95,102,105,110, +- 100,101,114,169,4,114,143,0,0,0,114,141,0,0,0,114, +- 65,0,0,0,90,11,112,97,116,104,95,102,105,110,100,101, +- 114,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, +- 114,236,0,0,0,191,4,0,0,115,8,0,0,0,6,1, +- 6,1,14,1,10,1,122,23,95,78,97,109,101,115,112,97, +- 99,101,80,97,116,104,46,95,95,105,110,105,116,95,95,99, +- 1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, +- 3,0,0,0,67,0,0,0,115,38,0,0,0,124,0,106, +- 0,160,1,100,1,161,1,92,3,125,1,125,2,125,3,124, +- 2,100,2,107,2,114,15,100,3,83,0,124,1,100,4,102, +- 2,83,0,41,6,122,62,82,101,116,117,114,110,115,32,97, +- 32,116,117,112,108,101,32,111,102,32,40,112,97,114,101,110, +- 116,45,109,111,100,117,108,101,45,110,97,109,101,44,32,112, +- 97,114,101,110,116,45,112,97,116,104,45,97,116,116,114,45, +- 110,97,109,101,41,114,97,0,0,0,114,10,0,0,0,41, +- 2,114,15,0,0,0,114,65,0,0,0,90,8,95,95,112, +- 97,116,104,95,95,78,41,2,114,48,1,0,0,114,104,0, +- 0,0,41,4,114,143,0,0,0,114,40,1,0,0,218,3, +- 100,111,116,90,2,109,101,114,7,0,0,0,114,7,0,0, +- 0,114,8,0,0,0,218,23,95,102,105,110,100,95,112,97, +- 114,101,110,116,95,112,97,116,104,95,110,97,109,101,115,197, +- 4,0,0,115,8,0,0,0,18,2,8,1,4,2,8,3, +- 122,38,95,78,97,109,101,115,112,97,99,101,80,97,116,104, +- 46,95,102,105,110,100,95,112,97,114,101,110,116,95,112,97, +- 116,104,95,110,97,109,101,115,99,1,0,0,0,0,0,0, +- 0,0,0,0,0,3,0,0,0,3,0,0,0,67,0,0, +- 0,115,28,0,0,0,124,0,160,0,161,0,92,2,125,1, +- 125,2,116,1,116,2,106,3,124,1,25,0,124,2,131,2, +- 83,0,114,69,0,0,0,41,4,114,55,1,0,0,114,155, +- 0,0,0,114,15,0,0,0,218,7,109,111,100,117,108,101, +- 115,41,3,114,143,0,0,0,90,18,112,97,114,101,110,116, +- 95,109,111,100,117,108,101,95,110,97,109,101,90,14,112,97, +- 116,104,95,97,116,116,114,95,110,97,109,101,114,7,0,0, +- 0,114,7,0,0,0,114,8,0,0,0,114,50,1,0,0, +- 207,4,0,0,115,4,0,0,0,12,1,16,1,122,31,95, +- 78,97,109,101,115,112,97,99,101,80,97,116,104,46,95,103, +- 101,116,95,112,97,114,101,110,116,95,112,97,116,104,99,1, +- 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,4, +- 0,0,0,67,0,0,0,115,80,0,0,0,116,0,124,0, +- 160,1,161,0,131,1,125,1,124,1,124,0,106,2,107,3, +- 114,37,124,0,160,3,124,0,106,4,124,1,161,2,125,2, +- 124,2,100,0,117,1,114,34,124,2,106,5,100,0,117,0, +- 114,34,124,2,106,6,114,34,124,2,106,6,124,0,95,7, +- 124,1,124,0,95,2,124,0,106,7,83,0,114,69,0,0, +- 0,41,8,114,136,0,0,0,114,50,1,0,0,114,51,1, +- 0,0,114,52,1,0,0,114,48,1,0,0,114,164,0,0, +- 0,114,202,0,0,0,114,49,1,0,0,41,3,114,143,0, +- 0,0,90,11,112,97,114,101,110,116,95,112,97,116,104,114, +- 210,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, +- 0,0,0,218,12,95,114,101,99,97,108,99,117,108,97,116, +- 101,211,4,0,0,115,16,0,0,0,12,2,10,1,14,1, +- 18,3,6,1,8,1,6,1,6,1,122,27,95,78,97,109, +- 101,115,112,97,99,101,80,97,116,104,46,95,114,101,99,97, +- 108,99,117,108,97,116,101,99,1,0,0,0,0,0,0,0, +- 0,0,0,0,1,0,0,0,3,0,0,0,67,0,0,0, +- 243,12,0,0,0,116,0,124,0,160,1,161,0,131,1,83, +- 0,114,69,0,0,0,41,2,218,4,105,116,101,114,114,57, +- 1,0,0,114,21,1,0,0,114,7,0,0,0,114,7,0, +- 0,0,114,8,0,0,0,218,8,95,95,105,116,101,114,95, +- 95,224,4,0,0,243,2,0,0,0,12,1,122,23,95,78, ++ 0,90,10,100,16,100,17,132,0,90,11,101,12,100,18,100, ++ 19,132,0,131,1,90,13,100,20,83,0,41,21,114,31,1, ++ 0,0,122,93,76,111,97,100,101,114,32,102,111,114,32,101, ++ 120,116,101,110,115,105,111,110,32,109,111,100,117,108,101,115, ++ 46,10,10,32,32,32,32,84,104,101,32,99,111,110,115,116, ++ 114,117,99,116,111,114,32,105,115,32,100,101,115,105,103,110, ++ 101,100,32,116,111,32,119,111,114,107,32,119,105,116,104,32, ++ 70,105,108,101,70,105,110,100,101,114,46,10,10,32,32,32, ++ 32,99,3,0,0,0,0,0,0,0,0,0,0,0,3,0, ++ 0,0,2,0,0,0,67,0,0,0,115,16,0,0,0,124, ++ 1,124,0,95,0,124,2,124,0,95,1,100,0,83,0,114, ++ 71,0,0,0,114,184,0,0,0,41,3,114,144,0,0,0, ++ 114,142,0,0,0,114,67,0,0,0,114,8,0,0,0,114, ++ 8,0,0,0,114,9,0,0,0,114,237,0,0,0,143,4, ++ 0,0,115,4,0,0,0,6,1,10,1,122,28,69,120,116, ++ 101,110,115,105,111,110,70,105,108,101,76,111,97,100,101,114, ++ 46,95,95,105,110,105,116,95,95,99,2,0,0,0,0,0, ++ 0,0,0,0,0,0,2,0,0,0,2,0,0,0,67,0, ++ 0,0,114,13,1,0,0,114,71,0,0,0,114,14,1,0, ++ 0,114,16,1,0,0,114,8,0,0,0,114,8,0,0,0, ++ 114,9,0,0,0,114,17,1,0,0,147,4,0,0,114,18, ++ 1,0,0,122,26,69,120,116,101,110,115,105,111,110,70,105, ++ 108,101,76,111,97,100,101,114,46,95,95,101,113,95,95,99, ++ 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, ++ 3,0,0,0,67,0,0,0,114,19,1,0,0,114,71,0, ++ 0,0,114,20,1,0,0,114,22,1,0,0,114,8,0,0, ++ 0,114,8,0,0,0,114,9,0,0,0,114,23,1,0,0, ++ 151,4,0,0,114,24,1,0,0,122,28,69,120,116,101,110, ++ 115,105,111,110,70,105,108,101,76,111,97,100,101,114,46,95, ++ 95,104,97,115,104,95,95,99,2,0,0,0,0,0,0,0, ++ 0,0,0,0,3,0,0,0,5,0,0,0,67,0,0,0, ++ 115,36,0,0,0,116,0,160,1,116,2,106,3,124,1,161, ++ 2,125,2,116,0,160,4,100,1,124,1,106,5,124,0,106, ++ 6,161,3,1,0,124,2,83,0,41,3,122,38,67,114,101, ++ 97,116,101,32,97,110,32,117,110,105,116,105,97,108,105,122, ++ 101,100,32,101,120,116,101,110,115,105,111,110,32,109,111,100, ++ 117,108,101,122,38,101,120,116,101,110,115,105,111,110,32,109, ++ 111,100,117,108,101,32,123,33,114,125,32,108,111,97,100,101, ++ 100,32,102,114,111,109,32,123,33,114,125,78,41,7,114,160, ++ 0,0,0,114,243,0,0,0,114,188,0,0,0,90,14,99, ++ 114,101,97,116,101,95,100,121,110,97,109,105,99,114,174,0, ++ 0,0,114,142,0,0,0,114,67,0,0,0,41,3,114,144, ++ 0,0,0,114,211,0,0,0,114,245,0,0,0,114,8,0, ++ 0,0,114,8,0,0,0,114,9,0,0,0,114,240,0,0, ++ 0,154,4,0,0,115,14,0,0,0,4,2,6,1,4,255, ++ 6,2,8,1,4,255,4,2,122,33,69,120,116,101,110,115, ++ 105,111,110,70,105,108,101,76,111,97,100,101,114,46,99,114, ++ 101,97,116,101,95,109,111,100,117,108,101,99,2,0,0,0, ++ 0,0,0,0,0,0,0,0,2,0,0,0,5,0,0,0, ++ 67,0,0,0,115,36,0,0,0,116,0,160,1,116,2,106, ++ 3,124,1,161,2,1,0,116,0,160,4,100,1,124,0,106, ++ 5,124,0,106,6,161,3,1,0,100,2,83,0,41,3,122, ++ 30,73,110,105,116,105,97,108,105,122,101,32,97,110,32,101, ++ 120,116,101,110,115,105,111,110,32,109,111,100,117,108,101,122, ++ 40,101,120,116,101,110,115,105,111,110,32,109,111,100,117,108, ++ 101,32,123,33,114,125,32,101,120,101,99,117,116,101,100,32, ++ 102,114,111,109,32,123,33,114,125,78,41,7,114,160,0,0, ++ 0,114,243,0,0,0,114,188,0,0,0,90,12,101,120,101, ++ 99,95,100,121,110,97,109,105,99,114,174,0,0,0,114,142, ++ 0,0,0,114,67,0,0,0,169,2,114,144,0,0,0,114, ++ 245,0,0,0,114,8,0,0,0,114,8,0,0,0,114,9, ++ 0,0,0,114,246,0,0,0,162,4,0,0,115,8,0,0, ++ 0,14,2,6,1,8,1,8,255,122,31,69,120,116,101,110, ++ 115,105,111,110,70,105,108,101,76,111,97,100,101,114,46,101, ++ 120,101,99,95,109,111,100,117,108,101,99,2,0,0,0,0, ++ 0,0,0,0,0,0,0,2,0,0,0,4,0,0,0,3, ++ 0,0,0,115,36,0,0,0,116,0,124,0,106,1,131,1, ++ 100,1,25,0,137,0,116,2,135,0,102,1,100,2,100,3, ++ 132,8,116,3,68,0,131,1,131,1,83,0,41,5,122,49, ++ 82,101,116,117,114,110,32,84,114,117,101,32,105,102,32,116, ++ 104,101,32,101,120,116,101,110,115,105,111,110,32,109,111,100, ++ 117,108,101,32,105,115,32,97,32,112,97,99,107,97,103,101, ++ 46,114,4,0,0,0,99,1,0,0,0,0,0,0,0,0, ++ 0,0,0,2,0,0,0,4,0,0,0,51,0,0,0,115, ++ 28,0,0,0,129,0,124,0,93,9,125,1,136,0,100,0, ++ 124,1,23,0,107,2,86,0,1,0,113,2,100,1,83,0, ++ 41,2,114,237,0,0,0,78,114,8,0,0,0,169,2,114, ++ 6,0,0,0,218,6,115,117,102,102,105,120,169,1,90,9, ++ 102,105,108,101,95,110,97,109,101,114,8,0,0,0,114,9, ++ 0,0,0,114,10,0,0,0,171,4,0,0,115,8,0,0, ++ 0,2,128,4,0,2,1,20,255,122,49,69,120,116,101,110, ++ 115,105,111,110,70,105,108,101,76,111,97,100,101,114,46,105, ++ 115,95,112,97,99,107,97,103,101,46,60,108,111,99,97,108, ++ 115,62,46,60,103,101,110,101,120,112,114,62,78,41,4,114, ++ 76,0,0,0,114,67,0,0,0,218,3,97,110,121,114,233, ++ 0,0,0,114,248,0,0,0,114,8,0,0,0,114,46,1, ++ 0,0,114,9,0,0,0,114,207,0,0,0,168,4,0,0, ++ 115,8,0,0,0,14,2,12,1,2,1,8,255,122,30,69, ++ 120,116,101,110,115,105,111,110,70,105,108,101,76,111,97,100, ++ 101,114,46,105,115,95,112,97,99,107,97,103,101,99,2,0, ++ 0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0, ++ 0,0,67,0,0,0,114,25,0,0,0,41,2,122,63,82, ++ 101,116,117,114,110,32,78,111,110,101,32,97,115,32,97,110, ++ 32,101,120,116,101,110,115,105,111,110,32,109,111,100,117,108, ++ 101,32,99,97,110,110,111,116,32,99,114,101,97,116,101,32, ++ 97,32,99,111,100,101,32,111,98,106,101,99,116,46,78,114, ++ 8,0,0,0,114,248,0,0,0,114,8,0,0,0,114,8, ++ 0,0,0,114,9,0,0,0,114,242,0,0,0,174,4,0, ++ 0,114,26,0,0,0,122,28,69,120,116,101,110,115,105,111, ++ 110,70,105,108,101,76,111,97,100,101,114,46,103,101,116,95, ++ 99,111,100,101,99,2,0,0,0,0,0,0,0,0,0,0, ++ 0,2,0,0,0,1,0,0,0,67,0,0,0,114,25,0, ++ 0,0,41,2,122,53,82,101,116,117,114,110,32,78,111,110, ++ 101,32,97,115,32,101,120,116,101,110,115,105,111,110,32,109, ++ 111,100,117,108,101,115,32,104,97,118,101,32,110,111,32,115, ++ 111,117,114,99,101,32,99,111,100,101,46,78,114,8,0,0, ++ 0,114,248,0,0,0,114,8,0,0,0,114,8,0,0,0, ++ 114,9,0,0,0,114,2,1,0,0,178,4,0,0,114,26, ++ 0,0,0,122,30,69,120,116,101,110,115,105,111,110,70,105, ++ 108,101,76,111,97,100,101,114,46,103,101,116,95,115,111,117, ++ 114,99,101,99,2,0,0,0,0,0,0,0,0,0,0,0, ++ 2,0,0,0,1,0,0,0,67,0,0,0,114,27,1,0, ++ 0,114,28,1,0,0,114,73,0,0,0,114,248,0,0,0, ++ 114,8,0,0,0,114,8,0,0,0,114,9,0,0,0,114, ++ 204,0,0,0,182,4,0,0,114,29,1,0,0,122,32,69, ++ 120,116,101,110,115,105,111,110,70,105,108,101,76,111,97,100, ++ 101,114,46,103,101,116,95,102,105,108,101,110,97,109,101,78, ++ 41,14,114,151,0,0,0,114,150,0,0,0,114,152,0,0, ++ 0,114,153,0,0,0,114,237,0,0,0,114,17,1,0,0, ++ 114,23,1,0,0,114,240,0,0,0,114,246,0,0,0,114, ++ 207,0,0,0,114,242,0,0,0,114,2,1,0,0,114,161, ++ 0,0,0,114,204,0,0,0,114,8,0,0,0,114,8,0, ++ 0,0,114,8,0,0,0,114,9,0,0,0,114,31,1,0, ++ 0,135,4,0,0,115,24,0,0,0,8,0,4,2,8,6, ++ 8,4,8,4,8,3,8,8,8,6,8,6,8,4,2,4, ++ 14,1,114,31,1,0,0,99,0,0,0,0,0,0,0,0, ++ 0,0,0,0,0,0,0,0,2,0,0,0,64,0,0,0, ++ 115,104,0,0,0,101,0,90,1,100,0,90,2,100,1,90, ++ 3,100,2,100,3,132,0,90,4,100,4,100,5,132,0,90, ++ 5,100,6,100,7,132,0,90,6,100,8,100,9,132,0,90, ++ 7,100,10,100,11,132,0,90,8,100,12,100,13,132,0,90, ++ 9,100,14,100,15,132,0,90,10,100,16,100,17,132,0,90, ++ 11,100,18,100,19,132,0,90,12,100,20,100,21,132,0,90, ++ 13,100,22,100,23,132,0,90,14,100,24,83,0,41,25,218, ++ 14,95,78,97,109,101,115,112,97,99,101,80,97,116,104,97, ++ 38,1,0,0,82,101,112,114,101,115,101,110,116,115,32,97, ++ 32,110,97,109,101,115,112,97,99,101,32,112,97,99,107,97, ++ 103,101,39,115,32,112,97,116,104,46,32,32,73,116,32,117, ++ 115,101,115,32,116,104,101,32,109,111,100,117,108,101,32,110, ++ 97,109,101,10,32,32,32,32,116,111,32,102,105,110,100,32, ++ 105,116,115,32,112,97,114,101,110,116,32,109,111,100,117,108, ++ 101,44,32,97,110,100,32,102,114,111,109,32,116,104,101,114, ++ 101,32,105,116,32,108,111,111,107,115,32,117,112,32,116,104, ++ 101,32,112,97,114,101,110,116,39,115,10,32,32,32,32,95, ++ 95,112,97,116,104,95,95,46,32,32,87,104,101,110,32,116, ++ 104,105,115,32,99,104,97,110,103,101,115,44,32,116,104,101, ++ 32,109,111,100,117,108,101,39,115,32,111,119,110,32,112,97, ++ 116,104,32,105,115,32,114,101,99,111,109,112,117,116,101,100, ++ 44,10,32,32,32,32,117,115,105,110,103,32,112,97,116,104, ++ 95,102,105,110,100,101,114,46,32,32,70,111,114,32,116,111, ++ 112,45,108,101,118,101,108,32,109,111,100,117,108,101,115,44, ++ 32,116,104,101,32,112,97,114,101,110,116,32,109,111,100,117, ++ 108,101,39,115,32,112,97,116,104,10,32,32,32,32,105,115, ++ 32,115,121,115,46,112,97,116,104,46,99,4,0,0,0,0, ++ 0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,67, ++ 0,0,0,115,36,0,0,0,124,1,124,0,95,0,124,2, ++ 124,0,95,1,116,2,124,0,160,3,161,0,131,1,124,0, ++ 95,4,124,3,124,0,95,5,100,0,83,0,114,71,0,0, ++ 0,41,6,218,5,95,110,97,109,101,218,5,95,112,97,116, ++ 104,114,137,0,0,0,218,16,95,103,101,116,95,112,97,114, ++ 101,110,116,95,112,97,116,104,218,17,95,108,97,115,116,95, ++ 112,97,114,101,110,116,95,112,97,116,104,218,12,95,112,97, ++ 116,104,95,102,105,110,100,101,114,169,4,114,144,0,0,0, ++ 114,142,0,0,0,114,67,0,0,0,90,11,112,97,116,104, ++ 95,102,105,110,100,101,114,114,8,0,0,0,114,8,0,0, ++ 0,114,9,0,0,0,114,237,0,0,0,195,4,0,0,115, ++ 8,0,0,0,6,1,6,1,14,1,10,1,122,23,95,78, + 97,109,101,115,112,97,99,101,80,97,116,104,46,95,95,105, +- 116,101,114,95,95,99,2,0,0,0,0,0,0,0,0,0, +- 0,0,2,0,0,0,2,0,0,0,67,0,0,0,115,12, +- 0,0,0,124,0,160,0,161,0,124,1,25,0,83,0,114, +- 69,0,0,0,169,1,114,57,1,0,0,41,2,114,143,0, +- 0,0,218,5,105,110,100,101,120,114,7,0,0,0,114,7, +- 0,0,0,114,8,0,0,0,218,11,95,95,103,101,116,105, +- 116,101,109,95,95,227,4,0,0,114,61,1,0,0,122,26, +- 95,78,97,109,101,115,112,97,99,101,80,97,116,104,46,95, +- 95,103,101,116,105,116,101,109,95,95,99,3,0,0,0,0, +- 0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,67, +- 0,0,0,115,14,0,0,0,124,2,124,0,106,0,124,1, +- 60,0,100,0,83,0,114,69,0,0,0,41,1,114,49,1, +- 0,0,41,3,114,143,0,0,0,114,63,1,0,0,114,65, +- 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, +- 0,0,218,11,95,95,115,101,116,105,116,101,109,95,95,230, +- 4,0,0,115,2,0,0,0,14,1,122,26,95,78,97,109, +- 101,115,112,97,99,101,80,97,116,104,46,95,95,115,101,116, +- 105,116,101,109,95,95,99,1,0,0,0,0,0,0,0,0, +- 0,0,0,1,0,0,0,3,0,0,0,67,0,0,0,114, +- 58,1,0,0,114,69,0,0,0,41,2,114,4,0,0,0, +- 114,57,1,0,0,114,21,1,0,0,114,7,0,0,0,114, +- 7,0,0,0,114,8,0,0,0,218,7,95,95,108,101,110, +- 95,95,233,4,0,0,114,61,1,0,0,122,22,95,78,97, +- 109,101,115,112,97,99,101,80,97,116,104,46,95,95,108,101, +- 110,95,95,99,1,0,0,0,0,0,0,0,0,0,0,0, +- 1,0,0,0,3,0,0,0,67,0,0,0,243,12,0,0, +- 0,100,1,160,0,124,0,106,1,161,1,83,0,41,2,78, +- 122,20,95,78,97,109,101,115,112,97,99,101,80,97,116,104, +- 40,123,33,114,125,41,41,2,114,89,0,0,0,114,49,1, +- 0,0,114,21,1,0,0,114,7,0,0,0,114,7,0,0, +- 0,114,8,0,0,0,218,8,95,95,114,101,112,114,95,95, +- 236,4,0,0,114,61,1,0,0,122,23,95,78,97,109,101, +- 115,112,97,99,101,80,97,116,104,46,95,95,114,101,112,114, +- 95,95,99,2,0,0,0,0,0,0,0,0,0,0,0,2, +- 0,0,0,3,0,0,0,67,0,0,0,115,12,0,0,0, +- 124,1,124,0,160,0,161,0,118,0,83,0,114,69,0,0, +- 0,114,62,1,0,0,169,2,114,143,0,0,0,218,4,105, +- 116,101,109,114,7,0,0,0,114,7,0,0,0,114,8,0, +- 0,0,218,12,95,95,99,111,110,116,97,105,110,115,95,95, +- 239,4,0,0,114,61,1,0,0,122,27,95,78,97,109,101, +- 115,112,97,99,101,80,97,116,104,46,95,95,99,111,110,116, +- 97,105,110,115,95,95,99,2,0,0,0,0,0,0,0,0, +- 0,0,0,2,0,0,0,3,0,0,0,67,0,0,0,115, +- 16,0,0,0,124,0,106,0,160,1,124,1,161,1,1,0, +- 100,0,83,0,114,69,0,0,0,41,2,114,49,1,0,0, +- 114,61,0,0,0,114,69,1,0,0,114,7,0,0,0,114, +- 7,0,0,0,114,8,0,0,0,114,61,0,0,0,242,4, +- 0,0,243,2,0,0,0,16,1,122,21,95,78,97,109,101, +- 115,112,97,99,101,80,97,116,104,46,97,112,112,101,110,100, +- 78,41,15,114,150,0,0,0,114,149,0,0,0,114,151,0, +- 0,0,114,152,0,0,0,114,236,0,0,0,114,55,1,0, +- 0,114,50,1,0,0,114,57,1,0,0,114,60,1,0,0, +- 114,64,1,0,0,114,65,1,0,0,114,66,1,0,0,114, +- 68,1,0,0,114,71,1,0,0,114,61,0,0,0,114,7, +- 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, +- 0,0,114,47,1,0,0,184,4,0,0,115,26,0,0,0, +- 8,0,4,1,8,6,8,6,8,10,8,4,8,13,8,3, +- 8,3,8,3,8,3,8,3,12,3,114,47,1,0,0,99, +- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +- 3,0,0,0,64,0,0,0,115,88,0,0,0,101,0,90, +- 1,100,0,90,2,100,1,100,2,132,0,90,3,101,4,100, +- 3,100,4,132,0,131,1,90,5,100,5,100,6,132,0,90, +- 6,100,7,100,8,132,0,90,7,100,9,100,10,132,0,90, +- 8,100,11,100,12,132,0,90,9,100,13,100,14,132,0,90, +- 10,100,15,100,16,132,0,90,11,100,17,100,18,132,0,90, +- 12,100,19,83,0,41,20,218,16,95,78,97,109,101,115,112, +- 97,99,101,76,111,97,100,101,114,99,4,0,0,0,0,0, +- 0,0,0,0,0,0,4,0,0,0,4,0,0,0,67,0, +- 0,0,115,18,0,0,0,116,0,124,1,124,2,124,3,131, +- 3,124,0,95,1,100,0,83,0,114,69,0,0,0,41,2, +- 114,47,1,0,0,114,49,1,0,0,114,53,1,0,0,114, +- 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,236, +- 0,0,0,248,4,0,0,115,2,0,0,0,18,1,122,25, +- 95,78,97,109,101,115,112,97,99,101,76,111,97,100,101,114, +- 46,95,95,105,110,105,116,95,95,99,1,0,0,0,0,0, +- 0,0,0,0,0,0,1,0,0,0,4,0,0,0,67,0, +- 0,0,115,24,0,0,0,116,0,160,1,100,1,116,2,161, +- 2,1,0,100,2,160,3,124,0,106,4,161,1,83,0,41, +- 4,122,115,82,101,116,117,114,110,32,114,101,112,114,32,102, +- 111,114,32,116,104,101,32,109,111,100,117,108,101,46,10,10, +- 32,32,32,32,32,32,32,32,84,104,101,32,109,101,116,104, +- 111,100,32,105,115,32,100,101,112,114,101,99,97,116,101,100, +- 46,32,32,84,104,101,32,105,109,112,111,114,116,32,109,97, +- 99,104,105,110,101,114,121,32,100,111,101,115,32,116,104,101, +- 32,106,111,98,32,105,116,115,101,108,102,46,10,10,32,32, +- 32,32,32,32,32,32,122,82,95,78,97,109,101,115,112,97, +- 99,101,76,111,97,100,101,114,46,109,111,100,117,108,101,95, +- 114,101,112,114,40,41,32,105,115,32,100,101,112,114,101,99, +- 97,116,101,100,32,97,110,100,32,115,108,97,116,101,100,32, +- 102,111,114,32,114,101,109,111,118,97,108,32,105,110,32,80, +- 121,116,104,111,110,32,51,46,49,50,122,25,60,109,111,100, +- 117,108,101,32,123,33,114,125,32,40,110,97,109,101,115,112, +- 97,99,101,41,62,78,41,5,114,99,0,0,0,114,100,0, +- 0,0,114,101,0,0,0,114,89,0,0,0,114,150,0,0, +- 0,41,1,114,244,0,0,0,114,7,0,0,0,114,7,0, +- 0,0,114,8,0,0,0,218,11,109,111,100,117,108,101,95, +- 114,101,112,114,251,4,0,0,115,8,0,0,0,6,7,2, +- 1,4,255,12,2,122,28,95,78,97,109,101,115,112,97,99, +- 101,76,111,97,100,101,114,46,109,111,100,117,108,101,95,114, +- 101,112,114,99,2,0,0,0,0,0,0,0,0,0,0,0, +- 2,0,0,0,1,0,0,0,67,0,0,0,114,23,0,0, +- 0,41,2,78,84,114,7,0,0,0,114,247,0,0,0,114, +- 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,206, +- 0,0,0,6,5,0,0,243,2,0,0,0,4,1,122,27, +- 95,78,97,109,101,115,112,97,99,101,76,111,97,100,101,114, +- 46,105,115,95,112,97,99,107,97,103,101,99,2,0,0,0, +- 0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0, +- 67,0,0,0,114,23,0,0,0,41,2,78,114,10,0,0, +- 0,114,7,0,0,0,114,247,0,0,0,114,7,0,0,0, +- 114,7,0,0,0,114,8,0,0,0,114,1,1,0,0,9, +- 5,0,0,114,75,1,0,0,122,27,95,78,97,109,101,115, +- 112,97,99,101,76,111,97,100,101,114,46,103,101,116,95,115, +- 111,117,114,99,101,99,2,0,0,0,0,0,0,0,0,0, +- 0,0,2,0,0,0,6,0,0,0,67,0,0,0,115,16, +- 0,0,0,116,0,100,1,100,2,100,3,100,4,100,5,141, +- 4,83,0,41,6,78,114,10,0,0,0,122,8,60,115,116, +- 114,105,110,103,62,114,243,0,0,0,84,41,1,114,3,1, +- 0,0,41,1,114,4,1,0,0,114,247,0,0,0,114,7, +- 0,0,0,114,7,0,0,0,114,8,0,0,0,114,241,0, +- 0,0,12,5,0,0,114,72,1,0,0,122,25,95,78,97, +- 109,101,115,112,97,99,101,76,111,97,100,101,114,46,103,101, +- 116,95,99,111,100,101,99,2,0,0,0,0,0,0,0,0, +- 0,0,0,2,0,0,0,1,0,0,0,67,0,0,0,114, +- 23,0,0,0,114,237,0,0,0,114,7,0,0,0,114,238, +- 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, +- 0,0,114,239,0,0,0,15,5,0,0,114,240,0,0,0, +- 122,30,95,78,97,109,101,115,112,97,99,101,76,111,97,100, +- 101,114,46,99,114,101,97,116,101,95,109,111,100,117,108,101, +- 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, +- 0,1,0,0,0,67,0,0,0,115,4,0,0,0,100,0, +- 83,0,114,69,0,0,0,114,7,0,0,0,114,42,1,0, +- 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, +- 114,245,0,0,0,18,5,0,0,114,75,1,0,0,122,28, ++ 110,105,116,95,95,99,1,0,0,0,0,0,0,0,0,0, ++ 0,0,4,0,0,0,3,0,0,0,67,0,0,0,115,38, ++ 0,0,0,124,0,106,0,160,1,100,1,161,1,92,3,125, ++ 1,125,2,125,3,124,2,100,2,107,2,114,15,100,3,83, ++ 0,124,1,100,4,102,2,83,0,41,6,122,62,82,101,116, ++ 117,114,110,115,32,97,32,116,117,112,108,101,32,111,102,32, ++ 40,112,97,114,101,110,116,45,109,111,100,117,108,101,45,110, ++ 97,109,101,44,32,112,97,114,101,110,116,45,112,97,116,104, ++ 45,97,116,116,114,45,110,97,109,101,41,114,99,0,0,0, ++ 114,11,0,0,0,41,2,114,16,0,0,0,114,67,0,0, ++ 0,90,8,95,95,112,97,116,104,95,95,78,41,2,114,49, ++ 1,0,0,114,106,0,0,0,41,4,114,144,0,0,0,114, ++ 41,1,0,0,218,3,100,111,116,90,2,109,101,114,8,0, ++ 0,0,114,8,0,0,0,114,9,0,0,0,218,23,95,102, ++ 105,110,100,95,112,97,114,101,110,116,95,112,97,116,104,95, ++ 110,97,109,101,115,201,4,0,0,115,8,0,0,0,18,2, ++ 8,1,4,2,8,3,122,38,95,78,97,109,101,115,112,97, ++ 99,101,80,97,116,104,46,95,102,105,110,100,95,112,97,114, ++ 101,110,116,95,112,97,116,104,95,110,97,109,101,115,99,1, ++ 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,3, ++ 0,0,0,67,0,0,0,115,28,0,0,0,124,0,160,0, ++ 161,0,92,2,125,1,125,2,116,1,116,2,106,3,124,1, ++ 25,0,124,2,131,2,83,0,114,71,0,0,0,41,4,114, ++ 56,1,0,0,114,156,0,0,0,114,16,0,0,0,218,7, ++ 109,111,100,117,108,101,115,41,3,114,144,0,0,0,90,18, ++ 112,97,114,101,110,116,95,109,111,100,117,108,101,95,110,97, ++ 109,101,90,14,112,97,116,104,95,97,116,116,114,95,110,97, ++ 109,101,114,8,0,0,0,114,8,0,0,0,114,9,0,0, ++ 0,114,51,1,0,0,211,4,0,0,115,4,0,0,0,12, ++ 1,16,1,122,31,95,78,97,109,101,115,112,97,99,101,80, ++ 97,116,104,46,95,103,101,116,95,112,97,114,101,110,116,95, ++ 112,97,116,104,99,1,0,0,0,0,0,0,0,0,0,0, ++ 0,3,0,0,0,4,0,0,0,67,0,0,0,115,80,0, ++ 0,0,116,0,124,0,160,1,161,0,131,1,125,1,124,1, ++ 124,0,106,2,107,3,114,37,124,0,160,3,124,0,106,4, ++ 124,1,161,2,125,2,124,2,100,0,117,1,114,34,124,2, ++ 106,5,100,0,117,0,114,34,124,2,106,6,114,34,124,2, ++ 106,6,124,0,95,7,124,1,124,0,95,2,124,0,106,7, ++ 83,0,114,71,0,0,0,41,8,114,137,0,0,0,114,51, ++ 1,0,0,114,52,1,0,0,114,53,1,0,0,114,49,1, ++ 0,0,114,165,0,0,0,114,203,0,0,0,114,50,1,0, ++ 0,41,3,114,144,0,0,0,90,11,112,97,114,101,110,116, ++ 95,112,97,116,104,114,211,0,0,0,114,8,0,0,0,114, ++ 8,0,0,0,114,9,0,0,0,218,12,95,114,101,99,97, ++ 108,99,117,108,97,116,101,215,4,0,0,115,16,0,0,0, ++ 12,2,10,1,14,1,18,3,6,1,8,1,6,1,6,1, ++ 122,27,95,78,97,109,101,115,112,97,99,101,80,97,116,104, ++ 46,95,114,101,99,97,108,99,117,108,97,116,101,99,1,0, ++ 0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0, ++ 0,0,67,0,0,0,243,12,0,0,0,116,0,124,0,160, ++ 1,161,0,131,1,83,0,114,71,0,0,0,41,2,218,4, ++ 105,116,101,114,114,58,1,0,0,114,22,1,0,0,114,8, ++ 0,0,0,114,8,0,0,0,114,9,0,0,0,218,8,95, ++ 95,105,116,101,114,95,95,228,4,0,0,243,2,0,0,0, ++ 12,1,122,23,95,78,97,109,101,115,112,97,99,101,80,97, ++ 116,104,46,95,95,105,116,101,114,95,95,99,2,0,0,0, ++ 0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0, ++ 67,0,0,0,115,12,0,0,0,124,0,160,0,161,0,124, ++ 1,25,0,83,0,114,71,0,0,0,169,1,114,58,1,0, ++ 0,41,2,114,144,0,0,0,218,5,105,110,100,101,120,114, ++ 8,0,0,0,114,8,0,0,0,114,9,0,0,0,218,11, ++ 95,95,103,101,116,105,116,101,109,95,95,231,4,0,0,114, ++ 62,1,0,0,122,26,95,78,97,109,101,115,112,97,99,101, ++ 80,97,116,104,46,95,95,103,101,116,105,116,101,109,95,95, ++ 99,3,0,0,0,0,0,0,0,0,0,0,0,3,0,0, ++ 0,3,0,0,0,67,0,0,0,115,14,0,0,0,124,2, ++ 124,0,106,0,124,1,60,0,100,0,83,0,114,71,0,0, ++ 0,41,1,114,50,1,0,0,41,3,114,144,0,0,0,114, ++ 64,1,0,0,114,67,0,0,0,114,8,0,0,0,114,8, ++ 0,0,0,114,9,0,0,0,218,11,95,95,115,101,116,105, ++ 116,101,109,95,95,234,4,0,0,115,2,0,0,0,14,1, ++ 122,26,95,78,97,109,101,115,112,97,99,101,80,97,116,104, ++ 46,95,95,115,101,116,105,116,101,109,95,95,99,1,0,0, ++ 0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0, ++ 0,67,0,0,0,114,59,1,0,0,114,71,0,0,0,41, ++ 2,114,5,0,0,0,114,58,1,0,0,114,22,1,0,0, ++ 114,8,0,0,0,114,8,0,0,0,114,9,0,0,0,218, ++ 7,95,95,108,101,110,95,95,237,4,0,0,114,62,1,0, ++ 0,122,22,95,78,97,109,101,115,112,97,99,101,80,97,116, ++ 104,46,95,95,108,101,110,95,95,99,1,0,0,0,0,0, ++ 0,0,0,0,0,0,1,0,0,0,3,0,0,0,67,0, ++ 0,0,243,12,0,0,0,100,1,160,0,124,0,106,1,161, ++ 1,83,0,41,2,78,122,20,95,78,97,109,101,115,112,97, ++ 99,101,80,97,116,104,40,123,33,114,125,41,41,2,114,91, ++ 0,0,0,114,50,1,0,0,114,22,1,0,0,114,8,0, ++ 0,0,114,8,0,0,0,114,9,0,0,0,218,8,95,95, ++ 114,101,112,114,95,95,240,4,0,0,114,62,1,0,0,122, ++ 23,95,78,97,109,101,115,112,97,99,101,80,97,116,104,46, ++ 95,95,114,101,112,114,95,95,99,2,0,0,0,0,0,0, ++ 0,0,0,0,0,2,0,0,0,3,0,0,0,67,0,0, ++ 0,115,12,0,0,0,124,1,124,0,160,0,161,0,118,0, ++ 83,0,114,71,0,0,0,114,63,1,0,0,169,2,114,144, ++ 0,0,0,218,4,105,116,101,109,114,8,0,0,0,114,8, ++ 0,0,0,114,9,0,0,0,218,12,95,95,99,111,110,116, ++ 97,105,110,115,95,95,243,4,0,0,114,62,1,0,0,122, ++ 27,95,78,97,109,101,115,112,97,99,101,80,97,116,104,46, ++ 95,95,99,111,110,116,97,105,110,115,95,95,99,2,0,0, ++ 0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,0, ++ 0,67,0,0,0,115,16,0,0,0,124,0,106,0,160,1, ++ 124,1,161,1,1,0,100,0,83,0,114,71,0,0,0,41, ++ 2,114,50,1,0,0,114,63,0,0,0,114,70,1,0,0, ++ 114,8,0,0,0,114,8,0,0,0,114,9,0,0,0,114, ++ 63,0,0,0,246,4,0,0,243,2,0,0,0,16,1,122, ++ 21,95,78,97,109,101,115,112,97,99,101,80,97,116,104,46, ++ 97,112,112,101,110,100,78,41,15,114,151,0,0,0,114,150, ++ 0,0,0,114,152,0,0,0,114,153,0,0,0,114,237,0, ++ 0,0,114,56,1,0,0,114,51,1,0,0,114,58,1,0, ++ 0,114,61,1,0,0,114,65,1,0,0,114,66,1,0,0, ++ 114,67,1,0,0,114,69,1,0,0,114,72,1,0,0,114, ++ 63,0,0,0,114,8,0,0,0,114,8,0,0,0,114,8, ++ 0,0,0,114,9,0,0,0,114,48,1,0,0,188,4,0, ++ 0,115,26,0,0,0,8,0,4,1,8,6,8,6,8,10, ++ 8,4,8,13,8,3,8,3,8,3,8,3,8,3,12,3, ++ 114,48,1,0,0,99,0,0,0,0,0,0,0,0,0,0, ++ 0,0,0,0,0,0,3,0,0,0,64,0,0,0,115,88, ++ 0,0,0,101,0,90,1,100,0,90,2,100,1,100,2,132, ++ 0,90,3,101,4,100,3,100,4,132,0,131,1,90,5,100, ++ 5,100,6,132,0,90,6,100,7,100,8,132,0,90,7,100, ++ 9,100,10,132,0,90,8,100,11,100,12,132,0,90,9,100, ++ 13,100,14,132,0,90,10,100,15,100,16,132,0,90,11,100, ++ 17,100,18,132,0,90,12,100,19,83,0,41,20,218,16,95, ++ 78,97,109,101,115,112,97,99,101,76,111,97,100,101,114,99, ++ 4,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, ++ 4,0,0,0,67,0,0,0,115,18,0,0,0,116,0,124, ++ 1,124,2,124,3,131,3,124,0,95,1,100,0,83,0,114, ++ 71,0,0,0,41,2,114,48,1,0,0,114,50,1,0,0, ++ 114,54,1,0,0,114,8,0,0,0,114,8,0,0,0,114, ++ 9,0,0,0,114,237,0,0,0,252,4,0,0,115,2,0, ++ 0,0,18,1,122,25,95,78,97,109,101,115,112,97,99,101, ++ 76,111,97,100,101,114,46,95,95,105,110,105,116,95,95,99, ++ 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, ++ 4,0,0,0,67,0,0,0,115,24,0,0,0,116,0,160, ++ 1,100,1,116,2,161,2,1,0,100,2,160,3,124,0,106, ++ 4,161,1,83,0,41,4,122,115,82,101,116,117,114,110,32, ++ 114,101,112,114,32,102,111,114,32,116,104,101,32,109,111,100, ++ 117,108,101,46,10,10,32,32,32,32,32,32,32,32,84,104, ++ 101,32,109,101,116,104,111,100,32,105,115,32,100,101,112,114, ++ 101,99,97,116,101,100,46,32,32,84,104,101,32,105,109,112, ++ 111,114,116,32,109,97,99,104,105,110,101,114,121,32,100,111, ++ 101,115,32,116,104,101,32,106,111,98,32,105,116,115,101,108, ++ 102,46,10,10,32,32,32,32,32,32,32,32,122,82,95,78, ++ 97,109,101,115,112,97,99,101,76,111,97,100,101,114,46,109, ++ 111,100,117,108,101,95,114,101,112,114,40,41,32,105,115,32, ++ 100,101,112,114,101,99,97,116,101,100,32,97,110,100,32,115, ++ 108,97,116,101,100,32,102,111,114,32,114,101,109,111,118,97, ++ 108,32,105,110,32,80,121,116,104,111,110,32,51,46,49,50, ++ 122,25,60,109,111,100,117,108,101,32,123,33,114,125,32,40, ++ 110,97,109,101,115,112,97,99,101,41,62,78,41,5,114,101, ++ 0,0,0,114,102,0,0,0,114,103,0,0,0,114,91,0, ++ 0,0,114,151,0,0,0,41,1,114,245,0,0,0,114,8, ++ 0,0,0,114,8,0,0,0,114,9,0,0,0,218,11,109, ++ 111,100,117,108,101,95,114,101,112,114,255,4,0,0,115,8, ++ 0,0,0,6,7,2,1,4,255,12,2,122,28,95,78,97, ++ 109,101,115,112,97,99,101,76,111,97,100,101,114,46,109,111, ++ 100,117,108,101,95,114,101,112,114,99,2,0,0,0,0,0, ++ 0,0,0,0,0,0,2,0,0,0,1,0,0,0,67,0, ++ 0,0,114,25,0,0,0,41,2,78,84,114,8,0,0,0, ++ 114,248,0,0,0,114,8,0,0,0,114,8,0,0,0,114, ++ 9,0,0,0,114,207,0,0,0,10,5,0,0,243,2,0, ++ 0,0,4,1,122,27,95,78,97,109,101,115,112,97,99,101, ++ 76,111,97,100,101,114,46,105,115,95,112,97,99,107,97,103, ++ 101,99,2,0,0,0,0,0,0,0,0,0,0,0,2,0, ++ 0,0,1,0,0,0,67,0,0,0,114,25,0,0,0,41, ++ 2,78,114,11,0,0,0,114,8,0,0,0,114,248,0,0, ++ 0,114,8,0,0,0,114,8,0,0,0,114,9,0,0,0, ++ 114,2,1,0,0,13,5,0,0,114,76,1,0,0,122,27, + 95,78,97,109,101,115,112,97,99,101,76,111,97,100,101,114, +- 46,101,120,101,99,95,109,111,100,117,108,101,99,2,0,0, +- 0,0,0,0,0,0,0,0,0,2,0,0,0,4,0,0, +- 0,67,0,0,0,115,26,0,0,0,116,0,160,1,100,1, +- 124,0,106,2,161,2,1,0,116,0,160,3,124,0,124,1, +- 161,2,83,0,41,3,122,98,76,111,97,100,32,97,32,110, +- 97,109,101,115,112,97,99,101,32,109,111,100,117,108,101,46, +- 10,10,32,32,32,32,32,32,32,32,84,104,105,115,32,109, +- 101,116,104,111,100,32,105,115,32,100,101,112,114,101,99,97, +- 116,101,100,46,32,32,85,115,101,32,101,120,101,99,95,109, +- 111,100,117,108,101,40,41,32,105,110,115,116,101,97,100,46, +- 10,10,32,32,32,32,32,32,32,32,122,38,110,97,109,101, +- 115,112,97,99,101,32,109,111,100,117,108,101,32,108,111,97, +- 100,101,100,32,119,105,116,104,32,112,97,116,104,32,123,33, +- 114,125,78,41,4,114,159,0,0,0,114,173,0,0,0,114, +- 49,1,0,0,114,246,0,0,0,114,247,0,0,0,114,7, +- 0,0,0,114,7,0,0,0,114,8,0,0,0,114,248,0, +- 0,0,21,5,0,0,115,8,0,0,0,6,7,4,1,4, +- 255,12,3,122,28,95,78,97,109,101,115,112,97,99,101,76, +- 111,97,100,101,114,46,108,111,97,100,95,109,111,100,117,108, +- 101,99,2,0,0,0,0,0,0,0,0,0,0,0,3,0, +- 0,0,2,0,0,0,67,0,0,0,115,22,0,0,0,100, +- 1,100,2,108,0,109,1,125,2,1,0,124,2,124,0,106, +- 2,131,1,83,0,41,3,78,114,0,0,0,0,41,1,218, +- 15,78,97,109,101,115,112,97,99,101,82,101,97,100,101,114, +- 41,3,114,32,1,0,0,114,76,1,0,0,114,49,1,0, +- 0,41,3,114,143,0,0,0,114,244,0,0,0,114,76,1, +- 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, +- 0,114,33,1,0,0,33,5,0,0,115,4,0,0,0,12, +- 1,10,1,122,36,95,78,97,109,101,115,112,97,99,101,76, +- 111,97,100,101,114,46,103,101,116,95,114,101,115,111,117,114, +- 99,101,95,114,101,97,100,101,114,78,41,13,114,150,0,0, +- 0,114,149,0,0,0,114,151,0,0,0,114,236,0,0,0, +- 114,233,0,0,0,114,74,1,0,0,114,206,0,0,0,114, +- 1,1,0,0,114,241,0,0,0,114,239,0,0,0,114,245, +- 0,0,0,114,248,0,0,0,114,33,1,0,0,114,7,0, +- 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, +- 0,114,73,1,0,0,247,4,0,0,115,22,0,0,0,8, +- 0,8,1,2,3,10,1,8,10,8,3,8,3,8,3,8, +- 3,8,3,12,12,114,73,1,0,0,99,0,0,0,0,0, +- 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,64, +- 0,0,0,115,118,0,0,0,101,0,90,1,100,0,90,2, +- 100,1,90,3,101,4,100,2,100,3,132,0,131,1,90,5, +- 101,4,100,4,100,5,132,0,131,1,90,6,101,7,100,6, +- 100,7,132,0,131,1,90,8,101,7,100,8,100,9,132,0, +- 131,1,90,9,101,7,100,19,100,11,100,12,132,1,131,1, +- 90,10,101,7,100,20,100,13,100,14,132,1,131,1,90,11, +- 101,7,100,19,100,15,100,16,132,1,131,1,90,12,101,4, +- 100,17,100,18,132,0,131,1,90,13,100,10,83,0,41,21, +- 218,10,80,97,116,104,70,105,110,100,101,114,122,62,77,101, +- 116,97,32,112,97,116,104,32,102,105,110,100,101,114,32,102, +- 111,114,32,115,121,115,46,112,97,116,104,32,97,110,100,32, +- 112,97,99,107,97,103,101,32,95,95,112,97,116,104,95,95, +- 32,97,116,116,114,105,98,117,116,101,115,46,99,0,0,0, +- 0,0,0,0,0,0,0,0,0,2,0,0,0,4,0,0, +- 0,67,0,0,0,115,64,0,0,0,116,0,116,1,106,2, +- 160,3,161,0,131,1,68,0,93,22,92,2,125,0,125,1, +- 124,1,100,1,117,0,114,20,116,1,106,2,124,0,61,0, +- 113,7,116,4,124,1,100,2,131,2,114,29,124,1,160,5, +- 161,0,1,0,113,7,100,1,83,0,41,3,122,125,67,97, +- 108,108,32,116,104,101,32,105,110,118,97,108,105,100,97,116, +- 101,95,99,97,99,104,101,115,40,41,32,109,101,116,104,111, +- 100,32,111,110,32,97,108,108,32,112,97,116,104,32,101,110, +- 116,114,121,32,102,105,110,100,101,114,115,10,32,32,32,32, +- 32,32,32,32,115,116,111,114,101,100,32,105,110,32,115,121, +- 115,46,112,97,116,104,95,105,109,112,111,114,116,101,114,95, +- 99,97,99,104,101,115,32,40,119,104,101,114,101,32,105,109, +- 112,108,101,109,101,110,116,101,100,41,46,78,218,17,105,110, +- 118,97,108,105,100,97,116,101,95,99,97,99,104,101,115,41, +- 6,218,4,108,105,115,116,114,15,0,0,0,218,19,112,97, +- 116,104,95,105,109,112,111,114,116,101,114,95,99,97,99,104, +- 101,218,5,105,116,101,109,115,114,153,0,0,0,114,78,1, +- 0,0,41,2,114,141,0,0,0,218,6,102,105,110,100,101, +- 114,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, +- 114,78,1,0,0,44,5,0,0,115,14,0,0,0,22,4, +- 8,1,10,1,10,1,8,1,2,128,4,252,122,28,80,97, +- 116,104,70,105,110,100,101,114,46,105,110,118,97,108,105,100, +- 97,116,101,95,99,97,99,104,101,115,99,1,0,0,0,0, +- 0,0,0,0,0,0,0,2,0,0,0,9,0,0,0,67, +- 0,0,0,115,76,0,0,0,116,0,106,1,100,1,117,1, +- 114,14,116,0,106,1,115,14,116,2,160,3,100,2,116,4, +- 161,2,1,0,116,0,106,1,68,0,93,18,125,1,122,7, +- 124,1,124,0,131,1,87,0,2,0,1,0,83,0,4,0, +- 116,5,121,35,1,0,1,0,1,0,89,0,113,17,119,0, +- 100,1,83,0,41,3,122,46,83,101,97,114,99,104,32,115, +- 121,115,46,112,97,116,104,95,104,111,111,107,115,32,102,111, +- 114,32,97,32,102,105,110,100,101,114,32,102,111,114,32,39, +- 112,97,116,104,39,46,78,122,23,115,121,115,46,112,97,116, +- 104,95,104,111,111,107,115,32,105,115,32,101,109,112,116,121, +- 41,6,114,15,0,0,0,218,10,112,97,116,104,95,104,111, +- 111,107,115,114,99,0,0,0,114,100,0,0,0,114,162,0, +- 0,0,114,142,0,0,0,41,2,114,65,0,0,0,90,4, +- 104,111,111,107,114,7,0,0,0,114,7,0,0,0,114,8, +- 0,0,0,218,11,95,112,97,116,104,95,104,111,111,107,115, +- 54,5,0,0,115,18,0,0,0,16,3,12,1,10,1,2, +- 1,14,1,12,1,4,1,2,255,4,3,122,22,80,97,116, +- 104,70,105,110,100,101,114,46,95,112,97,116,104,95,104,111, +- 111,107,115,99,2,0,0,0,0,0,0,0,0,0,0,0, +- 3,0,0,0,8,0,0,0,67,0,0,0,115,100,0,0, +- 0,124,1,100,1,107,2,114,21,122,6,116,0,160,1,161, +- 0,125,1,87,0,110,10,4,0,116,2,121,20,1,0,1, +- 0,1,0,89,0,100,2,83,0,119,0,122,8,116,3,106, +- 4,124,1,25,0,125,2,87,0,124,2,83,0,4,0,116, +- 5,121,49,1,0,1,0,1,0,124,0,160,6,124,1,161, +- 1,125,2,124,2,116,3,106,4,124,1,60,0,89,0,124, +- 2,83,0,119,0,41,3,122,210,71,101,116,32,116,104,101, +- 32,102,105,110,100,101,114,32,102,111,114,32,116,104,101,32, +- 112,97,116,104,32,101,110,116,114,121,32,102,114,111,109,32, +- 115,121,115,46,112,97,116,104,95,105,109,112,111,114,116,101, +- 114,95,99,97,99,104,101,46,10,10,32,32,32,32,32,32, +- 32,32,73,102,32,116,104,101,32,112,97,116,104,32,101,110, +- 116,114,121,32,105,115,32,110,111,116,32,105,110,32,116,104, +- 101,32,99,97,99,104,101,44,32,102,105,110,100,32,116,104, +- 101,32,97,112,112,114,111,112,114,105,97,116,101,32,102,105, +- 110,100,101,114,10,32,32,32,32,32,32,32,32,97,110,100, +- 32,99,97,99,104,101,32,105,116,46,32,73,102,32,110,111, +- 32,102,105,110,100,101,114,32,105,115,32,97,118,97,105,108, +- 97,98,108,101,44,32,115,116,111,114,101,32,78,111,110,101, +- 46,10,10,32,32,32,32,32,32,32,32,114,10,0,0,0, +- 78,41,7,114,18,0,0,0,114,82,0,0,0,218,17,70, +- 105,108,101,78,111,116,70,111,117,110,100,69,114,114,111,114, +- 114,15,0,0,0,114,80,1,0,0,218,8,75,101,121,69, +- 114,114,111,114,114,84,1,0,0,41,3,114,221,0,0,0, +- 114,65,0,0,0,114,82,1,0,0,114,7,0,0,0,114, +- 7,0,0,0,114,8,0,0,0,218,20,95,112,97,116,104, +- 95,105,109,112,111,114,116,101,114,95,99,97,99,104,101,67, +- 5,0,0,115,28,0,0,0,8,8,2,1,12,1,12,1, +- 6,3,2,253,2,4,12,1,4,4,12,253,10,1,12,1, +- 4,1,2,253,122,31,80,97,116,104,70,105,110,100,101,114, +- 46,95,112,97,116,104,95,105,109,112,111,114,116,101,114,95, +- 99,97,99,104,101,99,3,0,0,0,0,0,0,0,0,0, +- 0,0,7,0,0,0,4,0,0,0,67,0,0,0,115,138, +- 0,0,0,116,0,124,2,100,1,131,2,114,27,116,1,160, +- 2,124,2,161,1,155,0,100,2,157,2,125,3,116,3,160, +- 4,124,3,116,5,161,2,1,0,124,2,160,6,124,1,161, +- 1,92,2,125,4,125,5,110,21,116,1,160,2,124,2,161, +- 1,155,0,100,3,157,2,125,3,116,3,160,4,124,3,116, +- 5,161,2,1,0,124,2,160,7,124,1,161,1,125,4,103, +- 0,125,5,124,4,100,0,117,1,114,58,116,1,160,8,124, +- 1,124,4,161,2,83,0,116,1,160,9,124,1,100,0,161, +- 2,125,6,124,5,124,6,95,10,124,6,83,0,41,4,78, +- 114,161,0,0,0,122,53,46,102,105,110,100,95,115,112,101, +- 99,40,41,32,110,111,116,32,102,111,117,110,100,59,32,102, +- 97,108,108,105,110,103,32,98,97,99,107,32,116,111,32,102, +- 105,110,100,95,108,111,97,100,101,114,40,41,122,53,46,102, +- 105,110,100,95,115,112,101,99,40,41,32,110,111,116,32,102, +- 111,117,110,100,59,32,102,97,108,108,105,110,103,32,98,97, +- 99,107,32,116,111,32,102,105,110,100,95,109,111,100,117,108, +- 101,40,41,41,11,114,153,0,0,0,114,159,0,0,0,90, +- 12,95,111,98,106,101,99,116,95,110,97,109,101,114,99,0, +- 0,0,114,100,0,0,0,114,162,0,0,0,114,161,0,0, +- 0,114,229,0,0,0,114,224,0,0,0,114,207,0,0,0, +- 114,202,0,0,0,41,7,114,221,0,0,0,114,163,0,0, +- 0,114,82,1,0,0,114,166,0,0,0,114,164,0,0,0, +- 114,165,0,0,0,114,210,0,0,0,114,7,0,0,0,114, +- 7,0,0,0,114,8,0,0,0,218,16,95,108,101,103,97, +- 99,121,95,103,101,116,95,115,112,101,99,89,5,0,0,115, +- 26,0,0,0,10,4,16,1,12,2,16,1,16,2,12,2, +- 10,1,4,1,8,1,12,1,12,1,6,1,4,1,122,27, +- 80,97,116,104,70,105,110,100,101,114,46,95,108,101,103,97, +- 99,121,95,103,101,116,95,115,112,101,99,78,99,4,0,0, +- 0,0,0,0,0,0,0,0,0,9,0,0,0,5,0,0, +- 0,67,0,0,0,115,166,0,0,0,103,0,125,4,124,2, +- 68,0,93,67,125,5,116,0,124,5,116,1,116,2,102,2, +- 131,2,115,14,113,4,124,0,160,3,124,5,161,1,125,6, +- 124,6,100,1,117,1,114,71,116,4,124,6,100,2,131,2, +- 114,35,124,6,160,5,124,1,124,3,161,2,125,7,110,6, +- 124,0,160,6,124,1,124,6,161,2,125,7,124,7,100,1, +- 117,0,114,46,113,4,124,7,106,7,100,1,117,1,114,55, +- 124,7,2,0,1,0,83,0,124,7,106,8,125,8,124,8, +- 100,1,117,0,114,66,116,9,100,3,131,1,130,1,124,4, +- 160,10,124,8,161,1,1,0,113,4,116,11,160,12,124,1, +- 100,1,161,2,125,7,124,4,124,7,95,8,124,7,83,0, +- 41,4,122,63,70,105,110,100,32,116,104,101,32,108,111,97, +- 100,101,114,32,111,114,32,110,97,109,101,115,112,97,99,101, +- 95,112,97,116,104,32,102,111,114,32,116,104,105,115,32,109, +- 111,100,117,108,101,47,112,97,99,107,97,103,101,32,110,97, +- 109,101,46,78,114,226,0,0,0,122,19,115,112,101,99,32, +- 109,105,115,115,105,110,103,32,108,111,97,100,101,114,41,13, +- 114,185,0,0,0,114,109,0,0,0,218,5,98,121,116,101, +- 115,114,87,1,0,0,114,153,0,0,0,114,226,0,0,0, +- 114,88,1,0,0,114,164,0,0,0,114,202,0,0,0,114, +- 142,0,0,0,114,191,0,0,0,114,159,0,0,0,114,207, +- 0,0,0,41,9,114,221,0,0,0,114,163,0,0,0,114, +- 65,0,0,0,114,225,0,0,0,218,14,110,97,109,101,115, +- 112,97,99,101,95,112,97,116,104,90,5,101,110,116,114,121, +- 114,82,1,0,0,114,210,0,0,0,114,165,0,0,0,114, +- 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,9, +- 95,103,101,116,95,115,112,101,99,110,5,0,0,115,42,0, +- 0,0,4,5,8,1,14,1,2,1,10,1,8,1,10,1, +- 14,1,12,2,8,1,2,1,10,1,8,1,6,1,8,1, +- 8,1,10,5,2,128,12,2,6,1,4,1,122,20,80,97, +- 116,104,70,105,110,100,101,114,46,95,103,101,116,95,115,112, +- 101,99,99,4,0,0,0,0,0,0,0,0,0,0,0,6, +- 0,0,0,5,0,0,0,67,0,0,0,115,94,0,0,0, +- 124,2,100,1,117,0,114,7,116,0,106,1,125,2,124,0, +- 160,2,124,1,124,2,124,3,161,3,125,4,124,4,100,1, +- 117,0,114,20,100,1,83,0,124,4,106,3,100,1,117,0, +- 114,45,124,4,106,4,125,5,124,5,114,43,100,1,124,4, +- 95,5,116,6,124,1,124,5,124,0,106,2,131,3,124,4, +- 95,4,124,4,83,0,100,1,83,0,124,4,83,0,41,2, +- 122,141,84,114,121,32,116,111,32,102,105,110,100,32,97,32, +- 115,112,101,99,32,102,111,114,32,39,102,117,108,108,110,97, +- 109,101,39,32,111,110,32,115,121,115,46,112,97,116,104,32, +- 111,114,32,39,112,97,116,104,39,46,10,10,32,32,32,32, +- 32,32,32,32,84,104,101,32,115,101,97,114,99,104,32,105, +- 115,32,98,97,115,101,100,32,111,110,32,115,121,115,46,112, +- 97,116,104,95,104,111,111,107,115,32,97,110,100,32,115,121, ++ 46,103,101,116,95,115,111,117,114,99,101,99,2,0,0,0, ++ 0,0,0,0,0,0,0,0,2,0,0,0,6,0,0,0, ++ 67,0,0,0,115,16,0,0,0,116,0,100,1,100,2,100, ++ 3,100,4,100,5,141,4,83,0,41,6,78,114,11,0,0, ++ 0,122,8,60,115,116,114,105,110,103,62,114,244,0,0,0, ++ 84,41,1,114,4,1,0,0,41,1,114,5,1,0,0,114, ++ 248,0,0,0,114,8,0,0,0,114,8,0,0,0,114,9, ++ 0,0,0,114,242,0,0,0,16,5,0,0,114,73,1,0, ++ 0,122,25,95,78,97,109,101,115,112,97,99,101,76,111,97, ++ 100,101,114,46,103,101,116,95,99,111,100,101,99,2,0,0, ++ 0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0, ++ 0,67,0,0,0,114,25,0,0,0,114,238,0,0,0,114, ++ 8,0,0,0,114,239,0,0,0,114,8,0,0,0,114,8, ++ 0,0,0,114,9,0,0,0,114,240,0,0,0,19,5,0, ++ 0,114,241,0,0,0,122,30,95,78,97,109,101,115,112,97, ++ 99,101,76,111,97,100,101,114,46,99,114,101,97,116,101,95, ++ 109,111,100,117,108,101,99,2,0,0,0,0,0,0,0,0, ++ 0,0,0,2,0,0,0,1,0,0,0,67,0,0,0,115, ++ 4,0,0,0,100,0,83,0,114,71,0,0,0,114,8,0, ++ 0,0,114,43,1,0,0,114,8,0,0,0,114,8,0,0, ++ 0,114,9,0,0,0,114,246,0,0,0,22,5,0,0,114, ++ 76,1,0,0,122,28,95,78,97,109,101,115,112,97,99,101, ++ 76,111,97,100,101,114,46,101,120,101,99,95,109,111,100,117, ++ 108,101,99,2,0,0,0,0,0,0,0,0,0,0,0,2, ++ 0,0,0,4,0,0,0,67,0,0,0,115,26,0,0,0, ++ 116,0,160,1,100,1,124,0,106,2,161,2,1,0,116,0, ++ 160,3,124,0,124,1,161,2,83,0,41,3,122,98,76,111, ++ 97,100,32,97,32,110,97,109,101,115,112,97,99,101,32,109, ++ 111,100,117,108,101,46,10,10,32,32,32,32,32,32,32,32, ++ 84,104,105,115,32,109,101,116,104,111,100,32,105,115,32,100, ++ 101,112,114,101,99,97,116,101,100,46,32,32,85,115,101,32, ++ 101,120,101,99,95,109,111,100,117,108,101,40,41,32,105,110, ++ 115,116,101,97,100,46,10,10,32,32,32,32,32,32,32,32, ++ 122,38,110,97,109,101,115,112,97,99,101,32,109,111,100,117, ++ 108,101,32,108,111,97,100,101,100,32,119,105,116,104,32,112, ++ 97,116,104,32,123,33,114,125,78,41,4,114,160,0,0,0, ++ 114,174,0,0,0,114,50,1,0,0,114,247,0,0,0,114, ++ 248,0,0,0,114,8,0,0,0,114,8,0,0,0,114,9, ++ 0,0,0,114,249,0,0,0,25,5,0,0,115,8,0,0, ++ 0,6,7,4,1,4,255,12,3,122,28,95,78,97,109,101, ++ 115,112,97,99,101,76,111,97,100,101,114,46,108,111,97,100, ++ 95,109,111,100,117,108,101,99,2,0,0,0,0,0,0,0, ++ 0,0,0,0,3,0,0,0,2,0,0,0,67,0,0,0, ++ 115,22,0,0,0,100,1,100,2,108,0,109,1,125,2,1, ++ 0,124,2,124,0,106,2,131,1,83,0,41,3,78,114,0, ++ 0,0,0,41,1,218,15,78,97,109,101,115,112,97,99,101, ++ 82,101,97,100,101,114,41,3,114,33,1,0,0,114,77,1, ++ 0,0,114,50,1,0,0,41,3,114,144,0,0,0,114,245, ++ 0,0,0,114,77,1,0,0,114,8,0,0,0,114,8,0, ++ 0,0,114,9,0,0,0,114,34,1,0,0,37,5,0,0, ++ 115,4,0,0,0,12,1,10,1,122,36,95,78,97,109,101, ++ 115,112,97,99,101,76,111,97,100,101,114,46,103,101,116,95, ++ 114,101,115,111,117,114,99,101,95,114,101,97,100,101,114,78, ++ 41,13,114,151,0,0,0,114,150,0,0,0,114,152,0,0, ++ 0,114,237,0,0,0,114,234,0,0,0,114,75,1,0,0, ++ 114,207,0,0,0,114,2,1,0,0,114,242,0,0,0,114, ++ 240,0,0,0,114,246,0,0,0,114,249,0,0,0,114,34, ++ 1,0,0,114,8,0,0,0,114,8,0,0,0,114,8,0, ++ 0,0,114,9,0,0,0,114,74,1,0,0,251,4,0,0, ++ 115,22,0,0,0,8,0,8,1,2,3,10,1,8,10,8, ++ 3,8,3,8,3,8,3,8,3,12,12,114,74,1,0,0, ++ 99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ++ 0,4,0,0,0,64,0,0,0,115,118,0,0,0,101,0, ++ 90,1,100,0,90,2,100,1,90,3,101,4,100,2,100,3, ++ 132,0,131,1,90,5,101,4,100,4,100,5,132,0,131,1, ++ 90,6,101,7,100,6,100,7,132,0,131,1,90,8,101,7, ++ 100,8,100,9,132,0,131,1,90,9,101,7,100,19,100,11, ++ 100,12,132,1,131,1,90,10,101,7,100,20,100,13,100,14, ++ 132,1,131,1,90,11,101,7,100,19,100,15,100,16,132,1, ++ 131,1,90,12,101,4,100,17,100,18,132,0,131,1,90,13, ++ 100,10,83,0,41,21,218,10,80,97,116,104,70,105,110,100, ++ 101,114,122,62,77,101,116,97,32,112,97,116,104,32,102,105, ++ 110,100,101,114,32,102,111,114,32,115,121,115,46,112,97,116, ++ 104,32,97,110,100,32,112,97,99,107,97,103,101,32,95,95, ++ 112,97,116,104,95,95,32,97,116,116,114,105,98,117,116,101, ++ 115,46,99,0,0,0,0,0,0,0,0,0,0,0,0,2, ++ 0,0,0,4,0,0,0,67,0,0,0,115,64,0,0,0, ++ 116,0,116,1,106,2,160,3,161,0,131,1,68,0,93,22, ++ 92,2,125,0,125,1,124,1,100,1,117,0,114,20,116,1, ++ 106,2,124,0,61,0,113,7,116,4,124,1,100,2,131,2, ++ 114,29,124,1,160,5,161,0,1,0,113,7,100,1,83,0, ++ 41,3,122,125,67,97,108,108,32,116,104,101,32,105,110,118, ++ 97,108,105,100,97,116,101,95,99,97,99,104,101,115,40,41, ++ 32,109,101,116,104,111,100,32,111,110,32,97,108,108,32,112, ++ 97,116,104,32,101,110,116,114,121,32,102,105,110,100,101,114, ++ 115,10,32,32,32,32,32,32,32,32,115,116,111,114,101,100, ++ 32,105,110,32,115,121,115,46,112,97,116,104,95,105,109,112, ++ 111,114,116,101,114,95,99,97,99,104,101,115,32,40,119,104, ++ 101,114,101,32,105,109,112,108,101,109,101,110,116,101,100,41, ++ 46,78,218,17,105,110,118,97,108,105,100,97,116,101,95,99, ++ 97,99,104,101,115,41,6,218,4,108,105,115,116,114,16,0, ++ 0,0,218,19,112,97,116,104,95,105,109,112,111,114,116,101, ++ 114,95,99,97,99,104,101,218,5,105,116,101,109,115,114,154, ++ 0,0,0,114,79,1,0,0,41,2,114,142,0,0,0,218, ++ 6,102,105,110,100,101,114,114,8,0,0,0,114,8,0,0, ++ 0,114,9,0,0,0,114,79,1,0,0,48,5,0,0,115, ++ 14,0,0,0,22,4,8,1,10,1,10,1,8,1,2,128, ++ 4,252,122,28,80,97,116,104,70,105,110,100,101,114,46,105, ++ 110,118,97,108,105,100,97,116,101,95,99,97,99,104,101,115, ++ 99,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0, ++ 0,9,0,0,0,67,0,0,0,115,76,0,0,0,116,0, ++ 106,1,100,1,117,1,114,14,116,0,106,1,115,14,116,2, ++ 160,3,100,2,116,4,161,2,1,0,116,0,106,1,68,0, ++ 93,18,125,1,122,7,124,1,124,0,131,1,87,0,2,0, ++ 1,0,83,0,4,0,116,5,121,35,1,0,1,0,1,0, ++ 89,0,113,17,119,0,100,1,83,0,41,3,122,46,83,101, ++ 97,114,99,104,32,115,121,115,46,112,97,116,104,95,104,111, ++ 111,107,115,32,102,111,114,32,97,32,102,105,110,100,101,114, ++ 32,102,111,114,32,39,112,97,116,104,39,46,78,122,23,115, ++ 121,115,46,112,97,116,104,95,104,111,111,107,115,32,105,115, ++ 32,101,109,112,116,121,41,6,114,16,0,0,0,218,10,112, ++ 97,116,104,95,104,111,111,107,115,114,101,0,0,0,114,102, ++ 0,0,0,114,163,0,0,0,114,143,0,0,0,41,2,114, ++ 67,0,0,0,90,4,104,111,111,107,114,8,0,0,0,114, ++ 8,0,0,0,114,9,0,0,0,218,11,95,112,97,116,104, ++ 95,104,111,111,107,115,58,5,0,0,115,18,0,0,0,16, ++ 3,12,1,10,1,2,1,14,1,12,1,4,1,2,255,4, ++ 3,122,22,80,97,116,104,70,105,110,100,101,114,46,95,112, ++ 97,116,104,95,104,111,111,107,115,99,2,0,0,0,0,0, ++ 0,0,0,0,0,0,3,0,0,0,8,0,0,0,67,0, ++ 0,0,115,100,0,0,0,124,1,100,1,107,2,114,21,122, ++ 6,116,0,160,1,161,0,125,1,87,0,110,10,4,0,116, ++ 2,121,20,1,0,1,0,1,0,89,0,100,2,83,0,119, ++ 0,122,8,116,3,106,4,124,1,25,0,125,2,87,0,124, ++ 2,83,0,4,0,116,5,121,49,1,0,1,0,1,0,124, ++ 0,160,6,124,1,161,1,125,2,124,2,116,3,106,4,124, ++ 1,60,0,89,0,124,2,83,0,119,0,41,3,122,210,71, ++ 101,116,32,116,104,101,32,102,105,110,100,101,114,32,102,111, ++ 114,32,116,104,101,32,112,97,116,104,32,101,110,116,114,121, ++ 32,102,114,111,109,32,115,121,115,46,112,97,116,104,95,105, ++ 109,112,111,114,116,101,114,95,99,97,99,104,101,46,10,10, ++ 32,32,32,32,32,32,32,32,73,102,32,116,104,101,32,112, ++ 97,116,104,32,101,110,116,114,121,32,105,115,32,110,111,116, ++ 32,105,110,32,116,104,101,32,99,97,99,104,101,44,32,102, ++ 105,110,100,32,116,104,101,32,97,112,112,114,111,112,114,105, ++ 97,116,101,32,102,105,110,100,101,114,10,32,32,32,32,32, ++ 32,32,32,97,110,100,32,99,97,99,104,101,32,105,116,46, ++ 32,73,102,32,110,111,32,102,105,110,100,101,114,32,105,115, ++ 32,97,118,97,105,108,97,98,108,101,44,32,115,116,111,114, ++ 101,32,78,111,110,101,46,10,10,32,32,32,32,32,32,32, ++ 32,114,11,0,0,0,78,41,7,114,19,0,0,0,114,84, ++ 0,0,0,218,17,70,105,108,101,78,111,116,70,111,117,110, ++ 100,69,114,114,111,114,114,16,0,0,0,114,81,1,0,0, ++ 218,8,75,101,121,69,114,114,111,114,114,85,1,0,0,41, ++ 3,114,222,0,0,0,114,67,0,0,0,114,83,1,0,0, ++ 114,8,0,0,0,114,8,0,0,0,114,9,0,0,0,218, ++ 20,95,112,97,116,104,95,105,109,112,111,114,116,101,114,95, ++ 99,97,99,104,101,71,5,0,0,115,28,0,0,0,8,8, ++ 2,1,12,1,12,1,6,3,2,253,2,4,12,1,4,4, ++ 12,253,10,1,12,1,4,1,2,253,122,31,80,97,116,104, ++ 70,105,110,100,101,114,46,95,112,97,116,104,95,105,109,112, ++ 111,114,116,101,114,95,99,97,99,104,101,99,3,0,0,0, ++ 0,0,0,0,0,0,0,0,7,0,0,0,4,0,0,0, ++ 67,0,0,0,115,138,0,0,0,116,0,124,2,100,1,131, ++ 2,114,27,116,1,160,2,124,2,161,1,155,0,100,2,157, ++ 2,125,3,116,3,160,4,124,3,116,5,161,2,1,0,124, ++ 2,160,6,124,1,161,1,92,2,125,4,125,5,110,21,116, ++ 1,160,2,124,2,161,1,155,0,100,3,157,2,125,3,116, ++ 3,160,4,124,3,116,5,161,2,1,0,124,2,160,7,124, ++ 1,161,1,125,4,103,0,125,5,124,4,100,0,117,1,114, ++ 58,116,1,160,8,124,1,124,4,161,2,83,0,116,1,160, ++ 9,124,1,100,0,161,2,125,6,124,5,124,6,95,10,124, ++ 6,83,0,41,4,78,114,162,0,0,0,122,53,46,102,105, ++ 110,100,95,115,112,101,99,40,41,32,110,111,116,32,102,111, ++ 117,110,100,59,32,102,97,108,108,105,110,103,32,98,97,99, ++ 107,32,116,111,32,102,105,110,100,95,108,111,97,100,101,114, ++ 40,41,122,53,46,102,105,110,100,95,115,112,101,99,40,41, ++ 32,110,111,116,32,102,111,117,110,100,59,32,102,97,108,108, ++ 105,110,103,32,98,97,99,107,32,116,111,32,102,105,110,100, ++ 95,109,111,100,117,108,101,40,41,41,11,114,154,0,0,0, ++ 114,160,0,0,0,90,12,95,111,98,106,101,99,116,95,110, ++ 97,109,101,114,101,0,0,0,114,102,0,0,0,114,163,0, ++ 0,0,114,162,0,0,0,114,230,0,0,0,114,225,0,0, ++ 0,114,208,0,0,0,114,203,0,0,0,41,7,114,222,0, ++ 0,0,114,164,0,0,0,114,83,1,0,0,114,167,0,0, ++ 0,114,165,0,0,0,114,166,0,0,0,114,211,0,0,0, ++ 114,8,0,0,0,114,8,0,0,0,114,9,0,0,0,218, ++ 16,95,108,101,103,97,99,121,95,103,101,116,95,115,112,101, ++ 99,93,5,0,0,115,26,0,0,0,10,4,16,1,12,2, ++ 16,1,16,2,12,2,10,1,4,1,8,1,12,1,12,1, ++ 6,1,4,1,122,27,80,97,116,104,70,105,110,100,101,114, ++ 46,95,108,101,103,97,99,121,95,103,101,116,95,115,112,101, ++ 99,78,99,4,0,0,0,0,0,0,0,0,0,0,0,9, ++ 0,0,0,5,0,0,0,67,0,0,0,115,166,0,0,0, ++ 103,0,125,4,124,2,68,0,93,67,125,5,116,0,124,5, ++ 116,1,116,2,102,2,131,2,115,14,113,4,124,0,160,3, ++ 124,5,161,1,125,6,124,6,100,1,117,1,114,71,116,4, ++ 124,6,100,2,131,2,114,35,124,6,160,5,124,1,124,3, ++ 161,2,125,7,110,6,124,0,160,6,124,1,124,6,161,2, ++ 125,7,124,7,100,1,117,0,114,46,113,4,124,7,106,7, ++ 100,1,117,1,114,55,124,7,2,0,1,0,83,0,124,7, ++ 106,8,125,8,124,8,100,1,117,0,114,66,116,9,100,3, ++ 131,1,130,1,124,4,160,10,124,8,161,1,1,0,113,4, ++ 116,11,160,12,124,1,100,1,161,2,125,7,124,4,124,7, ++ 95,8,124,7,83,0,41,4,122,63,70,105,110,100,32,116, ++ 104,101,32,108,111,97,100,101,114,32,111,114,32,110,97,109, ++ 101,115,112,97,99,101,95,112,97,116,104,32,102,111,114,32, ++ 116,104,105,115,32,109,111,100,117,108,101,47,112,97,99,107, ++ 97,103,101,32,110,97,109,101,46,78,114,227,0,0,0,122, ++ 19,115,112,101,99,32,109,105,115,115,105,110,103,32,108,111, ++ 97,100,101,114,41,13,114,186,0,0,0,114,111,0,0,0, ++ 218,5,98,121,116,101,115,114,88,1,0,0,114,154,0,0, ++ 0,114,227,0,0,0,114,89,1,0,0,114,165,0,0,0, ++ 114,203,0,0,0,114,143,0,0,0,114,192,0,0,0,114, ++ 160,0,0,0,114,208,0,0,0,41,9,114,222,0,0,0, ++ 114,164,0,0,0,114,67,0,0,0,114,226,0,0,0,218, ++ 14,110,97,109,101,115,112,97,99,101,95,112,97,116,104,90, ++ 5,101,110,116,114,121,114,83,1,0,0,114,211,0,0,0, ++ 114,166,0,0,0,114,8,0,0,0,114,8,0,0,0,114, ++ 9,0,0,0,218,9,95,103,101,116,95,115,112,101,99,114, ++ 5,0,0,115,42,0,0,0,4,5,8,1,14,1,2,1, ++ 10,1,8,1,10,1,14,1,12,2,8,1,2,1,10,1, ++ 8,1,6,1,8,1,8,1,10,5,2,128,12,2,6,1, ++ 4,1,122,20,80,97,116,104,70,105,110,100,101,114,46,95, ++ 103,101,116,95,115,112,101,99,99,4,0,0,0,0,0,0, ++ 0,0,0,0,0,6,0,0,0,5,0,0,0,67,0,0, ++ 0,115,94,0,0,0,124,2,100,1,117,0,114,7,116,0, ++ 106,1,125,2,124,0,160,2,124,1,124,2,124,3,161,3, ++ 125,4,124,4,100,1,117,0,114,20,100,1,83,0,124,4, ++ 106,3,100,1,117,0,114,45,124,4,106,4,125,5,124,5, ++ 114,43,100,1,124,4,95,5,116,6,124,1,124,5,124,0, ++ 106,2,131,3,124,4,95,4,124,4,83,0,100,1,83,0, ++ 124,4,83,0,41,2,122,141,84,114,121,32,116,111,32,102, ++ 105,110,100,32,97,32,115,112,101,99,32,102,111,114,32,39, ++ 102,117,108,108,110,97,109,101,39,32,111,110,32,115,121,115, ++ 46,112,97,116,104,32,111,114,32,39,112,97,116,104,39,46, ++ 10,10,32,32,32,32,32,32,32,32,84,104,101,32,115,101, ++ 97,114,99,104,32,105,115,32,98,97,115,101,100,32,111,110, ++ 32,115,121,115,46,112,97,116,104,95,104,111,111,107,115,32, ++ 97,110,100,32,115,121,115,46,112,97,116,104,95,105,109,112, ++ 111,114,116,101,114,95,99,97,99,104,101,46,10,32,32,32, ++ 32,32,32,32,32,78,41,7,114,16,0,0,0,114,67,0, ++ 0,0,114,92,1,0,0,114,165,0,0,0,114,203,0,0, ++ 0,114,206,0,0,0,114,48,1,0,0,41,6,114,222,0, ++ 0,0,114,164,0,0,0,114,67,0,0,0,114,226,0,0, ++ 0,114,211,0,0,0,114,91,1,0,0,114,8,0,0,0, ++ 114,8,0,0,0,114,9,0,0,0,114,227,0,0,0,146, ++ 5,0,0,115,26,0,0,0,8,6,6,1,14,1,8,1, ++ 4,1,10,1,6,1,4,1,6,3,16,1,4,1,4,2, ++ 4,2,122,20,80,97,116,104,70,105,110,100,101,114,46,102, ++ 105,110,100,95,115,112,101,99,99,3,0,0,0,0,0,0, ++ 0,0,0,0,0,4,0,0,0,4,0,0,0,67,0,0, ++ 0,115,42,0,0,0,116,0,160,1,100,1,116,2,161,2, ++ 1,0,124,0,160,3,124,1,124,2,161,2,125,3,124,3, ++ 100,2,117,0,114,18,100,2,83,0,124,3,106,4,83,0, ++ 41,3,122,170,102,105,110,100,32,116,104,101,32,109,111,100, ++ 117,108,101,32,111,110,32,115,121,115,46,112,97,116,104,32, ++ 111,114,32,39,112,97,116,104,39,32,98,97,115,101,100,32, ++ 111,110,32,115,121,115,46,112,97,116,104,95,104,111,111,107, ++ 115,32,97,110,100,10,32,32,32,32,32,32,32,32,115,121, + 115,46,112,97,116,104,95,105,109,112,111,114,116,101,114,95, +- 99,97,99,104,101,46,10,32,32,32,32,32,32,32,32,78, +- 41,7,114,15,0,0,0,114,65,0,0,0,114,91,1,0, +- 0,114,164,0,0,0,114,202,0,0,0,114,205,0,0,0, +- 114,47,1,0,0,41,6,114,221,0,0,0,114,163,0,0, +- 0,114,65,0,0,0,114,225,0,0,0,114,210,0,0,0, +- 114,90,1,0,0,114,7,0,0,0,114,7,0,0,0,114, +- 8,0,0,0,114,226,0,0,0,142,5,0,0,115,26,0, +- 0,0,8,6,6,1,14,1,8,1,4,1,10,1,6,1, +- 4,1,6,3,16,1,4,1,4,2,4,2,122,20,80,97, +- 116,104,70,105,110,100,101,114,46,102,105,110,100,95,115,112, +- 101,99,99,3,0,0,0,0,0,0,0,0,0,0,0,4, +- 0,0,0,4,0,0,0,67,0,0,0,115,42,0,0,0, +- 116,0,160,1,100,1,116,2,161,2,1,0,124,0,160,3, +- 124,1,124,2,161,2,125,3,124,3,100,2,117,0,114,18, +- 100,2,83,0,124,3,106,4,83,0,41,3,122,170,102,105, +- 110,100,32,116,104,101,32,109,111,100,117,108,101,32,111,110, +- 32,115,121,115,46,112,97,116,104,32,111,114,32,39,112,97, +- 116,104,39,32,98,97,115,101,100,32,111,110,32,115,121,115, +- 46,112,97,116,104,95,104,111,111,107,115,32,97,110,100,10, +- 32,32,32,32,32,32,32,32,115,121,115,46,112,97,116,104, +- 95,105,109,112,111,114,116,101,114,95,99,97,99,104,101,46, +- 10,10,32,32,32,32,32,32,32,32,84,104,105,115,32,109, +- 101,116,104,111,100,32,105,115,32,100,101,112,114,101,99,97, +- 116,101,100,46,32,32,85,115,101,32,102,105,110,100,95,115, +- 112,101,99,40,41,32,105,110,115,116,101,97,100,46,10,10, +- 32,32,32,32,32,32,32,32,122,101,80,97,116,104,70,105, +- 110,100,101,114,46,102,105,110,100,95,109,111,100,117,108,101, +- 40,41,32,105,115,32,100,101,112,114,101,99,97,116,101,100, +- 32,97,110,100,32,115,108,97,116,101,100,32,102,111,114,32, +- 114,101,109,111,118,97,108,32,105,110,32,80,121,116,104,111, +- 110,32,51,46,49,50,59,32,117,115,101,32,102,105,110,100, +- 95,115,112,101,99,40,41,32,105,110,115,116,101,97,100,78, +- 114,227,0,0,0,114,228,0,0,0,114,7,0,0,0,114, +- 7,0,0,0,114,8,0,0,0,114,229,0,0,0,166,5, +- 0,0,115,14,0,0,0,6,8,2,2,4,254,12,3,8, +- 1,4,1,6,1,122,22,80,97,116,104,70,105,110,100,101, +- 114,46,102,105,110,100,95,109,111,100,117,108,101,99,0,0, +- 0,0,0,0,0,0,0,0,0,0,3,0,0,0,4,0, +- 0,0,79,0,0,0,115,28,0,0,0,100,1,100,2,108, +- 0,109,1,125,2,1,0,124,2,106,2,124,0,105,0,124, +- 1,164,1,142,1,83,0,41,4,97,32,1,0,0,10,32, +- 32,32,32,32,32,32,32,70,105,110,100,32,100,105,115,116, +- 114,105,98,117,116,105,111,110,115,46,10,10,32,32,32,32, +- 32,32,32,32,82,101,116,117,114,110,32,97,110,32,105,116, +- 101,114,97,98,108,101,32,111,102,32,97,108,108,32,68,105, +- 115,116,114,105,98,117,116,105,111,110,32,105,110,115,116,97, +- 110,99,101,115,32,99,97,112,97,98,108,101,32,111,102,10, +- 32,32,32,32,32,32,32,32,108,111,97,100,105,110,103,32, +- 116,104,101,32,109,101,116,97,100,97,116,97,32,102,111,114, +- 32,112,97,99,107,97,103,101,115,32,109,97,116,99,104,105, +- 110,103,32,96,96,99,111,110,116,101,120,116,46,110,97,109, +- 101,96,96,10,32,32,32,32,32,32,32,32,40,111,114,32, +- 97,108,108,32,110,97,109,101,115,32,105,102,32,96,96,78, +- 111,110,101,96,96,32,105,110,100,105,99,97,116,101,100,41, +- 32,97,108,111,110,103,32,116,104,101,32,112,97,116,104,115, +- 32,105,110,32,116,104,101,32,108,105,115,116,10,32,32,32, +- 32,32,32,32,32,111,102,32,100,105,114,101,99,116,111,114, +- 105,101,115,32,96,96,99,111,110,116,101,120,116,46,112,97, +- 116,104,96,96,46,10,32,32,32,32,32,32,32,32,114,0, +- 0,0,0,41,1,218,18,77,101,116,97,100,97,116,97,80, +- 97,116,104,70,105,110,100,101,114,78,41,3,90,18,105,109, +- 112,111,114,116,108,105,98,46,109,101,116,97,100,97,116,97, +- 114,92,1,0,0,218,18,102,105,110,100,95,100,105,115,116, +- 114,105,98,117,116,105,111,110,115,41,3,114,144,0,0,0, +- 114,145,0,0,0,114,92,1,0,0,114,7,0,0,0,114, +- 7,0,0,0,114,8,0,0,0,114,93,1,0,0,182,5, +- 0,0,115,4,0,0,0,12,10,16,1,122,29,80,97,116, +- 104,70,105,110,100,101,114,46,102,105,110,100,95,100,105,115, +- 116,114,105,98,117,116,105,111,110,115,114,69,0,0,0,114, +- 230,0,0,0,41,14,114,150,0,0,0,114,149,0,0,0, +- 114,151,0,0,0,114,152,0,0,0,114,233,0,0,0,114, +- 78,1,0,0,114,84,1,0,0,114,234,0,0,0,114,87, +- 1,0,0,114,88,1,0,0,114,91,1,0,0,114,226,0, +- 0,0,114,229,0,0,0,114,93,1,0,0,114,7,0,0, +- 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, +- 114,77,1,0,0,40,5,0,0,115,36,0,0,0,8,0, +- 4,2,2,2,10,1,2,9,10,1,2,12,10,1,2,21, +- 10,1,2,20,12,1,2,31,12,1,2,23,12,1,2,15, +- 14,1,114,77,1,0,0,99,0,0,0,0,0,0,0,0, +- 0,0,0,0,0,0,0,0,3,0,0,0,64,0,0,0, +- 115,90,0,0,0,101,0,90,1,100,0,90,2,100,1,90, +- 3,100,2,100,3,132,0,90,4,100,4,100,5,132,0,90, +- 5,101,6,90,7,100,6,100,7,132,0,90,8,100,8,100, +- 9,132,0,90,9,100,19,100,11,100,12,132,1,90,10,100, +- 13,100,14,132,0,90,11,101,12,100,15,100,16,132,0,131, +- 1,90,13,100,17,100,18,132,0,90,14,100,10,83,0,41, +- 20,218,10,70,105,108,101,70,105,110,100,101,114,122,172,70, +- 105,108,101,45,98,97,115,101,100,32,102,105,110,100,101,114, +- 46,10,10,32,32,32,32,73,110,116,101,114,97,99,116,105, +- 111,110,115,32,119,105,116,104,32,116,104,101,32,102,105,108, +- 101,32,115,121,115,116,101,109,32,97,114,101,32,99,97,99, +- 104,101,100,32,102,111,114,32,112,101,114,102,111,114,109,97, +- 110,99,101,44,32,98,101,105,110,103,10,32,32,32,32,114, +- 101,102,114,101,115,104,101,100,32,119,104,101,110,32,116,104, +- 101,32,100,105,114,101,99,116,111,114,121,32,116,104,101,32, +- 102,105,110,100,101,114,32,105,115,32,104,97,110,100,108,105, +- 110,103,32,104,97,115,32,98,101,101,110,32,109,111,100,105, +- 102,105,101,100,46,10,10,32,32,32,32,99,2,0,0,0, +- 0,0,0,0,0,0,0,0,5,0,0,0,6,0,0,0, +- 7,0,0,0,115,112,0,0,0,103,0,125,3,124,2,68, +- 0,93,16,92,2,137,0,125,4,124,3,160,0,135,0,102, +- 1,100,1,100,2,132,8,124,4,68,0,131,1,161,1,1, +- 0,113,4,124,3,124,0,95,1,124,1,112,27,100,3,124, +- 0,95,2,116,3,124,0,106,2,131,1,115,43,116,4,116, +- 5,160,6,161,0,124,0,106,2,131,2,124,0,95,2,100, +- 4,124,0,95,7,116,8,131,0,124,0,95,9,116,8,131, +- 0,124,0,95,10,100,5,83,0,41,6,122,154,73,110,105, +- 116,105,97,108,105,122,101,32,119,105,116,104,32,116,104,101, +- 32,112,97,116,104,32,116,111,32,115,101,97,114,99,104,32, +- 111,110,32,97,110,100,32,97,32,118,97,114,105,97,98,108, +- 101,32,110,117,109,98,101,114,32,111,102,10,32,32,32,32, +- 32,32,32,32,50,45,116,117,112,108,101,115,32,99,111,110, +- 116,97,105,110,105,110,103,32,116,104,101,32,108,111,97,100, +- 101,114,32,97,110,100,32,116,104,101,32,102,105,108,101,32, +- 115,117,102,102,105,120,101,115,32,116,104,101,32,108,111,97, +- 100,101,114,10,32,32,32,32,32,32,32,32,114,101,99,111, +- 103,110,105,122,101,115,46,99,1,0,0,0,0,0,0,0, +- 0,0,0,0,2,0,0,0,3,0,0,0,51,0,0,0, +- 115,24,0,0,0,129,0,124,0,93,7,125,1,124,1,136, +- 0,102,2,86,0,1,0,113,2,100,0,83,0,114,69,0, +- 0,0,114,7,0,0,0,114,43,1,0,0,169,1,114,164, +- 0,0,0,114,7,0,0,0,114,8,0,0,0,114,9,0, +- 0,0,211,5,0,0,115,4,0,0,0,2,128,22,0,122, +- 38,70,105,108,101,70,105,110,100,101,114,46,95,95,105,110, +- 105,116,95,95,46,60,108,111,99,97,108,115,62,46,60,103, +- 101,110,101,120,112,114,62,114,97,0,0,0,114,130,0,0, +- 0,78,41,11,114,191,0,0,0,218,8,95,108,111,97,100, +- 101,114,115,114,65,0,0,0,114,86,0,0,0,114,67,0, +- 0,0,114,18,0,0,0,114,82,0,0,0,218,11,95,112, +- 97,116,104,95,109,116,105,109,101,218,3,115,101,116,218,11, +- 95,112,97,116,104,95,99,97,99,104,101,218,19,95,114,101, +- 108,97,120,101,100,95,112,97,116,104,95,99,97,99,104,101, +- 41,5,114,143,0,0,0,114,65,0,0,0,218,14,108,111, +- 97,100,101,114,95,100,101,116,97,105,108,115,90,7,108,111, +- 97,100,101,114,115,114,212,0,0,0,114,7,0,0,0,114, +- 95,1,0,0,114,8,0,0,0,114,236,0,0,0,205,5, +- 0,0,115,20,0,0,0,4,4,12,1,26,1,6,1,10, +- 2,10,1,18,1,6,1,8,1,12,1,122,19,70,105,108, +- 101,70,105,110,100,101,114,46,95,95,105,110,105,116,95,95, +- 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0, +- 0,2,0,0,0,67,0,0,0,115,10,0,0,0,100,1, +- 124,0,95,0,100,2,83,0,41,3,122,31,73,110,118,97, +- 108,105,100,97,116,101,32,116,104,101,32,100,105,114,101,99, +- 116,111,114,121,32,109,116,105,109,101,46,114,130,0,0,0, +- 78,41,1,114,97,1,0,0,114,21,1,0,0,114,7,0, +- 0,0,114,7,0,0,0,114,8,0,0,0,114,78,1,0, +- 0,221,5,0,0,114,81,0,0,0,122,28,70,105,108,101, +- 70,105,110,100,101,114,46,105,110,118,97,108,105,100,97,116, +- 101,95,99,97,99,104,101,115,99,2,0,0,0,0,0,0, +- 0,0,0,0,0,3,0,0,0,4,0,0,0,67,0,0, +- 0,115,54,0,0,0,116,0,160,1,100,1,116,2,161,2, +- 1,0,124,0,160,3,124,1,161,1,125,2,124,2,100,2, +- 117,0,114,19,100,2,103,0,102,2,83,0,124,2,106,4, +- 124,2,106,5,112,25,103,0,102,2,83,0,41,3,122,197, +- 84,114,121,32,116,111,32,102,105,110,100,32,97,32,108,111, +- 97,100,101,114,32,102,111,114,32,116,104,101,32,115,112,101, +- 99,105,102,105,101,100,32,109,111,100,117,108,101,44,32,111, +- 114,32,116,104,101,32,110,97,109,101,115,112,97,99,101,10, +- 32,32,32,32,32,32,32,32,112,97,99,107,97,103,101,32, +- 112,111,114,116,105,111,110,115,46,32,82,101,116,117,114,110, +- 115,32,40,108,111,97,100,101,114,44,32,108,105,115,116,45, +- 111,102,45,112,111,114,116,105,111,110,115,41,46,10,10,32, +- 32,32,32,32,32,32,32,84,104,105,115,32,109,101,116,104, +- 111,100,32,105,115,32,100,101,112,114,101,99,97,116,101,100, +- 46,32,32,85,115,101,32,102,105,110,100,95,115,112,101,99, +- 40,41,32,105,110,115,116,101,97,100,46,10,10,32,32,32, +- 32,32,32,32,32,122,101,70,105,108,101,70,105,110,100,101, +- 114,46,102,105,110,100,95,108,111,97,100,101,114,40,41,32, +- 105,115,32,100,101,112,114,101,99,97,116,101,100,32,97,110, +- 100,32,115,108,97,116,101,100,32,102,111,114,32,114,101,109, +- 111,118,97,108,32,105,110,32,80,121,116,104,111,110,32,51, +- 46,49,50,59,32,117,115,101,32,102,105,110,100,95,115,112, +- 101,99,40,41,32,105,110,115,116,101,97,100,78,41,6,114, +- 99,0,0,0,114,100,0,0,0,114,101,0,0,0,114,226, +- 0,0,0,114,164,0,0,0,114,202,0,0,0,41,3,114, +- 143,0,0,0,114,163,0,0,0,114,210,0,0,0,114,7, +- 0,0,0,114,7,0,0,0,114,8,0,0,0,114,161,0, +- 0,0,227,5,0,0,115,14,0,0,0,6,7,2,2,4, +- 254,10,3,8,1,8,1,16,1,122,22,70,105,108,101,70, +- 105,110,100,101,114,46,102,105,110,100,95,108,111,97,100,101, +- 114,99,6,0,0,0,0,0,0,0,0,0,0,0,7,0, +- 0,0,6,0,0,0,67,0,0,0,115,26,0,0,0,124, +- 1,124,2,124,3,131,2,125,6,116,0,124,2,124,3,124, +- 6,124,4,100,1,141,4,83,0,41,2,78,114,201,0,0, +- 0,41,1,114,213,0,0,0,41,7,114,143,0,0,0,114, +- 211,0,0,0,114,163,0,0,0,114,65,0,0,0,90,4, +- 115,109,115,108,114,225,0,0,0,114,164,0,0,0,114,7, +- 0,0,0,114,7,0,0,0,114,8,0,0,0,114,91,1, +- 0,0,242,5,0,0,115,8,0,0,0,10,1,8,1,2, +- 1,6,255,122,20,70,105,108,101,70,105,110,100,101,114,46, +- 95,103,101,116,95,115,112,101,99,78,99,3,0,0,0,0, +- 0,0,0,0,0,0,0,14,0,0,0,9,0,0,0,67, +- 0,0,0,115,122,1,0,0,100,1,125,3,124,1,160,0, +- 100,2,161,1,100,3,25,0,125,4,122,12,116,1,124,0, +- 106,2,112,17,116,3,160,4,161,0,131,1,106,5,125,5, +- 87,0,110,11,4,0,116,6,121,32,1,0,1,0,1,0, +- 100,4,125,5,89,0,110,1,119,0,124,5,124,0,106,7, +- 107,3,114,45,124,0,160,8,161,0,1,0,124,5,124,0, +- 95,7,116,9,131,0,114,56,124,0,106,10,125,6,124,4, +- 160,11,161,0,125,7,110,5,124,0,106,12,125,6,124,4, +- 125,7,124,7,124,6,118,0,114,108,116,13,124,0,106,2, +- 124,4,131,2,125,8,124,0,106,14,68,0,93,29,92,2, +- 125,9,125,10,100,5,124,9,23,0,125,11,116,13,124,8, +- 124,11,131,2,125,12,116,15,124,12,131,1,114,103,124,0, +- 160,16,124,10,124,1,124,12,124,8,103,1,124,2,161,5, +- 2,0,1,0,83,0,113,74,116,17,124,8,131,1,125,3, +- 124,0,106,14,68,0,93,55,92,2,125,9,125,10,122,10, +- 116,13,124,0,106,2,124,4,124,9,23,0,131,2,125,12, +- 87,0,110,11,4,0,116,18,121,136,1,0,1,0,1,0, +- 89,0,1,0,100,6,83,0,119,0,116,19,106,20,100,7, +- 124,12,100,3,100,8,141,3,1,0,124,7,124,9,23,0, +- 124,6,118,0,114,166,116,15,124,12,131,1,114,166,124,0, +- 160,16,124,10,124,1,124,12,100,6,124,2,161,5,2,0, +- 1,0,83,0,113,111,124,3,114,187,116,19,160,20,100,9, +- 124,8,161,2,1,0,116,19,160,21,124,1,100,6,161,2, +- 125,13,124,8,103,1,124,13,95,22,124,13,83,0,100,6, +- 83,0,41,10,122,111,84,114,121,32,116,111,32,102,105,110, +- 100,32,97,32,115,112,101,99,32,102,111,114,32,116,104,101, +- 32,115,112,101,99,105,102,105,101,100,32,109,111,100,117,108, +- 101,46,10,10,32,32,32,32,32,32,32,32,82,101,116,117, +- 114,110,115,32,116,104,101,32,109,97,116,99,104,105,110,103, +- 32,115,112,101,99,44,32,111,114,32,78,111,110,101,32,105, +- 102,32,110,111,116,32,102,111,117,110,100,46,10,32,32,32, +- 32,32,32,32,32,70,114,97,0,0,0,114,44,0,0,0, +- 114,130,0,0,0,114,236,0,0,0,78,122,9,116,114,121, +- 105,110,103,32,123,125,41,1,90,9,118,101,114,98,111,115, +- 105,116,121,122,25,112,111,115,115,105,98,108,101,32,110,97, +- 109,101,115,112,97,99,101,32,102,111,114,32,123,125,41,23, +- 114,104,0,0,0,114,75,0,0,0,114,65,0,0,0,114, +- 18,0,0,0,114,82,0,0,0,114,35,1,0,0,114,76, +- 0,0,0,114,97,1,0,0,218,11,95,102,105,108,108,95, +- 99,97,99,104,101,114,21,0,0,0,114,100,1,0,0,114, +- 131,0,0,0,114,99,1,0,0,114,67,0,0,0,114,96, +- 1,0,0,114,80,0,0,0,114,91,1,0,0,114,83,0, +- 0,0,114,111,0,0,0,114,159,0,0,0,114,173,0,0, +- 0,114,207,0,0,0,114,202,0,0,0,41,14,114,143,0, +- 0,0,114,163,0,0,0,114,225,0,0,0,90,12,105,115, +- 95,110,97,109,101,115,112,97,99,101,90,11,116,97,105,108, +- 95,109,111,100,117,108,101,114,193,0,0,0,90,5,99,97, +- 99,104,101,90,12,99,97,99,104,101,95,109,111,100,117,108, +- 101,90,9,98,97,115,101,95,112,97,116,104,114,44,1,0, +- 0,114,211,0,0,0,90,13,105,110,105,116,95,102,105,108, +- 101,110,97,109,101,90,9,102,117,108,108,95,112,97,116,104, +- 114,210,0,0,0,114,7,0,0,0,114,7,0,0,0,114, +- 8,0,0,0,114,226,0,0,0,247,5,0,0,115,86,0, +- 0,0,4,5,14,1,2,1,24,1,12,1,8,1,2,255, +- 10,2,8,1,6,1,6,2,6,1,10,1,6,2,4,1, +- 8,2,12,1,14,1,8,1,10,1,8,1,24,1,2,255, +- 8,5,14,2,2,1,20,1,12,1,8,1,2,255,16,2, +- 12,1,8,1,10,1,4,1,8,255,2,128,4,2,12,1, +- 12,1,8,1,4,1,4,1,122,20,70,105,108,101,70,105, +- 110,100,101,114,46,102,105,110,100,95,115,112,101,99,99,1, +- 0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,10, +- 0,0,0,67,0,0,0,115,192,0,0,0,124,0,106,0, +- 125,1,122,11,116,1,160,2,124,1,112,11,116,1,160,3, +- 161,0,161,1,125,2,87,0,110,14,4,0,116,4,116,5, +- 116,6,102,3,121,28,1,0,1,0,1,0,103,0,125,2, +- 89,0,110,1,119,0,116,7,106,8,160,9,100,1,161,1, +- 115,41,116,10,124,2,131,1,124,0,95,11,110,37,116,10, +- 131,0,125,3,124,2,68,0,93,28,125,4,124,4,160,12, +- 100,2,161,1,92,3,125,5,125,6,125,7,124,6,114,67, +- 100,3,160,13,124,5,124,7,160,14,161,0,161,2,125,8, +- 110,2,124,5,125,8,124,3,160,15,124,8,161,1,1,0, +- 113,46,124,3,124,0,95,11,116,7,106,8,160,9,116,16, +- 161,1,114,94,100,4,100,5,132,0,124,2,68,0,131,1, +- 124,0,95,17,100,6,83,0,100,6,83,0,41,7,122,68, +- 70,105,108,108,32,116,104,101,32,99,97,99,104,101,32,111, +- 102,32,112,111,116,101,110,116,105,97,108,32,109,111,100,117, +- 108,101,115,32,97,110,100,32,112,97,99,107,97,103,101,115, +- 32,102,111,114,32,116,104,105,115,32,100,105,114,101,99,116, +- 111,114,121,46,114,14,0,0,0,114,97,0,0,0,114,88, +- 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, +- 2,0,0,0,4,0,0,0,83,0,0,0,115,20,0,0, +- 0,104,0,124,0,93,6,125,1,124,1,160,0,161,0,146, +- 2,113,2,83,0,114,7,0,0,0,41,1,114,131,0,0, +- 0,41,2,114,5,0,0,0,90,2,102,110,114,7,0,0, +- 0,114,7,0,0,0,114,8,0,0,0,114,13,0,0,0, +- 71,6,0,0,115,2,0,0,0,20,0,122,41,70,105,108, +- 101,70,105,110,100,101,114,46,95,102,105,108,108,95,99,97, +- 99,104,101,46,60,108,111,99,97,108,115,62,46,60,115,101, +- 116,99,111,109,112,62,78,41,18,114,65,0,0,0,114,18, +- 0,0,0,90,7,108,105,115,116,100,105,114,114,82,0,0, +- 0,114,85,1,0,0,218,15,80,101,114,109,105,115,115,105, +- 111,110,69,114,114,111,114,218,18,78,111,116,65,68,105,114, +- 101,99,116,111,114,121,69,114,114,111,114,114,15,0,0,0, +- 114,25,0,0,0,114,26,0,0,0,114,98,1,0,0,114, +- 99,1,0,0,114,126,0,0,0,114,89,0,0,0,114,131, +- 0,0,0,218,3,97,100,100,114,27,0,0,0,114,100,1, +- 0,0,41,9,114,143,0,0,0,114,65,0,0,0,90,8, +- 99,111,110,116,101,110,116,115,90,21,108,111,119,101,114,95, +- 115,117,102,102,105,120,95,99,111,110,116,101,110,116,115,114, +- 70,1,0,0,114,141,0,0,0,114,54,1,0,0,114,44, +- 1,0,0,90,8,110,101,119,95,110,97,109,101,114,7,0, +- 0,0,114,7,0,0,0,114,8,0,0,0,114,102,1,0, +- 0,42,6,0,0,115,38,0,0,0,6,2,2,1,22,1, +- 18,1,8,3,2,253,12,6,12,1,6,7,8,1,16,1, +- 4,1,18,1,4,2,12,1,6,1,12,1,20,1,4,255, +- 122,22,70,105,108,101,70,105,110,100,101,114,46,95,102,105, +- 108,108,95,99,97,99,104,101,99,1,0,0,0,0,0,0, +- 0,0,0,0,0,3,0,0,0,3,0,0,0,7,0,0, +- 0,115,18,0,0,0,135,0,135,1,102,2,100,1,100,2, +- 132,8,125,2,124,2,83,0,41,4,97,20,1,0,0,65, +- 32,99,108,97,115,115,32,109,101,116,104,111,100,32,119,104, +- 105,99,104,32,114,101,116,117,114,110,115,32,97,32,99,108, +- 111,115,117,114,101,32,116,111,32,117,115,101,32,111,110,32, +- 115,121,115,46,112,97,116,104,95,104,111,111,107,10,32,32, +- 32,32,32,32,32,32,119,104,105,99,104,32,119,105,108,108, +- 32,114,101,116,117,114,110,32,97,110,32,105,110,115,116,97, +- 110,99,101,32,117,115,105,110,103,32,116,104,101,32,115,112, +- 101,99,105,102,105,101,100,32,108,111,97,100,101,114,115,32, +- 97,110,100,32,116,104,101,32,112,97,116,104,10,32,32,32, +- 32,32,32,32,32,99,97,108,108,101,100,32,111,110,32,116, +- 104,101,32,99,108,111,115,117,114,101,46,10,10,32,32,32, +- 32,32,32,32,32,73,102,32,116,104,101,32,112,97,116,104, +- 32,99,97,108,108,101,100,32,111,110,32,116,104,101,32,99, +- 108,111,115,117,114,101,32,105,115,32,110,111,116,32,97,32, +- 100,105,114,101,99,116,111,114,121,44,32,73,109,112,111,114, +- 116,69,114,114,111,114,32,105,115,10,32,32,32,32,32,32, +- 32,32,114,97,105,115,101,100,46,10,10,32,32,32,32,32, +- 32,32,32,99,1,0,0,0,0,0,0,0,0,0,0,0, +- 1,0,0,0,4,0,0,0,19,0,0,0,115,36,0,0, +- 0,116,0,124,0,131,1,115,10,116,1,100,1,124,0,100, +- 2,141,2,130,1,136,0,124,0,103,1,136,1,162,1,82, +- 0,142,0,83,0,41,4,122,45,80,97,116,104,32,104,111, +- 111,107,32,102,111,114,32,105,109,112,111,114,116,108,105,98, +- 46,109,97,99,104,105,110,101,114,121,46,70,105,108,101,70, +- 105,110,100,101,114,46,122,30,111,110,108,121,32,100,105,114, +- 101,99,116,111,114,105,101,115,32,97,114,101,32,115,117,112, +- 112,111,114,116,101,100,114,71,0,0,0,78,41,2,114,83, +- 0,0,0,114,142,0,0,0,114,71,0,0,0,169,2,114, +- 221,0,0,0,114,101,1,0,0,114,7,0,0,0,114,8, +- 0,0,0,218,24,112,97,116,104,95,104,111,111,107,95,102, +- 111,114,95,70,105,108,101,70,105,110,100,101,114,83,6,0, +- 0,115,6,0,0,0,8,2,12,1,16,1,122,54,70,105, +- 108,101,70,105,110,100,101,114,46,112,97,116,104,95,104,111, +- 111,107,46,60,108,111,99,97,108,115,62,46,112,97,116,104, +- 95,104,111,111,107,95,102,111,114,95,70,105,108,101,70,105, +- 110,100,101,114,78,114,7,0,0,0,41,3,114,221,0,0, +- 0,114,101,1,0,0,114,107,1,0,0,114,7,0,0,0, +- 114,106,1,0,0,114,8,0,0,0,218,9,112,97,116,104, +- 95,104,111,111,107,73,6,0,0,115,4,0,0,0,14,10, +- 4,6,122,20,70,105,108,101,70,105,110,100,101,114,46,112, +- 97,116,104,95,104,111,111,107,99,1,0,0,0,0,0,0, +- 0,0,0,0,0,1,0,0,0,3,0,0,0,67,0,0, +- 0,114,67,1,0,0,41,2,78,122,16,70,105,108,101,70, +- 105,110,100,101,114,40,123,33,114,125,41,41,2,114,89,0, +- 0,0,114,65,0,0,0,114,21,1,0,0,114,7,0,0, +- 0,114,7,0,0,0,114,8,0,0,0,114,68,1,0,0, +- 91,6,0,0,114,61,1,0,0,122,19,70,105,108,101,70, +- 105,110,100,101,114,46,95,95,114,101,112,114,95,95,114,69, +- 0,0,0,41,15,114,150,0,0,0,114,149,0,0,0,114, +- 151,0,0,0,114,152,0,0,0,114,236,0,0,0,114,78, +- 1,0,0,114,167,0,0,0,114,229,0,0,0,114,161,0, +- 0,0,114,91,1,0,0,114,226,0,0,0,114,102,1,0, +- 0,114,234,0,0,0,114,108,1,0,0,114,68,1,0,0, +- 114,7,0,0,0,114,7,0,0,0,114,7,0,0,0,114, +- 8,0,0,0,114,94,1,0,0,196,5,0,0,115,24,0, +- 0,0,8,0,4,2,8,7,8,16,4,4,8,2,8,15, +- 10,5,8,51,2,31,10,1,12,17,114,94,1,0,0,99, +- 4,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0, +- 8,0,0,0,67,0,0,0,115,144,0,0,0,124,0,160, +- 0,100,1,161,1,125,4,124,0,160,0,100,2,161,1,125, +- 5,124,4,115,33,124,5,114,18,124,5,106,1,125,4,110, +- 15,124,2,124,3,107,2,114,28,116,2,124,1,124,2,131, +- 2,125,4,110,5,116,3,124,1,124,2,131,2,125,4,124, +- 5,115,42,116,4,124,1,124,2,124,4,100,3,141,3,125, +- 5,122,19,124,5,124,0,100,2,60,0,124,4,124,0,100, +- 1,60,0,124,2,124,0,100,4,60,0,124,3,124,0,100, +- 5,60,0,87,0,100,0,83,0,4,0,116,5,121,71,1, +- 0,1,0,1,0,89,0,100,0,83,0,119,0,41,6,78, +- 218,10,95,95,108,111,97,100,101,114,95,95,218,8,95,95, +- 115,112,101,99,95,95,114,95,1,0,0,90,8,95,95,102, +- 105,108,101,95,95,90,10,95,95,99,97,99,104,101,100,95, +- 95,41,6,218,3,103,101,116,114,164,0,0,0,114,41,1, +- 0,0,114,34,1,0,0,114,213,0,0,0,218,9,69,120, +- 99,101,112,116,105,111,110,41,6,90,2,110,115,114,141,0, +- 0,0,90,8,112,97,116,104,110,97,109,101,90,9,99,112, +- 97,116,104,110,97,109,101,114,164,0,0,0,114,210,0,0, +- 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, +- 218,14,95,102,105,120,95,117,112,95,109,111,100,117,108,101, +- 97,6,0,0,115,36,0,0,0,10,2,10,1,4,1,4, +- 1,8,1,8,1,12,1,10,2,4,1,14,1,2,1,8, +- 1,8,1,8,1,14,1,12,1,6,2,2,254,114,113,1, +- 0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,3, +- 0,0,0,3,0,0,0,67,0,0,0,115,38,0,0,0, +- 116,0,116,1,160,2,161,0,102,2,125,0,116,3,116,4, +- 102,2,125,1,116,5,116,6,102,2,125,2,124,0,124,1, +- 124,2,103,3,83,0,41,2,122,95,82,101,116,117,114,110, +- 115,32,97,32,108,105,115,116,32,111,102,32,102,105,108,101, +- 45,98,97,115,101,100,32,109,111,100,117,108,101,32,108,111, +- 97,100,101,114,115,46,10,10,32,32,32,32,69,97,99,104, +- 32,105,116,101,109,32,105,115,32,97,32,116,117,112,108,101, +- 32,40,108,111,97,100,101,114,44,32,115,117,102,102,105,120, +- 101,115,41,46,10,32,32,32,32,78,41,7,114,30,1,0, +- 0,114,187,0,0,0,218,18,101,120,116,101,110,115,105,111, +- 110,95,115,117,102,102,105,120,101,115,114,34,1,0,0,114, +- 127,0,0,0,114,41,1,0,0,114,113,0,0,0,41,3, +- 90,10,101,120,116,101,110,115,105,111,110,115,90,6,115,111, +- 117,114,99,101,90,8,98,121,116,101,99,111,100,101,114,7, +- 0,0,0,114,7,0,0,0,114,8,0,0,0,114,208,0, +- 0,0,120,6,0,0,115,8,0,0,0,12,5,8,1,8, +- 1,10,1,114,208,0,0,0,99,1,0,0,0,0,0,0, +- 0,0,0,0,0,1,0,0,0,1,0,0,0,67,0,0, +- 0,115,8,0,0,0,124,0,97,0,100,0,83,0,114,69, +- 0,0,0,41,1,114,159,0,0,0,41,1,218,17,95,98, +- 111,111,116,115,116,114,97,112,95,109,111,100,117,108,101,114, +- 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,21, +- 95,115,101,116,95,98,111,111,116,115,116,114,97,112,95,109, +- 111,100,117,108,101,131,6,0,0,115,2,0,0,0,8,2, +- 114,116,1,0,0,99,1,0,0,0,0,0,0,0,0,0, +- 0,0,2,0,0,0,4,0,0,0,67,0,0,0,115,50, +- 0,0,0,116,0,124,0,131,1,1,0,116,1,131,0,125, +- 1,116,2,106,3,160,4,116,5,106,6,124,1,142,0,103, +- 1,161,1,1,0,116,2,106,7,160,8,116,9,161,1,1, +- 0,100,1,83,0,41,2,122,41,73,110,115,116,97,108,108, +- 32,116,104,101,32,112,97,116,104,45,98,97,115,101,100,32, +- 105,109,112,111,114,116,32,99,111,109,112,111,110,101,110,116, +- 115,46,78,41,10,114,116,1,0,0,114,208,0,0,0,114, +- 15,0,0,0,114,83,1,0,0,114,191,0,0,0,114,94, +- 1,0,0,114,108,1,0,0,218,9,109,101,116,97,95,112, +- 97,116,104,114,61,0,0,0,114,77,1,0,0,41,2,114, +- 115,1,0,0,90,17,115,117,112,112,111,114,116,101,100,95, +- 108,111,97,100,101,114,115,114,7,0,0,0,114,7,0,0, +- 0,114,8,0,0,0,218,8,95,105,110,115,116,97,108,108, +- 136,6,0,0,115,8,0,0,0,8,2,6,1,20,1,16, +- 1,114,118,1,0,0,41,1,114,87,0,0,0,114,69,0, +- 0,0,41,3,78,78,78,41,2,114,0,0,0,0,114,0, +- 0,0,0,41,1,84,41,85,114,152,0,0,0,114,159,0, +- 0,0,114,187,0,0,0,114,91,0,0,0,114,15,0,0, +- 0,114,99,0,0,0,114,184,0,0,0,114,25,0,0,0, +- 114,231,0,0,0,90,2,110,116,114,18,0,0,0,114,215, +- 0,0,0,90,5,112,111,115,105,120,114,50,0,0,0,218, +- 3,97,108,108,114,59,0,0,0,114,136,0,0,0,114,57, +- 0,0,0,114,62,0,0,0,90,20,95,112,97,116,104,115, +- 101,112,115,95,119,105,116,104,95,99,111,108,111,110,114,28, +- 0,0,0,90,37,95,67,65,83,69,95,73,78,83,69,78, +- 83,73,84,73,86,69,95,80,76,65,84,70,79,82,77,83, +- 95,66,89,84,69,83,95,75,69,89,114,27,0,0,0,114, +- 29,0,0,0,114,21,0,0,0,114,36,0,0,0,114,42, +- 0,0,0,114,45,0,0,0,114,67,0,0,0,114,74,0, +- 0,0,114,75,0,0,0,114,79,0,0,0,114,80,0,0, +- 0,114,83,0,0,0,114,86,0,0,0,114,95,0,0,0, +- 218,4,116,121,112,101,218,8,95,95,99,111,100,101,95,95, +- 114,186,0,0,0,114,34,0,0,0,114,172,0,0,0,114, +- 33,0,0,0,114,39,0,0,0,114,8,1,0,0,114,116, +- 0,0,0,114,112,0,0,0,114,127,0,0,0,114,61,0, +- 0,0,114,114,1,0,0,114,232,0,0,0,114,113,0,0, +- 0,90,23,68,69,66,85,71,95,66,89,84,69,67,79,68, +- 69,95,83,85,70,70,73,88,69,83,90,27,79,80,84,73, +- 77,73,90,69,68,95,66,89,84,69,67,79,68,69,95,83, +- 85,70,70,73,88,69,83,114,121,0,0,0,114,128,0,0, +- 0,114,135,0,0,0,114,137,0,0,0,114,139,0,0,0, +- 114,160,0,0,0,114,167,0,0,0,114,176,0,0,0,114, +- 180,0,0,0,114,182,0,0,0,114,189,0,0,0,114,194, +- 0,0,0,114,195,0,0,0,114,200,0,0,0,218,6,111, +- 98,106,101,99,116,114,209,0,0,0,114,213,0,0,0,114, +- 214,0,0,0,114,235,0,0,0,114,249,0,0,0,114,11, +- 1,0,0,114,34,1,0,0,114,41,1,0,0,114,30,1, +- 0,0,114,47,1,0,0,114,73,1,0,0,114,77,1,0, +- 0,114,94,1,0,0,114,113,1,0,0,114,208,0,0,0, +- 114,116,1,0,0,114,118,1,0,0,114,7,0,0,0,114, +- 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,8, +- 60,109,111,100,117,108,101,62,1,0,0,0,115,180,0,0, +- 0,4,0,4,22,8,3,8,1,8,1,8,1,8,1,10, +- 3,4,1,8,1,10,1,8,2,4,3,10,1,6,2,22, +- 2,8,1,8,1,10,1,14,1,4,4,4,1,2,1,2, +- 1,4,255,8,4,6,16,8,3,8,5,8,5,4,6,10, +- 1,8,30,8,6,8,8,8,10,8,9,8,5,4,7,10, +- 1,8,8,10,5,10,22,0,127,16,30,12,1,4,2,4, +- 1,6,2,4,1,10,1,8,2,6,2,8,2,16,2,8, +- 71,8,40,8,19,8,12,8,12,8,31,8,20,8,33,8, +- 28,10,24,10,13,10,10,8,11,6,14,4,3,2,1,12, +- 255,14,73,14,67,16,30,0,127,14,17,18,50,18,45,18, +- 25,14,53,14,63,14,49,0,127,14,29,0,127,10,30,8, +- 23,8,11,12,5, ++ 99,97,99,104,101,46,10,10,32,32,32,32,32,32,32,32, ++ 84,104,105,115,32,109,101,116,104,111,100,32,105,115,32,100, ++ 101,112,114,101,99,97,116,101,100,46,32,32,85,115,101,32, ++ 102,105,110,100,95,115,112,101,99,40,41,32,105,110,115,116, ++ 101,97,100,46,10,10,32,32,32,32,32,32,32,32,122,101, ++ 80,97,116,104,70,105,110,100,101,114,46,102,105,110,100,95, ++ 109,111,100,117,108,101,40,41,32,105,115,32,100,101,112,114, ++ 101,99,97,116,101,100,32,97,110,100,32,115,108,97,116,101, ++ 100,32,102,111,114,32,114,101,109,111,118,97,108,32,105,110, ++ 32,80,121,116,104,111,110,32,51,46,49,50,59,32,117,115, ++ 101,32,102,105,110,100,95,115,112,101,99,40,41,32,105,110, ++ 115,116,101,97,100,78,114,228,0,0,0,114,229,0,0,0, ++ 114,8,0,0,0,114,8,0,0,0,114,9,0,0,0,114, ++ 230,0,0,0,170,5,0,0,115,14,0,0,0,6,8,2, ++ 2,4,254,12,3,8,1,4,1,6,1,122,22,80,97,116, ++ 104,70,105,110,100,101,114,46,102,105,110,100,95,109,111,100, ++ 117,108,101,99,0,0,0,0,0,0,0,0,0,0,0,0, ++ 3,0,0,0,4,0,0,0,79,0,0,0,115,28,0,0, ++ 0,100,1,100,2,108,0,109,1,125,2,1,0,124,2,106, ++ 2,124,0,105,0,124,1,164,1,142,1,83,0,41,4,97, ++ 32,1,0,0,10,32,32,32,32,32,32,32,32,70,105,110, ++ 100,32,100,105,115,116,114,105,98,117,116,105,111,110,115,46, ++ 10,10,32,32,32,32,32,32,32,32,82,101,116,117,114,110, ++ 32,97,110,32,105,116,101,114,97,98,108,101,32,111,102,32, ++ 97,108,108,32,68,105,115,116,114,105,98,117,116,105,111,110, ++ 32,105,110,115,116,97,110,99,101,115,32,99,97,112,97,98, ++ 108,101,32,111,102,10,32,32,32,32,32,32,32,32,108,111, ++ 97,100,105,110,103,32,116,104,101,32,109,101,116,97,100,97, ++ 116,97,32,102,111,114,32,112,97,99,107,97,103,101,115,32, ++ 109,97,116,99,104,105,110,103,32,96,96,99,111,110,116,101, ++ 120,116,46,110,97,109,101,96,96,10,32,32,32,32,32,32, ++ 32,32,40,111,114,32,97,108,108,32,110,97,109,101,115,32, ++ 105,102,32,96,96,78,111,110,101,96,96,32,105,110,100,105, ++ 99,97,116,101,100,41,32,97,108,111,110,103,32,116,104,101, ++ 32,112,97,116,104,115,32,105,110,32,116,104,101,32,108,105, ++ 115,116,10,32,32,32,32,32,32,32,32,111,102,32,100,105, ++ 114,101,99,116,111,114,105,101,115,32,96,96,99,111,110,116, ++ 101,120,116,46,112,97,116,104,96,96,46,10,32,32,32,32, ++ 32,32,32,32,114,0,0,0,0,41,1,218,18,77,101,116, ++ 97,100,97,116,97,80,97,116,104,70,105,110,100,101,114,78, ++ 41,3,90,18,105,109,112,111,114,116,108,105,98,46,109,101, ++ 116,97,100,97,116,97,114,93,1,0,0,218,18,102,105,110, ++ 100,95,100,105,115,116,114,105,98,117,116,105,111,110,115,41, ++ 3,114,145,0,0,0,114,146,0,0,0,114,93,1,0,0, ++ 114,8,0,0,0,114,8,0,0,0,114,9,0,0,0,114, ++ 94,1,0,0,186,5,0,0,115,4,0,0,0,12,10,16, ++ 1,122,29,80,97,116,104,70,105,110,100,101,114,46,102,105, ++ 110,100,95,100,105,115,116,114,105,98,117,116,105,111,110,115, ++ 114,71,0,0,0,114,231,0,0,0,41,14,114,151,0,0, ++ 0,114,150,0,0,0,114,152,0,0,0,114,153,0,0,0, ++ 114,234,0,0,0,114,79,1,0,0,114,85,1,0,0,114, ++ 235,0,0,0,114,88,1,0,0,114,89,1,0,0,114,92, ++ 1,0,0,114,227,0,0,0,114,230,0,0,0,114,94,1, ++ 0,0,114,8,0,0,0,114,8,0,0,0,114,8,0,0, ++ 0,114,9,0,0,0,114,78,1,0,0,44,5,0,0,115, ++ 36,0,0,0,8,0,4,2,2,2,10,1,2,9,10,1, ++ 2,12,10,1,2,21,10,1,2,20,12,1,2,31,12,1, ++ 2,23,12,1,2,15,14,1,114,78,1,0,0,99,0,0, ++ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0, ++ 0,0,64,0,0,0,115,90,0,0,0,101,0,90,1,100, ++ 0,90,2,100,1,90,3,100,2,100,3,132,0,90,4,100, ++ 4,100,5,132,0,90,5,101,6,90,7,100,6,100,7,132, ++ 0,90,8,100,8,100,9,132,0,90,9,100,19,100,11,100, ++ 12,132,1,90,10,100,13,100,14,132,0,90,11,101,12,100, ++ 15,100,16,132,0,131,1,90,13,100,17,100,18,132,0,90, ++ 14,100,10,83,0,41,20,218,10,70,105,108,101,70,105,110, ++ 100,101,114,122,172,70,105,108,101,45,98,97,115,101,100,32, ++ 102,105,110,100,101,114,46,10,10,32,32,32,32,73,110,116, ++ 101,114,97,99,116,105,111,110,115,32,119,105,116,104,32,116, ++ 104,101,32,102,105,108,101,32,115,121,115,116,101,109,32,97, ++ 114,101,32,99,97,99,104,101,100,32,102,111,114,32,112,101, ++ 114,102,111,114,109,97,110,99,101,44,32,98,101,105,110,103, ++ 10,32,32,32,32,114,101,102,114,101,115,104,101,100,32,119, ++ 104,101,110,32,116,104,101,32,100,105,114,101,99,116,111,114, ++ 121,32,116,104,101,32,102,105,110,100,101,114,32,105,115,32, ++ 104,97,110,100,108,105,110,103,32,104,97,115,32,98,101,101, ++ 110,32,109,111,100,105,102,105,101,100,46,10,10,32,32,32, ++ 32,99,2,0,0,0,0,0,0,0,0,0,0,0,5,0, ++ 0,0,6,0,0,0,7,0,0,0,115,112,0,0,0,103, ++ 0,125,3,124,2,68,0,93,16,92,2,137,0,125,4,124, ++ 3,160,0,135,0,102,1,100,1,100,2,132,8,124,4,68, ++ 0,131,1,161,1,1,0,113,4,124,3,124,0,95,1,124, ++ 1,112,27,100,3,124,0,95,2,116,3,124,0,106,2,131, ++ 1,115,43,116,4,116,5,160,6,161,0,124,0,106,2,131, ++ 2,124,0,95,2,100,4,124,0,95,7,116,8,131,0,124, ++ 0,95,9,116,8,131,0,124,0,95,10,100,5,83,0,41, ++ 6,122,154,73,110,105,116,105,97,108,105,122,101,32,119,105, ++ 116,104,32,116,104,101,32,112,97,116,104,32,116,111,32,115, ++ 101,97,114,99,104,32,111,110,32,97,110,100,32,97,32,118, ++ 97,114,105,97,98,108,101,32,110,117,109,98,101,114,32,111, ++ 102,10,32,32,32,32,32,32,32,32,50,45,116,117,112,108, ++ 101,115,32,99,111,110,116,97,105,110,105,110,103,32,116,104, ++ 101,32,108,111,97,100,101,114,32,97,110,100,32,116,104,101, ++ 32,102,105,108,101,32,115,117,102,102,105,120,101,115,32,116, ++ 104,101,32,108,111,97,100,101,114,10,32,32,32,32,32,32, ++ 32,32,114,101,99,111,103,110,105,122,101,115,46,99,1,0, ++ 0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0, ++ 0,0,51,0,0,0,115,24,0,0,0,129,0,124,0,93, ++ 7,125,1,124,1,136,0,102,2,86,0,1,0,113,2,100, ++ 0,83,0,114,71,0,0,0,114,8,0,0,0,114,44,1, ++ 0,0,169,1,114,165,0,0,0,114,8,0,0,0,114,9, ++ 0,0,0,114,10,0,0,0,215,5,0,0,115,4,0,0, ++ 0,2,128,22,0,122,38,70,105,108,101,70,105,110,100,101, ++ 114,46,95,95,105,110,105,116,95,95,46,60,108,111,99,97, ++ 108,115,62,46,60,103,101,110,101,120,112,114,62,114,99,0, ++ 0,0,114,3,0,0,0,78,41,11,114,192,0,0,0,218, ++ 8,95,108,111,97,100,101,114,115,114,67,0,0,0,114,88, ++ 0,0,0,114,69,0,0,0,114,19,0,0,0,114,84,0, ++ 0,0,218,11,95,112,97,116,104,95,109,116,105,109,101,218, ++ 3,115,101,116,218,11,95,112,97,116,104,95,99,97,99,104, ++ 101,218,19,95,114,101,108,97,120,101,100,95,112,97,116,104, ++ 95,99,97,99,104,101,41,5,114,144,0,0,0,114,67,0, ++ 0,0,218,14,108,111,97,100,101,114,95,100,101,116,97,105, ++ 108,115,90,7,108,111,97,100,101,114,115,114,213,0,0,0, ++ 114,8,0,0,0,114,96,1,0,0,114,9,0,0,0,114, ++ 237,0,0,0,209,5,0,0,115,20,0,0,0,4,4,12, ++ 1,26,1,6,1,10,2,10,1,18,1,6,1,8,1,12, ++ 1,122,19,70,105,108,101,70,105,110,100,101,114,46,95,95, ++ 105,110,105,116,95,95,99,1,0,0,0,0,0,0,0,0, ++ 0,0,0,1,0,0,0,2,0,0,0,67,0,0,0,115, ++ 10,0,0,0,100,1,124,0,95,0,100,2,83,0,41,3, ++ 122,31,73,110,118,97,108,105,100,97,116,101,32,116,104,101, ++ 32,100,105,114,101,99,116,111,114,121,32,109,116,105,109,101, ++ 46,114,3,0,0,0,78,41,1,114,98,1,0,0,114,22, ++ 1,0,0,114,8,0,0,0,114,8,0,0,0,114,9,0, ++ 0,0,114,79,1,0,0,225,5,0,0,114,83,0,0,0, ++ 122,28,70,105,108,101,70,105,110,100,101,114,46,105,110,118, ++ 97,108,105,100,97,116,101,95,99,97,99,104,101,115,99,2, ++ 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,4, ++ 0,0,0,67,0,0,0,115,54,0,0,0,116,0,160,1, ++ 100,1,116,2,161,2,1,0,124,0,160,3,124,1,161,1, ++ 125,2,124,2,100,2,117,0,114,19,100,2,103,0,102,2, ++ 83,0,124,2,106,4,124,2,106,5,112,25,103,0,102,2, ++ 83,0,41,3,122,197,84,114,121,32,116,111,32,102,105,110, ++ 100,32,97,32,108,111,97,100,101,114,32,102,111,114,32,116, ++ 104,101,32,115,112,101,99,105,102,105,101,100,32,109,111,100, ++ 117,108,101,44,32,111,114,32,116,104,101,32,110,97,109,101, ++ 115,112,97,99,101,10,32,32,32,32,32,32,32,32,112,97, ++ 99,107,97,103,101,32,112,111,114,116,105,111,110,115,46,32, ++ 82,101,116,117,114,110,115,32,40,108,111,97,100,101,114,44, ++ 32,108,105,115,116,45,111,102,45,112,111,114,116,105,111,110, ++ 115,41,46,10,10,32,32,32,32,32,32,32,32,84,104,105, ++ 115,32,109,101,116,104,111,100,32,105,115,32,100,101,112,114, ++ 101,99,97,116,101,100,46,32,32,85,115,101,32,102,105,110, ++ 100,95,115,112,101,99,40,41,32,105,110,115,116,101,97,100, ++ 46,10,10,32,32,32,32,32,32,32,32,122,101,70,105,108, ++ 101,70,105,110,100,101,114,46,102,105,110,100,95,108,111,97, ++ 100,101,114,40,41,32,105,115,32,100,101,112,114,101,99,97, ++ 116,101,100,32,97,110,100,32,115,108,97,116,101,100,32,102, ++ 111,114,32,114,101,109,111,118,97,108,32,105,110,32,80,121, ++ 116,104,111,110,32,51,46,49,50,59,32,117,115,101,32,102, ++ 105,110,100,95,115,112,101,99,40,41,32,105,110,115,116,101, ++ 97,100,78,41,6,114,101,0,0,0,114,102,0,0,0,114, ++ 103,0,0,0,114,227,0,0,0,114,165,0,0,0,114,203, ++ 0,0,0,41,3,114,144,0,0,0,114,164,0,0,0,114, ++ 211,0,0,0,114,8,0,0,0,114,8,0,0,0,114,9, ++ 0,0,0,114,162,0,0,0,231,5,0,0,115,14,0,0, ++ 0,6,7,2,2,4,254,10,3,8,1,8,1,16,1,122, ++ 22,70,105,108,101,70,105,110,100,101,114,46,102,105,110,100, ++ 95,108,111,97,100,101,114,99,6,0,0,0,0,0,0,0, ++ 0,0,0,0,7,0,0,0,6,0,0,0,67,0,0,0, ++ 115,26,0,0,0,124,1,124,2,124,3,131,2,125,6,116, ++ 0,124,2,124,3,124,6,124,4,100,1,141,4,83,0,41, ++ 2,78,114,202,0,0,0,41,1,114,214,0,0,0,41,7, ++ 114,144,0,0,0,114,212,0,0,0,114,164,0,0,0,114, ++ 67,0,0,0,90,4,115,109,115,108,114,226,0,0,0,114, ++ 165,0,0,0,114,8,0,0,0,114,8,0,0,0,114,9, ++ 0,0,0,114,92,1,0,0,246,5,0,0,115,8,0,0, ++ 0,10,1,8,1,2,1,6,255,122,20,70,105,108,101,70, ++ 105,110,100,101,114,46,95,103,101,116,95,115,112,101,99,78, ++ 99,3,0,0,0,0,0,0,0,0,0,0,0,14,0,0, ++ 0,9,0,0,0,67,0,0,0,115,122,1,0,0,100,1, ++ 125,3,124,1,160,0,100,2,161,1,100,3,25,0,125,4, ++ 122,12,116,1,124,0,106,2,112,17,116,3,160,4,161,0, ++ 131,1,106,5,125,5,87,0,110,11,4,0,116,6,121,32, ++ 1,0,1,0,1,0,100,4,125,5,89,0,110,1,119,0, ++ 124,5,124,0,106,7,107,3,114,45,124,0,160,8,161,0, ++ 1,0,124,5,124,0,95,7,116,9,131,0,114,56,124,0, ++ 106,10,125,6,124,4,160,11,161,0,125,7,110,5,124,0, ++ 106,12,125,6,124,4,125,7,124,7,124,6,118,0,114,108, ++ 116,13,124,0,106,2,124,4,131,2,125,8,124,0,106,14, ++ 68,0,93,29,92,2,125,9,125,10,100,5,124,9,23,0, ++ 125,11,116,13,124,8,124,11,131,2,125,12,116,15,124,12, ++ 131,1,114,103,124,0,160,16,124,10,124,1,124,12,124,8, ++ 103,1,124,2,161,5,2,0,1,0,83,0,113,74,116,17, ++ 124,8,131,1,125,3,124,0,106,14,68,0,93,55,92,2, ++ 125,9,125,10,122,10,116,13,124,0,106,2,124,4,124,9, ++ 23,0,131,2,125,12,87,0,110,11,4,0,116,18,121,136, ++ 1,0,1,0,1,0,89,0,1,0,100,6,83,0,119,0, ++ 116,19,106,20,100,7,124,12,100,3,100,8,141,3,1,0, ++ 124,7,124,9,23,0,124,6,118,0,114,166,116,15,124,12, ++ 131,1,114,166,124,0,160,16,124,10,124,1,124,12,100,6, ++ 124,2,161,5,2,0,1,0,83,0,113,111,124,3,114,187, ++ 116,19,160,20,100,9,124,8,161,2,1,0,116,19,160,21, ++ 124,1,100,6,161,2,125,13,124,8,103,1,124,13,95,22, ++ 124,13,83,0,100,6,83,0,41,10,122,111,84,114,121,32, ++ 116,111,32,102,105,110,100,32,97,32,115,112,101,99,32,102, ++ 111,114,32,116,104,101,32,115,112,101,99,105,102,105,101,100, ++ 32,109,111,100,117,108,101,46,10,10,32,32,32,32,32,32, ++ 32,32,82,101,116,117,114,110,115,32,116,104,101,32,109,97, ++ 116,99,104,105,110,103,32,115,112,101,99,44,32,111,114,32, ++ 78,111,110,101,32,105,102,32,110,111,116,32,102,111,117,110, ++ 100,46,10,32,32,32,32,32,32,32,32,70,114,99,0,0, ++ 0,114,46,0,0,0,114,3,0,0,0,114,237,0,0,0, ++ 78,122,9,116,114,121,105,110,103,32,123,125,41,1,90,9, ++ 118,101,114,98,111,115,105,116,121,122,25,112,111,115,115,105, ++ 98,108,101,32,110,97,109,101,115,112,97,99,101,32,102,111, ++ 114,32,123,125,41,23,114,106,0,0,0,114,77,0,0,0, ++ 114,67,0,0,0,114,19,0,0,0,114,84,0,0,0,114, ++ 36,1,0,0,114,78,0,0,0,114,98,1,0,0,218,11, ++ 95,102,105,108,108,95,99,97,99,104,101,114,23,0,0,0, ++ 114,101,1,0,0,114,132,0,0,0,114,100,1,0,0,114, ++ 69,0,0,0,114,97,1,0,0,114,82,0,0,0,114,92, ++ 1,0,0,114,85,0,0,0,114,113,0,0,0,114,160,0, ++ 0,0,114,174,0,0,0,114,208,0,0,0,114,203,0,0, ++ 0,41,14,114,144,0,0,0,114,164,0,0,0,114,226,0, ++ 0,0,90,12,105,115,95,110,97,109,101,115,112,97,99,101, ++ 90,11,116,97,105,108,95,109,111,100,117,108,101,114,194,0, ++ 0,0,90,5,99,97,99,104,101,90,12,99,97,99,104,101, ++ 95,109,111,100,117,108,101,90,9,98,97,115,101,95,112,97, ++ 116,104,114,45,1,0,0,114,212,0,0,0,90,13,105,110, ++ 105,116,95,102,105,108,101,110,97,109,101,90,9,102,117,108, ++ 108,95,112,97,116,104,114,211,0,0,0,114,8,0,0,0, ++ 114,8,0,0,0,114,9,0,0,0,114,227,0,0,0,251, ++ 5,0,0,115,86,0,0,0,4,5,14,1,2,1,24,1, ++ 12,1,8,1,2,255,10,2,8,1,6,1,6,2,6,1, ++ 10,1,6,2,4,1,8,2,12,1,14,1,8,1,10,1, ++ 8,1,24,1,2,255,8,5,14,2,2,1,20,1,12,1, ++ 8,1,2,255,16,2,12,1,8,1,10,1,4,1,8,255, ++ 2,128,4,2,12,1,12,1,8,1,4,1,4,1,122,20, ++ 70,105,108,101,70,105,110,100,101,114,46,102,105,110,100,95, ++ 115,112,101,99,99,1,0,0,0,0,0,0,0,0,0,0, ++ 0,9,0,0,0,10,0,0,0,67,0,0,0,115,192,0, ++ 0,0,124,0,106,0,125,1,122,11,116,1,160,2,124,1, ++ 112,11,116,1,160,3,161,0,161,1,125,2,87,0,110,14, ++ 4,0,116,4,116,5,116,6,102,3,121,28,1,0,1,0, ++ 1,0,103,0,125,2,89,0,110,1,119,0,116,7,106,8, ++ 160,9,100,1,161,1,115,41,116,10,124,2,131,1,124,0, ++ 95,11,110,37,116,10,131,0,125,3,124,2,68,0,93,28, ++ 125,4,124,4,160,12,100,2,161,1,92,3,125,5,125,6, ++ 125,7,124,6,114,67,100,3,160,13,124,5,124,7,160,14, ++ 161,0,161,2,125,8,110,2,124,5,125,8,124,3,160,15, ++ 124,8,161,1,1,0,113,46,124,3,124,0,95,11,116,7, ++ 106,8,160,9,116,16,161,1,114,94,100,4,100,5,132,0, ++ 124,2,68,0,131,1,124,0,95,17,100,6,83,0,100,6, ++ 83,0,41,7,122,68,70,105,108,108,32,116,104,101,32,99, ++ 97,99,104,101,32,111,102,32,112,111,116,101,110,116,105,97, ++ 108,32,109,111,100,117,108,101,115,32,97,110,100,32,112,97, ++ 99,107,97,103,101,115,32,102,111,114,32,116,104,105,115,32, ++ 100,105,114,101,99,116,111,114,121,46,114,15,0,0,0,114, ++ 99,0,0,0,114,90,0,0,0,99,1,0,0,0,0,0, ++ 0,0,0,0,0,0,2,0,0,0,4,0,0,0,83,0, ++ 0,0,115,20,0,0,0,104,0,124,0,93,6,125,1,124, ++ 1,160,0,161,0,146,2,113,2,83,0,114,8,0,0,0, ++ 41,1,114,132,0,0,0,41,2,114,6,0,0,0,90,2, ++ 102,110,114,8,0,0,0,114,8,0,0,0,114,9,0,0, ++ 0,114,14,0,0,0,75,6,0,0,115,2,0,0,0,20, ++ 0,122,41,70,105,108,101,70,105,110,100,101,114,46,95,102, ++ 105,108,108,95,99,97,99,104,101,46,60,108,111,99,97,108, ++ 115,62,46,60,115,101,116,99,111,109,112,62,78,41,18,114, ++ 67,0,0,0,114,19,0,0,0,90,7,108,105,115,116,100, ++ 105,114,114,84,0,0,0,114,86,1,0,0,218,15,80,101, ++ 114,109,105,115,115,105,111,110,69,114,114,111,114,218,18,78, ++ 111,116,65,68,105,114,101,99,116,111,114,121,69,114,114,111, ++ 114,114,16,0,0,0,114,27,0,0,0,114,28,0,0,0, ++ 114,99,1,0,0,114,100,1,0,0,114,128,0,0,0,114, ++ 91,0,0,0,114,132,0,0,0,218,3,97,100,100,114,29, ++ 0,0,0,114,101,1,0,0,41,9,114,144,0,0,0,114, ++ 67,0,0,0,90,8,99,111,110,116,101,110,116,115,90,21, ++ 108,111,119,101,114,95,115,117,102,102,105,120,95,99,111,110, ++ 116,101,110,116,115,114,71,1,0,0,114,142,0,0,0,114, ++ 55,1,0,0,114,45,1,0,0,90,8,110,101,119,95,110, ++ 97,109,101,114,8,0,0,0,114,8,0,0,0,114,9,0, ++ 0,0,114,103,1,0,0,46,6,0,0,115,38,0,0,0, ++ 6,2,2,1,22,1,18,1,8,3,2,253,12,6,12,1, ++ 6,7,8,1,16,1,4,1,18,1,4,2,12,1,6,1, ++ 12,1,20,1,4,255,122,22,70,105,108,101,70,105,110,100, ++ 101,114,46,95,102,105,108,108,95,99,97,99,104,101,99,1, ++ 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,3, ++ 0,0,0,7,0,0,0,115,18,0,0,0,135,0,135,1, ++ 102,2,100,1,100,2,132,8,125,2,124,2,83,0,41,4, ++ 97,20,1,0,0,65,32,99,108,97,115,115,32,109,101,116, ++ 104,111,100,32,119,104,105,99,104,32,114,101,116,117,114,110, ++ 115,32,97,32,99,108,111,115,117,114,101,32,116,111,32,117, ++ 115,101,32,111,110,32,115,121,115,46,112,97,116,104,95,104, ++ 111,111,107,10,32,32,32,32,32,32,32,32,119,104,105,99, ++ 104,32,119,105,108,108,32,114,101,116,117,114,110,32,97,110, ++ 32,105,110,115,116,97,110,99,101,32,117,115,105,110,103,32, ++ 116,104,101,32,115,112,101,99,105,102,105,101,100,32,108,111, ++ 97,100,101,114,115,32,97,110,100,32,116,104,101,32,112,97, ++ 116,104,10,32,32,32,32,32,32,32,32,99,97,108,108,101, ++ 100,32,111,110,32,116,104,101,32,99,108,111,115,117,114,101, ++ 46,10,10,32,32,32,32,32,32,32,32,73,102,32,116,104, ++ 101,32,112,97,116,104,32,99,97,108,108,101,100,32,111,110, ++ 32,116,104,101,32,99,108,111,115,117,114,101,32,105,115,32, ++ 110,111,116,32,97,32,100,105,114,101,99,116,111,114,121,44, ++ 32,73,109,112,111,114,116,69,114,114,111,114,32,105,115,10, ++ 32,32,32,32,32,32,32,32,114,97,105,115,101,100,46,10, ++ 10,32,32,32,32,32,32,32,32,99,1,0,0,0,0,0, ++ 0,0,0,0,0,0,1,0,0,0,4,0,0,0,19,0, ++ 0,0,115,36,0,0,0,116,0,124,0,131,1,115,10,116, ++ 1,100,1,124,0,100,2,141,2,130,1,136,0,124,0,103, ++ 1,136,1,162,1,82,0,142,0,83,0,41,4,122,45,80, ++ 97,116,104,32,104,111,111,107,32,102,111,114,32,105,109,112, ++ 111,114,116,108,105,98,46,109,97,99,104,105,110,101,114,121, ++ 46,70,105,108,101,70,105,110,100,101,114,46,122,30,111,110, ++ 108,121,32,100,105,114,101,99,116,111,114,105,101,115,32,97, ++ 114,101,32,115,117,112,112,111,114,116,101,100,114,73,0,0, ++ 0,78,41,2,114,85,0,0,0,114,143,0,0,0,114,73, ++ 0,0,0,169,2,114,222,0,0,0,114,102,1,0,0,114, ++ 8,0,0,0,114,9,0,0,0,218,24,112,97,116,104,95, ++ 104,111,111,107,95,102,111,114,95,70,105,108,101,70,105,110, ++ 100,101,114,87,6,0,0,115,6,0,0,0,8,2,12,1, ++ 16,1,122,54,70,105,108,101,70,105,110,100,101,114,46,112, ++ 97,116,104,95,104,111,111,107,46,60,108,111,99,97,108,115, ++ 62,46,112,97,116,104,95,104,111,111,107,95,102,111,114,95, ++ 70,105,108,101,70,105,110,100,101,114,78,114,8,0,0,0, ++ 41,3,114,222,0,0,0,114,102,1,0,0,114,108,1,0, ++ 0,114,8,0,0,0,114,107,1,0,0,114,9,0,0,0, ++ 218,9,112,97,116,104,95,104,111,111,107,77,6,0,0,115, ++ 4,0,0,0,14,10,4,6,122,20,70,105,108,101,70,105, ++ 110,100,101,114,46,112,97,116,104,95,104,111,111,107,99,1, ++ 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3, ++ 0,0,0,67,0,0,0,114,68,1,0,0,41,2,78,122, ++ 16,70,105,108,101,70,105,110,100,101,114,40,123,33,114,125, ++ 41,41,2,114,91,0,0,0,114,67,0,0,0,114,22,1, ++ 0,0,114,8,0,0,0,114,8,0,0,0,114,9,0,0, ++ 0,114,69,1,0,0,95,6,0,0,114,62,1,0,0,122, ++ 19,70,105,108,101,70,105,110,100,101,114,46,95,95,114,101, ++ 112,114,95,95,114,71,0,0,0,41,15,114,151,0,0,0, ++ 114,150,0,0,0,114,152,0,0,0,114,153,0,0,0,114, ++ 237,0,0,0,114,79,1,0,0,114,168,0,0,0,114,230, ++ 0,0,0,114,162,0,0,0,114,92,1,0,0,114,227,0, ++ 0,0,114,103,1,0,0,114,235,0,0,0,114,109,1,0, ++ 0,114,69,1,0,0,114,8,0,0,0,114,8,0,0,0, ++ 114,8,0,0,0,114,9,0,0,0,114,95,1,0,0,200, ++ 5,0,0,115,24,0,0,0,8,0,4,2,8,7,8,16, ++ 4,4,8,2,8,15,10,5,8,51,2,31,10,1,12,17, ++ 114,95,1,0,0,99,4,0,0,0,0,0,0,0,0,0, ++ 0,0,6,0,0,0,8,0,0,0,67,0,0,0,115,144, ++ 0,0,0,124,0,160,0,100,1,161,1,125,4,124,0,160, ++ 0,100,2,161,1,125,5,124,4,115,33,124,5,114,18,124, ++ 5,106,1,125,4,110,15,124,2,124,3,107,2,114,28,116, ++ 2,124,1,124,2,131,2,125,4,110,5,116,3,124,1,124, ++ 2,131,2,125,4,124,5,115,42,116,4,124,1,124,2,124, ++ 4,100,3,141,3,125,5,122,19,124,5,124,0,100,2,60, ++ 0,124,4,124,0,100,1,60,0,124,2,124,0,100,4,60, ++ 0,124,3,124,0,100,5,60,0,87,0,100,0,83,0,4, ++ 0,116,5,121,71,1,0,1,0,1,0,89,0,100,0,83, ++ 0,119,0,41,6,78,218,10,95,95,108,111,97,100,101,114, ++ 95,95,218,8,95,95,115,112,101,99,95,95,114,96,1,0, ++ 0,90,8,95,95,102,105,108,101,95,95,90,10,95,95,99, ++ 97,99,104,101,100,95,95,41,6,218,3,103,101,116,114,165, ++ 0,0,0,114,42,1,0,0,114,35,1,0,0,114,214,0, ++ 0,0,218,9,69,120,99,101,112,116,105,111,110,41,6,90, ++ 2,110,115,114,142,0,0,0,90,8,112,97,116,104,110,97, ++ 109,101,90,9,99,112,97,116,104,110,97,109,101,114,165,0, ++ 0,0,114,211,0,0,0,114,8,0,0,0,114,8,0,0, ++ 0,114,9,0,0,0,218,14,95,102,105,120,95,117,112,95, ++ 109,111,100,117,108,101,101,6,0,0,115,36,0,0,0,10, ++ 2,10,1,4,1,4,1,8,1,8,1,12,1,10,2,4, ++ 1,14,1,2,1,8,1,8,1,8,1,14,1,12,1,6, ++ 2,2,254,114,114,1,0,0,99,0,0,0,0,0,0,0, ++ 0,0,0,0,0,3,0,0,0,3,0,0,0,67,0,0, ++ 0,115,38,0,0,0,116,0,116,1,160,2,161,0,102,2, ++ 125,0,116,3,116,4,102,2,125,1,116,5,116,6,102,2, ++ 125,2,124,0,124,1,124,2,103,3,83,0,41,2,122,95, ++ 82,101,116,117,114,110,115,32,97,32,108,105,115,116,32,111, ++ 102,32,102,105,108,101,45,98,97,115,101,100,32,109,111,100, ++ 117,108,101,32,108,111,97,100,101,114,115,46,10,10,32,32, ++ 32,32,69,97,99,104,32,105,116,101,109,32,105,115,32,97, ++ 32,116,117,112,108,101,32,40,108,111,97,100,101,114,44,32, ++ 115,117,102,102,105,120,101,115,41,46,10,32,32,32,32,78, ++ 41,7,114,31,1,0,0,114,188,0,0,0,218,18,101,120, ++ 116,101,110,115,105,111,110,95,115,117,102,102,105,120,101,115, ++ 114,35,1,0,0,114,129,0,0,0,114,42,1,0,0,114, ++ 115,0,0,0,41,3,90,10,101,120,116,101,110,115,105,111, ++ 110,115,90,6,115,111,117,114,99,101,90,8,98,121,116,101, ++ 99,111,100,101,114,8,0,0,0,114,8,0,0,0,114,9, ++ 0,0,0,114,209,0,0,0,124,6,0,0,115,8,0,0, ++ 0,12,5,8,1,8,1,10,1,114,209,0,0,0,99,1, ++ 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1, ++ 0,0,0,67,0,0,0,115,8,0,0,0,124,0,97,0, ++ 100,0,83,0,114,71,0,0,0,41,1,114,160,0,0,0, ++ 41,1,218,17,95,98,111,111,116,115,116,114,97,112,95,109, ++ 111,100,117,108,101,114,8,0,0,0,114,8,0,0,0,114, ++ 9,0,0,0,218,21,95,115,101,116,95,98,111,111,116,115, ++ 116,114,97,112,95,109,111,100,117,108,101,135,6,0,0,115, ++ 2,0,0,0,8,2,114,117,1,0,0,99,1,0,0,0, ++ 0,0,0,0,0,0,0,0,2,0,0,0,4,0,0,0, ++ 67,0,0,0,115,50,0,0,0,116,0,124,0,131,1,1, ++ 0,116,1,131,0,125,1,116,2,106,3,160,4,116,5,106, ++ 6,124,1,142,0,103,1,161,1,1,0,116,2,106,7,160, ++ 8,116,9,161,1,1,0,100,1,83,0,41,2,122,41,73, ++ 110,115,116,97,108,108,32,116,104,101,32,112,97,116,104,45, ++ 98,97,115,101,100,32,105,109,112,111,114,116,32,99,111,109, ++ 112,111,110,101,110,116,115,46,78,41,10,114,117,1,0,0, ++ 114,209,0,0,0,114,16,0,0,0,114,84,1,0,0,114, ++ 192,0,0,0,114,95,1,0,0,114,109,1,0,0,218,9, ++ 109,101,116,97,95,112,97,116,104,114,63,0,0,0,114,78, ++ 1,0,0,41,2,114,116,1,0,0,90,17,115,117,112,112, ++ 111,114,116,101,100,95,108,111,97,100,101,114,115,114,8,0, ++ 0,0,114,8,0,0,0,114,9,0,0,0,218,8,95,105, ++ 110,115,116,97,108,108,140,6,0,0,115,8,0,0,0,8, ++ 2,6,1,20,1,16,1,114,119,1,0,0,41,1,114,89, ++ 0,0,0,114,71,0,0,0,41,3,78,78,78,41,2,114, ++ 0,0,0,0,114,0,0,0,0,41,1,84,41,86,114,153, ++ 0,0,0,114,160,0,0,0,114,188,0,0,0,114,93,0, ++ 0,0,114,16,0,0,0,114,101,0,0,0,114,185,0,0, ++ 0,114,27,0,0,0,114,232,0,0,0,90,2,110,116,114, ++ 19,0,0,0,114,216,0,0,0,90,5,112,111,115,105,120, ++ 114,52,0,0,0,114,20,0,0,0,218,3,97,108,108,114, ++ 61,0,0,0,114,137,0,0,0,114,59,0,0,0,114,64, ++ 0,0,0,90,20,95,112,97,116,104,115,101,112,115,95,119, ++ 105,116,104,95,99,111,108,111,110,114,30,0,0,0,90,37, ++ 95,67,65,83,69,95,73,78,83,69,78,83,73,84,73,86, ++ 69,95,80,76,65,84,70,79,82,77,83,95,66,89,84,69, ++ 83,95,75,69,89,114,29,0,0,0,114,31,0,0,0,114, ++ 23,0,0,0,114,38,0,0,0,114,44,0,0,0,114,47, ++ 0,0,0,114,69,0,0,0,114,76,0,0,0,114,77,0, ++ 0,0,114,81,0,0,0,114,82,0,0,0,114,85,0,0, ++ 0,114,88,0,0,0,114,97,0,0,0,218,4,116,121,112, ++ 101,218,8,95,95,99,111,100,101,95,95,114,187,0,0,0, ++ 114,36,0,0,0,114,173,0,0,0,114,35,0,0,0,114, ++ 41,0,0,0,114,9,1,0,0,114,118,0,0,0,114,114, ++ 0,0,0,114,129,0,0,0,114,63,0,0,0,114,115,1, ++ 0,0,114,233,0,0,0,114,115,0,0,0,90,23,68,69, ++ 66,85,71,95,66,89,84,69,67,79,68,69,95,83,85,70, ++ 70,73,88,69,83,90,27,79,80,84,73,77,73,90,69,68, ++ 95,66,89,84,69,67,79,68,69,95,83,85,70,70,73,88, ++ 69,83,114,123,0,0,0,114,130,0,0,0,114,136,0,0, ++ 0,114,138,0,0,0,114,140,0,0,0,114,161,0,0,0, ++ 114,168,0,0,0,114,177,0,0,0,114,181,0,0,0,114, ++ 183,0,0,0,114,190,0,0,0,114,195,0,0,0,114,196, ++ 0,0,0,114,201,0,0,0,218,6,111,98,106,101,99,116, ++ 114,210,0,0,0,114,214,0,0,0,114,215,0,0,0,114, ++ 236,0,0,0,114,250,0,0,0,114,12,1,0,0,114,35, ++ 1,0,0,114,42,1,0,0,114,31,1,0,0,114,48,1, ++ 0,0,114,74,1,0,0,114,78,1,0,0,114,95,1,0, ++ 0,114,114,1,0,0,114,209,0,0,0,114,117,1,0,0, ++ 114,119,1,0,0,114,8,0,0,0,114,8,0,0,0,114, ++ 8,0,0,0,114,9,0,0,0,218,8,60,109,111,100,117, ++ 108,101,62,1,0,0,0,115,184,0,0,0,4,0,4,22, ++ 8,3,8,1,8,1,8,1,8,1,10,3,4,1,8,1, ++ 10,1,8,2,4,3,10,1,6,2,10,2,14,1,22,3, ++ 8,1,8,1,10,1,14,1,4,4,4,1,2,1,2,1, ++ 4,255,8,4,6,16,8,3,8,5,8,5,4,6,10,1, ++ 8,30,8,6,8,8,8,10,8,9,8,5,4,7,10,1, ++ 8,8,10,5,10,22,0,127,16,30,12,1,4,2,4,1, ++ 6,2,4,1,10,1,8,2,6,2,8,2,16,2,8,71, ++ 8,40,8,19,8,12,8,12,8,31,8,20,8,33,8,28, ++ 10,24,10,13,10,10,8,11,6,14,4,3,2,1,12,255, ++ 14,73,14,67,16,30,0,127,14,17,18,50,18,45,18,25, ++ 14,53,14,63,14,49,0,127,14,29,0,127,10,30,8,23, ++ 8,11,12,5, + }; +-- +2.34.1 + diff --git a/mingw-w64-python3.10/PKGBUILD b/mingw-w64-python3.10/PKGBUILD new file mode 100644 index 0000000000..63a2216317 --- /dev/null +++ b/mingw-w64-python3.10/PKGBUILD @@ -0,0 +1,507 @@ +# Maintainer: Alexey Pavlov +# Maintainer: Ray Donnelly +# Contributor: Saul Ibarra Corretge +# Contributor: Frode Solheim + +_primary_python="no" +_pybasever=3.10 +_realname=python + +if [[ "${_primary_python}" == "yes" ]]; then + pkgbase="mingw-w64-${_realname}" + pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}") + provides=("${MINGW_PACKAGE_PREFIX}-python3" + "${MINGW_PACKAGE_PREFIX}-python${_pybasever}") + conflicts=("${MINGW_PACKAGE_PREFIX}-python3" + "${MINGW_PACKAGE_PREFIX}-python${_pybasever}" + "${MINGW_PACKAGE_PREFIX}-python2<2.7.16-7") + replaces=("${MINGW_PACKAGE_PREFIX}-python3" + "${MINGW_PACKAGE_PREFIX}-python${_pybasever}") +else + pkgbase="mingw-w64-${_realname}${_pybasever}" + pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}${_pybasever}") +fi +pkgver=${_pybasever}.0 +pkgrel=1 +pkgdesc="A high-level scripting language (mingw-w64)" +arch=('any') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') +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" + "${MINGW_PACKAGE_PREFIX}-tzdata") +makedepends=( + "${MINGW_PACKAGE_PREFIX}-cc" + "${MINGW_PACKAGE_PREFIX}-autotools" + "autoconf-archive" +) +options=('makeflags') # 'debug' '!strip') +source=("https://www.python.org/ftp/python/${pkgver%rc?}/Python-${pkgver}.tar.xz" + 0001-sysconfig-make-_sysconfigdata.py-relocatable.patch + 0002-restore-setup-config.patch + 0003-build-add-with-nt-threads-and-make-it-default-on-min.patch + 0004-MINGW-translate-gcc-internal-defines-to-python-platf.patch + 0005-MINGW-configure-MACHDEP-and-platform-for-build.patch + 0006-MINGW-preset-configure-defaults.patch + 0007-MINGW-configure-largefile-support-for-windows-builds.patch + 0008-MINGW-add-srcdir-PC-to-CPPFLAGS.patch + 0009-MINGW-init-system-calls.patch + 0010-MINGW-build-in-windows-modules-winreg.patch + 0011-MINGW-determine-if-pwdmodule-should-be-used.patch + 0012-issue6672-v2-Add-Mingw-recognition-to-pyport.h-to-al.patch + 0013-MINGW-configure-for-shared-build.patch + 0014-MINGW-dynamic-loading-support.patch + 0015-MINGW-ignore-main-program-for-frozen-scripts.patch + 0016-MINGW-setup-_multiprocessing-module.patch + 0017-MINGW-setup-select-module.patch + 0018-MINGW-setup-_ctypes-module-with-system-libffi.patch + 0019-MINGW-defect-winsock2-and-setup-_socket-module.patch + 0020-MINGW-exclude-unix-only-modules.patch + 0021-MINGW-setup-msvcrt-and-_winapi-modules.patch + 0022-sysconfig-MINGW-build-extensions-with-GCC.patch + 0023-MINGW-setup-_ssl-module.patch + 0024-MINGW-generalization-of-posix-build-in-sysconfig.py.patch + 0025-MINGW-support-stdcall-without-underscore.patch + 0026-use-replace-instead-rename-to-avoid-failure-on-windo.patch + 0027-MINGW-customize-site.patch + 0028-add-python-config-sh.patch + 0029-cross-darwin-feature.patch + 0030-mingw-system-libffi.patch + 0031-msys-mingw-prefer-unix-sep-if-MSYSTEM.patch + 0032-mingw-use-posix-getpath.patch + 0033-mingw-add-ModuleFileName-dir-to-PATH.patch + 0034-mingw-add-BUILDIN_WIN32_MODULEs-time-msvcrt.patch + 0035-msys-cygwin-semi-native-build-sysconfig.patch + 0036-sysconfig-mingw-sysconfig-like-posix.patch + 0037-build-_winapi-earlier-so-we-can-use-it-in-distutils-.patch + 0038-cross-dont-add-multiarch-paths-if-cross-compiling.patch + 0039-mingw-use-backslashes-in-compileall-py.patch + 0040-msys-convert_path-fix-and-root-hack.patch + 0041-allow-static-tcltk.patch + 0042-mingw-pdcurses_ISPAD.patch + 0043-builddir-fixes.patch + 0044-msys-monkeypatch-os-system-via-sh-exe.patch + 0045-msys-replace-slashes-used-in-io-redirection.patch + 0046-remove_path_max.default.patch + 0047-dont-link-with-gettext.patch + 0048-ctypes-python-dll.patch + 0049-gdbm-module-includes.patch + 0050-use-gnu_printf-in-format.patch + 0051-mingw-fix-ssl-dont-use-enum_certificates.patch + 0052-fix-using-dllhandle-and-winver-mingw.patch + 0053-Add-AMD64-to-sys-config-so-msvccompiler-get_build_ve.patch + 0054-MINGW-link-with-additional-library.patch + 0055-install-msilib.patch + 0056-fix-signal-module-build.patch + 0057-build-build-winconsoleio-and-_testconsole.patch + 0058-expose-sem_unlink.patch + 0059-cygpty-isatty.patch + 0060-disable-broken-gdbm-module.patch + 0061-build-link-win-resource-files-and-build-pythonw.patch + 0062-disable-readline.patch + 0063-fix-isselectable.patch + 0064-use-_wcsnicmp-instead-wcsncasecmp.patch + 0065-_xxsubinterpretersmodule.patch + 0066-sqlite3-module-defines.patch + 0067-configure.ac-fix-inet_pton-check.patch + 0068-set-venv-activate-path-unix.patch + 0069-venv-creation-fixes.patch + 0070-pass-gen-profile-ldflags.patch + 0071-pkg-config-windows-must-link-ext-with-python-lib.patch + 0072-importlib-bootstrap-path-sep.patch + 0073-pathlib-path-sep.patch + 0074-warnings-fixes.patch + 0075-fix-build-testinternalcapi.patch + 0076-extend-MS_WINDOWS-flag.patch + 0077-clang-arm64.patch + 0078-configure.ac-set-MINGW-stack-reserve.patch + 0079-Don-t-use-os.pathsep-to-find-EOF.patch + 0080-Fix-extension-suffix-for-c-extensions-on-mingw.patch + 0081-Change-the-get_platform-method-in-sysconfig.patch + 0082-distutils-compiler-customize-mingw-cygwin-compilers.patch + 0083-distutils-compiler-enable-new-dtags.patch + 0084-distutils-MINGW-build-extensions-with-GCC.patch + 0085-distutils-use-Mingw32CCompiler-as-default-compiler-f.patch + 0086-distutils-find-import-library.patch + 0087-distutils-avoid-circular-dependency-from-time-module.patch + 0088-distutils-generalization-of-posix-build-in-distutils.patch + 0089-distutils-mingw-sysconfig-like-posix.patch + 0090-distutils-get_versions-fixes.patch + 0091-distutils-install-layout-as-posix.patch + 0092-distutils-msys-convert_path-fix-and-root-hack.patch + 0093-distutils-mingw-build-optimized-ext.patch + 0094-distutils-cygwinccompiler-dont-strip-modules-if-pyde.patch + 0095-distutils-get-compilers-from-env-vars.patch + 0096-distutils-add-windmc-to-cygwinccompiler.patch + 0097-distutils-fix-msvc9-import.patch + 0098-distutils-mingw-add-LIBPL-to-library-dirs.patch + 0099-distutils-Change-the-get_platform-method-in-distutil.patch + 0100-build-Fix-ncursesw-include-lookup.patch + 0101-tests-fix-test_bytes.patch + 0102-time-fix-strftime-not-raising-for-invalid-year-value.patch + 0103-ctypes-find_library-c-should-return-None-with-ucrt.patch + 0104-build-Disable-checks-for-dlopen-dlfcn.patch + 0105-Fix-install-location-of-the-import-library.patch + 0106-Set-MSYS2_ARG_CONV_EXCL-for-the-shared-Python-module.patch + 0107-build-Integrate-venvlauncher-build-installation-into.patch + 0108-configure.ac-set-_WIN32_WINNT-version.patch + 0109-configure.ac-don-t-check-for-clock_-functions.patch + 0110-expanduser-normpath-paths-coming-from-env-vars.patch + 0111-Add-support-for-Windows-7-Python-3.9.patch + 0112-CI-test-the-build-and-add-some-mingw-specific-tests.patch + 0113-smoketests-test-that-_decimal-exists.patch + 0114-Prefer-sysconfig.python_build.patch + 0115-Define-PY3_DLLNAME-to-fix-build.patch + 0116-Commit-regenerated-importlib.patch) + +# Helper macros to help make tasks easier # +apply_patch_with_msg() { + for _patch in "$@" + do + msg2 "Applying ${_patch}" + patch -Nbp1 -i "${srcdir}/${_patch}" + done +} + +prepare() { + cd "${srcdir}/Python-${pkgver}" + + apply_patch_with_msg 0001-sysconfig-make-_sysconfigdata.py-relocatable.patch \ + 0002-restore-setup-config.patch \ + 0003-build-add-with-nt-threads-and-make-it-default-on-min.patch \ + 0004-MINGW-translate-gcc-internal-defines-to-python-platf.patch \ + 0005-MINGW-configure-MACHDEP-and-platform-for-build.patch \ + 0006-MINGW-preset-configure-defaults.patch \ + 0007-MINGW-configure-largefile-support-for-windows-builds.patch \ + 0008-MINGW-add-srcdir-PC-to-CPPFLAGS.patch \ + 0009-MINGW-init-system-calls.patch \ + 0010-MINGW-build-in-windows-modules-winreg.patch \ + 0011-MINGW-determine-if-pwdmodule-should-be-used.patch \ + 0012-issue6672-v2-Add-Mingw-recognition-to-pyport.h-to-al.patch \ + 0013-MINGW-configure-for-shared-build.patch \ + 0014-MINGW-dynamic-loading-support.patch \ + 0015-MINGW-ignore-main-program-for-frozen-scripts.patch \ + 0016-MINGW-setup-_multiprocessing-module.patch \ + 0017-MINGW-setup-select-module.patch \ + 0018-MINGW-setup-_ctypes-module-with-system-libffi.patch \ + 0019-MINGW-defect-winsock2-and-setup-_socket-module.patch \ + 0020-MINGW-exclude-unix-only-modules.patch \ + 0021-MINGW-setup-msvcrt-and-_winapi-modules.patch \ + 0022-sysconfig-MINGW-build-extensions-with-GCC.patch \ + 0023-MINGW-setup-_ssl-module.patch \ + 0024-MINGW-generalization-of-posix-build-in-sysconfig.py.patch \ + 0025-MINGW-support-stdcall-without-underscore.patch \ + 0026-use-replace-instead-rename-to-avoid-failure-on-windo.patch \ + 0027-MINGW-customize-site.patch \ + 0028-add-python-config-sh.patch \ + 0029-cross-darwin-feature.patch \ + 0030-mingw-system-libffi.patch \ + 0031-msys-mingw-prefer-unix-sep-if-MSYSTEM.patch \ + 0032-mingw-use-posix-getpath.patch \ + 0033-mingw-add-ModuleFileName-dir-to-PATH.patch \ + 0034-mingw-add-BUILDIN_WIN32_MODULEs-time-msvcrt.patch \ + 0035-msys-cygwin-semi-native-build-sysconfig.patch \ + 0036-sysconfig-mingw-sysconfig-like-posix.patch \ + 0037-build-_winapi-earlier-so-we-can-use-it-in-distutils-.patch \ + 0038-cross-dont-add-multiarch-paths-if-cross-compiling.patch \ + 0039-mingw-use-backslashes-in-compileall-py.patch \ + 0040-msys-convert_path-fix-and-root-hack.patch \ + 0041-allow-static-tcltk.patch \ + 0042-mingw-pdcurses_ISPAD.patch \ + 0043-builddir-fixes.patch \ + 0044-msys-monkeypatch-os-system-via-sh-exe.patch \ + 0045-msys-replace-slashes-used-in-io-redirection.patch \ + 0046-remove_path_max.default.patch \ + 0047-dont-link-with-gettext.patch \ + 0048-ctypes-python-dll.patch \ + 0049-gdbm-module-includes.patch \ + 0050-use-gnu_printf-in-format.patch \ + 0051-mingw-fix-ssl-dont-use-enum_certificates.patch \ + 0052-fix-using-dllhandle-and-winver-mingw.patch \ + 0053-Add-AMD64-to-sys-config-so-msvccompiler-get_build_ve.patch \ + 0054-MINGW-link-with-additional-library.patch \ + 0055-install-msilib.patch \ + 0056-fix-signal-module-build.patch \ + 0057-build-build-winconsoleio-and-_testconsole.patch \ + 0058-expose-sem_unlink.patch \ + 0059-cygpty-isatty.patch \ + 0060-disable-broken-gdbm-module.patch \ + 0061-build-link-win-resource-files-and-build-pythonw.patch \ + 0062-disable-readline.patch \ + 0063-fix-isselectable.patch \ + 0064-use-_wcsnicmp-instead-wcsncasecmp.patch \ + 0065-_xxsubinterpretersmodule.patch \ + 0066-sqlite3-module-defines.patch \ + 0067-configure.ac-fix-inet_pton-check.patch \ + 0068-set-venv-activate-path-unix.patch \ + 0069-venv-creation-fixes.patch \ + 0070-pass-gen-profile-ldflags.patch \ + 0071-pkg-config-windows-must-link-ext-with-python-lib.patch \ + 0072-importlib-bootstrap-path-sep.patch \ + 0073-pathlib-path-sep.patch \ + 0074-warnings-fixes.patch \ + 0075-fix-build-testinternalcapi.patch \ + 0076-extend-MS_WINDOWS-flag.patch \ + 0077-clang-arm64.patch \ + 0078-configure.ac-set-MINGW-stack-reserve.patch \ + 0079-Don-t-use-os.pathsep-to-find-EOF.patch \ + 0080-Fix-extension-suffix-for-c-extensions-on-mingw.patch \ + 0081-Change-the-get_platform-method-in-sysconfig.patch \ + 0082-distutils-compiler-customize-mingw-cygwin-compilers.patch \ + 0083-distutils-compiler-enable-new-dtags.patch \ + 0084-distutils-MINGW-build-extensions-with-GCC.patch \ + 0085-distutils-use-Mingw32CCompiler-as-default-compiler-f.patch \ + 0086-distutils-find-import-library.patch \ + 0087-distutils-avoid-circular-dependency-from-time-module.patch \ + 0088-distutils-generalization-of-posix-build-in-distutils.patch \ + 0089-distutils-mingw-sysconfig-like-posix.patch \ + 0090-distutils-get_versions-fixes.patch \ + 0091-distutils-install-layout-as-posix.patch \ + 0092-distutils-msys-convert_path-fix-and-root-hack.patch \ + 0093-distutils-mingw-build-optimized-ext.patch \ + 0094-distutils-cygwinccompiler-dont-strip-modules-if-pyde.patch \ + 0095-distutils-get-compilers-from-env-vars.patch \ + 0096-distutils-add-windmc-to-cygwinccompiler.patch \ + 0097-distutils-fix-msvc9-import.patch \ + 0098-distutils-mingw-add-LIBPL-to-library-dirs.patch \ + 0099-distutils-Change-the-get_platform-method-in-distutil.patch \ + 0100-build-Fix-ncursesw-include-lookup.patch \ + 0101-tests-fix-test_bytes.patch \ + 0102-time-fix-strftime-not-raising-for-invalid-year-value.patch \ + 0103-ctypes-find_library-c-should-return-None-with-ucrt.patch \ + 0104-build-Disable-checks-for-dlopen-dlfcn.patch \ + 0105-Fix-install-location-of-the-import-library.patch \ + 0106-Set-MSYS2_ARG_CONV_EXCL-for-the-shared-Python-module.patch \ + 0107-build-Integrate-venvlauncher-build-installation-into.patch \ + 0108-configure.ac-set-_WIN32_WINNT-version.patch \ + 0109-configure.ac-don-t-check-for-clock_-functions.patch \ + 0110-expanduser-normpath-paths-coming-from-env-vars.patch \ + 0111-Add-support-for-Windows-7-Python-3.9.patch \ + 0112-CI-test-the-build-and-add-some-mingw-specific-tests.patch \ + 0113-smoketests-test-that-_decimal-exists.patch \ + 0114-Prefer-sysconfig.python_build.patch \ + 0115-Define-PY3_DLLNAME-to-fix-build.patch \ + 0116-Commit-regenerated-importlib.patch + + autoreconf -vfi +} + +build() { + declare -a _extra_config + if check_option "debug" "n"; then + _extra_config+=("--enable-optimizations") + # FIXME: https://github.com/msys2-contrib/cpython-mingw/issues/10 + # _extra_config+=("--with-lto") + else + CFLAGS+=" -O0 -ggdb" + CXXFLAGS+=" -O0 -ggdb" + _extra_config+=("--with-pydebug") + fi + + [[ -d "${srcdir}/build-${CARCH}" ]] && rm -rf "${srcdir}/build-${CARCH}" + mkdir -p "${srcdir}/build-${CARCH}" && cd "${srcdir}/build-${CARCH}" + + ../Python-${pkgver}/configure \ + --prefix=${MINGW_PREFIX} \ + --host=${MINGW_CHOST} \ + --build=${MINGW_CHOST} \ + --enable-shared \ + --with-system-expat \ + --with-system-ffi \ + --with-system-libmpdec \ + --without-ensurepip \ + --without-c-locale-coercion \ + --enable-loadable-sqlite-extensions \ + --with-tzpath=${MINGW_PREFIX}/share/zoneinfo \ + "${_extra_config[@]}" + + make +} + +check() { + cd "${srcdir}/build-${CARCH}" + + # Some basic tests to ensure nothing major or MSYS2 specific features are broken + ./python.exe "../Python-${pkgver}/mingw_smoketests.py" + MSYSTEM= ./python.exe "../Python-${pkgver}/mingw_smoketests.py" +} + +package() { + cd "${srcdir}/build-${CARCH}" + + make -j1 install DESTDIR="${pkgdir}" + + # 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 + if [[ "${_primary_python}" == "yes" ]]; then + [[ -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 + fi + + # 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/ + + # fixup shebangs + 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 + + # default aliases for all scripts/binaries + if [[ "${_primary_python}" == "yes" ]]; then + # 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 + fi + + # delete anything that could conflict with the primary Python + if [[ "${_primary_python}" != "yes" ]]; then + rm "${pkgdir}${MINGW_PREFIX}"/bin/python3.exe + rm "${pkgdir}${MINGW_PREFIX}"/bin/python3w.exe + rm "${pkgdir}${MINGW_PREFIX}"/bin/python3-config + rm "${pkgdir}${MINGW_PREFIX}"/bin/idle3 + rm "${pkgdir}${MINGW_PREFIX}"/bin/pydoc3 + rm "${pkgdir}${MINGW_PREFIX}"/bin/2to3 + rm "${pkgdir}${MINGW_PREFIX}"/lib/pkgconfig/python3-embed.pc + rm "${pkgdir}${MINGW_PREFIX}"/lib/pkgconfig/python3.pc + rm "${pkgdir}${MINGW_PREFIX}"/share/man/man1/python3.1 + fi +} + +sha256sums=('5a99f8e7a6a11a7b98b4e75e0d1303d3832cada5534068f69c7b6222a7b1b002' + '49618c0b5af0319f64bd8da3116f77d9726a77276cffacebc4d3de645c327bb7' + 'd967c60781f6a4ef3464799ca398469d03249f9673c8ce769a3e2da33eb33193' + 'b70136017f533468b64ba1b289498f6ddda88715b48016c7804b2186af6884cc' + '8dcb76c1858de03f903085602fd7271dc3baefa058eaa1b8f186a11bf80a01e6' + 'f13a51e2efc5d539eadf8dfa71bdcd6cd1e93ecf71da96f217bc385718fdb11f' + '0097f4d3d20ed9690cbbdcde5a24cd4551117082b18fe309f34bbc5672bc0223' + '8d3a42cbf36eef51167308824f9a6c60b6ea78453a9f50edd7f69d2975da6ab9' + '9557ef72cb9ee75d8118794d980926a3240bda42dea08b8f5259d61e17d5ae53' + 'd16d82e6b18fc1dc587469b7131730f282888ba05c1195f6a4b8c8658c74c0bb' + 'bb99cc9af5bfa8bbf3324b7716718bf5d4a5a7359817b97b86eefc5f042daa20' + '6948926186af5e415268dc95c9a5641c5f11633bf5da3b4fcadfa6d27d695be0' + '230e40e7bc78dbd0fa69677d836015b7e53f380cfbfc5e12c536996ed54d76c4' + '40e656ec45c2e8a4c877d52f28b97b114fff6504ca439d04c6a9001407f07c34' + '9630401fb31c9dc53ea5c6ecbb22eba40a1fdbb18a13489054abe573a4a4dd50' + 'b258a25430b3f8787395ec726ca329da8181dbbc5e6fbae38a5fdf9d990f91e8' + 'cd15083767565d34c936df5ae71d701a57abcc6b454c68234862afe7c69207dc' + '956264e6b45cb12f5c3ee80acea9d1da54a3f3210cb19219867138f9d7b310b2' + '429c46ed0e0fd0aba50b3cb137afcef04a2ce70b4d0ec0b2e64f75c4942053a2' + '6e90416d1283102b9160fb92c82f217c6de0586ddfbeea772d99971909ad2137' + '5ea6e2c7cedc9cd27b611c5fb4554ccf653064d6c70408f528b4c33639631a40' + '1f3c165c70be5dc174c04bb84e9181d1146847010dc0e2609a07bf96e4dd1378' + '6f90192098bca07a1ae0363019302176ecc3c9749d00c4a4ad54d832c245b7f3' + '07cfbe323e4afd72014886e74f07912aed8232445ff1edba42fd33d62121f5fb' + 'e7d0d99e2e6e99cc84642ad43ae4f473c14213f625f52f19615d2ea7d838fd5c' + 'b12e35c1e5c0a3af2cd53a7577c82618f15504f448215bb0513945ce4e7ce632' + '01dffb1e99975e8259cc2446c4f7bfe2840c7d4813fd1766023b088a288d0fb0' + '55abac4b324844ceb1c663887d70d25db7b06206a5a24e314db752e7082a3084' + 'e340fd684fc1c438d17173603a3b3675ef97dc6e5fcd343100ccc13834ce9daf' + 'ea5c7cd51c9b0bde9c8e78a7dda4af2637f7a540a03100ce1f7bc593676efdd4' + '8c67c55bc6bfa8a7d27ca116ae5845a8b32bca67e161125ddbb6e6e4009d5fa9' + '7b4a08cad5bd9436e750ad42219c20b018b8f514cf8b06ab6777533fc9895c06' + '295e17e70dc9265985aeedaba1486867f7a4d8ae11cb5369bab93a086c47d3a1' + '775d6fb87e1d84ca5869b3a47b3293c5206e0e4a51de8e7d9eb2da1246433450' + '12fd50049ff6269ab5ac3d538e5bf4ed81876bdd95246bb481f2df9281dfd811' + 'c2e5c37523dbb3ce854d3a580a85a38db8281ae23b996b711447dc2836cf045d' + '9eaf55be42c62b88037805cd5471b61142b473bbda07f86b9179deb0ce4cfa73' + 'b5cadc98a559d6378c8cf0608f8ea422d19e425ae1a6ff5d277623a6444f9834' + 'd724bca285f9e294c0d24d85551da081a91ead537fa468013af3418dd734bd73' + '0be34c24ef9c4a9ed4698119a809a052330d4b354c56894cadd7d46e5f466fc4' + '63f42fc9fb04849fd1f935a93ae69680d14c58d60aec42ec28392dd253f35948' + '332ceca3d3b66f6e0bc9c291969bbf9e79acf3a5a8999130a70a832b209987ed' + '4dd775bc9ce55776ccfa4c3179cdff7478ddc16eb0ca918ad3e886325833c7a0' + '0def91845ccc127e4e31112563281f55c1e7b3ff6e07d04aaf6e0c472da98b20' + 'df176b3d2bf607a4daaea0f71146758c5b9c788cfd4f89fab8ddbd931b13c027' + 'b6c31a37e337db1a18e6014f7b33e93090006f00514b9af51287db997d064c09' + 'ad513d2c4389ffa4387fee56b68dfe4ff28cbaca218a0e53ea95b56fd8e0e795' + '06201eb685d3e30f16c16d188162768bb8de575d3bc62f3c6e009de3d9e90da9' + '57e20da131a77067c57619773ade31399afd98941d4f16bcd1c0d7eb7c5dbf9a' + '07d4ee7fba51fae5a12c75381e5f833066e36322e37ccf25ab939aac16a6fe1e' + 'e0f5f889a477c2617e90f71714ad7c664814269ffdad5b8d298817a217ed76b7' + '83f4306155cd15753728cb216963a003902399ac9a2b8ff78b5c1d3b8f2c6082' + 'de0eec9cb3301204288e9d32164a671ca5f70f4827dc5cceabb28daf6e8ada97' + '6f33ef821cefe12ae37e236563ff92e460f34d28254acfbd9de2876b5b66a70d' + '626d83642211ff3bcf3670acb93c64e61046ad57c56c92fd1fbbfffe9f30040a' + 'cfc5199d4c6d81c7b580b13ead08237c2b2abe754cf5473143c1b7f7a3e3a158' + '79d740a0f2e0672d0b6a02e3bc76170c72950528822a12e928e9aa86d870196c' + 'd357d5cd5e81a0e4f0160a5f0b9883b59b71770d60775bb21c51c12332476e8e' + '801014ec41210b4b70d296bf253fd277455c0d94e2f26698bef8eddebb88d31d' + '44a626b4aa3044c03d9defc093de1af27bad0ca3c9b07ed6d46d168f36bc2e0e' + '7749de8e71a9d1cd47ee4c6cd70251588ffe7131b88c70992bffccfd6639879f' + '69af2f044d0c352f900a35f73f5302dc5cc877c11a30141879620ae1d5ea4da7' + 'ab6fea6a12633cdb993b952d1a65db0eaa86639bb9be964b2491c3a1842b78a7' + '6412dc510aff2c67a5e524a7777494a3963dae670873a4ae5e762206e1b967bd' + 'b3d79a7edddf573eb36fe64a7c8f41fa4957197b7124b1a79faaa734a80a2754' + 'cff906a05084471667e4b11b75fe86ccb8814aaed9e03b5e6e9010a8ccb9ee99' + '5cacea9fa4c4426c8d4ffce103382caf2ffe489aa5edbd8e52ba05ed8c685642' + '466ba894a34a1c8336d4598644fefc4baec7140ee63412529bf1aec1a9d2ffe5' + 'd5bf09a5ae9d5857dafd358ebbc52c690504aa625d4326aa45d4abbfe45484d8' + '91110e2fe2e3ee7f577057d06011e4edfd6e6872b0395d7c930095c3d6c85170' + '268d789a509859d538a87101644078506e0e90e53af6f311fb0ae756db142c45' + '7340f5378c7b07f3a18eef858608e15f5787dd23109944ef283d2ab7f3c313f1' + 'ae46fb357c1e3509fb8c1ea30d50e121c499a6b40e149b3ff9f146298b799479' + '1d1d5ede4971e6bfbed2cb20239814960508acf1b0d2285e328e010909519d98' + 'ad70b8ad094d03a957e1f815a15103aeafcfabf2882f9c2542924b47b94c5643' + '2299b160137a57569da3ab9d3d47a8f5bbbc2e1c126a9241efead9f5e50305a1' + '58cb8d0d9cb604f48f92cfb5dfab3d0d222a02078a5d4b98366ebdd93548f7f1' + 'c4e7f6771285942207856c6a3defb7c2ce4e88f00b63567dc647ce21f7186175' + '2fce40567852f896ebf2f318511ded9de1cd3b86ba23cec4f80a65c36c762cf6' + '5dd5f8f66456a4c784d7a83a9ea382ce540483fa8124133104b77405df77e605' + 'a5729712ea89d4e0255b73060967be02f4fb680be3c859015aa5995726b4d05b' + 'ec2810ff284e18ba8a61725bf461f4216ed6e9bd9fcd1e9c5fecae60a918eb86' + '48d8cd76a81173736045dcb5cc1c2dfc9f9d3c5bed99c091a40814ee2d668cd2' + 'af9940b19c83059fc0d074f9fcfa22ebe637e925b6fba87d6d97e85d30ab1761' + 'b70d8367b0474035a2b5b8dfbae902e66638cbd5570cdf156c113a3cf6c10dcf' + 'a7fde729503456e488f220ac294a5eedd7e91ffa2d88370001e1ba98b4ad9cb2' + 'eebc37108cc8dc1b1edcedaa5321b12c69a96ec332bc60b46482cfcfb0c476af' + '061ff107c640c09f9aa378c80478d7272083467fef87fd3f6a231b5d6c2f2964' + '671bf53426cdeedbce5706768815ad4d0c97552994968f4b2925896d3c4e92ff' + '96428d13bf18cb16bfd1e36c99a11e60140552765f5747f65d52a27ba229dce4' + 'fda87ec475f2b715a2939465e059df74118ed61d416803af312af5b132009621' + 'f59a64acb934334cea0d8324c79bbc0e2e463bec566f02d1d939cd15df6fa8cd' + '81fc66d796662cd135d7af8750121592795a4acabe6e0d48998470eff4b2c890' + 'e95169f748e887d3a51b236b27d9aaa20f973366a239bbadbc58ba76c99f22f5' + 'cef3504d5219ae56ad59f090f76afea8f54e3f32242900d41c1d4f44840d5913' + '485b8d30ebebf2c6c6c751daaf2c274d7688c9002f4b6686419d5d10e9f96c8b' + '19e03ed5fe384924ef4a46ea76c319e07ac0a4567584f2d2e5f4ec816d858ded' + '6dd342124a42c4ba9e9d510875a2c27a13b49477aecc878814cbfffd9014c258' + 'ee64c8ae96a1ff66a1550d010332747b3730296eed368809c254f2d6d8000748' + '6dbb39bb40cbcbc6d3b3b2aca5e44a8d06c66e5438b03373ac98a8fee2519bc7' + '28ecf42c99b62aa5112dd94900b532de4eedea1ab64ecf7d344d7e3b0d6d017c' + '9ea3502b64b971cecdd48694dfc97b1574422dbe8c947a70409706c4b92ca6ec' + '0c080b0a7a85db977279236d0c89cde8efe6f905df2b375186f1846c5a951380' + 'ccf98b1cf67b11f58e477ab8a81d4e1face254770edbfbfb67827af335558b50' + 'feb200d05871a458fc274dccbc1b0baea31d5a906e5329c144bd55275079b0d1' + 'd04d26131f8a0b9abe454d62a44839613cd65a402511aa030b8e7a7c6c7e7b7e' + '2913f809e275d25c9bf09563a1a4ca75202a6e51f1585a79abc52cbb874bf817' + 'e8cc31cb279be390f311556a5f526071471fdf3a00bc69aebf9be48154b71705' + '0ed520ee73fbfa59ece779fb9066ec307e7c03e6a8ef7f1c84d04ce7b5ded183' + '1324774652eeb2d845766864cd0815c3d265dbe100cdeaeef22a93e7b6ed5853' + '9b85b9d266a722159841ad62fe68488f0475e9eb88b64afc258743845f6e322d' + 'c1bbe975b489e497c125a652704114476e83c5d1d1ed75c51f588573f94ffa97' + 'b43b2fdca79500064fff00529e692df62b4a1e9344c052c88689f5ca4e77004d' + '47565e5857c73fe34c2b4f5ff924a07ce730dabeeb1fb3f02e8503360652be4d' + '2552ec78fd9b8ffd9e6e298fffb904c651d9a97be2de021700205957e9d99b40' + '903c4acdc79668da068b11b8462b639995b00af9763d3eaedcf4161ee3856f6c' + '0df47db20b0ced0edc478f3bc310aa97d0508c51908548ec8d4e8a13e0868da2') diff --git a/mingw-w64-python3.10/README.md b/mingw-w64-python3.10/README.md new file mode 100644 index 0000000000..858c558d9c --- /dev/null +++ b/mingw-w64-python3.10/README.md @@ -0,0 +1,4 @@ +The patches for this package are auto generated and managed in git: +https://github.com/msys2-contrib/cpython-mingw + +Run `./update-patches.sh` to re-create the patches. diff --git a/mingw-w64-python3.10/update-patches.sh b/mingw-w64-python3.10/update-patches.sh new file mode 100644 index 0000000000..646912c533 --- /dev/null +++ b/mingw-w64-python3.10/update-patches.sh @@ -0,0 +1,79 @@ +#!/bin/bash + +set -e + +die () { + echo "$*" >&2 + exit 1 +} + +cd "$(dirname "$0")" || +die "Could not cd to mingw-w64-python3.9/" + +git rev-parse --verify HEAD >/dev/null && +git update-index -q --ignore-submodules --refresh && +git diff-files --quiet --ignore-submodules && +git diff-index --cached --quiet --ignore-submodules HEAD -- || +die "Clean worktree required" + +git rm 0*.patch || +die "Could not remove previous patches" + +source PKGBUILD || die "Can't source PKGBUILD" + +base_tag=refs/tags/v$pkgver +msys2_branch=mingw-v$pkgver +url=https://github.com/msys2-contrib/cpython-mingw +upstream_url=https://github.com/python/cpython + +test -d cpython || +git clone --bare $url cpython --depth=1000 --branch=$msys2_branch || +die "Could not clone cpython" + +git -C cpython fetch --no-tags $url $msys2_branch:$msys2_branch --depth=1000 +git -C cpython fetch --no-tags $upstream_url $base_tag:$base_tag --depth=1000 + +git -c core.abbrev=7 \ + -c diff.renames=true \ + -c format.from=false \ + -c format.numbered=auto \ + -c format.useAutoBase=false \ + -C cpython \ + format-patch \ + --topo-order \ + --diff-algorithm=default \ + --no-attach \ + --no-add-header \ + --no-cover-letter \ + --no-thread \ + --suffix=.patch \ + --subject-prefix=PATCH \ + --output-directory .. \ + $base_tag..$msys2_branch || +die "Could not generate new patch set" + +patches="$(ls -1 0*.patch)" && +for p in $patches +do + sed -i 's/^\(Subject: \[PATCH [0-9]*\/\)[1-9][0-9]*/\1N/' $p || + die "Could not fix Subject: line in $p" +done && +patches="$(ls -1 0*.patch)" && +git add $patches || +die "Could not stage new patch set" + +in_sources="$(echo "$patches" | sed "{s/^/ /;:1;N;s/\\n/\\\\n /;b1}")" +in_prepare="$(echo "$patches" | tr '\n' '\\' | sed -e 's/\\$//' -e 's/\\/ &&&n /g')" +sed -i -e "/^ 0.*\.patch$/{:1;N;/[^)]$/b1;s|.*|$in_sources)|}" \ + -e "/^ *apply_patch_with_msg /{:2;N;/[^}]$/b2;s|.*| apply_patch_with_msg $in_prepare\\n\\ \n autoreconf -vfi\n}|}" \ + PKGBUILD || +die "Could not update the patch set in PKGBUILD" + +updpkgsums || +die "Could not update the patch set checksums in PKGBUILD" + +# bump pkgrel +sed "s/\(pkgrel\).*/pkgrel=$(($pkgrel + 1))/" -i PKGBUILD + +git add PKGBUILD || +die "Could not stage updates in PKGBUILD" From edf2fbbeb87e73cbd3c15bd097b653597e3a59a9 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Fri, 21 Jan 2022 17:58:47 +0100 Subject: [PATCH 063/226] gcc: backport some long-jump fixes as suggested here: https://github.com/msys2/MINGW-packages/pull/10589#issuecomment-1018478090 Both are already on the gcc-11 branch --- ...cks-and-partition-glitch-with-Window.patch | 60 +++++++++++++++++++ ...freorder-blocks-and-partition-on-64-.patch | 46 ++++++++++++++ mingw-w64-gcc/PKGBUILD | 15 ++++- 3 files changed, 118 insertions(+), 3 deletions(-) create mode 100644 mingw-w64-gcc/1001-Fix-freorder-blocks-and-partition-glitch-with-Window.patch create mode 100644 mingw-w64-gcc/1002-Properly-enable-freorder-blocks-and-partition-on-64-.patch diff --git a/mingw-w64-gcc/1001-Fix-freorder-blocks-and-partition-glitch-with-Window.patch b/mingw-w64-gcc/1001-Fix-freorder-blocks-and-partition-glitch-with-Window.patch new file mode 100644 index 0000000000..5dca6113e4 --- /dev/null +++ b/mingw-w64-gcc/1001-Fix-freorder-blocks-and-partition-glitch-with-Window.patch @@ -0,0 +1,60 @@ +From aef7d09baf91341540e7d468419918d58dd33601 Mon Sep 17 00:00:00 2001 +From: Eric Botcazou +Date: Tue, 30 Nov 2021 10:17:09 +0100 +Subject: [PATCH] Fix -freorder-blocks-and-partition glitch with Windows SEH + (continued) + +This fixes a thinko in the fix for the -freorder-blocks-and-partition +glitch with SEH on 64-bit Windows: + https://gcc.gnu.org/pipermail/gcc-patches/2021-February/565208.html + +Even if no exceptions are active, e.g. in C, we need to consider calls. + +gcc/ + PR target/103274 + * config/i386/i386.c (ix86_output_call_insn): Beef up comment about + nops emitted with SEH. + * config/i386/winnt.c (i386_pe_seh_unwind_emit): When switching to + the cold section, emit a nop before the directive if the previous + active instruction is a call. +--- + gcc/config/i386/i386.c | 6 ++++-- + gcc/config/i386/winnt.c | 4 ++-- + 2 files changed, 6 insertions(+), 4 deletions(-) + +diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c +index 1448f3609c3..8e8c8beb366 100644 +--- a/gcc/config/i386/i386.c ++++ b/gcc/config/i386/i386.c +@@ -16149,8 +16149,10 @@ ix86_output_call_insn (rtx_insn *insn, rtx call_op) + break; + + /* If we get to the epilogue note, prevent a catch region from +- being adjacent to the standard epilogue sequence. If non- +- call-exceptions, we'll have done this during epilogue emission. */ ++ being adjacent to the standard epilogue sequence. Note that, ++ if non-call exceptions are enabled, we already did it during ++ epilogue expansion, or else, if the insn can throw internally, ++ we already did it during the reorg pass. */ + if (NOTE_P (i) && NOTE_KIND (i) == NOTE_INSN_EPILOGUE_BEG + && !flag_non_call_exceptions + && !can_throw_internal (insn)) +diff --git a/gcc/config/i386/winnt.c b/gcc/config/i386/winnt.c +index b66263ad243..2d1debf2dbd 100644 +--- a/gcc/config/i386/winnt.c ++++ b/gcc/config/i386/winnt.c +@@ -1244,9 +1244,9 @@ i386_pe_seh_unwind_emit (FILE *asm_out_file, rtx_insn *insn) + seh = cfun->machine->seh; + if (NOTE_P (insn) && NOTE_KIND (insn) == NOTE_INSN_SWITCH_TEXT_SECTIONS) + { +- /* See ix86_seh_fixup_eh_fallthru for the rationale. */ ++ /* See ix86_output_call_insn/seh_fixup_eh_fallthru for the rationale. */ + rtx_insn *prev = prev_active_insn (insn); +- if (prev && !insn_nothrow_p (prev)) ++ if (prev && (CALL_P (prev) || !insn_nothrow_p (prev))) + fputs ("\tnop\n", asm_out_file); + fputs ("\t.seh_endproc\n", asm_out_file); + seh->in_cold_section = true; +-- +2.34.1 + diff --git a/mingw-w64-gcc/1002-Properly-enable-freorder-blocks-and-partition-on-64-.patch b/mingw-w64-gcc/1002-Properly-enable-freorder-blocks-and-partition-on-64-.patch new file mode 100644 index 0000000000..52c59c05e9 --- /dev/null +++ b/mingw-w64-gcc/1002-Properly-enable-freorder-blocks-and-partition-on-64-.patch @@ -0,0 +1,46 @@ +From 27e6c84c1f14a8195a3f9fb489c240ecc7a6257d Mon Sep 17 00:00:00 2001 +From: Eric Botcazou +Date: Mon, 10 Jan 2022 12:40:10 +0100 +Subject: [PATCH] Properly enable -freorder-blocks-and-partition on 64-bit + Windows + +The PR uncovered that -freorder-blocks-and-partition was working by accident +on 64-bit Windows, i.e. the middle-end was supposed to disable it with SEH. +After the change installed on mainline, the middle-end properly disables it, +which is too bad since a significant amount of work went into it for SEH. + +gcc/ + PR target/103465 + * coretypes.h (unwind_info_type): Swap UI_SEH and UI_TARGET. +--- + gcc/coretypes.h | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +diff --git a/gcc/coretypes.h b/gcc/coretypes.h +index 406572e947d..732c76f5cbf 100644 +--- a/gcc/coretypes.h ++++ b/gcc/coretypes.h +@@ -227,15 +227,17 @@ enum stack_protector { + SPCT_FLAG_EXPLICIT = 4 + }; + +-/* Types of unwind/exception handling info that can be generated. */ ++/* Types of unwind/exception handling info that can be generated. ++ Note that a UI_TARGET (or larger) setting is considered to be ++ incompatible with -freorder-blocks-and-partition. */ + + enum unwind_info_type + { + UI_NONE, + UI_SJLJ, + UI_DWARF2, +- UI_TARGET, +- UI_SEH ++ UI_SEH, ++ UI_TARGET + }; + + /* Callgraph node profile representation. */ +-- +2.34.1 + diff --git a/mingw-w64-gcc/PKGBUILD b/mingw-w64-gcc/PKGBUILD index 94e5d16547..4041c5eec3 100644 --- a/mingw-w64-gcc/PKGBUILD +++ b/mingw-w64-gcc/PKGBUILD @@ -24,7 +24,7 @@ pkgver=11.2.0 #_majorver=${pkgver:0:1} #_sourcedir=${_realname}-${_majorver}-${_snapshot} _sourcedir=${_realname}-${pkgver} -pkgrel=7 +pkgrel=8 pkgdesc="GCC for the MinGW-w64" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64') @@ -66,7 +66,9 @@ source=("https://ftp.gnu.org/gnu/gcc/${_realname}-${pkgver%%+*}/${_realname}-${p 0140-gcc-8.2.0-diagnostic-color.patch 0150-gcc-10.2.0-libgcc-ldflags.patch 0200-add-m-no-align-vector-insn-option-for-i386.patch - 0300-override-builtin-printf-format.patch) + 0300-override-builtin-printf-format.patch + 1001-Fix-freorder-blocks-and-partition-glitch-with-Window.patch + 1002-Properly-enable-freorder-blocks-and-partition-on-64-.patch) sha256sums=('d08edc536b54c372a1010ff6619dd274c0f1603aa49212ba20f7aa2cda36fa8b' 'SKIP' 'bce81824fc89e5e62cca350de4c17a27e27a18a1a1ad5ca3492aec1fc5af3234' @@ -86,7 +88,9 @@ sha256sums=('d08edc536b54c372a1010ff6619dd274c0f1603aa49212ba20f7aa2cda36fa8b' '5240a9e731b45c17a164066c7eb193c1fbee9fd8d9a2a5afa2edbcde9510da47' '7f0b4e45d933e18c9d8bd2afcd83e4f52e97e2e25dd41bfa0cba755c70e591c7' '75c4f764741a1f5ed29adbed1b7085bf4a12a3dd6fb19347f5f63c3831a51953' - 'b6c401790fce1f5e57a479d7820b11bd13b5711c28d263a25852cee68bcf8fd1') + 'b6c401790fce1f5e57a479d7820b11bd13b5711c28d263a25852cee68bcf8fd1' + '579f7f4921a085cddd23b1282adc4bc3f1bbbd027eb545c86fe3db2a81537776' + '675df5cb664e9f0171fa008426c524fe44b04e58476dd1775027cd3bc5ce625b') validpgpkeys=(F3691687D867B81B51CE07D9BBE43771487328A9 # bpiotrowski@archlinux.org 86CFFCA918CF3AF47147588051E8B148A9999C34 # evangelos@foutrelis.com 13975A70E63C361C73AE69EF6EEB81F8981C74C7 # richard.guenther@gmail.com @@ -157,6 +161,11 @@ prepare() { apply_patch_with_msg \ 0300-override-builtin-printf-format.patch + # https://github.com/msys2/MINGW-packages/pull/10589#issuecomment-1018478090 + apply_patch_with_msg \ + 1001-Fix-freorder-blocks-and-partition-glitch-with-Window.patch \ + 1002-Properly-enable-freorder-blocks-and-partition-on-64-.patch + # do not expect ${prefix}/mingw symlink - this should be superceded by # 0005-Windows-Don-t-ignore-native-system-header-dir.patch .. but isn't! sed -i 's/${prefix}\/mingw\//${prefix}\//g' configure From cdaf93fee7c59276a52c4fe219505a053a4aa62f Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sat, 22 Jan 2022 14:06:02 +0530 Subject: [PATCH 064/226] python-aioresponses: update to 0.7.3 --- mingw-w64-python-aioresponses/PKGBUILD | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/mingw-w64-python-aioresponses/PKGBUILD b/mingw-w64-python-aioresponses/PKGBUILD index d7767be855..c7ea8e2f1d 100644 --- a/mingw-w64-python-aioresponses/PKGBUILD +++ b/mingw-w64-python-aioresponses/PKGBUILD @@ -3,39 +3,41 @@ _realname=aioresponses pkgbase=mingw-w64-python-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") -pkgver=0.7.2 -pkgrel=2 +pkgver=0.7.3 +pkgrel=1 pkgdesc='A helper to mock/fake web requests in python aiohttp package. (mingw-w64)' arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') url="https://github.com/pnuckowski/aioresponses" license=('MIT') depends=("${MINGW_PACKAGE_PREFIX}-python-aiohttp") -checkdepends=("${MINGW_PACKAGE_PREFIX}-python-asynctest" "${MINGW_PACKAGE_PREFIX}-python-ddt" "${MINGW_PACKAGE_PREFIX}-python-pytest-runner") +checkdepends=("${MINGW_PACKAGE_PREFIX}-python-asynctest" + "${MINGW_PACKAGE_PREFIX}-python-ddt" + "${MINGW_PACKAGE_PREFIX}-python-pytest-runner") makedepends=("${MINGW_PACKAGE_PREFIX}-python-pbr") -source=("https://github.com/pnuckowski/aioresponses/archive/$pkgver.tar.gz") -sha256sums=('1bef1328f6732cd10b6d9c4ce02bd0198ffd491728d3c57f8e47fef1e427c5d3') +source=("${_realname}-${pkgver}.tar.gz::https://github.com/pnuckowski/aioresponses/archive/${pkgver}.tar.gz") +sha256sums=('c4a0bd1fd38680e36b7d2344ed4279062a8178c64bd66b68ffa2f8562751bf27') export PBR_VERSION=$pkgver -prepare() { - rm -rf python-build-${CARCH} | true - cp -r "${_realname}-$pkgver" "python-build-${CARCH}" +prepare() { + rm -rf "python-build-${MSYSTEM}" | true + cp -r "${_realname}-$pkgver" "python-build-${MSYSTEM}" } build() { - msg "Python build for ${CARCH}" - cd "${srcdir}/python-build-${CARCH}" + msg "Python build for ${MSYSTEM}" + cd "${srcdir}/python-build-${MSYSTEM}" ${MINGW_PREFIX}/bin/python setup.py build } check() { - cd "${srcdir}/python-build-${CARCH}" + cd "${srcdir}/python-build-${MSYSTEM}" ${MINGW_PREFIX}/bin/python setup.py pytest || warning "Tests failed" } package() { - cd "${srcdir}/python-build-${CARCH}" + cd "${srcdir}/python-build-${MSYSTEM}" MSYS2_ARG_CONV_EXCL="--prefix=;--install-scripts=;--install-platlib=" \ ${MINGW_PREFIX}/bin/python setup.py install --prefix=${MINGW_PREFIX} \ --root="${pkgdir}" --optimize=1 --skip-build From 2a4d08065f580ff169eef6313f2a8995eac64074 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sat, 22 Jan 2022 14:09:13 +0530 Subject: [PATCH 065/226] python-debtcollector: update to 2.4.0 --- mingw-w64-python-debtcollector/PKGBUILD | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/mingw-w64-python-debtcollector/PKGBUILD b/mingw-w64-python-debtcollector/PKGBUILD index 327b69636b..99116201d3 100644 --- a/mingw-w64-python-debtcollector/PKGBUILD +++ b/mingw-w64-python-debtcollector/PKGBUILD @@ -6,8 +6,8 @@ pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") provides=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") conflicts=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") replaces=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") -pkgver=2.2.0 -pkgrel=2 +pkgver=2.4.0 +pkgrel=1 pkgdesc="A collection of Python deprecation patterns and strategies that help you collect your technical debt in a non-destructive manner (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') @@ -20,9 +20,9 @@ depends=("${MINGW_PACKAGE_PREFIX}-python" "${MINGW_PACKAGE_PREFIX}-python-babel" "${MINGW_PACKAGE_PREFIX}-python-wrapt") makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools") -#checkdepends=("${MINGW_PACKAGE_PREFIX}-python-oslotest") +checkdepends=("${MINGW_PACKAGE_PREFIX}-python-oslotest") source=("${_realname}-${pkgver}.tar.gz::https://github.com/openstack/debtcollector/archive/${pkgver}.tar.gz") -sha512sums=('51060ddbe102aec7ea262faba31e93f6068365887158abf902a8d5d405cf00955849d934d02a3925b770359be32b8cdb24a1b9f029a94a07d8d20fca15495a49') +sha512sums=('ba04507fb7579e63b0a03623b40df5b97fe24396589a2b88ba6bd1338b1934e004fe671bfbe32e7463ebfcab21191afc307beaadb270f96257f69d5cddb7fa53') # Helper macros to help make tasks easier # apply_patch_with_msg() { @@ -44,9 +44,8 @@ del_file_exists() { # =========================================== # prepare() { - cd "${srcdir}" - rm -rf python-build-${CARCH} | true - cp -r "${_realname}-${pkgver}" "python-build-${CARCH}" + rm -rf "python-build-${MSYSTEM}" | true + cp -r "${_realname}-${pkgver}" "python-build-${MSYSTEM}" # Set version for setuptools_scm export SETUPTOOLS_SCM_PRETEND_VERSION=${pkgver} @@ -55,19 +54,19 @@ prepare() { } build() { - msg "Python build for ${CARCH}" - cd "${srcdir}/python-build-${CARCH}" + msg "Python build for ${MSYSTEM}" + cd "${srcdir}/python-build-${MSYSTEM}" ${MINGW_PREFIX}/bin/python setup.py build } check() { - msg "Python test for ${CARCH}" - cd "${srcdir}/python-build-${CARCH}" + msg "Python test for ${MSYSTEM}" + cd "${srcdir}/python-build-${MSYSTEM}" ${MINGW_PREFIX}/bin/python setup.py check } package() { - cd "${srcdir}/python-build-${CARCH}" + cd "${srcdir}/python-build-${MSYSTEM}" MSYS2_ARG_CONV_EXCL="--prefix=;--install-scripts=;--install-platlib=" \ ${MINGW_PREFIX}/bin/python setup.py install --prefix=${MINGW_PREFIX} \ --root="${pkgdir}" --optimize=1 --skip-build From 4fdddc078fc1802ddf6eaf9123e96c806148fbec Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sat, 22 Jan 2022 14:13:06 +0530 Subject: [PATCH 066/226] python-pynndescent: update to 0.5.6 --- mingw-w64-python-pynndescent/PKGBUILD | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/mingw-w64-python-pynndescent/PKGBUILD b/mingw-w64-python-pynndescent/PKGBUILD index ce23881f4d..af906daaf6 100644 --- a/mingw-w64-python-pynndescent/PKGBUILD +++ b/mingw-w64-python-pynndescent/PKGBUILD @@ -4,7 +4,7 @@ _pyname=pynndescent _realname=pynndescent pkgbase=mingw-w64-python-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") -pkgver=0.5.5 +pkgver=0.5.6 pkgrel=1 pkgdesc='Nearest Neighbor Descent (mingw-w64)' arch=('any') @@ -12,7 +12,7 @@ mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64') url="https://github.com/lmcinnes/pynndescent" license=('BSD-2-Clause') depends=( - "${MINGW_PACKAGE_PREFIX}-python" + "${MINGW_PACKAGE_PREFIX}-python" "${MINGW_PACKAGE_PREFIX}-python-joblib" "${MINGW_PACKAGE_PREFIX}-python-numpy" "${MINGW_PACKAGE_PREFIX}-python-scikit-learn" @@ -21,26 +21,25 @@ depends=( "${MINGW_PACKAGE_PREFIX}-python-llvmlite" ) makedepends=( - "${MINGW_PACKAGE_PREFIX}-python-setuptools" + "${MINGW_PACKAGE_PREFIX}-python-setuptools" ) source=("${_pyname}-${pkgver}.tar.gz::https://pypi.org/packages/source/${_pyname::1}/${_pyname}/${_pyname}-${pkgver}.tar.gz") -sha256sums=('7a7df8412b19cfb3596060faf5a8c5d0bf5b3bd504f8efd900fc4e3918c6f882') +sha256sums=('61fb31885baac469d67933e2c7c935b6edebb06ee498e2f0f9dfc97c59d3725c') -prepare() { - cd "$srcdir" - rm -rf python-build-${CARCH} | true - cp -r "${_pyname//_/-}-$pkgver" "python-build-${CARCH}" +prepare() { + rm -rf "python-build-${MSYSTEM}" | true + cp -r "${_pyname//_/-}-$pkgver" "python-build-${MSYSTEM}" export SETUPTOOLS_SCM_PRETEND_VERSION=${pkgver} } build() { - msg "Python build for ${CARCH}" - cd "${srcdir}/python-build-${CARCH}" + msg "Python build for ${MSYSTEM}" + cd "${srcdir}/python-build-${MSYSTEM}" ${MINGW_PREFIX}/bin/python setup.py build } package() { - cd "${srcdir}/python-build-${CARCH}" + cd "${srcdir}/python-build-${MSYSTEM}" MSYS2_ARG_CONV_EXCL="--prefix=;--install-scripts=;--install-platlib=" \ ${MINGW_PREFIX}/bin/python setup.py install --prefix=${MINGW_PREFIX} \ --root="${pkgdir}" --optimize=1 --skip-build From f6d822132541a17681fa045250b55b0ff37353b6 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sat, 22 Jan 2022 14:16:52 +0530 Subject: [PATCH 067/226] vulkan-headers: update to 1.2.203 --- mingw-w64-vulkan-headers/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mingw-w64-vulkan-headers/PKGBUILD b/mingw-w64-vulkan-headers/PKGBUILD index e5737c46c9..99af13805d 100644 --- a/mingw-w64-vulkan-headers/PKGBUILD +++ b/mingw-w64-vulkan-headers/PKGBUILD @@ -4,7 +4,7 @@ _realname=Vulkan-Headers pkgbase=mingw-w64-vulkan-headers pkgname=("${MINGW_PACKAGE_PREFIX}-vulkan-headers") -pkgver=1.2.194 +pkgver=1.2.203 pkgrel=1 pkgdesc='Vulkan header files (mingw-w64)' arch=('any') @@ -17,7 +17,7 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-cmake" "${MINGW_PACKAGE_PREFIX}-ninja") source=("${_realname}-${pkgver}.tar.gz"::"https://github.com/KhronosGroup/${_realname}/archive/v${pkgver}.tar.gz" "0001-fix-export.patch") -sha256sums=('8700d4c88fc2cde245829135a316d68f854cf979e87db5504ee4c42f24023355' +sha256sums=('7239108c372f1fbe365bd8d1610ca2bb4e72b73b2151f2551bf9df54dd539639' '155048d7f96a84d59c0746889ab8d5741b4393213b11b7ebe3c78eb3b395cece') prepare() { From dbec4af2b2206f46f6d0d196b9a84238dfa8561f Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sat, 22 Jan 2022 14:21:26 +0530 Subject: [PATCH 068/226] vulkan-loader: update to 1.2.203 Remove an upstream patch. Rebase patches. --- .../002-proper-def-files-for-32bit.patch | 23 ++++++++++--------- .../003-generate-pkgconfig-files.patch | 2 +- .../004-disable-suffix-in-static-lib.patch | 6 ++--- mingw-w64-vulkan-loader/PKGBUILD | 15 +++++------- mingw-w64-vulkan-loader/libvulkan-32.def | 1 + 5 files changed, 23 insertions(+), 24 deletions(-) diff --git a/mingw-w64-vulkan-loader/002-proper-def-files-for-32bit.patch b/mingw-w64-vulkan-loader/002-proper-def-files-for-32bit.patch index 64b67c0dfb..e79b10e44e 100644 --- a/mingw-w64-vulkan-loader/002-proper-def-files-for-32bit.patch +++ b/mingw-w64-vulkan-loader/002-proper-def-files-for-32bit.patch @@ -1,8 +1,8 @@ diff --git a/loader/CMakeLists.txt b/loader/CMakeLists.txt -index 56ff014..8e884f3 100644 +index 8bb10fd..fc38ecc 100644 --- a/loader/CMakeLists.txt +++ b/loader/CMakeLists.txt -@@ -172,7 +172,7 @@ set(ASM_FAILURE_MSG "${ASM_FAILURE_MSG}Note that this may be unsafe, as the C co +@@ -170,7 +170,7 @@ set(ASM_FAILURE_MSG "${ASM_FAILURE_MSG}Note that this may be unsafe, as the C co set(ASM_FAILURE_MSG "${ASM_FAILURE_MSG} the stack frame for certain calls. If the compiler does not do this, then unknown device") set(ASM_FAILURE_MSG "${ASM_FAILURE_MSG} extensions will suffer from a corrupted stack.") if(WIN32) @@ -11,7 +11,7 @@ index 56ff014..8e884f3 100644 find_program(JWASM_FOUND jwasm) if (JWASM_FOUND) set(CMAKE_ASM_MASM_COMPILER ${JWASM_FOUND}) -@@ -190,7 +190,7 @@ if(WIN32) +@@ -188,7 +188,7 @@ if(WIN32) if (USE_MASM) enable_language(ASM_MASM) endif () @@ -20,22 +20,23 @@ index 56ff014..8e884f3 100644 if(MINGW) set(CMAKE_ASM_MASM_FLAGS ${CMAKE_ASM_MASM_FLAGS} ${JWASM_FLAGS}) elseif(NOT CMAKE_CL_64 AND NOT JWASM_FOUND) -@@ -204,12 +204,14 @@ if(WIN32) - set_target_properties(loader_asm_gen_files PROPERTIES FOLDER ${LOADER_HELPER_FOLDER}) +@@ -203,6 +203,7 @@ if(WIN32) add_library(loader-unknown-chain OBJECT unknown_ext_chain_masm.asm) + target_link_libraries(loader-unknown-chain Vulkan::Headers) add_dependencies(loader-unknown-chain loader_asm_gen_files) + set_target_properties(loader-unknown-chain PROPERTIES DEFINE_SYMBOL "VK_BUILDING_DLL") else() message(WARNING "Could not find working MASM assebler\n${ASM_FAILURE_MSG}") add_custom_target(loader_asm_gen_files) - add_library(loader-unknown-chain OBJECT unknown_ext_chain.c) +@@ -210,6 +211,7 @@ if(WIN32) + target_link_libraries(loader-unknown-chain Vulkan::Headers) set_target_properties(loader-unknown-chain PROPERTIES CMAKE_C_FLAGS_DEBUG "${MODIFIED_C_FLAGS_DEBUG}") target_compile_options(loader-unknown-chain PUBLIC ${MSVC_LOADER_COMPILE_OPTIONS}) + set_target_properties(loader-unknown-chain PROPERTIES DEFINE_SYMBOL "VK_BUILDING_DLL") endif() elseif(APPLE) # For MacOS, use the C code and force the compiler's tail-call optimization instead of using assembly code. -@@ -242,12 +244,14 @@ endif() +@@ -261,12 +263,14 @@ endif() if(WIN32) add_library(loader-norm OBJECT ${NORMAL_LOADER_SRCS} dirent_on_windows.c) @@ -50,7 +51,7 @@ index 56ff014..8e884f3 100644 set_target_properties(loader-opt PROPERTIES CMAKE_C_FLAGS_DEBUG "${MODIFIED_C_FLAGS_DEBUG}") target_compile_options(loader-opt PUBLIC ${MSVC_LOADER_COMPILE_OPTIONS}) target_include_directories(loader-opt PRIVATE "$") -@@ -267,10 +271,17 @@ if(WIN32) +@@ -286,10 +290,17 @@ if(WIN32) # when adding the suffix the import and runtime library names must be consistent # mingw: libvulkan-1.dll.a / libvulkan-1.dll # msvc: vulkan-1.lib / vulkan-1.dll @@ -70,10 +71,10 @@ index 56ff014..8e884f3 100644 if(MSVC AND ENABLE_WIN10_ONECORE) diff --git a/loader/vk_loader_platform.h b/loader/vk_loader_platform.h -index f603f19..987465e 100644 +index 507a901..6b8fc48 100644 --- a/loader/vk_loader_platform.h +++ b/loader/vk_loader_platform.h -@@ -71,7 +71,13 @@ +@@ -76,7 +76,13 @@ #include "vk_layer_dispatch_table.h" #include "vk_loader_extensions.h" @@ -89,7 +90,7 @@ index f603f19..987465e 100644 #elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590) #define LOADER_EXPORT __attribute__((visibility("default"))) diff --git a/loader/vulkan-1.def b/loader/vulkan-1.def -index aa74306..ca91743 100644 +index 6a88b55..1d26b1f 100644 --- a/loader/vulkan-1.def +++ b/loader/vulkan-1.def @@ -22,7 +22,7 @@ diff --git a/mingw-w64-vulkan-loader/003-generate-pkgconfig-files.patch b/mingw-w64-vulkan-loader/003-generate-pkgconfig-files.patch index 7b10fca12e..00918575dd 100644 --- a/mingw-w64-vulkan-loader/003-generate-pkgconfig-files.patch +++ b/mingw-w64-vulkan-loader/003-generate-pkgconfig-files.patch @@ -1,6 +1,6 @@ --- Vulkan-Loader-1.2.158.orig/loader/CMakeLists.txt +++ Vulkan-Loader-1.2.158/loader/CMakeLists.txt -@@ -321,11 +335,11 @@ +@@ -385,11 +385,11 @@ ) # cmake-format: on endif() diff --git a/mingw-w64-vulkan-loader/004-disable-suffix-in-static-lib.patch b/mingw-w64-vulkan-loader/004-disable-suffix-in-static-lib.patch index d15220f690..ced6e1315f 100644 --- a/mingw-w64-vulkan-loader/004-disable-suffix-in-static-lib.patch +++ b/mingw-w64-vulkan-loader/004-disable-suffix-in-static-lib.patch @@ -1,11 +1,11 @@ --- a/loader/CMakeLists.txt +++ b/loader/CMakeLists.txt -@@ -334,7 +348,7 @@ +@@ -398,7 +398,7 @@ foreach(LIB ${CMAKE_CXX_IMPLICIT_LINK_LIBRARIES} ${PLATFORM_LIBS}) set(PRIVATE_LIBS "${PRIVATE_LIBS} -l${LIB}") endforeach() - if(WIN32) + if(MSVC) set(VULKAN_LIB_SUFFIX "-1") - endif () - configure_file("vulkan.pc.in" "vulkan.pc" @ONLY) + # Set libdir path as in cmake's FindVulkan.cmake + # https://github.com/KhronosGroup/Vulkan-Loader/issues/668 diff --git a/mingw-w64-vulkan-loader/PKGBUILD b/mingw-w64-vulkan-loader/PKGBUILD index 9fbe2c847e..e344095d9c 100644 --- a/mingw-w64-vulkan-loader/PKGBUILD +++ b/mingw-w64-vulkan-loader/PKGBUILD @@ -6,7 +6,7 @@ pkgbase=mingw-w64-vulkan-loader pkgname=("${MINGW_PACKAGE_PREFIX}-vulkan-loader") provides=("${MINGW_PACKAGE_PREFIX}-vulkan") replaces=("${MINGW_PACKAGE_PREFIX}-vulkan") -pkgver=1.2.194 +pkgver=1.2.203 pkgrel=1 pkgdesc='Vulkan Installable Client Driver (ICD) Loader (mingw-w64)' arch=('any') @@ -21,21 +21,18 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-cmake" "${MINGW_PACKAGE_PREFIX}-python" "${MINGW_PACKAGE_PREFIX}-cc") source=("${_realname}-${pkgver}.tar.gz"::"https://github.com/KhronosGroup/${_realname}/archive/v${pkgver}.tar.gz" - "https://github.com/KhronosGroup/Vulkan-Loader/commit/8c0ee92.patch" 002-proper-def-files-for-32bit.patch 003-generate-pkgconfig-files.patch 004-disable-suffix-in-static-lib.patch libvulkan-32.def) -sha256sums=('5c5017ac93dbfbead705d2bb9d10c8bbaeed9f916b9043b61950fb6a2fb91d65' - '50ddd856059adf3959a4f4a5871862a39e395049a1cb65c89288378a056cc273' - '4b10b486ebcf20b9ca7ede4184427adc2222b2cbea14c505603bfd17f6abccaa' - '97c5ff3d945d2ed5d5a8b9cc8b6199ff55d4e6b210e59143228c4e82d0252cb4' - 'ee0def2718356a2ed441a786e99a0136b9c425274f660cd4447ed0aff4b0de6a' - '70a65c93c9bd4fece5ea50cdbf77dad615996d9264813c840b19b1c14186b73b') +sha256sums=('a431c627f36f90ce8d1aa752e7a37838db569760a54bb97edaee35dae4743118' + '1de2c326081515935419079a6aee12d38a8ecfd73f5080d68d41e516d3108b00' + 'c7287931a4f50b0215643eb23d429b56f0b218b11116f90778aea1e0b85c3dfc' + 'e8c7a59dc6aa8707c92150256602a36dcae4ee8a5bc5eb2a54a41246c970e56b' + 'c6fb466a246ec5ed8085ed01843bb71363ad98ef6c1576f5bfe525187476e3fe') prepare() { cd ${srcdir}/${_realname}-${pkgver} - patch -p1 -i "${srcdir}/8c0ee92.patch" patch -p1 -i ${srcdir}/002-proper-def-files-for-32bit.patch patch -p1 -i ${srcdir}/003-generate-pkgconfig-files.patch patch -p1 -i ${srcdir}/004-disable-suffix-in-static-lib.patch diff --git a/mingw-w64-vulkan-loader/libvulkan-32.def b/mingw-w64-vulkan-loader/libvulkan-32.def index 356f1e20b5..eb82ac53eb 100644 --- a/mingw-w64-vulkan-loader/libvulkan-32.def +++ b/mingw-w64-vulkan-loader/libvulkan-32.def @@ -80,6 +80,7 @@ vkCreateEvent@16 vkCreateFence@16 vkCreateFramebuffer@16 vkCreateGraphicsPipelines@28 +vkCreateHeadlessSurfaceEXT@16 vkCreateImage@16 vkCreateImageView@16 vkCreateInstance@12 From 5c24a3418fac11c85976bde89001364b0cc16889 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sat, 22 Jan 2022 14:26:56 +0530 Subject: [PATCH 069/226] vulkan-validation-layers: update to 1.2.203 Add patch file to fix spirv library name. Remove the hunk for vk_format_utils.h. It now includes vk_layer.h. --- .../002-proper-def-files-for-32bit.patch | 17 ----------------- .../004-cmake-fix-spirv-libs.patch | 11 +++++++++++ mingw-w64-vulkan-validation-layers/PKGBUILD | 13 ++++++++----- 3 files changed, 19 insertions(+), 22 deletions(-) create mode 100644 mingw-w64-vulkan-validation-layers/004-cmake-fix-spirv-libs.patch diff --git a/mingw-w64-vulkan-validation-layers/002-proper-def-files-for-32bit.patch b/mingw-w64-vulkan-validation-layers/002-proper-def-files-for-32bit.patch index d66cc319d0..72d8c4a196 100644 --- a/mingw-w64-vulkan-validation-layers/002-proper-def-files-for-32bit.patch +++ b/mingw-w64-vulkan-validation-layers/002-proper-def-files-for-32bit.patch @@ -8,20 +8,3 @@ set_target_properties(VkLayer_${target} PROPERTIES CXX_STANDARD ${VVL_CPP_STANDARD}) target_compile_definitions(VkLayer_${target} PUBLIC ${LAYER_COMPILE_DEFINITIONS}) target_link_libraries(VkLayer_${target} PRIVATE VkLayer_utils) ---- Vulkan-ValidationLayers/layers/vk_format_utils.h.orig 2020-02-28 11:50:38.167672800 +0300 -+++ Vulkan-ValidationLayers/layers/vk_format_utils.h 2020-02-28 11:51:10.078172600 +0300 -@@ -25,7 +25,13 @@ - #include "vulkan/vulkan.h" - - #if !defined(VK_LAYER_EXPORT) --#if defined(__GNUC__) && __GNUC__ >= 4 -+#if defined(_WIN32) -+# if defined (VK_BUILDING_DLL) -+# define VK_LAYER_EXPORT __declspec(dllexport) -+# else -+# define VK_LAYER_EXPORT -+# endif -+#elif defined(__GNUC__) && __GNUC__ >= 4 - #define VK_LAYER_EXPORT __attribute__((visibility("default"))) - #elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590) - #define VK_LAYER_EXPORT __attribute__((visibility("default"))) diff --git a/mingw-w64-vulkan-validation-layers/004-cmake-fix-spirv-libs.patch b/mingw-w64-vulkan-validation-layers/004-cmake-fix-spirv-libs.patch new file mode 100644 index 0000000000..c54c95fb95 --- /dev/null +++ b/mingw-w64-vulkan-validation-layers/004-cmake-fix-spirv-libs.patch @@ -0,0 +1,11 @@ +--- a/layers/CMakeLists.txt ++++ b/layers/CMakeLists.txt +@@ -308,7 +308,7 @@ + if (USE_ROBIN_HOOD_HASHING) + target_include_directories(VkLayer_khronos_validation PRIVATE ${ROBIN_HOOD_HASHING_INCLUDE_DIR}) + endif() +- target_link_libraries(VkLayer_khronos_validation PRIVATE SPIRV-Headers::SPIRV-Headers SPIRV-Tools-static SPIRV-Tools-opt) ++ target_link_libraries(VkLayer_khronos_validation PRIVATE SPIRV-Headers::SPIRV-Headers SPIRV-Tools SPIRV-Tools-opt) + + + # The output file needs Unix "/" separators or Windows "\" separators On top of that, Windows separators actually need to be doubled diff --git a/mingw-w64-vulkan-validation-layers/PKGBUILD b/mingw-w64-vulkan-validation-layers/PKGBUILD index af29ba5160..5c37b644ee 100644 --- a/mingw-w64-vulkan-validation-layers/PKGBUILD +++ b/mingw-w64-vulkan-validation-layers/PKGBUILD @@ -4,7 +4,7 @@ _realname=Vulkan-ValidationLayers pkgbase=mingw-w64-vulkan-validation-layers pkgname=("${MINGW_PACKAGE_PREFIX}-vulkan-validation-layers") -pkgver=1.2.194 +pkgver=1.2.203 pkgrel=1 pkgdesc='Vulkan Validation Layers (mingw-w64)' arch=('any') @@ -25,11 +25,13 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-cmake" source=("${_realname}-${pkgver}.tar.gz"::"https://github.com/KhronosGroup/${_realname}/archive/v${pkgver}.tar.gz" 001-fix-json-layers-install-dest.patch 002-proper-def-files-for-32bit.patch - 003-install-layout.patch) -sha256sums=('c2a601fa8ccf2ae633c9e929149c489fbf97e951995f8982001e129fa1b850c2' + 003-install-layout.patch + 004-cmake-fix-spirv-libs.patch) +sha256sums=('55aa46a001993fe1ab4177d5a03c5e90091dc674d716a560dc0e6c8a1e0158f9' 'aae34364773bbe39fa510713c48a5c1bf0fb7b5fe984770bc9e2fd4e1cd12f60' - '07e12b905174d2b2cb44babe548fe521d913226000daf29e1d812a10ce67829a' - '02dc645bdae0b7150766e1663cc9e675681201d7247d68375c307a5f75db4ce0') + '91afeaf48dc3b46e0e643e1a0445c4562314732c09b10570f01e8ee58acf8b87' + '02dc645bdae0b7150766e1663cc9e675681201d7247d68375c307a5f75db4ce0' + 'db535608517a2f5fe6b68c24e905037b51aa1191faccbdc5e41b641f38676abc') prepare() { cd ${srcdir}/${_realname}-${pkgver} @@ -37,6 +39,7 @@ prepare() { patch -p1 -i ${srcdir}/001-fix-json-layers-install-dest.patch patch -p1 -i ${srcdir}/002-proper-def-files-for-32bit.patch patch -p1 -i ${srcdir}/003-install-layout.patch + patch -p1 -i ${srcdir}/004-cmake-fix-spirv-libs.patch } build() { From c16171c9eef9dde425a6a0c80597cd73d5397352 Mon Sep 17 00:00:00 2001 From: ruki Date: Sat, 22 Jan 2022 21:47:29 +0800 Subject: [PATCH 070/226] xmake: 2.6.3 --- mingw-w64-xmake/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mingw-w64-xmake/PKGBUILD b/mingw-w64-xmake/PKGBUILD index c34eb3f39a..5420d0a631 100644 --- a/mingw-w64-xmake/PKGBUILD +++ b/mingw-w64-xmake/PKGBUILD @@ -3,7 +3,7 @@ _realname=xmake pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=2.6.2 +pkgver=2.6.3 pkgrel=1 pkgdesc="A cross-platform build utility based on Lua (mingw-w64)" arch=('any') @@ -14,7 +14,7 @@ depends=("${MINGW_PACKAGE_PREFIX}-ncurses" "${MINGW_PACKAGE_PREFIX}-readline") makedepends=("${MINGW_PACKAGE_PREFIX}-cc") source=("${_realname}-${pkgver}.tar.gz"::"https://github.com/xmake-io/${_realname}/releases/download/v${pkgver}/${_realname}-v${pkgver}.tar.gz") -sha256sums=('845f4bb50e300f75ed819755702e586614945eddcc74bc1dcef38c5cc107cebf') +sha256sums=('43c739b8faa3be986f95421c7ba1e135ff18d4723fb88b7e0bb0cdd27ef37430') build() { cd "$srcdir" From 5d82d25e2181cbade0e09a236bf024d186bb91b9 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sat, 22 Jan 2022 19:28:48 +0530 Subject: [PATCH 071/226] vulkan-validation-layers: Import upstream patch for clang builds --- mingw-w64-vulkan-validation-layers/PKGBUILD | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mingw-w64-vulkan-validation-layers/PKGBUILD b/mingw-w64-vulkan-validation-layers/PKGBUILD index 5c37b644ee..4f20cecbe9 100644 --- a/mingw-w64-vulkan-validation-layers/PKGBUILD +++ b/mingw-w64-vulkan-validation-layers/PKGBUILD @@ -5,7 +5,7 @@ _realname=Vulkan-ValidationLayers pkgbase=mingw-w64-vulkan-validation-layers pkgname=("${MINGW_PACKAGE_PREFIX}-vulkan-validation-layers") pkgver=1.2.203 -pkgrel=1 +pkgrel=2 pkgdesc='Vulkan Validation Layers (mingw-w64)' arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') @@ -23,11 +23,13 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-cmake" "${MINGW_PACKAGE_PREFIX}-spirv-tools" "${MINGW_PACKAGE_PREFIX}-cc") source=("${_realname}-${pkgver}.tar.gz"::"https://github.com/KhronosGroup/${_realname}/archive/v${pkgver}.tar.gz" + "https://github.com/KhronosGroup/Vulkan-ValidationLayers/commit/251b223.patch" 001-fix-json-layers-install-dest.patch 002-proper-def-files-for-32bit.patch 003-install-layout.patch 004-cmake-fix-spirv-libs.patch) sha256sums=('55aa46a001993fe1ab4177d5a03c5e90091dc674d716a560dc0e6c8a1e0158f9' + '16ce351fd33d5cadc5b60c1d5873ed63fa97326c4c8b1df268d9aa413b32f5a7' 'aae34364773bbe39fa510713c48a5c1bf0fb7b5fe984770bc9e2fd4e1cd12f60' '91afeaf48dc3b46e0e643e1a0445c4562314732c09b10570f01e8ee58acf8b87' '02dc645bdae0b7150766e1663cc9e675681201d7247d68375c307a5f75db4ce0' @@ -36,6 +38,7 @@ sha256sums=('55aa46a001993fe1ab4177d5a03c5e90091dc674d716a560dc0e6c8a1e0158f9' prepare() { cd ${srcdir}/${_realname}-${pkgver} + patch -p1 -i ${srcdir}/251b223.patch patch -p1 -i ${srcdir}/001-fix-json-layers-install-dest.patch patch -p1 -i ${srcdir}/002-proper-def-files-for-32bit.patch patch -p1 -i ${srcdir}/003-install-layout.patch From 5b53853501759bd7f3da17891974f35f20e1a836 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sat, 22 Jan 2022 23:53:38 +0530 Subject: [PATCH 072/226] tree-sitter: update to 0.20.3 --- mingw-w64-tree-sitter/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mingw-w64-tree-sitter/PKGBUILD b/mingw-w64-tree-sitter/PKGBUILD index 9bdc26692d..e7b2127048 100644 --- a/mingw-w64-tree-sitter/PKGBUILD +++ b/mingw-w64-tree-sitter/PKGBUILD @@ -3,7 +3,7 @@ _realname=tree-sitter pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=0.20.2 +pkgver=0.20.3 pkgrel=1 pkgdesc="An incremental parsing system for programming tools (mingw-w64)" arch=('any') @@ -13,7 +13,7 @@ license=('MIT') makedepends=("unzip" "${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-rust") source=("${_realname}-${pkgver}.zip::https://github.com/tree-sitter/tree-sitter/archive/v${pkgver}.zip" 001-mingw-build.patch) -sha256sums=('a542f8b3dc73bcf6d4f23c09fd022ec579d0acdb27a3f02b62c75da533adcbc3' +sha256sums=('519f1ce0d35cb68a7e90088b51b6aad2f4d2df955f8c4fc39d44f2c97a0cc2e3' '19d2a1608ca5c6138c228b97815c48ac95be2bec1265c207fdc0950a65b8ebad') noextract=("${_realname}-${pkgver}.zip") From 74de8593a5da0ec0c9f43d8c0d8770f36f2f4399 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sat, 22 Jan 2022 23:59:12 +0530 Subject: [PATCH 073/226] cargo-c: update to 0.9.7 --- mingw-w64-cargo-c/PKGBUILD | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mingw-w64-cargo-c/PKGBUILD b/mingw-w64-cargo-c/PKGBUILD index 837d5cbdc8..924251619c 100644 --- a/mingw-w64-cargo-c/PKGBUILD +++ b/mingw-w64-cargo-c/PKGBUILD @@ -3,7 +3,7 @@ _realname=cargo-c pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=0.9.6 +pkgver=0.9.7 pkgrel=1 pkgdesc='A cargo subcommand to build and install C-ABI compatibile dynamic and static libraries (mingw-w64)' arch=('any') @@ -17,8 +17,8 @@ depends=("${MINGW_PACKAGE_PREFIX}-curl" makedepends=("${MINGW_PACKAGE_PREFIX}-rust") source=("${_realname}-${pkgver}.tar.gz"::"https://github.com/lu-zero/cargo-c/archive/v${pkgver}.tar.gz" "${_realname}-${pkgver}.Cargo.lock"::"https://github.com/lu-zero/cargo-c/releases/download/v${pkgver}/Cargo.lock") -sha256sums=('c121bc2069373c25a89dcf9c357aa1e91d9eb4eb46a87db4d9931114070317c5' - 'd89b9b02ae95d1993b12ef1a764157b5a42bc70d39e91eb5844320dc809a0e08') +sha256sums=('eead78d26b4e5924e9d750f66f2fef4d706680927542d87c895178fc0be016f0' + '3898341b624517daa50d95bd99e2fa873b15ea803f9e3d6f7edab11427b95de8') prepare() { cp "${srcdir}/${_realname}-${pkgver}.Cargo.lock" "${_realname}-${pkgver}/Cargo.lock" From a8b368722295a8862751ce3f2ba432274d8b3645 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sun, 23 Jan 2022 01:22:06 +0530 Subject: [PATCH 074/226] cereal: update to 1.3.1 Rebase patch. Use ninja instead of make. Disable -Werror flag for clang. --- mingw-w64-cereal/PKGBUILD | 20 ++++++++++--------- mingw-w64-cereal/cereal-1.2.2.patch | 31 ++++++++++------------------- 2 files changed, 22 insertions(+), 29 deletions(-) diff --git a/mingw-w64-cereal/PKGBUILD b/mingw-w64-cereal/PKGBUILD index d4d5db5880..ade4b8da1f 100644 --- a/mingw-w64-cereal/PKGBUILD +++ b/mingw-w64-cereal/PKGBUILD @@ -3,21 +3,22 @@ _realname=cereal pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=1.3.0 +pkgver=1.3.1 pkgrel=1 pkgdesc="A C++11 library for serialization (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') url="https://uscilab.github.io/cereal/" license=('New BSD license') -makedepends=("${MINGW_PACKAGE_PREFIX}-gcc" - "${MINGW_PACKAGE_PREFIX}-cmake") +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" + "${MINGW_PACKAGE_PREFIX}-cmake" + "${MINGW_PACKAGE_PREFIX}-ninja") depends=("${MINGW_PACKAGE_PREFIX}-boost") checkdepends=("${MINGW_PACKAGE_PREFIX}-gflags") source=("${_realname}-${pkgver}.tar.gz::https://github.com/USCiLab/cereal/archive/v${pkgver}.tar.gz" "${_realname}-1.2.2.patch") -sha256sums=('329ea3e3130b026c03a4acc50e168e7daff4e6e661bc6a7dfec0d77b570851d5' - '3a7f7a6e6d8e092c5ffb7b0342d0bfa8675a57985dc1c9e5a4209ce434156767') +sha256sums=('65ea6ddda98f4274f5c10fb3e07b2269ccdd1e5cbb227be6a2fd78b8f382c976' + '1f82ffd1cac9b171ef4a60612492fef2216c851960f84543742ac4206fcc5a94') prepare() { cd "${srcdir}/${_realname}-${pkgver}" @@ -33,22 +34,23 @@ build() { CXXFLAGS+=" -Wno-unused-variable" MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \ ${MINGW_PREFIX}/bin/cmake.exe \ - -G"MSYS Makefiles" \ + -G"Ninja" \ -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \ -DCMAKE_BUILD_TYPE="Release" \ + -DWITH_WERROR=OFF \ "../${_realname}-${pkgver}" - make + ${MINGW_PREFIX}/bin/cmake.exe --build ./ } check() { cd "${srcdir}/build-${MINGW_CHOST}" - make test + ${MINGW_PREFIX}/bin/ctest.exe || true } package() { cd "${srcdir}/build-${MINGW_CHOST}" - make DESTDIR="${pkgdir}" install + DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake.exe --install ./ install -Dm644 ${srcdir}/${_realname}-${pkgver}/LICENSE ${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE } diff --git a/mingw-w64-cereal/cereal-1.2.2.patch b/mingw-w64-cereal/cereal-1.2.2.patch index 706906af48..30d4e6ca44 100644 --- a/mingw-w64-cereal/cereal-1.2.2.patch +++ b/mingw-w64-cereal/cereal-1.2.2.patch @@ -1,7 +1,7 @@ diff -Naur cereal-1.2.2/include/cereal/archives/json.hpp cereal-1.2.2-patched/include/cereal/archives/json.hpp --- cereal-1.2.2/include/cereal/archives/json.hpp 2017-02-13 01:06:58.000000000 +0300 +++ cereal-1.2.2-patched/include/cereal/archives/json.hpp 2018-10-23 22:38:05.621656900 +0300 -@@ -643,7 +643,7 @@ +@@ -661,7 +661,7 @@ // Special cases to handle various flavors of long, which tend to conflict with // the int32_t or int64_t on various compiler/OS combinations. MSVC doesn't need any of this. @@ -20,19 +20,19 @@ diff -Naur cereal-1.2.2/unittests/CMakeLists.txt cereal-1.2.2-patched/unittests/ - if(NOT MSVC) + if(NOT WIN32) add_executable(portability_test32 portability_test.cpp) + target_link_libraries(portability_test32 ${CEREAL_THREAD_LIBS}) set_target_properties(portability_test32 PROPERTIES COMPILE_FLAGS "-m32") - set_target_properties(portability_test32 PROPERTIES LINK_FLAGS "-m32") -@@ -24,7 +24,7 @@ +@@ -26,7 +26,7 @@ -DPORTABILITY_TEST_DIR=$ -P "${CMAKE_CURRENT_SOURCE_DIR}/run_portability_test.cmake") - elseif(MSVC) + elseif() add_executable(portability_test32 portability_test.cpp) + target_link_libraries(portability_test32 cereal::cereal) endif() - endif() -@@ -45,7 +45,7 @@ - add_test("${TEST_TARGET}" "${TEST_TARGET}") +@@ -48,7 +48,7 @@ + add_test(NAME "${TEST_TARGET}" COMMAND "${TEST_TARGET}") # If we are on a 64-bit machine, create an extra 32-bit version of the test if portability testing is enabled - if((NOT MSVC) AND (${CMAKE_SIZEOF_VOID_P} EQUAL 8) AND (NOT SKIP_PORTABILITY_TEST)) @@ -40,7 +40,7 @@ diff -Naur cereal-1.2.2/unittests/CMakeLists.txt cereal-1.2.2-patched/unittests/ add_executable(${TEST_TARGET}_32 ${TEST_SOURCE}) set_target_properties(${TEST_TARGET}_32 PROPERTIES COMPILE_FLAGS "-m32" LINK_FLAGS "-m32") -@@ -57,7 +57,7 @@ +@@ -61,7 +61,7 @@ endforeach() # Add the valgrind target @@ -49,28 +49,19 @@ diff -Naur cereal-1.2.2/unittests/CMakeLists.txt cereal-1.2.2-patched/unittests/ add_custom_target(valgrind COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/run_valgrind.sh") -@@ -85,7 +85,7 @@ - target_link_libraries(${COVERAGE_TARGET} ${CEREAL_THREAD_LIBS}) - endif() - endforeach() --endif(NOT MSVC) -+endif() - - if(NOT CMAKE_VERSION VERSION_LESS 3.0) - add_test(test_cmake_config_module ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake-config-module.cmake) diff -Naur cereal-1.3.0/unittests/boost/CMakeLists.txt cereal-1.3.0-patched/unittests/boost/CMakeLists.txt --- cereal-1.3.0/unittests/boost/CMakeLists.txt 2020-06-11 01:06:58.000000000 +0300 +++ cereal-1.3.0-patched/unittests/boost/CMakeLists.txt 2020-06-11 22:45:34.970358200 +0300 -@@ -12,7 +12,7 @@ - add_test("${TEST_TARGET}" "${TEST_TARGET}") +@@ -14,7 +14,7 @@ + add_test(NAME "${TEST_TARGET}" COMMAND "${TEST_TARGET}") # If we are on a 64-bit machine, create an extra 32-bit version of the test if portability testing is enabled - if((NOT MSVC) AND (${CMAKE_SIZEOF_VOID_P} EQUAL 8) AND (NOT SKIP_PORTABILITY_TEST)) + if((NOT WIN32) AND (${CMAKE_SIZEOF_VOID_P} EQUAL 8) AND (NOT SKIP_PORTABILITY_TEST)) add_executable(${TEST_TARGET}_32 ${TEST_SOURCE}) + target_link_libraries(${TEST_TARGET}_32 ${CEREAL_THREAD_LIBS}) set_target_properties(${TEST_TARGET}_32 PROPERTIES - COMPILE_FLAGS "-m32" LINK_FLAGS "-m32") -@@ -21,7 +21,7 @@ +@@ -24,7 +24,7 @@ endforeach() From 150fe5906540843b6b3ea818c6f22e72ca1ab587 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sun, 23 Jan 2022 01:26:29 +0530 Subject: [PATCH 075/226] entt: update to 3.9.0 --- mingw-w64-entt/PKGBUILD | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/mingw-w64-entt/PKGBUILD b/mingw-w64-entt/PKGBUILD index 434e515689..d886e499bd 100644 --- a/mingw-w64-entt/PKGBUILD +++ b/mingw-w64-entt/PKGBUILD @@ -1,7 +1,9 @@ +# Maintainer: Biswapriyo Nath + _realname=entt pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=3.7.1 +pkgver=3.9.0 pkgrel=1 pkgdesc="A fast and reliable entity-component system" arch=('any') @@ -9,11 +11,12 @@ mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') url="https://github.com/skypjack/entt" license=('MIT') makedepends=( + "${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-cmake" "${MINGW_PACKAGE_PREFIX}-ninja" ) -source=("https://github.com/skypjack/entt/archive/refs/tags/v${pkgver}.tar.gz") -sha256sums=('FE3CE773C17797C0C57FFA97F73902854FCC8E7AFC7E09BEA373E0C64FA24A23') +source=("${_realname}-${pkgver}.tar.gz::https://github.com/skypjack/entt/archive/refs/tags/v${pkgver}.tar.gz") +sha256sums=('1b06f1f6627c3702486855877bdeab6885f5d821d3dd78862126d4308c627c23') prepare() { cd "${srcdir}/${_realname}-${pkgver}" From a560d7e2c20656d9e0273ebf1589fbca0b23a1d6 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sun, 23 Jan 2022 01:33:32 +0530 Subject: [PATCH 076/226] ffnvcodec-headers: update to 11.1.5.1 --- mingw-w64-ffnvcodec-headers/PKGBUILD | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mingw-w64-ffnvcodec-headers/PKGBUILD b/mingw-w64-ffnvcodec-headers/PKGBUILD index 8e052565ac..c944b065d6 100644 --- a/mingw-w64-ffnvcodec-headers/PKGBUILD +++ b/mingw-w64-ffnvcodec-headers/PKGBUILD @@ -3,15 +3,15 @@ _realname=ffnvcodec-headers pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=11.1.5.0 +pkgver=11.1.5.1 pkgrel=1 -pkgdesc='FFmpeg version of headers required to interface with Nvidias codec APIs' +pkgdesc='FFmpeg version of headers required to interface with Nvidias codec APIs (mingw-w64)' arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') url=https://git.videolan.org/?p=ffmpeg/nv-codec-headers.git license=('MIT') makedepends=("git") -_tag=b641a195edbe3ac9788e681e22c2e2fad8aacddb +_tag=84483da70d903239d4536763fde8c7e6c4e80784 source=(git+https://git.videolan.org/git/ffmpeg/nv-codec-headers.git#tag=${_tag}) sha256sums=(SKIP) From 4326627b56a8dca2641ea493b70c34b53b9b9792 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sun, 23 Jan 2022 01:39:39 +0530 Subject: [PATCH 077/226] recode: update to 3.7.10 Rebase patch. --- mingw-w64-recode/01-no-undefined.patch | 8 ++++---- mingw-w64-recode/PKGBUILD | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/mingw-w64-recode/01-no-undefined.patch b/mingw-w64-recode/01-no-undefined.patch index fa7073b33f..c6a2948e1f 100644 --- a/mingw-w64-recode/01-no-undefined.patch +++ b/mingw-w64-recode/01-no-undefined.patch @@ -1,11 +1,11 @@ --- recode-3.7/src/Makefile.am.orig 2018-02-01 14:58:02.550508800 +0300 +++ recode-3.7/src/Makefile.am 2018-02-01 14:58:12.211339900 +0300 -@@ -56,7 +56,7 @@ +@@ -54,7 +54,7 @@ librecode_la_SOURCES = charname.c combine.c fr-charname.c iconv.c \ names.c outer.c recode.c request.c strip-pool.c task.c $(ALL_STEPS) \ $(include_HEADERS) $(noinst_HEADERS) $(H_STEPS) --librecode_la_LDFLAGS = -version-info $(VERSION_INFO) -+librecode_la_LDFLAGS = -no-undefined -version-info $(VERSION_INFO) +-librecode_la_LDFLAGS = -version-info $(VERSION_INFO) $(LTLIBINTL) \ ++librecode_la_LDFLAGS = -no-undefined -version-info $(VERSION_INFO) $(LTLIBINTL) \ + $(LIB_CLOCK_GETTIME) $(LIB_GETRANDOM) $(LIB_HARD_LOCALE) $(LIB_MBRTOWC) $(LIB_SETLOCALE_NULL) librecode_la_LIBADD = ../lib/libgnu.la libmerged.la - libmerged_la_SOURCES = merged.c diff --git a/mingw-w64-recode/PKGBUILD b/mingw-w64-recode/PKGBUILD index 7ca9a9e328..f8324acd6a 100644 --- a/mingw-w64-recode/PKGBUILD +++ b/mingw-w64-recode/PKGBUILD @@ -3,11 +3,11 @@ _realname=recode pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}") -pkgver=3.7.9 +pkgver=3.7.10 pkgrel=1 pkgdesc="Converts files between various character sets and usages (mingw-w64)" arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') url="https://github.com/rrthomas/recode" license=('GPL3' 'LGPL') depends=("${MINGW_PACKAGE_PREFIX}-gettext") @@ -17,8 +17,8 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-python" "${MINGW_PACKAGE_PREFIX}-cc") source=("https://github.com/rrthomas/recode/releases/download/v${pkgver}/${_realname}-${pkgver}.tar.gz" "01-no-undefined.patch") -sha256sums=('e4320a6b0f5cd837cdb454fb5854018ddfa970911608e1f01cc2c65f633672c4' - '21de31138709ec460fb684b5bf110beabf31627b8e55b4131aad67c7633e77dd') +sha256sums=('4a4b00a6080f8ef77956a18040454785d35b66ab7d8105ffd971798aa4a8f186' + '40c88d6d70c91f2ab2919b77e2d6577cdcc55ec368f8c873cc1a1f1e1b6dc52b') prepare() { cd "${srcdir}/${_realname}-${pkgver}" From 04612e56c274ccb770c3c724eff1ee222e81407f Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sun, 23 Jan 2022 01:42:58 +0530 Subject: [PATCH 078/226] soundtouch: update to 2.3.1 Install license file. --- mingw-w64-soundtouch/PKGBUILD | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mingw-w64-soundtouch/PKGBUILD b/mingw-w64-soundtouch/PKGBUILD index d44841d43c..0e0a0161d6 100644 --- a/mingw-w64-soundtouch/PKGBUILD +++ b/mingw-w64-soundtouch/PKGBUILD @@ -3,11 +3,11 @@ _realname=soundtouch pkgbase="mingw-w64-${_realname}" pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=2.3.0 +pkgver=2.3.1 pkgrel=1 pkgdesc="An audio processing library (mingw-w64)" arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') url="https://www.surina.net/soundtouch/" license=("LGPL") makedepends=("${MINGW_PACKAGE_PREFIX}-autotools" @@ -17,7 +17,7 @@ options=('strip' 'staticlibs') source=(https://www.surina.net/${_realname}/${_realname}-${pkgver}.tar.gz 0001-no-undefined-on.mingw.patch 0003-fix-docdir.mingw.patch) -sha256sums=('b0f38497c72bb545d5d5c505243c5daa3598567641d25728d015b27678a68ad8' +sha256sums=('6900996607258496ce126924a19fe9d598af9d892cf3f33d1e4daaa9b42ae0b1' '68d545eedd45afa26723aa2e3d7a447d179c78566308b29fa9d1c6a71476f50d' '2cd136046831f3ad9a2e37c0afe3ecd9f25ce27f5dbf4ee8b23b862a96e76cd5') @@ -47,4 +47,5 @@ build() { package() { cd build-${MINGW_CHOST} make DESTDIR="${pkgdir}" install + install -Dm644 "${srcdir}/${_realname}-${pkgver}/COPYING.TXT" "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/COPYING.TXT" } From 621bc97a318d8036e0428f549786db48f15307ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milo=C5=A1=20Komar=C4=8Devi=C4=87?= Date: Sat, 22 Jan 2022 21:36:54 +0100 Subject: [PATCH 079/226] gmic: update to 3.0.2 --- mingw-w64-gmic/PKGBUILD | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/mingw-w64-gmic/PKGBUILD b/mingw-w64-gmic/PKGBUILD index b3c099b6eb..1ba0066648 100644 --- a/mingw-w64-gmic/PKGBUILD +++ b/mingw-w64-gmic/PKGBUILD @@ -3,7 +3,7 @@ _realname=gmic pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=3.0.0 +pkgver=3.0.2 pkgrel=1 pkgdesc="A Full-Featured Open-Source Framework for Image Processing (mingw-w64)" arch=(any) @@ -23,18 +23,14 @@ depends=("${MINGW_PACKAGE_PREFIX}-fftw" "${MINGW_PACKAGE_PREFIX}-curl" "${MINGW_PACKAGE_PREFIX}-openexr" "${MINGW_PACKAGE_PREFIX}-opencv") - source=("${_realname}-${pkgver}.tar.gz::https://gmic.eu/files/source/${_realname}_${pkgver}.tar.gz" - "0002-gmic-mingw-build.patch"::https://github.com/dtschump/gmic/commit/2461be2d9582e8b83ac91989ef7c56e502f4b237.diff - "0003-gmic-clang-build.patch"::https://github.com/dtschump/gmic/commit/537ac58d7966daca86e4aa2d47a2887ae4e34d67.diff) -sha256sums=('3f056bb9e6dbf0674af4c8dce59f4198172187662f7fbb36cc63ebc8c1b71120' - '9bb9882bbd4a3f755aabcdb1a68a7ba76c7dfc11c347c31fd269dc98b140fb38' - '897e6dd45d6bab3e3ef30623f275b0fa1355b4ba8303a50bb078dfe2306f1de5') + "0004-gmic-core-cmake-build.patch"::https://github.com/dtschump/gmic/commit/7e97e786295f925256b1b1b7349aa3cb16bdfd3b.diff) +sha256sums=('68acec32c45d56fb0b0408acec4f63166171816d70722d63106787f1e7d17030' + 'fb6c330e88a7ba1e1f9ba62b0598e9e1a3b5eb9cea1b60d27bdf7aca992381f6') prepare() { cd "${srcdir}/${_realname}-${pkgver}" - patch -p1 -i "${srcdir}/0002-gmic-mingw-build.patch" - patch -p1 -i "${srcdir}/0003-gmic-clang-build.patch" + patch -Np1 -i "${srcdir}/0004-gmic-core-cmake-build.patch" } build() { From 9786aef4fba3689b0121eabc80de7e050ba09901 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sun, 23 Jan 2022 09:16:01 +0530 Subject: [PATCH 080/226] python-pathlib2: update to 2.3.6 --- mingw-w64-python-pathlib2/PKGBUILD | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/mingw-w64-python-pathlib2/PKGBUILD b/mingw-w64-python-pathlib2/PKGBUILD index cfa73a516c..b516f4e7c4 100644 --- a/mingw-w64-python-pathlib2/PKGBUILD +++ b/mingw-w64-python-pathlib2/PKGBUILD @@ -6,8 +6,8 @@ pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") provides=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") conflicts=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") replaces=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") -pkgver=2.3.5 -pkgrel=2 +pkgver=2.3.6 +pkgrel=1 pkgdesc="This module offers a set of classes featuring all the common operations on paths in an easy, object-oriented way (mingw-w64)" url="https://pypi.org/project/pathlib2/" arch=('any') @@ -17,22 +17,21 @@ depends=("${MINGW_PACKAGE_PREFIX}-python" "${MINGW_PACKAGE_PREFIX}-python-scandir") makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools") source=("https://pypi.io/packages/source/p/${_realname}/${_realname}-${pkgver}.tar.gz") -sha256sums=('6cd9a47b597b37cc57de1c05e56fb1a1c9cc9fab04fe78c29acd090418529868') +sha256sums=('7d8bcb5555003cdf4a8d2872c538faa3a0f5d20630cb360e518ca3b981795e5f') prepare() { - cd "${srcdir}" - rm -rf python-build-${CARCH} | true - cp -r "${_realname}-${pkgver}" "python-build-${CARCH}" + rm -rf "python-build-${MSYSTEM}" | true + cp -r "${_realname}-${pkgver}" "python-build-${MSYSTEM}" } build() { - msg "Python build for ${CARCH}" - cd "${srcdir}/python-build-${CARCH}" + msg "Python build for ${MSYSTEM}" + cd "${srcdir}/python-build-${MSYSTEM}" ${MINGW_PREFIX}/bin/python setup.py build } package() { - cd "${srcdir}/python-build-${CARCH}" + cd "${srcdir}/python-build-${MSYSTEM}" MSYS2_ARG_CONV_EXCL="--prefix=;--install-scripts=;--install-platlib=" \ ${MINGW_PREFIX}/bin/python setup.py install --prefix=${MINGW_PREFIX} \ --root="${pkgdir}" --optimize=1 --skip-build From 9daa4d950e76ec2cc2a6a9acbab27f6a42ac3d22 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sun, 23 Jan 2022 09:20:00 +0530 Subject: [PATCH 081/226] python-pyrsistent: update to 0.18.1 --- mingw-w64-python-pyrsistent/PKGBUILD | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/mingw-w64-python-pyrsistent/PKGBUILD b/mingw-w64-python-pyrsistent/PKGBUILD index c2d6e9eff8..56943ca28c 100644 --- a/mingw-w64-python-pyrsistent/PKGBUILD +++ b/mingw-w64-python-pyrsistent/PKGBUILD @@ -7,8 +7,8 @@ pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") provides=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") conflicts=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") replaces=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") -pkgver=0.18.0 -pkgrel=2 +pkgver=0.18.1 +pkgrel=1 pkgdesc="Persistent/Functional/Immutable data structures (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') @@ -22,31 +22,30 @@ checkdepends=("${MINGW_PACKAGE_PREFIX}-python-pytest-runner" "${MINGW_PACKAGE_PREFIX}-python-hypothesis") options=('staticlibs' 'strip' '!debug') source=("https://pypi.io/packages/source/p/pyrsistent/pyrsistent-${pkgver}.tar.gz") -sha512sums=('f56062430f914a884a9317ecf5278ccc09d98f1d6867716f89173db47996b8d4c1ef4f5c0121c955d81fc4fe8aba7d30f38679baea6208168c3952846064cfeb') +sha512sums=('353ad6e9165e1afdde37730a9289cf8dde28491abb688d702a8c8f5279e24f5ce387a5d00ac4a077322299f9c1a535781bcacdcd1cb914ddb317b3ca9641778b') prepare() { - cd "${srcdir}" - rm -rf python-build-${CARCH} | true - cp -r "${_realname}-${pkgver}" "python-build-${CARCH}" + rm -rf "python-build-${MSYSTEM}" | true + cp -r "${_realname}-${pkgver}" "python-build-${MSYSTEM}" # Set version for setuptools_scm export SETUPTOOLS_SCM_PRETEND_VERSION=${pkgver} } build() { - msg "Python build for ${CARCH}" - cd "${srcdir}/python-build-${CARCH}" + msg "Python build for ${MSYSTEM}" + cd "${srcdir}/python-build-${MSYSTEM}" ${MINGW_PREFIX}/bin/python setup.py build } check() { - msg "Python test for ${CARCH}" - cd "${srcdir}/python-build-${CARCH}" + msg "Python test for ${MSYSTEM}" + cd "${srcdir}/python-build-${MSYSTEM}" ${MINGW_PREFIX}/bin/python setup.py pytest || warning "tests failed!!" } package() { - cd "${srcdir}/python-build-${CARCH}" + cd "${srcdir}/python-build-${MSYSTEM}" MSYS2_ARG_CONV_EXCL="--prefix=;--install-scripts=;--install-platlib=" \ ${MINGW_PREFIX}/bin/python setup.py install --prefix=${MINGW_PREFIX} \ --root="${pkgdir}" --optimize=1 --skip-build From 2011747cfc7c28b87e819bd10292a32355443f43 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sun, 23 Jan 2022 09:23:37 +0530 Subject: [PATCH 082/226] python-ruamel-yaml: update to 0.17.19 --- mingw-w64-python-ruamel-yaml/PKGBUILD | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/mingw-w64-python-ruamel-yaml/PKGBUILD b/mingw-w64-python-ruamel-yaml/PKGBUILD index bbca359adf..3ae6a09f29 100644 --- a/mingw-w64-python-ruamel-yaml/PKGBUILD +++ b/mingw-w64-python-ruamel-yaml/PKGBUILD @@ -3,35 +3,34 @@ _realname=ruamel-yaml pkgbase=mingw-w64-python-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") -pkgver=0.17.9 -pkgrel=2 +pkgver=0.17.19 +pkgrel=1 pkgdesc='YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order (mingw-w64)' arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') url="https://sourceforge.net/projects/ruamel-yaml/" license=('MIT') depends=("${MINGW_PACKAGE_PREFIX}-python-ruamel.yaml.clib") makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools") options=('!emptydirs') source=("https://files.pythonhosted.org/packages/source/${_realname:0:1}/${_realname//-/.}/${_realname//-/.}-${pkgver}.tar.gz") -sha256sums=('374373b4743aee9f6d9f40bea600fe020a7ac7ae36b838b4a6a93f72b584a14c') +sha256sums=('b9ce9a925d0f0c35a1dbba56b40f253c53cd526b0fa81cf7b1d24996f28fb1d7') -prepare() { - cd "$srcdir" - rm -rf python-build-${CARCH} | true - cp -r "${_realname//-/.}-${pkgver}" "python-build-${CARCH}" +prepare() { + rm -rf "python-build-${MSYSTEM}" | true + cp -r "${_realname//-/.}-${pkgver}" "python-build-${MSYSTEM}" } build() { - msg "Python build for ${CARCH}" - cd "${srcdir}/python-build-${CARCH}" + msg "Python build for ${MSYSTEM}" + cd "${srcdir}/python-build-${MSYSTEM}" ${MINGW_PREFIX}/bin/python setup.py build } package() { - cd "${srcdir}/python-build-${CARCH}" + cd "${srcdir}/python-build-${MSYSTEM}" MSYS2_ARG_CONV_EXCL="--prefix=;--install-scripts=;--install-platlib=" \ RUAMEL_NO_PIP_INSTALL_CHECK=1 ${MINGW_PREFIX}/bin/python setup.py install \ - --prefix=${MINGW_PREFIX} --root="${pkgdir}" --optimize=1 --skip-build + --prefix=${MINGW_PREFIX} --root="${pkgdir}" --optimize=1 --skip-build install -Dm644 LICENSE "${pkgdir}${MINGW_PREFIX}/share/licenses/python-${_realname}/LICENSE" } From 47325390a8076df94b001bc9a809bb8ad0f193b2 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sun, 23 Jan 2022 09:29:28 +0530 Subject: [PATCH 083/226] ruamel.yaml.clib: update to 0.2.6 --- mingw-w64-python-ruamel.yaml.clib/PKGBUILD | 23 +++++++++++----------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/mingw-w64-python-ruamel.yaml.clib/PKGBUILD b/mingw-w64-python-ruamel.yaml.clib/PKGBUILD index 4cc50c5d4e..f4b66ad9cd 100644 --- a/mingw-w64-python-ruamel.yaml.clib/PKGBUILD +++ b/mingw-w64-python-ruamel.yaml.clib/PKGBUILD @@ -3,11 +3,11 @@ _realname=ruamel.yaml.clib pkgbase=mingw-w64-python-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") -pkgver=0.2.2 -pkgrel=2 +pkgver=0.2.6 +pkgrel=1 pkgdesc='C version of reader, parser and emitter for ruamel.yaml derived from libyaml (mingw-w64)' arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') url="https://sourceforge.net/projects/ruamel-yaml-clib/" license=('MIT') depends=("${MINGW_PACKAGE_PREFIX}-python") @@ -15,24 +15,23 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools" "${MINGW_PACKAGE_PREFIX}-cc") options=('!emptydirs') source=("https://files.pythonhosted.org/packages/source/${_realname:0:1}/${_realname}/${_realname}-${pkgver}.tar.gz") -sha256sums=('2d24bd98af676f4990c4d715bcdc2a60b19c56a3fb3a763164d2d8ca0e806ba7') +sha256sums=('4ff604ce439abb20794f05613c374759ce10e3595d1867764dd1ae675b85acbd') -prepare() { - cd "$srcdir" - rm -rf python-build-${CARCH} | true - cp -r "${_realname}-${pkgver}" "python-build-${CARCH}" +prepare() { + rm -rf "python-build-${MSYSTEM}" | true + cp -r "${_realname}-${pkgver}" "python-build-${MSYSTEM}" } build() { - msg "Python build for ${CARCH}" - cd "${srcdir}/python-build-${CARCH}" + msg "Python build for ${MSYSTEM}" + cd "${srcdir}/python-build-${MSYSTEM}" ${MINGW_PREFIX}/bin/python setup.py build } package() { - cd "${srcdir}/python-build-${CARCH}" + cd "${srcdir}/python-build-${MSYSTEM}" MSYS2_ARG_CONV_EXCL="--prefix=;--install-scripts=;--install-platlib=" \ RUAMEL_NO_PIP_INSTALL_CHECK=1 ${MINGW_PREFIX}/bin/python setup.py install \ - --prefix=${MINGW_PREFIX} --root="${pkgdir}" --optimize=1 --skip-build + --prefix=${MINGW_PREFIX} --root="${pkgdir}" --optimize=1 --skip-build install -Dm644 LICENSE "${pkgdir}${MINGW_PREFIX}/share/licenses/python-${_realname}/LICENSE" } From 3166b116cc93255f47af9e0161c2801cc812e5ff Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sun, 23 Jan 2022 09:32:18 +0530 Subject: [PATCH 084/226] python-zipp: update to 3.7.0 --- mingw-w64-python-zipp/PKGBUILD | 45 ++++++++-------------------------- 1 file changed, 10 insertions(+), 35 deletions(-) diff --git a/mingw-w64-python-zipp/PKGBUILD b/mingw-w64-python-zipp/PKGBUILD index 2bea9eb9fe..adaeb89409 100644 --- a/mingw-w64-python-zipp/PKGBUILD +++ b/mingw-w64-python-zipp/PKGBUILD @@ -6,8 +6,8 @@ pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") provides=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") conflicts=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") replaces=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") -pkgver=3.1.0 -pkgrel=2 +pkgver=3.7.0 +pkgrel=1 pkgdesc="Pathlib-compatible object wrapper for zip files (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') @@ -22,55 +22,30 @@ checkdepends=("${MINGW_PACKAGE_PREFIX}-python-jaraco.itertools" "${MINGW_PACKAGE_PREFIX}-python-func-timeout") options=('staticlibs' 'strip' '!debug') source=("${_realname}-${pkgver}.tar.gz"::"https://github.com/jaraco/zipp/archive/v${pkgver}.tar.gz") -sha512sums=('13df30bfb890f0a50928740e257cc8cf289cbb08b0394d841737730fe8a431a60086bb867fae1e8c343503ffd7a94be271abc42b67a77a6ce3be968a4c85fe2b') - -# 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 -} -# =========================================== # +sha512sums=('3bbcd9a30548fa7537d8e9bebbfae1f6cf66ceb197d953511e2e105ea83fe53b9352d8228978dfe9bcecc2f07113e936aded79d84e67bc7f570801a4bc60747a') prepare() { - cd "${srcdir}" - pushd "${_realname}-${pkgver}" -# apply_patch_with_msg 0001-A-really-important-fix.patch \ -# 0002-A-less-important-fix.patch - popd - - rm -rf python-build-${CARCH} | true - cp -r "${_realname}-${pkgver}" "python-build-${CARCH}" + rm -rf "python-build-${MSYSTEM}" | true + cp -r "${_realname}-${pkgver}" "python-build-${MSYSTEM}" # Set version for setuptools_scm export SETUPTOOLS_SCM_PRETEND_VERSION=${pkgver} } build() { - msg "Python build for ${CARCH}" - cd "${srcdir}/python-build-${CARCH}" + msg "Python build for ${MSYSTEM}" + cd "${srcdir}/python-build-${MSYSTEM}" ${MINGW_PREFIX}/bin/python setup.py build } check() { - msg "Python test for ${CARCH}" - cd "${srcdir}/python-build-${CARCH}" + msg "Python test for ${MSYSTEM}" + cd "${srcdir}/python-build-${MSYSTEM}" ${MINGW_PREFIX}/bin/python setup.py test } package() { - cd "${srcdir}/python-build-${CARCH}" + cd "${srcdir}/python-build-${MSYSTEM}" MSYS2_ARG_CONV_EXCL="--prefix=;--install-scripts=;--install-platlib=" \ ${MINGW_PREFIX}/bin/python setup.py install --prefix=${MINGW_PREFIX} \ --root="${pkgdir}" --optimize=1 --skip-build From f72d3295e9e1022fdfec4633c0405ab63574f73a Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sun, 23 Jan 2022 22:58:17 +0530 Subject: [PATCH 085/226] libplacebo: update to 4.192.0 --- mingw-w64-libplacebo/PKGBUILD | 6 +++--- mingw-w64-mpv/PKGBUILD | 2 +- mingw-w64-vlc/PKGBUILD | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/mingw-w64-libplacebo/PKGBUILD b/mingw-w64-libplacebo/PKGBUILD index 7212b96ee1..5c1c2087be 100644 --- a/mingw-w64-libplacebo/PKGBUILD +++ b/mingw-w64-libplacebo/PKGBUILD @@ -3,8 +3,8 @@ _realname=libplacebo pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}") -pkgver=4.157.0 -pkgrel=2 +pkgver=4.192.0 +pkgrel=1 pkgdesc="Reusable library for GPU-accelerated video/image rendering primitives (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') @@ -25,7 +25,7 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-meson" "${MINGW_PACKAGE_PREFIX}-cc") license=('LGPLv2.1') source=("https://code.videolan.org/videolan/libplacebo/-/archive/v${pkgver}/libplacebo-v${pkgver}.tar.gz") -sha256sums=('8ee7773fb7813520b6b1e5f8f207cdf0071a7cf48ca0ce871e956ae6f4d0d538') +sha256sums=('eea8989693e5632e7bb716998b00aebdaa75354369048de52b6da1f1407bb847') prepare() { cd "${srcdir}/${_realname}-v${pkgver}" diff --git a/mingw-w64-mpv/PKGBUILD b/mingw-w64-mpv/PKGBUILD index 2fc0fb054f..920f6ed025 100644 --- a/mingw-w64-mpv/PKGBUILD +++ b/mingw-w64-mpv/PKGBUILD @@ -5,7 +5,7 @@ _realname=mpv pkgbase="mingw-w64-${_realname}" pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" pkgver=0.34.1 -pkgrel=2 +pkgrel=3 pkgdesc="Video player based on MPlayer/mplayer2 (mingw-w64)" url="https://mpv.io/" arch=('any') diff --git a/mingw-w64-vlc/PKGBUILD b/mingw-w64-vlc/PKGBUILD index 91e6f5d84e..4c6454f8c1 100644 --- a/mingw-w64-vlc/PKGBUILD +++ b/mingw-w64-vlc/PKGBUILD @@ -11,7 +11,7 @@ pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" conflicts=("${MINGW_PACKAGE_PREFIX}-${_realname}-git") replaces=("${MINGW_PACKAGE_PREFIX}-${_realname}-git") pkgver=3.0.16 -pkgrel=2 +pkgrel=3 pkgdesc="A multi-platform MPEG, VCD/DVD, and DivX player (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') From 984a7c0c4b60372fccd3444dc0e04783e30d7f5b Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sun, 23 Jan 2022 23:04:31 +0530 Subject: [PATCH 086/226] python-asgiref: update to 3.5.0 --- mingw-w64-python-asgiref/PKGBUILD | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mingw-w64-python-asgiref/PKGBUILD b/mingw-w64-python-asgiref/PKGBUILD index ff17fbe759..bb6eb8303f 100644 --- a/mingw-w64-python-asgiref/PKGBUILD +++ b/mingw-w64-python-asgiref/PKGBUILD @@ -3,11 +3,11 @@ _realname=asgiref pkgbase=mingw-w64-python-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") -pkgver=3.3.4 -pkgrel=2 +pkgver=3.5.0 +pkgrel=1 pkgdesc="Reference ASGI adapters and channel layers (mingw-w64)" arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') url='https://github.com/django/asgiref' license=('BSD') depends=("${MINGW_PACKAGE_PREFIX}-python") @@ -16,7 +16,7 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-python" #checkdepends=("${MINGW_PACKAGE_PREFIX}-python-pytest-asyncio" "${MINGW_PACKAGE_PREFIX}-python-pytest") options=('staticlibs' 'strip' '!debug') source=("https://pypi.io/packages/source/a/asgiref/asgiref-${pkgver}.tar.gz") -sha256sums=('d1216dfbdfb63826470995d31caed36225dcaf34f182e0fa257a4dd9e86f1b78') +sha256sums=('2f8abc20f7248433085eda803936d98992f1343ddb022065779f37c5da0181d0') # Helper macros to help make tasks easier # apply_patch_with_msg() { From ee1f4bf7c82f34fe64a69f30cb5ce303a8685afd Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sun, 23 Jan 2022 23:05:37 +0530 Subject: [PATCH 087/226] svt-av1: update to 0.9.0 Add a patch file from upstream merge request --- .../0001-cmake-fix-install-dir.patch | 49 +++++++++++++++++++ mingw-w64-svt-av1/PKGBUILD | 12 +++-- 2 files changed, 57 insertions(+), 4 deletions(-) create mode 100644 mingw-w64-svt-av1/0001-cmake-fix-install-dir.patch diff --git a/mingw-w64-svt-av1/0001-cmake-fix-install-dir.patch b/mingw-w64-svt-av1/0001-cmake-fix-install-dir.patch new file mode 100644 index 0000000000..00cb92c504 --- /dev/null +++ b/mingw-w64-svt-av1/0001-cmake-fix-install-dir.patch @@ -0,0 +1,49 @@ +From ed6d8e6d0aee5c6750e93b54c80f318999fe6a7c Mon Sep 17 00:00:00 2001 +From: Christopher Degawa +Date: Fri, 21 Jan 2022 11:23:49 -0600 +Subject: [PATCH] cmake: install .dll to bin dir + +Mainly affects Windows where .dll files are considered runtime files +rather than .so files which are just library files + +Signed-off-by: Christopher Degawa +--- + Source/Lib/Decoder/CMakeLists.txt | 5 ++++- + Source/Lib/Encoder/CMakeLists.txt | 5 ++++- + 2 files changed, 8 insertions(+), 2 deletions(-) + +diff --git a/Source/Lib/Decoder/CMakeLists.txt b/Source/Lib/Decoder/CMakeLists.txt +index 1c94eb3e..ca7e51f2 100644 +--- a/Source/Lib/Decoder/CMakeLists.txt ++++ b/Source/Lib/Decoder/CMakeLists.txt +@@ -111,7 +111,10 @@ if (BUILD_SHARED_LIBS) + PRIVATE EB_BUILDING_SHARED_LIBS) + set(DEC_PKG_CONFIG_EXTRA_CFLAGS " -DEB_DLL") + endif() +-install(TARGETS SvtAv1Dec DESTINATION "${CMAKE_INSTALL_LIBDIR}") ++install(TARGETS SvtAv1Dec ++ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" ++ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" ++ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") + + configure_file(pkg-config.pc.in ${CMAKE_BINARY_DIR}/SvtAv1Dec.pc @ONLY) + install(FILES ${CMAKE_BINARY_DIR}/SvtAv1Dec.pc DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/pkgconfig") +diff --git a/Source/Lib/Encoder/CMakeLists.txt b/Source/Lib/Encoder/CMakeLists.txt +index e3c059e5..9e618858 100644 +--- a/Source/Lib/Encoder/CMakeLists.txt ++++ b/Source/Lib/Encoder/CMakeLists.txt +@@ -142,7 +142,10 @@ if (BUILD_SHARED_LIBS) + PRIVATE EB_BUILDING_SHARED_LIBS) + set(ENC_PKG_CONFIG_EXTRA_CFLAGS " -DEB_DLL") + endif() +-install(TARGETS SvtAv1Enc DESTINATION "${CMAKE_INSTALL_LIBDIR}") ++install(TARGETS SvtAv1Enc ++ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" ++ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" ++ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") + + configure_file(pkg-config.pc.in ${CMAKE_BINARY_DIR}/SvtAv1Enc.pc @ONLY) + install(FILES ${CMAKE_BINARY_DIR}/SvtAv1Enc.pc DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") +-- +GitLab + diff --git a/mingw-w64-svt-av1/PKGBUILD b/mingw-w64-svt-av1/PKGBUILD index dbe0bb8818..1d14943482 100644 --- a/mingw-w64-svt-av1/PKGBUILD +++ b/mingw-w64-svt-av1/PKGBUILD @@ -3,23 +3,27 @@ _realname=SVT-AV1 pkgbase=mingw-w64-svt-av1 pkgname=("${MINGW_PACKAGE_PREFIX}-svt-av1") -pkgver=0.8.7 +pkgver=0.9.0 pkgrel=1 pkgdesc="Scalable Video Technology AV1 encoder and decoder (mingw-w64)" arch=('any') mingw_arch=('mingw64' 'ucrt64' 'clang64') url='https://gitlab.com/AOMediaCodec/SVT-AV1' license=('AOM') -depends=("${MINGW_PACKAGE_PREFIX}-crt") makedepends=("${MINGW_PACKAGE_PREFIX}-cmake" "${MINGW_PACKAGE_PREFIX}-ninja" "${MINGW_PACKAGE_PREFIX}-yasm" "${MINGW_PACKAGE_PREFIX}-cc") -source=("${url}/-/archive/v${pkgver}/${_realname}-v${pkgver}.tar.gz") -sha256sums=('de24e4a6c557498b2e8caf9cca438411db5f837d232b9390dc3899d974fec16f') +source=("${url}/-/archive/v${pkgver}/${_realname}-v${pkgver}.tar.gz" + "0001-cmake-fix-install-dir.patch") +sha256sums=('51a41fc38ced0e9a56aa4300b1d872f3b43e2421644110852dfdb67440080c63' + 'b8a32605983003cc2a2380265154095cdb12d62978c63b24e60ee8cee9847762') prepare() { cd "${srcdir}"/${_realname}-v${pkgver} + + # https://gitlab.com/AOMediaCodec/SVT-AV1/-/merge_requests/1812 + patch -p1 -i "${srcdir}/0001-cmake-fix-install-dir.patch" } build() { From dcc6422c6775ab2795e126d91fe93032894790d5 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Mon, 24 Jan 2022 00:37:44 +0530 Subject: [PATCH 088/226] poco: Build static libraries --- mingw-w64-poco/PKGBUILD | 39 ++++++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/mingw-w64-poco/PKGBUILD b/mingw-w64-poco/PKGBUILD index 021dde72c1..b23e6af34b 100644 --- a/mingw-w64-poco/PKGBUILD +++ b/mingw-w64-poco/PKGBUILD @@ -4,7 +4,7 @@ _realname=poco pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" pkgver=1.10.1 -pkgrel=7 +pkgrel=8 pkgdesc="POrtable COmponents C++ Libraries (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') @@ -81,24 +81,49 @@ build() { ;; esac - CXXFLAGS+=" -std=c++11" - [[ -d ${srcdir}/build-${MSYSTEM} ]] && rm -rf ${srcdir}/build-${MSYSTEM} - mkdir -p "${srcdir}/build-${MSYSTEM}" && cd "${srcdir}/build-${MSYSTEM}" + [[ -d "${srcdir}/build-${MSYSTEM}-static" ]] && rm -rf "${srcdir}/build-${MSYSTEM}-static" + mkdir -p "${srcdir}/build-${MSYSTEM}-static" && cd "${srcdir}/build-${MSYSTEM}-static" MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \ ${MINGW_PREFIX}/bin/cmake \ -GNinja \ -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \ -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_C_FLAGS="${CPPFLAGS} -DPCRE_STATIC ${CFLAGS}" \ + -DCMAKE_CXX_FLAGS="${CPPFLAGS} -DPCRE_STATIC ${CXXFLAGS}" \ + -DBUILD_SHARED_LIBS=OFF \ -DPOCO_UNBUNDLED=ON \ -DENABLE_MONGODB=OFF \ -DENABLE_DATA_ODBC=OFF \ ../${_realname}-${pkgver}-all - ${MINGW_PREFIX}/bin/cmake.exe --build . + ${MINGW_PREFIX}/bin/cmake.exe --build ./ + + [[ -d "${srcdir}/build-${MSYSTEM}-shared" ]] && rm -rf "${srcdir}/build-${MSYSTEM}-shared" + mkdir -p "${srcdir}/build-${MSYSTEM}-shared" && cd "${srcdir}/build-${MSYSTEM}-shared" + + MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \ + ${MINGW_PREFIX}/bin/cmake \ + -GNinja \ + -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_C_FLAGS="${CPPFLAGS} ${CFLAGS}" \ + -DCMAKE_CXX_FLAGS="${CPPFLAGS} ${CXXFLAGS}" \ + -DBUILD_SHARED_LIBS=ON \ + -DPOCO_UNBUNDLED=ON \ + -DENABLE_MONGODB=OFF \ + -DENABLE_DATA_ODBC=OFF \ + ../${_realname}-${pkgver}-all + + ${MINGW_PREFIX}/bin/cmake.exe --build ./ } package() { - cd "${srcdir}/build-${MSYSTEM}" - DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake.exe --install . + cd "${srcdir}/build-${MSYSTEM}-static" + DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake.exe --install ./ + + cd "${srcdir}/build-${MSYSTEM}-shared" + DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake.exe --install ./ + + install -Dm644 "${srcdir}/${_realname}-${pkgver}-all/LICENSE" "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE" } From 85731903461c9b7cfb0fe57b920d57e3d54a3113 Mon Sep 17 00:00:00 2001 From: Marcelo Duarte Date: Mon, 24 Jan 2022 04:42:32 -0300 Subject: [PATCH 089/226] cx_Freeze 6.10 --- mingw-w64-python-cx-freeze/PKGBUILD | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/mingw-w64-python-cx-freeze/PKGBUILD b/mingw-w64-python-cx-freeze/PKGBUILD index 28638323b7..750453bedd 100644 --- a/mingw-w64-python-cx-freeze/PKGBUILD +++ b/mingw-w64-python-cx-freeze/PKGBUILD @@ -12,7 +12,7 @@ conflicts=("${MINGW_PACKAGE_PREFIX}-python3-cx_Freeze" "${MINGW_PACKAGE_PREFIX}-python-cx_Freeze") replaces=("${MINGW_PACKAGE_PREFIX}-python3-cx_Freeze" "${MINGW_PACKAGE_PREFIX}-python-cx_Freeze") -pkgver=6.9 +pkgver=6.10 pkgrel=1 pkgdesc="Creates standalone executables from Python scripts, with the same performance (mingw-w64)" arch=('any') @@ -21,11 +21,13 @@ license=('PSF') url="https://github.com/marcelotduarte/cx_Freeze/" depends=("${MINGW_PACKAGE_PREFIX}-python" "${MINGW_PACKAGE_PREFIX}-python-cx-logging" - "${MINGW_PACKAGE_PREFIX}-python-importlib-metadata") -makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools" "${MINGW_PACKAGE_PREFIX}-cc") + "${MINGW_PACKAGE_PREFIX}-python-importlib-metadata" + "${MINGW_PACKAGE_PREFIX}-python-lief") +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" + "${MINGW_PACKAGE_PREFIX}-python-setuptools") options=('staticlibs' 'strip' '!debug') source=(cx_Freeze-${pkgver}.tar.gz::https://pypi.io/packages/source/c/cx_Freeze/cx_Freeze-${pkgver}.tar.gz) -sha256sums=('673aa3199af2ef87fc03a43a30e5d78b27ced2cedde925da89c55b5657da267b') +sha256sums=('e5b71bf57b9881ac142fbebeae2c8b0d3294b56f6e48ab64032321e3b1a2ba27') prepare() { rm -Rf python-${_realname}-${CARCH} From 9b36de095a7c1bbb903cbf556079bafa165034de Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Mon, 24 Jan 2022 09:09:11 +0100 Subject: [PATCH 090/226] makedepend on tools it needs gendef.exe --- mingw-w64-python-cx-freeze/PKGBUILD | 1 + 1 file changed, 1 insertion(+) diff --git a/mingw-w64-python-cx-freeze/PKGBUILD b/mingw-w64-python-cx-freeze/PKGBUILD index 750453bedd..2a8ae29993 100644 --- a/mingw-w64-python-cx-freeze/PKGBUILD +++ b/mingw-w64-python-cx-freeze/PKGBUILD @@ -24,6 +24,7 @@ depends=("${MINGW_PACKAGE_PREFIX}-python" "${MINGW_PACKAGE_PREFIX}-python-importlib-metadata" "${MINGW_PACKAGE_PREFIX}-python-lief") makedepends=("${MINGW_PACKAGE_PREFIX}-cc" + "${MINGW_PACKAGE_PREFIX}-tools" "${MINGW_PACKAGE_PREFIX}-python-setuptools") options=('staticlibs' 'strip' '!debug') source=(cx_Freeze-${pkgver}.tar.gz::https://pypi.io/packages/source/c/cx_Freeze/cx_Freeze-${pkgver}.tar.gz) From 5263aae32909ef151a6e18ed45af6482ac646921 Mon Sep 17 00:00:00 2001 From: Marcelo Duarte Date: Mon, 24 Jan 2022 09:25:29 -0300 Subject: [PATCH 091/226] LIEF: fix egg-info --- mingw-w64-python-lief/PKGBUILD | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/mingw-w64-python-lief/PKGBUILD b/mingw-w64-python-lief/PKGBUILD index 07c91c16f1..4fb475964b 100644 --- a/mingw-w64-python-lief/PKGBUILD +++ b/mingw-w64-python-lief/PKGBUILD @@ -5,18 +5,18 @@ pkgbase=mingw-w64-python-${_realname} pkgname=${MINGW_PACKAGE_PREFIX}-python-${_realname} pkgdesc="LIEF - Library to Instrument Executable Formats (mingw-w64)" pkgver=0.11.5 -pkgrel=1 +pkgrel=2 arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') url="https://github.com/lief-project/LIEF/" license=("Apache-2.0") depends=("${MINGW_PACKAGE_PREFIX}-python") -makedepends=("${MINGW_PACKAGE_PREFIX}-ccache" +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" + "${MINGW_PACKAGE_PREFIX}-ccache" "${MINGW_PACKAGE_PREFIX}-cmake" "${MINGW_PACKAGE_PREFIX}-ninja" "${MINGW_PACKAGE_PREFIX}-python" - "${MINGW_PACKAGE_PREFIX}-python-setuptools" - "${MINGW_PACKAGE_PREFIX}-cc") + "${MINGW_PACKAGE_PREFIX}-python-setuptools") options=('staticlibs' '!strip' '!debug') source=(https://github.com/lief-project/LIEF/archive/${pkgver}.tar.gz lief.patch) @@ -30,7 +30,6 @@ prepare() { } build() { - echo "Building for Python - ${MSYSTEM}" cd "${srcdir}/LIEF-${pkgver}" [[ -d build-${MSYSTEM} ]] && rm -rf build-${MSYSTEM} mkdir -p build-${MSYSTEM} && cd build-${MSYSTEM} @@ -76,7 +75,7 @@ package() { _pythonpath=`${MINGW_PREFIX}/bin/python -c "from sysconfig import get_path; print(get_path('platlib'))"` _site_packages=${pkgdir}$(cygpath ${_pythonpath}) mkdir -p $_site_packages - cp -r ${_realname}.egg-info $_site_packages/${_realname}-${pkgver} + cp -r ${_realname}.egg-info $_site_packages/${_realname}-${pkgver}.egg-info cp build-${MSYSTEM}/api/python/lief.pyd $_site_packages/lief.pyd install -Dm644 LICENSE "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE" From 0c3bc3a8b9ce2f7c22cda66d0531a3880bad89cb Mon Sep 17 00:00:00 2001 From: Marcelo Duarte Date: Mon, 24 Jan 2022 09:45:52 -0300 Subject: [PATCH 092/226] cx_Freeze depends on wheel --- mingw-w64-python-cx-freeze/PKGBUILD | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mingw-w64-python-cx-freeze/PKGBUILD b/mingw-w64-python-cx-freeze/PKGBUILD index 2a8ae29993..690c6dd76f 100644 --- a/mingw-w64-python-cx-freeze/PKGBUILD +++ b/mingw-w64-python-cx-freeze/PKGBUILD @@ -22,7 +22,8 @@ url="https://github.com/marcelotduarte/cx_Freeze/" depends=("${MINGW_PACKAGE_PREFIX}-python" "${MINGW_PACKAGE_PREFIX}-python-cx-logging" "${MINGW_PACKAGE_PREFIX}-python-importlib-metadata" - "${MINGW_PACKAGE_PREFIX}-python-lief") + "${MINGW_PACKAGE_PREFIX}-python-lief" + "${MINGW_PACKAGE_PREFIX}-python-wheel") makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-tools" "${MINGW_PACKAGE_PREFIX}-python-setuptools") From eefed2d870b818db79c2be429d694a8b4f440c81 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Tue, 25 Jan 2022 08:53:13 +0530 Subject: [PATCH 093/226] portaudio: Build C++ binding with CMake --- .../0002-cmake-add-cpp-binding.patch | 10 +++ mingw-w64-portaudio/CMakeLists.txt | 89 +++++++++++++++++++ mingw-w64-portaudio/PKGBUILD | 18 +++- mingw-w64-portaudio/portaudiocpp.pc.in | 12 +++ 4 files changed, 125 insertions(+), 4 deletions(-) create mode 100644 mingw-w64-portaudio/0002-cmake-add-cpp-binding.patch create mode 100644 mingw-w64-portaudio/CMakeLists.txt create mode 100644 mingw-w64-portaudio/portaudiocpp.pc.in diff --git a/mingw-w64-portaudio/0002-cmake-add-cpp-binding.patch b/mingw-w64-portaudio/0002-cmake-add-cpp-binding.patch new file mode 100644 index 0000000000..77be0403d3 --- /dev/null +++ b/mingw-w64-portaudio/0002-cmake-add-cpp-binding.patch @@ -0,0 +1,10 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 122fe93..738a099 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -485,3 +485,5 @@ OPTION(PA_BUILD_EXAMPLES "Include example projects" OFF) + IF(PA_BUILD_EXAMPLES) + SUBDIRS(examples) + ENDIF() ++ ++add_subdirectory(bindings/cpp) diff --git a/mingw-w64-portaudio/CMakeLists.txt b/mingw-w64-portaudio/CMakeLists.txt new file mode 100644 index 0000000000..0a04e2b4e7 --- /dev/null +++ b/mingw-w64-portaudio/CMakeLists.txt @@ -0,0 +1,89 @@ +PROJECT(portaudiocpp) + +set(PA_CPP_SOURCES + source/portaudiocpp/BlockingStream.cxx + source/portaudiocpp/CallbackInterface.cxx + source/portaudiocpp/CallbackStream.cxx + source/portaudiocpp/CFunCallbackStream.cxx + source/portaudiocpp/CppFunCallbackStream.cxx + source/portaudiocpp/Device.cxx + source/portaudiocpp/DirectionSpecificStreamParameters.cxx + source/portaudiocpp/Exception.cxx + source/portaudiocpp/HostApi.cxx + source/portaudiocpp/InterfaceCallbackStream.cxx + source/portaudiocpp/MemFunCallbackStream.cxx + source/portaudiocpp/Stream.cxx + source/portaudiocpp/StreamParameters.cxx + source/portaudiocpp/System.cxx + source/portaudiocpp/SystemDeviceIterator.cxx + source/portaudiocpp/SystemHostApiIterator.cxx +) + +set(PA_CPP_INCLUDES + include/portaudiocpp/AutoSystem.hxx + include/portaudiocpp/BlockingStream.hxx + include/portaudiocpp/CallbackInterface.hxx + include/portaudiocpp/CallbackStream.hxx + include/portaudiocpp/CFunCallbackStream.hxx + include/portaudiocpp/CppFunCallbackStream.hxx + include/portaudiocpp/Device.hxx + include/portaudiocpp/DirectionSpecificStreamParameters.hxx + include/portaudiocpp/Exception.hxx + include/portaudiocpp/HostApi.hxx + include/portaudiocpp/InterfaceCallbackStream.hxx + include/portaudiocpp/MemFunCallbackStream.hxx + include/portaudiocpp/PortAudioCpp.hxx + include/portaudiocpp/SampleDataFormat.hxx + include/portaudiocpp/Stream.hxx + include/portaudiocpp/StreamParameters.hxx + include/portaudiocpp/SystemDeviceIterator.hxx + include/portaudiocpp/SystemHostApiIterator.hxx + include/portaudiocpp/System.hxx +) + +IF(WIN32) + if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_LIST_DIR) + FIND_PACKAGE(ASIOSDK) + IF(ASIOSDK_FOUND) + OPTION(PA_USE_ASIO "Enable support for ASIO" ON) + ELSE() + OPTION(PA_USE_ASIO "Enable support for ASIO" OFF) + ENDIF() + endif() + + if(PA_USE_ASIO) + list(APPEND PA_CPP_INCLUDES include/portaudiocpp/AsioDeviceAdapter.hxx) + list(APPEND PA_CPP_SOURCES source/portaudiocpp/AsioDeviceAdapter.cxx) + endif() +ENDIF(WIN32) + +IF(PA_BUILD_SHARED) + add_library(portaudiocpp SHARED ${PA_CPP_SOURCES}) + target_link_libraries(portaudiocpp PUBLIC portaudio) + target_include_directories(portaudiocpp PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include") +ENDIF(PA_BUILD_SHARED) +IF(PA_BUILD_STATIC) + add_library(portaudiocpp_static STATIC ${PA_CPP_SOURCES}) + target_link_libraries(portaudiocpp_static PUBLIC portaudio) + target_include_directories(portaudiocpp_static PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include") + IF(NOT PA_LIBNAME_ADD_SUFFIX) + SET_PROPERTY(TARGET portaudiocpp_static PROPERTY OUTPUT_NAME portaudiocpp) + ENDIF() +ENDIF(PA_BUILD_STATIC) + +include(GNUInstallDirs) +install(TARGETS portaudiocpp portaudiocpp_static + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" +) + +install(FILES ${PA_CPP_INCLUDES} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/portaudiocpp") + +if(WIN32) + install(FILES include/portaudiocpp/AsioDeviceAdapter.hxx DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/portaudiocpp") +endif() + +set(PORTAUDIOCPP_VERSION 12) +configure_file(cmake/portaudiocpp.pc.in ${CMAKE_CURRENT_BINARY_DIR}/portaudiocpp.pc @ONLY) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/portaudiocpp.pc DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") diff --git a/mingw-w64-portaudio/PKGBUILD b/mingw-w64-portaudio/PKGBUILD index 9fbd377a29..3d1649be64 100644 --- a/mingw-w64-portaudio/PKGBUILD +++ b/mingw-w64-portaudio/PKGBUILD @@ -6,7 +6,7 @@ pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" epoch=1 pkgver=19.7.0 _tarver=190700_20210406 -pkgrel=2 +pkgrel=3 pkgdesc="A free, cross-platform, open source, audio I/O library (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') @@ -21,14 +21,24 @@ makedepends=( depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs") options=(!libtool strip staticlibs) source=("http://files.portaudio.com/archives/pa_stable_v${_tarver}.tgz" - "0001-clang-fix.patch") + 0001-clang-fix.patch + 0002-cmake-add-cpp-binding.patch + CMakeLists.txt + portaudiocpp.pc.in) sha256sums=('47efbf42c77c19a05d22e627d42873e991ec0c1357219c0d74ce6a2948cb2def' - '2c1ef1727d45f2140ef0a29ffa0553c7b9a1b59e1a223e8892a7792a860f2922') + '2c1ef1727d45f2140ef0a29ffa0553c7b9a1b59e1a223e8892a7792a860f2922' + '22e485926fb875fba2a5c3011a1bbe5de99c1ef4560677105f767e66c8fb6324' + '6af7c2c023483af698edd5063a0dce7cebb65eb40a256e6269ffd6ad32895dd4' + 'e48867fb8eb4ceda8e646879a03525b9bacbbaf154585c81478b06eef1c9d6a5') prepare() { - cd ${srcdir}/${_realname} + cd "${srcdir}/${_realname}" + mkdir -v bindings/cpp/cmake + cp -v "${srcdir}/CMakeLists.txt" bindings/cpp + cp -v "${srcdir}/portaudiocpp.pc.in" bindings/cpp/cmake patch -p1 -i "${srcdir}/0001-clang-fix.patch" + patch -p1 -i "${srcdir}/0002-cmake-add-cpp-binding.patch" } build() { diff --git a/mingw-w64-portaudio/portaudiocpp.pc.in b/mingw-w64-portaudio/portaudiocpp.pc.in new file mode 100644 index 0000000000..317543ae80 --- /dev/null +++ b/mingw-w64-portaudio/portaudiocpp.pc.in @@ -0,0 +1,12 @@ +prefix=@CMAKE_INSTALL_PREFIX@ +exec_prefix=${prefix} +libdir=${prefix}/lib +includedir=${prefix}/include + +Name: PortAudioCpp +Description: Portable audio I/O C++ bindings +Version: @PORTAUDIOCPP_VERSION@ +Requires: portaudio-2.0 + +Libs: -L${libdir} -lportaudiocpp @PA_PKGCONFIG_LDFLAGS@ +Cflags: -I${includedir} @PA_PKGCONFIG_CFLAGS@ From ae0ff6cf3b5b32ce11c88a50bb4721b9b7eb0efa Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Tue, 25 Jan 2022 11:24:44 +0530 Subject: [PATCH 094/226] faudio: update to 22.01 --- mingw-w64-faudio/PKGBUILD | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/mingw-w64-faudio/PKGBUILD b/mingw-w64-faudio/PKGBUILD index f6ffcdf062..e28875548f 100644 --- a/mingw-w64-faudio/PKGBUILD +++ b/mingw-w64-faudio/PKGBUILD @@ -3,7 +3,7 @@ _realname=FAudio pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=21.05 +pkgver=22.01 pkgrel=1 pkgdesc="FAudio - Accuracy-focused XAudio reimplementation for open platforms (mingw-w64)" arch=('any') @@ -19,7 +19,7 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-cmake" "${MINGW_PACKAGE_PREFIX}-cc") options=('strip' '!debug' 'staticlibs') source=(${_realname}-${pkgver}.tar.gz::"https://github.com/FNA-XNA/FAudio/archive/${pkgver}.tar.gz") -sha256sums=('05c971c1676a9a16690d96922161a74f792ae93ea1fc076edb9ac3690c2f11fc') +sha256sums=('e6b7c0ced90f5a3e1363f95ad990a99afee6784a35320719df48af45d1f07c7d') build() { declare -a extra_config @@ -37,6 +37,8 @@ build() { ${MINGW_PREFIX}/bin/cmake.exe \ -G "Ninja" \ -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \ + -DCMAKE_INSTALL_LIBDIR=lib \ + -DCMAKE_INSTALL_INCLUDEDIR=include \ "${extra_config[@]}" \ -DBUILD_SHARED_LIBS=OFF \ -DGSTREAMER=ON \ @@ -52,6 +54,8 @@ build() { ${MINGW_PREFIX}/bin/cmake.exe \ -G "Ninja" \ -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \ + -DCMAKE_INSTALL_LIBDIR=lib \ + -DCMAKE_INSTALL_INCLUDEDIR=include \ "${extra_config[@]}" \ -DBUILD_SHARED_LIBS=ON \ -DGSTREAMER=ON \ From fe0c2ca079cf1fe8ab38fef3b79f5ceaf5d52613 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Tue, 25 Jan 2022 11:31:53 +0530 Subject: [PATCH 095/226] fluidsynth: update to 2.2.5 --- mingw-w64-fluidsynth/PKGBUILD | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mingw-w64-fluidsynth/PKGBUILD b/mingw-w64-fluidsynth/PKGBUILD index 5b9306e31a..4e2f4dc528 100644 --- a/mingw-w64-fluidsynth/PKGBUILD +++ b/mingw-w64-fluidsynth/PKGBUILD @@ -3,8 +3,8 @@ _realname=fluidsynth pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=2.2.4 -pkgrel=2 +pkgver=2.2.5 +pkgrel=1 pkgdesc="A real-time software synthesizer based on the SoundFont 2 specifications (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') @@ -22,7 +22,7 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-pkg-config" options=('strip' 'staticlibs') source=("${_realname}-${pkgver}.tar.gz::https://github.com/FluidSynth/${_realname}/archive/v${pkgver}.tar.gz" "010-no-undefined.patch") -sha256sums=('83cb1dba04c632ede74f0c0717018b062c0e00b639722203b23f77a961afd390' +sha256sums=('9037e703617f91c4c36039a5059e0f624164799d856af715bcd8a23c07ba03b8' '8b865ac2b0ea760f3c5fa640573793131a09cdc7af833ab6fd8f69b583e41153') noextract=("${_realname}-${pkgver}.tar.gz") From 2423e2bc163e9b9c8f079b8f0bac8e3e7d32ae8e Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Tue, 25 Jan 2022 11:35:08 +0530 Subject: [PATCH 096/226] libwebp: update to 1.2.2 --- mingw-w64-libwebp/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mingw-w64-libwebp/PKGBUILD b/mingw-w64-libwebp/PKGBUILD index d9933e0a79..0b01feff69 100644 --- a/mingw-w64-libwebp/PKGBUILD +++ b/mingw-w64-libwebp/PKGBUILD @@ -4,7 +4,7 @@ _realname=libwebp pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=1.2.1 +pkgver=1.2.2 pkgrel=1 pkgdesc="the WebP library. Includes conversion tools (mingw-w64)" arch=('any') @@ -19,7 +19,7 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-SDL" "${MINGW_PACKAGE_PREFIX}-autotools") source=(${_realname}-${pkgver}.tar.gz::https://github.com/webmproject/libwebp/archive/v${pkgver}.tar.gz) -sha256sums=('01bcde6a40a602294994050b81df379d71c40b7e39c819c024d079b3c56307f4') +sha256sums=('51e9297aadb7d9eb99129fe0050f53a11fcce38a0848fb2b0389e385ad93695e') validpgpkeys=('6B0E6B70976DE303EDF2F601F9C3D6BDB8232B5D') prepare() { From 5b2e1462823405c0227613d22a199a9496236fdc Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Tue, 25 Jan 2022 11:39:34 +0530 Subject: [PATCH 097/226] muparser: update to 2.3.3 Use ninja instead of make. Update upstream url. Add openmp for clang. --- mingw-w64-muparser/PKGBUILD | 51 +++++++++++++++++++++++-------------- 1 file changed, 32 insertions(+), 19 deletions(-) diff --git a/mingw-w64-muparser/PKGBUILD b/mingw-w64-muparser/PKGBUILD index a0a972e057..ba5070ca72 100644 --- a/mingw-w64-muparser/PKGBUILD +++ b/mingw-w64-muparser/PKGBUILD @@ -3,45 +3,58 @@ _realname=muparser pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=2.3.2 -pkgrel=2 +pkgver=2.3.3 +pkgrel=1 pkgdesc="A fast math parser library (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') -url="http://muparser.beltoforion.de/" +url="https://beltoforion.de/en/muparser/" license=('custom') -makedepends=("${MINGW_PACKAGE_PREFIX}-cmake" "${MINGW_PACKAGE_PREFIX}-cc") -options=('!makeflags') -source=("${_realname}-${pkgver}.tar.gz"::https://github.com/beltoforion/muparser/archive/v${pkgver}.tar.gz +depends=("${MINGW_PACKAGE_PREFIX}-openmp") +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" + "${MINGW_PACKAGE_PREFIX}-cmake" + "${MINGW_PACKAGE_PREFIX}-ninja") +source=("${_realname}-${pkgver}.tar.gz"::https://github.com/beltoforion/muparser/archive/v${pkgver}-1.tar.gz "001-exports.patch") -sha256sums=('b35fc84e3667d432e3414c8667d5764dfa450ed24a99eeef7ee3f6647d44f301' +sha256sums=('91d26d8274ae9cd9c776ee58250aeddc6b574f369eafd03b25045b858a2b8177' 'f125ce80b250e59a6d650cfecc11f511703a7e5079409bc287f43b3fd56cdc37') prepare() { - cd ${srcdir}/${_realname}-${pkgver} + cd ${srcdir}/${_realname}-${pkgver}-1 patch -p1 -i ${srcdir}/001-exports.patch } build() { - [[ -d build-${MINGW_CHOST} ]] && rm -rf build-${MINGW_CHOST} - mkdir -p build-${MINGW_CHOST} - cd build-${MINGW_CHOST} + declare -a _extra_config + if check_option "debug" "n"; then + _extra_config+=("-DCMAKE_BUILD_TYPE=Release") + else + _extra_config+=("-DCMAKE_BUILD_TYPE=Debug") + fi + + [[ -d "${srcdir}/build-${MSYSTEM}" ]] && rm -rf "${srcdir}/build-${MSYSTEM}" + mkdir -p "${srcdir}/build-${MSYSTEM}" && cd "${srcdir}/build-${MSYSTEM}" MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \ ${MINGW_PREFIX}/bin/cmake.exe \ - -G"MSYS Makefiles" \ - -DCMAKE_BUILD_TYPE=Release \ + -G"Ninja" \ + "${_extra_config[@]}" \ -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \ - ../${_realname}-${pkgver} + ../${_realname}-${pkgver}-1 - make + ${MINGW_PREFIX}/bin/cmake.exe --build ./ +} + +check() { + cd "build-${MSYSTEM}" + ${MINGW_PREFIX}/bin/ctest.exe || true } package() { - cd build-${MINGW_CHOST} - make DESTDIR=${pkgdir} install + cd "build-${MSYSTEM}" + DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake.exe --install ./ # license - install -D -m644 ${srcdir}/${_realname}-${pkgver}/License.txt \ - ${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE + install -D -m644 "${srcdir}/${_realname}-${pkgver}-1/LICENSE" \ + "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE" } From 0f42221b2589548dd312b6676af9a866ad86007f Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Tue, 25 Jan 2022 11:45:05 +0530 Subject: [PATCH 098/226] python-decorator: update to 5.1.1 Install license file. --- mingw-w64-python-decorator/PKGBUILD | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/mingw-w64-python-decorator/PKGBUILD b/mingw-w64-python-decorator/PKGBUILD index 83cd38005f..afd4241485 100644 --- a/mingw-w64-python-decorator/PKGBUILD +++ b/mingw-w64-python-decorator/PKGBUILD @@ -6,11 +6,11 @@ pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") provides=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") conflicts=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") replaces=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") -pkgver=5.1.0 +pkgver=5.1.1 pkgrel=1 pkgdesc="Python Decorator module (mingw-w64)" arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') url='https://pypi.python.org/pypi/decorator' license=('BSD') depends=("${MINGW_PACKAGE_PREFIX}-python") @@ -18,31 +18,32 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools") options=('staticlibs' 'strip' '!debug') source=(#"${_realname}-${pkgver}.tar.gz"::"https://github.com/micheles/decorator/archive/${pkgver}.tar.gz" "https://pypi.python.org/packages/source/${_realname:0:1}/${_realname}/${_realname}-${pkgver}.tar.gz") -sha512sums=('4acc0967af79f61c56adea3084c4e9f9de1c34fcbc7906db4bb1b0759e07ffed6eff0e4b21645dda5f37e96662742621f3d043e8c06a401841c7199a915afe18') +sha512sums=('584857ffb0c3e52344b473ceb9e28adfd7d789d480a528471f8ab37be055ebe5feb170f41077010e25350e1c311189d45b90773cf12f0043de98ea8ebcde20ab') prepare() { - cd "${srcdir}" - rm -rf python-build-${CARCH} | true - cp -r "${_realname}-${pkgver}" "python-build-${CARCH}" + rm -rf "python-build-${MSYSTEM}" | true + cp -r "${_realname}-${pkgver}" "python-build-${MSYSTEM}" # Set version for setuptools_scm export SETUPTOOLS_SCM_PRETEND_VERSION=${pkgver} } build() { - cd "${srcdir}/python-build-${CARCH}" + cd "${srcdir}/python-build-${MSYSTEM}" ${MINGW_PREFIX}/bin/python setup.py build } check() { - cd "${srcdir}/python-build-${CARCH}" + cd "${srcdir}/python-build-${MSYSTEM}" ${MINGW_PREFIX}/bin/python setup.py test } package() { - cd "${srcdir}/python-build-${CARCH}" + cd "${srcdir}/python-build-${MSYSTEM}" MSYS2_ARG_CONV_EXCL="--prefix=;--install-scripts=;--install-platlib=" \ ${MINGW_PREFIX}/bin/python setup.py install --prefix=${MINGW_PREFIX} \ --root="${pkgdir}" --optimize=1 --skip-build + + install -Dm644 LICENSE.txt "${pkgdir}${MINGW_PREFIX}/share/licenses/python-${_realname}/LICENSE.txt" } From 602ce8fa2ff182b3ffc1977ecfffcd8eedb0b3aa Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Tue, 25 Jan 2022 08:17:05 +0100 Subject: [PATCH 099/226] python: Update to 3.9.10 --- ...g-make-_sysconfigdata.py-relocatable.patch | 4 +- .../0002-restore-setup-config.patch | 18 +- ...t-threads-and-make-it-default-on-min.patch | 34 +-- ...gcc-internal-defines-to-python-platf.patch | 4 +- ...igure-MACHDEP-and-platform-for-build.patch | 6 +- ...0006-MINGW-preset-configure-defaults.patch | 8 +- ...largefile-support-for-windows-builds.patch | 8 +- ...0008-MINGW-add-srcdir-PC-to-CPPFLAGS.patch | 8 +- .../0009-MINGW-init-system-calls.patch | 8 +- ...INGW-build-in-windows-modules-winreg.patch | 8 +- ...etermine-if-pwdmodule-should-be-used.patch | 8 +- ...-Mingw-recognition-to-pyport.h-to-al.patch | 12 +- ...013-MINGW-configure-for-shared-build.patch | 14 +- .../0014-MINGW-dynamic-loading-support.patch | 16 +- ...nore-main-program-for-frozen-scripts.patch | 12 +- ...-MINGW-setup-_multiprocessing-module.patch | 8 +- .../0017-MINGW-setup-select-module.patch | 8 +- ...up-_ctypes-module-with-system-libffi.patch | 10 +- ...ct-winsock2-and-setup-_socket-module.patch | 28 +- ...0020-MINGW-exclude-unix-only-modules.patch | 14 +- ...NGW-setup-msvcrt-and-_winapi-modules.patch | 8 +- ...nfig-MINGW-build-extensions-with-GCC.patch | 4 +- .../0023-MINGW-setup-_ssl-module.patch | 8 +- ...ation-of-posix-build-in-sysconfig.py.patch | 4 +- ...W-support-stdcall-without-underscore.patch | 4 +- ...ead-rename-to-avoid-failure-on-windo.patch | 8 +- .../0027-MINGW-customize-site.patch | 4 +- .../0028-add-python-config-sh.patch | 4 +- .../0029-cross-darwin-feature.patch | 16 +- .../0030-mingw-system-libffi.patch | 8 +- ...sys-mingw-prefer-unix-sep-if-MSYSTEM.patch | 12 +- .../0032-mingw-use-posix-getpath.patch | 12 +- ...mingw-add-ModuleFileName-dir-to-PATH.patch | 6 +- ...dd-BUILDIN_WIN32_MODULEs-time-msvcrt.patch | 4 +- ...s-cygwin-semi-native-build-sysconfig.patch | 10 +- ...sysconfig-mingw-sysconfig-like-posix.patch | 4 +- ...rlier-so-we-can-use-it-in-distutils-.patch | 8 +- ...d-multiarch-paths-if-cross-compiling.patch | 8 +- ...ngw-use-backslashes-in-compileall-py.patch | 6 +- ...-msys-convert_path-fix-and-root-hack.patch | 10 +- .../0041-allow-static-tcltk.patch | 14 +- .../0042-mingw-pdcurses_ISPAD.patch | 4 +- mingw-w64-python/0043-grammar-fixes.patch | 4 +- mingw-w64-python/0044-builddir-fixes.patch | 10 +- ...sys-monkeypatch-os-system-via-sh-exe.patch | 6 +- ...place-slashes-used-in-io-redirection.patch | 22 +- .../0047-remove_path_max.default.patch | 4 +- .../0048-dont-link-with-gettext.patch | 8 +- mingw-w64-python/0049-ctypes-python-dll.patch | 4 +- .../0050-gdbm-module-includes.patch | 6 +- .../0051-use-gnu_printf-in-format.patch | 4 +- ...w-fix-ssl-dont-use-enum_certificates.patch | 4 +- ...fix-using-dllhandle-and-winver-mingw.patch | 8 +- ...-config-so-msvccompiler-get_build_ve.patch | 4 +- ...5-MINGW-link-with-additional-library.patch | 8 +- mingw-w64-python/0056-install-msilib.patch | 8 +- .../0057-fix-signal-module-build.patch | 4 +- ...-build-winconsoleio-and-_testconsole.patch | 8 +- mingw-w64-python/0059-expose-sem_unlink.patch | 4 +- mingw-w64-python/0060-cygpty-isatty.patch | 26 +- .../0061-disable-broken-gdbm-module.patch | 8 +- ...win-resource-files-and-build-pythonw.patch | 24 +- mingw-w64-python/0063-3.7-mpdec-mingw.patch | 8 +- mingw-w64-python/0064-disable-readline.patch | 8 +- mingw-w64-python/0065-fix-isselectable.patch | 4 +- ...66-use-_wcsnicmp-instead-wcsncasecmp.patch | 6 +- .../0067-_xxsubinterpretersmodule.patch | 4 +- .../0068-sqlite3-module-defines.patch | 8 +- ...069-configure.ac-fix-inet_pton-check.patch | 8 +- .../0070-set-venv-activate-path-unix.patch | 4 +- .../0071-venv-creation-fixes.patch | 21 +- .../0072-pass-gen-profile-ldflags.patch | 8 +- ...indows-must-link-ext-with-python-lib.patch | 8 +- .../0074-importlib-bootstrap-path-sep.patch | 4 +- mingw-w64-python/0075-pathlib-path-sep.patch | 4 +- mingw-w64-python/0076-warnings-fixes.patch | 22 +- .../0077-fix-build-testinternalcapi.patch | 8 +- .../0078-extend-MS_WINDOWS-flag.patch | 6 +- mingw-w64-python/0079-clang-arm64.patch | 4 +- ...configure.ac-set-MINGW-stack-reserve.patch | 8 +- ...081-Don-t-use-os.pathsep-to-find-EOF.patch | 4 +- ...ion-suffix-for-c-extensions-on-mingw.patch | 22 +- ...the-get_platform-method-in-sysconfig.patch | 4 +- ...ler-customize-mingw-cygwin-compilers.patch | 4 +- ...-distutils-compiler-enable-new-dtags.patch | 8 +- ...tils-MINGW-build-extensions-with-GCC.patch | 4 +- ...ngw32CCompiler-as-default-compiler-f.patch | 6 +- .../0088-distutils-find-import-library.patch | 4 +- ...circular-dependency-from-time-module.patch | 4 +- ...lization-of-posix-build-in-distutils.patch | 4 +- ...distutils-mingw-sysconfig-like-posix.patch | 4 +- .../0092-distutils-get_versions-fixes.patch | 4 +- ...93-distutils-install-layout-as-posix.patch | 4 +- ...-msys-convert_path-fix-and-root-hack.patch | 4 +- ...-distutils-mingw-build-optimized-ext.patch | 4 +- ...ccompiler-dont-strip-modules-if-pyde.patch | 4 +- ...istutils-get-compilers-from-env-vars.patch | 4 +- ...tutils-add-windmc-to-cygwinccompiler.patch | 4 +- .../0099-distutils-fix-msvc9-import.patch | 6 +- ...tils-mingw-add-LIBPL-to-library-dirs.patch | 4 +- ...-the-get_platform-method-in-distutil.patch | 4 +- ...02-build-Fix-ncursesw-include-lookup.patch | 16 +- .../0103-tests-fix-test_bytes.patch | 4 +- ...e-not-raising-for-invalid-year-value.patch | 6 +- ...brary-c-should-return-None-with-ucrt.patch | 4 +- ...uild-Disable-checks-for-dlopen-dlfcn.patch | 14 +- ...stall-location-of-the-import-library.patch | 8 +- ...NV_EXCL-for-the-shared-Python-module.patch | 8 +- ...venvlauncher-build-installation-into.patch | 18 +- ...onfigure.ac-set-_WIN32_WINNT-version.patch | 8 +- ....ac-don-t-check-for-clock_-functions.patch | 10 +- ...-normpath-paths-coming-from-env-vars.patch | 4 +- ...Add-support-for-Windows-7-Python-3.9.patch | 27 +- .../0114-Commit-regenerated-importlib.patch | 4 +- ...ld-and-add-some-mingw-specific-tests.patch | 4 +- .../0116-decimal-backport-build-fixes.patch | 4 +- ...smoketests-test-that-_decimal-exists.patch | 4 +- .../0118-Prefer-sysconfig.python_build.patch | 4 +- ...move-checks-for-ancient-gcc-binutils.patch | 4 +- ...CC-env-var-before-passing-to-subproc.patch | 4 +- ...1-_testconsole.c-Fix-casing-path-sep.patch | 4 +- ...t-architecture-markers-for-python-on.patch | 8 +- .../0123-distutils-add-back-gcc_version.patch | 4 +- ...ix-mingw-cross-compiling-in-setup.py.patch | 47 +++ ...p-python-for-setting-up-correct-vers.patch | 36 +++ ...26-Fix-buffer-overflow-in-Py_GetSepW.patch | 65 +++++ ...ecessary-strlen-in-Py_NormalizeSepsW.patch | 42 +++ ...sesw-pkg-config-when-cross-compiling.patch | 63 ++++ mingw-w64-python/PKGBUILD | 271 +++++++++--------- 129 files changed, 896 insertions(+), 628 deletions(-) create mode 100644 mingw-w64-python/0124-fix-mingw-cross-compiling-in-setup.py.patch create mode 100644 mingw-w64-python/0125-Use-actions-setup-python-for-setting-up-correct-vers.patch create mode 100644 mingw-w64-python/0126-Fix-buffer-overflow-in-Py_GetSepW.patch create mode 100644 mingw-w64-python/0127-Remove-unnecessary-strlen-in-Py_NormalizeSepsW.patch create mode 100644 mingw-w64-python/0128-handle-ncursesw-pkg-config-when-cross-compiling.patch diff --git a/mingw-w64-python/0001-sysconfig-make-_sysconfigdata.py-relocatable.patch b/mingw-w64-python/0001-sysconfig-make-_sysconfigdata.py-relocatable.patch index c016a15b06..368d79fd17 100644 --- a/mingw-w64-python/0001-sysconfig-make-_sysconfigdata.py-relocatable.patch +++ b/mingw-w64-python/0001-sysconfig-make-_sysconfigdata.py-relocatable.patch @@ -1,4 +1,4 @@ -From 6ca397e7d4776d652e039ed57779ed4d0d4e7898 Mon Sep 17 00:00:00 2001 +From 10dfe80078d9a80e26715a8cefa37af3bb2af335 Mon Sep 17 00:00:00 2001 From: Ray Donnelly Date: Thu, 17 Jun 2021 18:51:10 +0530 Subject: [PATCH 001/N] sysconfig: make _sysconfigdata.py relocatable @@ -56,5 +56,5 @@ index e3f79bf..45eab2a 100644 # Create file used for sys.path fixup -- see Modules/getpath.c with open('pybuilddir.txt', 'w', encoding='utf8') as f: -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0002-restore-setup-config.patch b/mingw-w64-python/0002-restore-setup-config.patch index bf62ea647d..a3c19981f3 100644 --- a/mingw-w64-python/0002-restore-setup-config.patch +++ b/mingw-w64-python/0002-restore-setup-config.patch @@ -1,4 +1,4 @@ -From 2a25da9a573828b206180522b02633a1a128a2dd Mon Sep 17 00:00:00 2001 +From f7d2921eac5dc47b9905f6890fb1a1eafbb6d4ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:12 +0530 @@ -12,10 +12,10 @@ Subject: [PATCH 002/N] restore setup config create mode 100644 Modules/Setup.config.in diff --git a/Makefile.pre.in b/Makefile.pre.in -index 6ce7a61..e8e8e71 100644 +index 42b1ec6..c9d3193 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in -@@ -714,10 +714,12 @@ oldsharedmods: $(SHAREDMODS) +@@ -713,10 +713,12 @@ oldsharedmods: $(SHAREDMODS) Makefile Modules/config.c: Makefile.pre \ $(srcdir)/Modules/config.c.in \ $(MAKESETUP) \ @@ -28,7 +28,7 @@ index 6ce7a61..e8e8e71 100644 Modules/Setup.local \ $(srcdir)/Modules/Setup @mv config.c Modules -@@ -1669,6 +1671,7 @@ libainstall: @DEF_MAKE_RULE@ python-config +@@ -1668,6 +1670,7 @@ libainstall: @DEF_MAKE_RULE@ python-config $(INSTALL_DATA) Makefile $(DESTDIR)$(LIBPL)/Makefile $(INSTALL_DATA) $(srcdir)/Modules/Setup $(DESTDIR)$(LIBPL)/Setup $(INSTALL_DATA) Modules/Setup.local $(DESTDIR)$(LIBPL)/Setup.local @@ -36,7 +36,7 @@ index 6ce7a61..e8e8e71 100644 $(INSTALL_DATA) Misc/python.pc $(DESTDIR)$(LIBPC)/python-$(VERSION).pc $(INSTALL_DATA) Misc/python-embed.pc $(DESTDIR)$(LIBPC)/python-$(VERSION)-embed.pc $(INSTALL_SCRIPT) $(srcdir)/Modules/makesetup $(DESTDIR)$(LIBPL)/makesetup -@@ -1895,6 +1898,7 @@ distclean: clobber +@@ -1894,6 +1897,7 @@ distclean: clobber if test "$$file" != "$(srcdir)/Lib/test/data/README"; then rm "$$file"; fi; \ done -rm -f core Makefile Makefile.pre config.status Modules/Setup.local \ @@ -56,10 +56,10 @@ index 0000000..5c1299d +# based on configure-time options. + diff --git a/configure.ac b/configure.ac -index 8fe5fa5..6ae56e1 100644 +index 431d661..471860c 100644 --- a/configure.ac +++ b/configure.ac -@@ -5844,7 +5844,7 @@ AC_DEFINE_UNQUOTED(PY_BUILTIN_HASHLIB_HASHES, "$default_hashlib_hashes") +@@ -5856,7 +5856,7 @@ AC_DEFINE_UNQUOTED(PY_BUILTIN_HASHLIB_HASHES, "$default_hashlib_hashes") ]) # generate output files @@ -68,7 +68,7 @@ index 8fe5fa5..6ae56e1 100644 AC_CONFIG_FILES([Modules/ld_so_aix], [chmod +x Modules/ld_so_aix]) AC_OUTPUT -@@ -5856,7 +5856,7 @@ fi +@@ -5868,7 +5868,7 @@ fi echo "creating Makefile" >&AS_MESSAGE_FD $SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \ @@ -78,5 +78,5 @@ index 8fe5fa5..6ae56e1 100644 mv config.c Modules -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0003-build-add-with-nt-threads-and-make-it-default-on-min.patch b/mingw-w64-python/0003-build-add-with-nt-threads-and-make-it-default-on-min.patch index 0ab80aa525..2c4f3e13fe 100644 --- a/mingw-w64-python/0003-build-add-with-nt-threads-and-make-it-default-on-min.patch +++ b/mingw-w64-python/0003-build-add-with-nt-threads-and-make-it-default-on-min.patch @@ -1,4 +1,4 @@ -From 80666900d875a95b06f1baf7f9c57a38e4831764 Mon Sep 17 00:00:00 2001 +From 6e5dbed1e20ccb472c1636b22580d716c3692da3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:12 +0530 @@ -78,10 +78,10 @@ index fe78135..344b76e 100644 # include /* O_CREAT and O_EXCL */ # if defined(HAVE_SEM_OPEN) && !defined(POSIX_SEMAPHORES_NOT_ENABLED) diff --git a/configure.ac b/configure.ac -index 6ae56e1..d5766cf 100644 +index 471860c..6a375e3 100644 --- a/configure.ac +++ b/configure.ac -@@ -2040,6 +2040,53 @@ then +@@ -2047,6 +2047,53 @@ then BASECFLAGS="$BASECFLAGS $ac_arch_flags" fi @@ -135,7 +135,7 @@ index 6ae56e1..d5766cf 100644 # On some compilers, pthreads are available without further options # (e.g. MacOS X). On some of these systems, the compiler will not # complain if unaccepted options are passed (e.g. gcc on Mac OS X). -@@ -2158,6 +2205,8 @@ CC="$ac_save_cc"]) +@@ -2165,6 +2212,8 @@ CC="$ac_save_cc"]) AC_MSG_RESULT($ac_cv_pthread) fi @@ -144,7 +144,7 @@ index 6ae56e1..d5766cf 100644 # If we have set a CC compiler flag for thread support then # check if it works for CXX, too. ac_cv_cxx_thread=no -@@ -2178,6 +2227,10 @@ elif test "$ac_cv_pthread" = "yes" +@@ -2185,6 +2234,10 @@ elif test "$ac_cv_pthread" = "yes" then CXX="$CXX -pthread" ac_cv_cxx_thread=yes @@ -155,7 +155,7 @@ index 6ae56e1..d5766cf 100644 fi if test $ac_cv_cxx_thread = yes -@@ -2210,8 +2263,8 @@ dnl AC_MSG_RESULT($cpp_type) +@@ -2217,8 +2270,8 @@ dnl AC_MSG_RESULT($cpp_type) AC_HEADER_STDC AC_CHECK_HEADERS(asm/types.h crypt.h conio.h direct.h dlfcn.h errno.h \ fcntl.h grp.h \ @@ -166,7 +166,7 @@ index 6ae56e1..d5766cf 100644 utime.h \ poll.h sys/devpoll.h sys/epoll.h sys/poll.h \ sys/audioio.h sys/xattr.h sys/bsdtty.h sys/event.h sys/file.h sys/ioctl.h \ -@@ -2225,6 +2278,14 @@ sys/endian.h sys/sysmacros.h linux/memfd.h linux/wait.h sys/memfd.h sys/mman.h) +@@ -2232,6 +2285,14 @@ sys/endian.h sys/sysmacros.h linux/memfd.h linux/wait.h sys/memfd.h sys/mman.h) AC_HEADER_DIRENT AC_HEADER_MAJOR @@ -181,7 +181,7 @@ index 6ae56e1..d5766cf 100644 # bluetooth/bluetooth.h has been known to not compile with -std=c99. # http://permalink.gmane.org/gmane.linux.bluez.kernel/22294 SAVE_CFLAGS=$CFLAGS -@@ -2422,6 +2483,10 @@ fi +@@ -2429,6 +2490,10 @@ fi AC_MSG_CHECKING(for pthread_t) have_pthread_t=no @@ -192,7 +192,7 @@ index 6ae56e1..d5766cf 100644 AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([[#include ]], [[pthread_t x; x = *(pthread_t*)0;]]) ],[have_pthread_t=yes],[]) -@@ -2452,6 +2517,7 @@ if test "$ac_cv_sizeof_pthread_key_t" -eq "$ac_cv_sizeof_int" ; then +@@ -2459,6 +2524,7 @@ if test "$ac_cv_sizeof_pthread_key_t" -eq "$ac_cv_sizeof_int" ; then else AC_MSG_RESULT(no) fi @@ -200,7 +200,7 @@ index 6ae56e1..d5766cf 100644 CC="$ac_save_cc" AC_SUBST(OTHER_LIBTOOL_OPT) -@@ -2897,10 +2963,15 @@ void *x = uuid_enc_be +@@ -2909,10 +2975,15 @@ void *x = uuid_enc_be [AC_MSG_RESULT(no)] ) @@ -216,7 +216,7 @@ index 6ae56e1..d5766cf 100644 # check if we need libintl for locale functions AC_CHECK_LIB(intl, textdomain, -@@ -3232,6 +3303,11 @@ then +@@ -3244,6 +3315,11 @@ then CXX="$CXX -pthread" fi posix_threads=yes @@ -228,7 +228,7 @@ index 6ae56e1..d5766cf 100644 else if test ! -z "$withval" -a -d "$withval" then LDFLAGS="$LDFLAGS -L$withval" -@@ -3692,6 +3768,15 @@ else +@@ -3704,6 +3780,15 @@ else fi # checks for library functions @@ -244,7 +244,7 @@ index 6ae56e1..d5766cf 100644 AC_CHECK_FUNCS(alarm accept4 setitimer getitimer bind_textdomain_codeset chown \ clock confstr copy_file_range ctermid dup3 execv explicit_bzero explicit_memset \ faccessat fchmod fchmodat fchown fchownat \ -@@ -4613,6 +4698,10 @@ AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include ]]) +@@ -4625,6 +4710,10 @@ AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include ]]) # the kernel module that provides POSIX semaphores # isn't loaded by default, so an attempt to call # sem_open results in a 'Signal 12' error. @@ -255,7 +255,7 @@ index 6ae56e1..d5766cf 100644 AC_MSG_CHECKING(whether POSIX semaphores are enabled) AC_CACHE_VAL(ac_cv_posix_semaphores_enabled, AC_RUN_IFELSE([AC_LANG_SOURCE([[ -@@ -4646,6 +4735,14 @@ fi +@@ -4658,6 +4747,14 @@ fi # Multiprocessing check for broken sem_getvalue AC_MSG_CHECKING(for broken sem_getvalue) @@ -271,10 +271,10 @@ index 6ae56e1..d5766cf 100644 AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include diff --git a/pyconfig.h.in b/pyconfig.h.in -index 6358e56..5f63cae 100644 +index 188faee..1df9659 100644 --- a/pyconfig.h.in +++ b/pyconfig.h.in -@@ -1359,6 +1359,9 @@ +@@ -1365,6 +1365,9 @@ /* Define if mvwdelch in curses.h is an expression. */ #undef MVWDELCH_IS_EXPRESSION @@ -285,5 +285,5 @@ index 6358e56..5f63cae 100644 #undef PACKAGE_BUGREPORT -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0004-MINGW-translate-gcc-internal-defines-to-python-platf.patch b/mingw-w64-python/0004-MINGW-translate-gcc-internal-defines-to-python-platf.patch index 1f3009e249..0eb87c1eb8 100644 --- a/mingw-w64-python/0004-MINGW-translate-gcc-internal-defines-to-python-platf.patch +++ b/mingw-w64-python/0004-MINGW-translate-gcc-internal-defines-to-python-platf.patch @@ -1,4 +1,4 @@ -From 96c05432383cc3468538aadd7f1a440ffda4165d Mon Sep 17 00:00:00 2001 +From 543163880ae967bc44e338c6dc0b04c94a8e5add Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:13 +0530 @@ -40,5 +40,5 @@ index 4bd4eb4..475c2a8 100644 Symbols and macros to supply platform-independent interfaces to basic C language & library operations whose spellings vary across platforms. -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0005-MINGW-configure-MACHDEP-and-platform-for-build.patch b/mingw-w64-python/0005-MINGW-configure-MACHDEP-and-platform-for-build.patch index 3acd4d6a22..5c238f7f5e 100644 --- a/mingw-w64-python/0005-MINGW-configure-MACHDEP-and-platform-for-build.patch +++ b/mingw-w64-python/0005-MINGW-configure-MACHDEP-and-platform-for-build.patch @@ -1,4 +1,4 @@ -From c2c04f16d3f6761a9ee768507c0ca8330c976ce6 Mon Sep 17 00:00:00 2001 +From 98ab3e71389dc707d622f1b1906ab6f408c6022b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:14 +0530 @@ -13,7 +13,7 @@ Co-authored-by: Алексей 1 file changed, 15 insertions(+) diff --git a/configure.ac b/configure.ac -index d5766cf..a9936de 100644 +index 6a375e3..eb285cc 100644 --- a/configure.ac +++ b/configure.ac @@ -400,6 +400,9 @@ then @@ -59,5 +59,5 @@ index d5766cf..a9936de 100644 # Some systems cannot stand _XOPEN_SOURCE being defined at all; they -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0006-MINGW-preset-configure-defaults.patch b/mingw-w64-python/0006-MINGW-preset-configure-defaults.patch index e911813d59..8fa05777f9 100644 --- a/mingw-w64-python/0006-MINGW-preset-configure-defaults.patch +++ b/mingw-w64-python/0006-MINGW-preset-configure-defaults.patch @@ -1,4 +1,4 @@ -From 3cdb748058d33d3538a5db1c5b07251cebbd10c9 Mon Sep 17 00:00:00 2001 +From 593c0be91e0ab8fc52245f52c48ef6b4e388b1a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:15 +0530 @@ -53,10 +53,10 @@ index 0000000..03fde9e + +ac_cv_have_size_t_format=no diff --git a/configure.ac b/configure.ac -index a9936de..a2cec23 100644 +index eb285cc..bbea587 100644 --- a/configure.ac +++ b/configure.ac -@@ -913,6 +913,28 @@ if test x$MULTIARCH != x; then +@@ -920,6 +920,28 @@ if test x$MULTIARCH != x; then fi AC_SUBST(MULTIARCH_CPPFLAGS) @@ -86,5 +86,5 @@ index a9936de..a2cec23 100644 save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -Wl,--no-as-needed" -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0007-MINGW-configure-largefile-support-for-windows-builds.patch b/mingw-w64-python/0007-MINGW-configure-largefile-support-for-windows-builds.patch index 95765e0499..1fe66bab3c 100644 --- a/mingw-w64-python/0007-MINGW-configure-largefile-support-for-windows-builds.patch +++ b/mingw-w64-python/0007-MINGW-configure-largefile-support-for-windows-builds.patch @@ -1,4 +1,4 @@ -From 0d783f83aadf8f7dd64bf81684942be2cde01df6 Mon Sep 17 00:00:00 2001 +From 0c221d4dc9d63ea30e7a4fb28cbdd31af3c03ee7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:16 +0530 @@ -14,10 +14,10 @@ Co-authored-by: Christoph Reiter 1 file changed, 12 insertions(+) diff --git a/configure.ac b/configure.ac -index a2cec23..61a7608 100644 +index bbea587..ea7d551 100644 --- a/configure.ac +++ b/configure.ac -@@ -2487,8 +2487,20 @@ AC_CHECK_SIZEOF(off_t, [], [ +@@ -2494,8 +2494,20 @@ AC_CHECK_SIZEOF(off_t, [], [ ]) AC_MSG_CHECKING(whether to enable large file support) @@ -39,5 +39,5 @@ index a2cec23..61a7608 100644 [Defined to enable large file support when an off_t is bigger than a long and long long is at least as big as an off_t. You may need -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0008-MINGW-add-srcdir-PC-to-CPPFLAGS.patch b/mingw-w64-python/0008-MINGW-add-srcdir-PC-to-CPPFLAGS.patch index 828d47888f..d544722600 100644 --- a/mingw-w64-python/0008-MINGW-add-srcdir-PC-to-CPPFLAGS.patch +++ b/mingw-w64-python/0008-MINGW-add-srcdir-PC-to-CPPFLAGS.patch @@ -1,4 +1,4 @@ -From af4cca07445296c92dedffde8191e96e3c468adf Mon Sep 17 00:00:00 2001 +From bb3504f70b2ae039c32da6405a11b82b79dbfefe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:18 +0530 @@ -13,10 +13,10 @@ Co-authored-by: Алексей 1 file changed, 13 insertions(+) diff --git a/configure.ac b/configure.ac -index 61a7608..1f3c8af 100644 +index ea7d551..bb80ed8 100644 --- a/configure.ac +++ b/configure.ac -@@ -5642,8 +5642,21 @@ do +@@ -5654,8 +5654,21 @@ do THREADHEADERS="$THREADHEADERS \$(srcdir)/$h" done @@ -39,5 +39,5 @@ index 61a7608..1f3c8af 100644 for dir in $SRCDIRS; do if test ! -d $dir; then -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0009-MINGW-init-system-calls.patch b/mingw-w64-python/0009-MINGW-init-system-calls.patch index 7a36331853..80877742a2 100644 --- a/mingw-w64-python/0009-MINGW-init-system-calls.patch +++ b/mingw-w64-python/0009-MINGW-init-system-calls.patch @@ -1,4 +1,4 @@ -From a2e178675d5376e8985c489a6cb3bb463909fb41 Mon Sep 17 00:00:00 2001 +From 9968428f3157658c0b47ce4f7732c82bf4a10406 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:19 +0530 @@ -39,7 +39,7 @@ index 5c1299d..9b364fe 100644 +@INITSYS@ -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal posixmodule.c + diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c -index c984e2e..3f3e1f3 100644 +index 29d6126..3894e35 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -310,6 +310,27 @@ corresponding Unix manual entries for more information on calls."); @@ -101,7 +101,7 @@ index c984e2e..3f3e1f3 100644 static PyObject * convertenviron(void) diff --git a/configure.ac b/configure.ac -index 1f3c8af..ba8736b 100644 +index bb80ed8..d3ee3fe 100644 --- a/configure.ac +++ b/configure.ac @@ -594,6 +594,14 @@ then @@ -120,5 +120,5 @@ index 1f3c8af..ba8736b 100644 # it may influence the way we can build extensions, so distutils # needs to check it -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0010-MINGW-build-in-windows-modules-winreg.patch b/mingw-w64-python/0010-MINGW-build-in-windows-modules-winreg.patch index 7bdf18825b..93026ca85f 100644 --- a/mingw-w64-python/0010-MINGW-build-in-windows-modules-winreg.patch +++ b/mingw-w64-python/0010-MINGW-build-in-windows-modules-winreg.patch @@ -1,4 +1,4 @@ -From 08880ce168fbb08e6476a246fd80e141ebf2eed7 Mon Sep 17 00:00:00 2001 +From 4061aa3b0c5530615a37774fc78aa485b88ab2cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:20 +0530 @@ -57,10 +57,10 @@ index fd1ccb7..b6f1a8f 100644 static BOOL clinic_HKEY_converter(PyObject *ob, void *p); static PyObject *PyHKEY_FromHKEY(HKEY h); diff --git a/configure.ac b/configure.ac -index ba8736b..59f3edc 100644 +index d3ee3fe..fcbb02c 100644 --- a/configure.ac +++ b/configure.ac -@@ -3326,6 +3326,13 @@ else +@@ -3338,6 +3338,13 @@ else fi]) AC_MSG_RESULT($with_dbmliborder) @@ -75,5 +75,5 @@ index ba8736b..59f3edc 100644 # For a single AC_DEFINE, no template is needed. AH_TEMPLATE(_REENTRANT, -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0011-MINGW-determine-if-pwdmodule-should-be-used.patch b/mingw-w64-python/0011-MINGW-determine-if-pwdmodule-should-be-used.patch index 3fcb7cf619..807ad50e98 100644 --- a/mingw-w64-python/0011-MINGW-determine-if-pwdmodule-should-be-used.patch +++ b/mingw-w64-python/0011-MINGW-determine-if-pwdmodule-should-be-used.patch @@ -1,4 +1,4 @@ -From 892c8b91944241a71222a04d9276fdd409479408 Mon Sep 17 00:00:00 2001 +From 5687d0c4fd9b15b0ac3c8ce0ebd35e824a3f0475 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:21 +0530 @@ -43,10 +43,10 @@ index 612cabd..d071a74 100644 @USE_WIN32_MODULE@winreg ../PC/winreg.c diff --git a/configure.ac b/configure.ac -index 59f3edc..806ebe0 100644 +index fcbb02c..b797c58 100644 --- a/configure.ac +++ b/configure.ac -@@ -3333,6 +3333,13 @@ case $host in +@@ -3345,6 +3345,13 @@ case $host in *-*-mingw*) USE_WIN32_MODULE=;; esac @@ -61,5 +61,5 @@ index 59f3edc..806ebe0 100644 # For a single AC_DEFINE, no template is needed. AH_TEMPLATE(_REENTRANT, -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0012-issue6672-v2-Add-Mingw-recognition-to-pyport.h-to-al.patch b/mingw-w64-python/0012-issue6672-v2-Add-Mingw-recognition-to-pyport.h-to-al.patch index d0c8bf5c99..d01c68f924 100644 --- a/mingw-w64-python/0012-issue6672-v2-Add-Mingw-recognition-to-pyport.h-to-al.patch +++ b/mingw-w64-python/0012-issue6672-v2-Add-Mingw-recognition-to-pyport.h-to-al.patch @@ -1,4 +1,4 @@ -From b04a5d9e049ad86d70f3977cb2604b2e6b7e0bca Mon Sep 17 00:00:00 2001 +From 85ff42f6dea113f58dfbc588eec2ee3174c17793 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:23 +0530 @@ -64,12 +64,12 @@ index 475c2a8..a05fa3a 100644 /* module init functions outside the core must be exported */ # if defined(__cplusplus) diff --git a/setup.py b/setup.py -index 54d4b94..d7a4e3f 100644 +index c6023e1..86f877b 100644 --- a/setup.py +++ b/setup.py -@@ -444,6 +444,9 @@ class PyBuildExt(build_ext): - def build_extensions(self): - self.set_srcdir() +@@ -450,6 +450,9 @@ class PyBuildExt(build_ext): + self.configure_compiler() + self.init_inc_lib_dirs() + if MS_WINDOWS: + self.compiler.define_macro("Py_BUILD_CORE_MODULE") @@ -78,5 +78,5 @@ index 54d4b94..d7a4e3f 100644 self.detect_modules() -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0013-MINGW-configure-for-shared-build.patch b/mingw-w64-python/0013-MINGW-configure-for-shared-build.patch index 73ec196ae8..bfe25a7ecd 100644 --- a/mingw-w64-python/0013-MINGW-configure-for-shared-build.patch +++ b/mingw-w64-python/0013-MINGW-configure-for-shared-build.patch @@ -1,4 +1,4 @@ -From ed8995bda0e5acd112b43ee5662df3640f6154f3 Mon Sep 17 00:00:00 2001 +From a987eaf37f68be6e22fdca2cbc67e6df1eb14611 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:24 +0530 @@ -13,10 +13,10 @@ Co-authored-by: Алексей 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac -index 806ebe0..6ebf250 100644 +index b797c58..b457a4b 100644 --- a/configure.ac +++ b/configure.ac -@@ -1233,6 +1233,13 @@ if test $enable_shared = "yes"; then +@@ -1240,6 +1240,13 @@ if test $enable_shared = "yes"; then ;; esac @@ -30,7 +30,7 @@ index 806ebe0..6ebf250 100644 else # shared is disabled PY_ENABLE_SHARED=0 case $ac_sys_system in -@@ -1241,6 +1248,10 @@ else # shared is disabled +@@ -1248,6 +1255,10 @@ else # shared is disabled LDLIBRARY='libpython$(LDVERSION).dll.a' ;; esac @@ -41,7 +41,7 @@ index 806ebe0..6ebf250 100644 fi if test "$cross_compiling" = yes; then -@@ -2843,6 +2854,12 @@ then +@@ -2850,6 +2861,12 @@ then LDCXXSHARED="g++ -shared -Wl,--enable-auto-image-base";; *) LDSHARED="ld";; esac @@ -54,7 +54,7 @@ index 806ebe0..6ebf250 100644 fi AC_MSG_RESULT($LDSHARED) LDCXXSHARED=${LDCXXSHARED-$LDSHARED} -@@ -5670,7 +5687,8 @@ case $host in +@@ -5682,7 +5699,8 @@ case $host in dnl "errmap.h" from $srcdir/PC. dnl Note we cannot use BASECPPFLAGS as autogenerated pyconfig.h dnl has to be before customized located in ../PC. @@ -65,5 +65,5 @@ index 806ebe0..6ebf250 100644 esac -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0014-MINGW-dynamic-loading-support.patch b/mingw-w64-python/0014-MINGW-dynamic-loading-support.patch index a85937ab06..ad4294d731 100644 --- a/mingw-w64-python/0014-MINGW-dynamic-loading-support.patch +++ b/mingw-w64-python/0014-MINGW-dynamic-loading-support.patch @@ -1,4 +1,4 @@ -From 4eb264922b5a1abfa9400662d88c10a3b5f447bd Mon Sep 17 00:00:00 2001 +From 0aca06809a58f19465df1f1245e0383da9129835 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:25 +0530 @@ -15,10 +15,10 @@ Co-authored-by: Алексей 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/Makefile.pre.in b/Makefile.pre.in -index e8e8e71..332f9a5 100644 +index c9d3193..3b96788 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in -@@ -823,6 +823,12 @@ Python/dynload_hpux.o: $(srcdir)/Python/dynload_hpux.c Makefile +@@ -822,6 +822,12 @@ Python/dynload_hpux.o: $(srcdir)/Python/dynload_hpux.c Makefile -DSHLIB_EXT='"$(EXT_SUFFIX)"' \ -o $@ $(srcdir)/Python/dynload_hpux.c @@ -59,10 +59,10 @@ index 81787e5..9d7690e 100644 /* restore old error mode settings */ diff --git a/configure.ac b/configure.ac -index 6ebf250..a8c64a7 100644 +index b457a4b..6ba6dc7 100644 --- a/configure.ac +++ b/configure.ac -@@ -2718,6 +2718,9 @@ if test -z "$SHLIB_SUFFIX"; then +@@ -2725,6 +2725,9 @@ if test -z "$SHLIB_SUFFIX"; then CYGWIN*) SHLIB_SUFFIX=.dll;; *) SHLIB_SUFFIX=.so;; esac @@ -72,7 +72,7 @@ index 6ebf250..a8c64a7 100644 fi AC_MSG_RESULT($SHLIB_SUFFIX) -@@ -3831,6 +3834,13 @@ then +@@ -3843,6 +3846,13 @@ then fi ;; esac @@ -86,7 +86,7 @@ index 6ebf250..a8c64a7 100644 fi AC_MSG_RESULT($DYNLOADFILE) if test "$DYNLOADFILE" != "dynload_stub.o" -@@ -5667,6 +5677,12 @@ case "$ac_cv_computed_gotos" in yes*) +@@ -5679,6 +5689,12 @@ case "$ac_cv_computed_gotos" in yes*) AC_DEFINE(HAVE_COMPUTED_GOTOS, 1, [Define if the C compiler supports computed gotos.]) esac @@ -100,5 +100,5 @@ index 6ebf250..a8c64a7 100644 case $ac_sys_system in AIX*) -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0015-MINGW-ignore-main-program-for-frozen-scripts.patch b/mingw-w64-python/0015-MINGW-ignore-main-program-for-frozen-scripts.patch index e97f70e7c1..b20b4a0a84 100644 --- a/mingw-w64-python/0015-MINGW-ignore-main-program-for-frozen-scripts.patch +++ b/mingw-w64-python/0015-MINGW-ignore-main-program-for-frozen-scripts.patch @@ -1,4 +1,4 @@ -From bd06581551552ea5206d6af8c757181864b11066 Mon Sep 17 00:00:00 2001 +From 4d8528bd2de264a45cbcd0f2b7ac86ffa57da6d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:26 +0530 @@ -14,10 +14,10 @@ Co-authored-by: Алексей 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/Makefile.pre.in b/Makefile.pre.in -index 332f9a5..8c8363a 100644 +index 3b96788..1c46d07 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in -@@ -352,7 +352,7 @@ PYTHON_OBJS= \ +@@ -351,7 +351,7 @@ PYTHON_OBJS= \ Python/context.o \ Python/dynamic_annotations.o \ Python/errors.o \ @@ -27,10 +27,10 @@ index 332f9a5..8c8363a 100644 Python/getargs.o \ Python/getcompiler.o \ diff --git a/configure.ac b/configure.ac -index a8c64a7..7fcdd47 100644 +index 6ba6dc7..ac5061f 100644 --- a/configure.ac +++ b/configure.ac -@@ -5708,6 +5708,16 @@ case $host in +@@ -5720,6 +5720,16 @@ case $host in ;; esac @@ -48,5 +48,5 @@ index a8c64a7..7fcdd47 100644 SRCDIRS="Parser Parser/pegen Objects Python Modules Modules/_io Programs" case $host in -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0016-MINGW-setup-_multiprocessing-module.patch b/mingw-w64-python/0016-MINGW-setup-_multiprocessing-module.patch index 8bcd1ac272..37b91c9684 100644 --- a/mingw-w64-python/0016-MINGW-setup-_multiprocessing-module.patch +++ b/mingw-w64-python/0016-MINGW-setup-_multiprocessing-module.patch @@ -1,4 +1,4 @@ -From 0dca777395cc304349d9d90e631407374e2c6de0 Mon Sep 17 00:00:00 2001 +From 63926d1e82cfdac69ee3fedced546db4fafb44ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:26 +0530 @@ -13,10 +13,10 @@ Co-authored-by: Алексей 1 file changed, 5 insertions(+) diff --git a/setup.py b/setup.py -index d7a4e3f..a15718e 100644 +index 86f877b..f00612a 100644 --- a/setup.py +++ b/setup.py -@@ -1766,7 +1766,12 @@ class PyBuildExt(build_ext): +@@ -1771,7 +1771,12 @@ class PyBuildExt(build_ext): libraries=libs, include_dirs=["Modules/_multiprocessing"])) @@ -30,5 +30,5 @@ index d7a4e3f..a15718e 100644 def detect_uuid(self): -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0017-MINGW-setup-select-module.patch b/mingw-w64-python/0017-MINGW-setup-select-module.patch index 07c359e965..dbeb756478 100644 --- a/mingw-w64-python/0017-MINGW-setup-select-module.patch +++ b/mingw-w64-python/0017-MINGW-setup-select-module.patch @@ -1,4 +1,4 @@ -From 1dcb2cc12d447b3be226f61699d2570c921b67bb Mon Sep 17 00:00:00 2001 +From 214eb1d0c11cb7ac5070765c099fcbb6eb930f1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:29 +0530 @@ -39,10 +39,10 @@ index fb71e91..ad3990c 100644 /* add object and its file descriptor to the list */ diff --git a/setup.py b/setup.py -index a15718e..7914821 100644 +index f00612a..d74f25e 100644 --- a/setup.py +++ b/setup.py -@@ -906,7 +906,11 @@ class PyBuildExt(build_ext): +@@ -909,7 +909,11 @@ class PyBuildExt(build_ext): self.missing.append('spwd') # select(2); not on ancient System V @@ -56,5 +56,5 @@ index a15718e..7914821 100644 # Fred Drake's interface to the Python parser self.add(Extension('parser', ['parsermodule.c'])) -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0018-MINGW-setup-_ctypes-module-with-system-libffi.patch b/mingw-w64-python/0018-MINGW-setup-_ctypes-module-with-system-libffi.patch index cf0da7f955..66daf0eed0 100644 --- a/mingw-w64-python/0018-MINGW-setup-_ctypes-module-with-system-libffi.patch +++ b/mingw-w64-python/0018-MINGW-setup-_ctypes-module-with-system-libffi.patch @@ -1,4 +1,4 @@ -From f863b526f355dbc2dd1539be76a0f95f7abec559 Mon Sep 17 00:00:00 2001 +From 9b7ef57e2a6bc784555d9671ed7b1101fe03f7fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:30 +0530 @@ -14,10 +14,10 @@ Co-authored-by: Christoph Reiter 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py -index 7914821..60f6243 100644 +index d74f25e..2c3e29e 100644 --- a/setup.py +++ b/setup.py -@@ -2154,9 +2154,12 @@ class PyBuildExt(build_ext): +@@ -2156,9 +2156,12 @@ class PyBuildExt(build_ext): self.add(ext) if TEST_EXTENSIONS: # function my_sqrt() needs libm for sqrt() @@ -31,7 +31,7 @@ index 7914821..60f6243 100644 ffi_inc = sysconfig.get_config_var("LIBFFI_INCLUDEDIR") ffi_lib = None -@@ -2201,6 +2204,8 @@ class PyBuildExt(build_ext): +@@ -2203,6 +2206,8 @@ class PyBuildExt(build_ext): ext.include_dirs.append(ffi_inc) ext.libraries.append(ffi_lib) @@ -41,5 +41,5 @@ index 7914821..60f6243 100644 if sysconfig.get_config_var('HAVE_LIBDL'): -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0019-MINGW-defect-winsock2-and-setup-_socket-module.patch b/mingw-w64-python/0019-MINGW-defect-winsock2-and-setup-_socket-module.patch index 8ee66eeed1..75623d74c2 100644 --- a/mingw-w64-python/0019-MINGW-defect-winsock2-and-setup-_socket-module.patch +++ b/mingw-w64-python/0019-MINGW-defect-winsock2-and-setup-_socket-module.patch @@ -1,4 +1,4 @@ -From 0a6c242ff914437f5feb80ee638b592667a519b2 Mon Sep 17 00:00:00 2001 +From 9c06f597151aafa16ed53c8d434ce60a21ca676b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:30 +0530 @@ -28,10 +28,10 @@ index 513065d..9be43fd 100644 +# force detection of winsock2 functionality - require wxp or newer +ac_cv_func_getpeername=yes diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c -index 8953185..d15bb4f 100644 +index a22060d..be91ad0 100644 --- a/Modules/socketmodule.c +++ b/Modules/socketmodule.c -@@ -305,7 +305,7 @@ http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libc/net/getaddrinfo.c.diff?r1=1.82& +@@ -302,7 +302,7 @@ http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libc/net/getaddrinfo.c.diff?r1=1.82& # endif /* Macros based on the IPPROTO enum, see: https://bugs.python.org/issue29515 */ @@ -40,7 +40,7 @@ index 8953185..d15bb4f 100644 #define IPPROTO_ICMP IPPROTO_ICMP #define IPPROTO_IGMP IPPROTO_IGMP #define IPPROTO_GGP IPPROTO_GGP -@@ -336,7 +336,7 @@ http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libc/net/getaddrinfo.c.diff?r1=1.82& +@@ -333,7 +333,7 @@ http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libc/net/getaddrinfo.c.diff?r1=1.82& #define IPPROTO_PGM IPPROTO_PGM // WinSock2 only #define IPPROTO_L2TP IPPROTO_L2TP // WinSock2 only #define IPPROTO_SCTP IPPROTO_SCTP // WinSock2 only @@ -49,7 +49,7 @@ index 8953185..d15bb4f 100644 /* Provides the IsWindows7SP1OrGreater() function */ #include -@@ -429,6 +429,10 @@ remove_unusable_flags(PyObject *m) +@@ -426,6 +426,10 @@ remove_unusable_flags(PyObject *m) /* Do not include addrinfo.h for MSVC7 or greater. 'addrinfo' and * EAI_* constants are defined in (the already included) ws2tcpip.h. */ @@ -61,10 +61,10 @@ index 8953185..d15bb4f 100644 # include "addrinfo.h" #endif diff --git a/configure.ac b/configure.ac -index 7fcdd47..5459145 100644 +index ac5061f..495cf68 100644 --- a/configure.ac +++ b/configure.ac -@@ -4443,21 +4443,36 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +@@ -4455,21 +4455,36 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ ],[]) AC_MSG_RESULT($was_it_defined) @@ -105,7 +105,7 @@ index 7fcdd47..5459145 100644 [ac_cv_struct_sockaddr_storage=yes], [ac_cv_struct_sockaddr_storage=no])) AC_MSG_RESULT($ac_cv_struct_sockaddr_storage) -@@ -5598,7 +5613,10 @@ fi +@@ -5610,7 +5625,10 @@ fi AC_CHECK_TYPE(socklen_t,, AC_DEFINE(socklen_t,int, @@ -118,7 +118,7 @@ index 7fcdd47..5459145 100644 #include #endif diff --git a/pyconfig.h.in b/pyconfig.h.in -index 5f63cae..b69a7c7 100644 +index 1df9659..10255f6 100644 --- a/pyconfig.h.in +++ b/pyconfig.h.in @@ -54,7 +54,7 @@ @@ -130,7 +130,7 @@ index 5f63cae..b69a7c7 100644 #undef HAVE_ADDRINFO /* Define to 1 if you have the `alarm' function. */ -@@ -1342,6 +1342,9 @@ +@@ -1348,6 +1348,9 @@ /* Define if libssl has X509_VERIFY_PARAM_set1_host and related function */ #undef HAVE_X509_VERIFY_PARAM_SET1_HOST @@ -140,7 +140,7 @@ index 5f63cae..b69a7c7 100644 /* Define if the zlib library has inflateCopy */ #undef HAVE_ZLIB_COPY -@@ -1658,7 +1661,7 @@ +@@ -1664,7 +1667,7 @@ /* Define to `unsigned int' if does not define. */ #undef size_t @@ -150,10 +150,10 @@ index 5f63cae..b69a7c7 100644 /* Define to `int' if doesn't define. */ diff --git a/setup.py b/setup.py -index 60f6243..c8242ac 100644 +index 2c3e29e..2beb525 100644 --- a/setup.py +++ b/setup.py -@@ -1143,6 +1143,8 @@ class PyBuildExt(build_ext): +@@ -1146,6 +1146,8 @@ class PyBuildExt(build_ext): if MACOS: # Issue #35569: Expose RFC 3542 socket options. kwargs['extra_compile_args'] = ['-D__APPLE_USE_RFC_3542'] @@ -163,5 +163,5 @@ index 60f6243..c8242ac 100644 self.add(Extension('_socket', ['socketmodule.c'], **kwargs)) elif self.compiler.find_library_file(self.lib_dirs, 'net'): -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0020-MINGW-exclude-unix-only-modules.patch b/mingw-w64-python/0020-MINGW-exclude-unix-only-modules.patch index 1a59ca9a8c..fe51fec4ff 100644 --- a/mingw-w64-python/0020-MINGW-exclude-unix-only-modules.patch +++ b/mingw-w64-python/0020-MINGW-exclude-unix-only-modules.patch @@ -1,4 +1,4 @@ -From 43127485a0b9ef0e6eb88436cbd3691114203324 Mon Sep 17 00:00:00 2001 +From 8935c150ff336f6ba87ab67cb0b134586c26b694 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:31 +0530 @@ -13,10 +13,10 @@ Co-authored-by: Алексей 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/setup.py b/setup.py -index c8242ac..f317bf3 100644 +index 2beb525..a35f493 100644 --- a/setup.py +++ b/setup.py -@@ -889,13 +889,21 @@ class PyBuildExt(build_ext): +@@ -892,13 +892,21 @@ class PyBuildExt(build_ext): if (self.config_h_vars.get('FLOCK_NEEDS_LIBBSD', False)): # May be necessary on AIX for flock function libs = ['bsd'] @@ -42,7 +42,7 @@ index c8242ac..f317bf3 100644 # spwd, shadow passwords if (self.config_h_vars.get('HAVE_GETSPNAM', False) or self.config_h_vars.get('HAVE_GETSPENT', False)): -@@ -920,7 +928,10 @@ class PyBuildExt(build_ext): +@@ -923,7 +931,10 @@ class PyBuildExt(build_ext): # Lance Ellinghaus's syslog module # syslog daemon interface @@ -54,7 +54,7 @@ index c8242ac..f317bf3 100644 # Python interface to subinterpreter C-API. self.add(Extension('_xxsubinterpreters', ['_xxsubinterpretersmodule.c'])) -@@ -946,7 +957,10 @@ class PyBuildExt(build_ext): +@@ -949,7 +960,10 @@ class PyBuildExt(build_ext): self.add(Extension('_csv', ['_csv.c'])) # POSIX subprocess module helper. @@ -66,7 +66,7 @@ index c8242ac..f317bf3 100644 def detect_test_extensions(self): # Python C API test module -@@ -1128,13 +1142,16 @@ class PyBuildExt(build_ext): +@@ -1131,13 +1145,16 @@ class PyBuildExt(build_ext): # the encryption. return @@ -90,5 +90,5 @@ index c8242ac..f317bf3 100644 def detect_socket(self): # socket(2) -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0021-MINGW-setup-msvcrt-and-_winapi-modules.patch b/mingw-w64-python/0021-MINGW-setup-msvcrt-and-_winapi-modules.patch index 0f36917f6a..527105bdc0 100644 --- a/mingw-w64-python/0021-MINGW-setup-msvcrt-and-_winapi-modules.patch +++ b/mingw-w64-python/0021-MINGW-setup-msvcrt-and-_winapi-modules.patch @@ -1,4 +1,4 @@ -From 71342683a28f2826c9738951706c167226c2f093 Mon Sep 17 00:00:00 2001 +From 21c092964fa1524ea3e5a30995924a87d4af9fac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:33 +0530 @@ -57,10 +57,10 @@ index 7febaa0..70d5b3d 100644 #endif diff --git a/setup.py b/setup.py -index f317bf3..5466e9b 100644 +index a35f493..a802e51 100644 --- a/setup.py +++ b/setup.py -@@ -1604,6 +1604,27 @@ class PyBuildExt(build_ext): +@@ -1607,6 +1607,27 @@ class PyBuildExt(build_ext): '-framework', 'SystemConfiguration', '-framework', 'CoreFoundation'])) @@ -89,5 +89,5 @@ index f317bf3..5466e9b 100644 # Andrew Kuchling's zlib module. Note that some versions of zlib # 1.1.3 have security problems. See CERT Advisory CA-2002-07: -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0022-sysconfig-MINGW-build-extensions-with-GCC.patch b/mingw-w64-python/0022-sysconfig-MINGW-build-extensions-with-GCC.patch index ca2b869b61..91286ee5f2 100644 --- a/mingw-w64-python/0022-sysconfig-MINGW-build-extensions-with-GCC.patch +++ b/mingw-w64-python/0022-sysconfig-MINGW-build-extensions-with-GCC.patch @@ -1,4 +1,4 @@ -From 81df7b055662ed80b952de911ec0c25df3e40e1f Mon Sep 17 00:00:00 2001 +From 27c14e48f60c152b2dfb6031b21f26b9c79c93bb Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Tue, 21 Sep 2021 20:52:42 +0200 Subject: [PATCH 022/N] sysconfig: MINGW build extensions with GCC @@ -21,5 +21,5 @@ index 45eab2a..42de9b3 100644 return 'win-amd64' if '(arm)' in sys.version.lower(): -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0023-MINGW-setup-_ssl-module.patch b/mingw-w64-python/0023-MINGW-setup-_ssl-module.patch index 29196e5156..349bcba8bf 100644 --- a/mingw-w64-python/0023-MINGW-setup-_ssl-module.patch +++ b/mingw-w64-python/0023-MINGW-setup-_ssl-module.patch @@ -1,4 +1,4 @@ -From 3d38194a6e0ff4c07988064d51fa10ecbf7b450d Mon Sep 17 00:00:00 2001 +From ba662c4c0f3a9fc5ee296fb4a6b5c5038bc1ae79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:37 +0530 @@ -13,10 +13,10 @@ Co-authored-by: Алексей 1 file changed, 2 insertions(+) diff --git a/setup.py b/setup.py -index 5466e9b..51d3f59 100644 +index a802e51..2e2578c 100644 --- a/setup.py +++ b/setup.py -@@ -2386,6 +2386,8 @@ class PyBuildExt(build_ext): +@@ -2388,6 +2388,8 @@ class PyBuildExt(build_ext): openssl_includes = split_var('OPENSSL_INCLUDES', '-I') openssl_libdirs = split_var('OPENSSL_LDFLAGS', '-L') openssl_libs = split_var('OPENSSL_LIBS', '-l') @@ -26,5 +26,5 @@ index 5466e9b..51d3f59 100644 # libssl and libcrypto not found self.missing.extend(['_ssl', '_hashlib']) -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0024-MINGW-generalization-of-posix-build-in-sysconfig.py.patch b/mingw-w64-python/0024-MINGW-generalization-of-posix-build-in-sysconfig.py.patch index 0e1b453276..82e3e6fa39 100644 --- a/mingw-w64-python/0024-MINGW-generalization-of-posix-build-in-sysconfig.py.patch +++ b/mingw-w64-python/0024-MINGW-generalization-of-posix-build-in-sysconfig.py.patch @@ -1,4 +1,4 @@ -From 9cd7f11ee87717152eb4deebdf74217495440b11 Mon Sep 17 00:00:00 2001 +From 6b724ccae0bdef5fc26ccd45a46fbfe466c6940b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:38 +0530 @@ -76,5 +76,5 @@ index 42de9b3..65cb345 100644 # If srcdir is a relative path (typically '.' or '..') # then it should be interpreted relative to the directory -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0025-MINGW-support-stdcall-without-underscore.patch b/mingw-w64-python/0025-MINGW-support-stdcall-without-underscore.patch index a4681827d6..6e4e534831 100644 --- a/mingw-w64-python/0025-MINGW-support-stdcall-without-underscore.patch +++ b/mingw-w64-python/0025-MINGW-support-stdcall-without-underscore.patch @@ -1,4 +1,4 @@ -From 15b977a7de9a992afdb0af75ae3c3d84a524d7df Mon Sep 17 00:00:00 2001 +From 1b5307c71e0c90bc47a19b799c702619631b8b40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:39 +0530 @@ -50,5 +50,5 @@ index ceae67e..b9cf96b 100644 return NULL; #endif -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0026-use-replace-instead-rename-to-avoid-failure-on-windo.patch b/mingw-w64-python/0026-use-replace-instead-rename-to-avoid-failure-on-windo.patch index 113352169c..ce403abc65 100644 --- a/mingw-w64-python/0026-use-replace-instead-rename-to-avoid-failure-on-windo.patch +++ b/mingw-w64-python/0026-use-replace-instead-rename-to-avoid-failure-on-windo.patch @@ -1,4 +1,4 @@ -From b14a7592f54a2230d5b087e15a4547d23eeed6e1 Mon Sep 17 00:00:00 2001 +From 7e4c459c2f2ce9031239e94cc141ff7aacc10c26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:40 +0530 @@ -14,10 +14,10 @@ Co-authored-by: Christoph Reiter 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py -index 51d3f59..ea08edf 100644 +index 2e2578c..0d2740b 100644 --- a/setup.py +++ b/setup.py -@@ -2607,7 +2607,7 @@ class PyBuildScripts(build_scripts): +@@ -2609,7 +2609,7 @@ class PyBuildScripts(build_scripts): else: newfilename = filename + minoronly log.info('renaming %s to %s', filename, newfilename) @@ -27,5 +27,5 @@ index 51d3f59..ea08edf 100644 if filename in updated_files: newupdated_files.append(newfilename) -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0027-MINGW-customize-site.patch b/mingw-w64-python/0027-MINGW-customize-site.patch index 7c4e663ade..97c48d588a 100644 --- a/mingw-w64-python/0027-MINGW-customize-site.patch +++ b/mingw-w64-python/0027-MINGW-customize-site.patch @@ -1,4 +1,4 @@ -From 7edbdbe649d050d6753289b61ad5d2883b5338cd Mon Sep 17 00:00:00 2001 +From 63cf4844b28e2353500735dc156ef64fe46956bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:42 +0530 @@ -55,5 +55,5 @@ index 9e617af..b344f03 100644 path = os.path.join(prefix, libdir, "python%d.%d" % sys.version_info[:2], -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0028-add-python-config-sh.patch b/mingw-w64-python/0028-add-python-config-sh.patch index 39bda2dce1..4f9e12e27b 100644 --- a/mingw-w64-python/0028-add-python-config-sh.patch +++ b/mingw-w64-python/0028-add-python-config-sh.patch @@ -1,4 +1,4 @@ -From 6c65a9a8245268b2260c99db33e27205d9a67837 Mon Sep 17 00:00:00 2001 +From 3070c3206e021b6427ab4483be27afbb10a959c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:43 +0530 @@ -158,5 +158,5 @@ index 2602fe2..e0e048a 100644 esac done -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0029-cross-darwin-feature.patch b/mingw-w64-python/0029-cross-darwin-feature.patch index 5a3ca175ee..37e899294d 100644 --- a/mingw-w64-python/0029-cross-darwin-feature.patch +++ b/mingw-w64-python/0029-cross-darwin-feature.patch @@ -1,4 +1,4 @@ -From 28b76e2a3d4a629a2e5280c760fce8d661909ae0 Mon Sep 17 00:00:00 2001 +From 967b2ec36000c3250b99d190420064cb8f55d8a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:44 +0530 @@ -13,7 +13,7 @@ Co-authored-by: Алексей 1 file changed, 49 insertions(+), 5 deletions(-) diff --git a/configure.ac b/configure.ac -index 5459145..bd4ff50 100644 +index 495cf68..7f2bb28 100644 --- a/configure.ac +++ b/configure.ac @@ -387,6 +387,7 @@ if test -z "$MACHDEP" @@ -70,7 +70,7 @@ index 5459145..bd4ff50 100644 *) # for now, limit cross builds to known configurations MACHDEP="unknown" -@@ -1655,6 +1679,26 @@ AC_SUBST(BASECFLAGS) +@@ -1662,6 +1686,26 @@ AC_SUBST(BASECFLAGS) AC_SUBST(CFLAGS_NODIST) AC_SUBST(LDFLAGS_NODIST) @@ -97,7 +97,7 @@ index 5459145..bd4ff50 100644 # The -arch flags for universal builds on macOS UNIVERSAL_ARCH_FLAGS= AC_SUBST(UNIVERSAL_ARCH_FLAGS) -@@ -2033,7 +2077,7 @@ yes) +@@ -2040,7 +2084,7 @@ yes) ;; esac else @@ -106,7 +106,7 @@ index 5459145..bd4ff50 100644 then # 10.4 was the first release to support Intel archs cur_target="10.4" -@@ -2606,7 +2650,7 @@ case $ac_sys_system/$ac_sys_release in +@@ -2613,7 +2657,7 @@ case $ac_sys_system/$ac_sys_release in if test "${enable_universalsdk}"; then : else @@ -115,7 +115,7 @@ index 5459145..bd4ff50 100644 fi LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';; -@@ -2631,7 +2675,7 @@ case $ac_sys_system/$ac_sys_release in +@@ -2638,7 +2682,7 @@ case $ac_sys_system/$ac_sys_release in ]])],[ac_osx_32bit=yes],[ac_osx_32bit=no],[ac_osx_32bit=yes]) if test "${ac_osx_32bit}" = "yes"; then @@ -124,7 +124,7 @@ index 5459145..bd4ff50 100644 i386) MACOSX_DEFAULT_ARCH="i386" ;; -@@ -2643,7 +2687,7 @@ case $ac_sys_system/$ac_sys_release in +@@ -2650,7 +2694,7 @@ case $ac_sys_system/$ac_sys_release in ;; esac else @@ -134,5 +134,5 @@ index 5459145..bd4ff50 100644 MACOSX_DEFAULT_ARCH="x86_64" ;; -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0030-mingw-system-libffi.patch b/mingw-w64-python/0030-mingw-system-libffi.patch index 7c4a819f06..f24fe2f32e 100644 --- a/mingw-w64-python/0030-mingw-system-libffi.patch +++ b/mingw-w64-python/0030-mingw-system-libffi.patch @@ -1,4 +1,4 @@ -From 97a76defea005fff27a7f019c7ecde3f43a8ee64 Mon Sep 17 00:00:00 2001 +From 8153173167969474e8f6d593e9a29673075fcc38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:45 +0530 @@ -13,10 +13,10 @@ Co-authored-by: Алексей 1 file changed, 2 insertions(+) diff --git a/setup.py b/setup.py -index ea08edf..c52fd3b 100644 +index 0d2740b..d6b0856 100644 --- a/setup.py +++ b/setup.py -@@ -2246,6 +2246,8 @@ class PyBuildExt(build_ext): +@@ -2248,6 +2248,8 @@ class PyBuildExt(build_ext): ext.libraries.append(ffi_lib) if MS_WINDOWS: ext.libraries.extend(['ole32', 'oleaut32', 'uuid']) @@ -26,5 +26,5 @@ index ea08edf..c52fd3b 100644 if sysconfig.get_config_var('HAVE_LIBDL'): -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0031-msys-mingw-prefer-unix-sep-if-MSYSTEM.patch b/mingw-w64-python/0031-msys-mingw-prefer-unix-sep-if-MSYSTEM.patch index 068d830563..a85cbddbf3 100644 --- a/mingw-w64-python/0031-msys-mingw-prefer-unix-sep-if-MSYSTEM.patch +++ b/mingw-w64-python/0031-msys-mingw-prefer-unix-sep-if-MSYSTEM.patch @@ -1,4 +1,4 @@ -From eef4cbef8040e29440e645138de2184bcc82c3d0 Mon Sep 17 00:00:00 2001 +From 4d5064d190e3c44030ebad8e66966f9b1b4714bf Mon Sep 17 00:00:00 2001 From: Ray Donnelly Date: Thu, 17 Jun 2021 18:51:46 +0530 Subject: [PATCH 031/N] msys mingw prefer unix sep if MSYSTEM @@ -211,7 +211,7 @@ index 6f77177..77f5614 100644 try: diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c -index 3f3e1f3..1e61545 100644 +index 3894e35..88e2afb 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -3759,6 +3759,7 @@ posix_getcwd(int use_bytes) @@ -231,7 +231,7 @@ index 3f3e1f3..1e61545 100644 if (result && path->narrow) { Py_SETREF(result, PyUnicode_EncodeFSDefault(result)); diff --git a/Python/initconfig.c b/Python/initconfig.c -index 3caed38..d8f0005 100644 +index 116ee33..af46d26 100644 --- a/Python/initconfig.c +++ b/Python/initconfig.c @@ -136,7 +136,7 @@ static const char usage_6[] = @@ -253,7 +253,7 @@ index 3caed38..d8f0005 100644 #else const wchar_t *default_program_name = L"python3"; diff --git a/Python/pathconfig.c b/Python/pathconfig.c -index 9a30221..267ee4d 100644 +index b2ce86e..222850b 100644 --- a/Python/pathconfig.c +++ b/Python/pathconfig.c @@ -15,6 +15,114 @@ @@ -380,7 +380,7 @@ index 9a30221..267ee4d 100644 diff --git a/Python/traceback.c b/Python/traceback.c -index 83f3074..c0e463a 100644 +index 23d0e38..37a7670 100644 --- a/Python/traceback.c +++ b/Python/traceback.c @@ -314,7 +314,7 @@ _Py_FindSourceFile(PyObject *filename, char* namebuf, size_t namelen, PyObject * @@ -393,5 +393,5 @@ index 83f3074..c0e463a 100644 tail = filepath; else -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0032-mingw-use-posix-getpath.patch b/mingw-w64-python/0032-mingw-use-posix-getpath.patch index 7f51c1f4a9..08f40ba9ef 100644 --- a/mingw-w64-python/0032-mingw-use-posix-getpath.patch +++ b/mingw-w64-python/0032-mingw-use-posix-getpath.patch @@ -1,4 +1,4 @@ -From 81023c047fed86a16c63b8a185abbb34c54b023b Mon Sep 17 00:00:00 2001 +From c743ec5883ee146dde9259c54730bd48810c316c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:47 +0530 @@ -47,7 +47,7 @@ index 4eec669..b34f110 100644 #endif diff --git a/Modules/getpath.c b/Modules/getpath.c -index 728ecad..3010182 100644 +index 5dbe57c..bede134 100644 --- a/Modules/getpath.c +++ b/Modules/getpath.c @@ -13,6 +13,11 @@ @@ -436,7 +436,7 @@ index 728ecad..3010182 100644 status = calculate_init(&calculate, config); diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c -index 1e61545..40fc270 100644 +index 88e2afb..add8ed5 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -4049,7 +4049,7 @@ _listdir_windows_no_opendir(path_t *path, PyObject *list) @@ -463,10 +463,10 @@ index 9d7690e..bd34310 100644 _Py_COMP_DIAG_PUSH _Py_COMP_DIAG_IGNORE_DEPR_DECLS diff --git a/Python/fileutils.c b/Python/fileutils.c -index 11c659d..4b299b2 100644 +index 26e97df..75ee355 100644 --- a/Python/fileutils.c +++ b/Python/fileutils.c -@@ -1925,13 +1925,31 @@ _Py_wrealpath(const wchar_t *path, +@@ -1937,13 +1937,31 @@ _Py_wrealpath(const wchar_t *path, #endif @@ -501,5 +501,5 @@ index 11c659d..4b299b2 100644 /* Get an absolute path. -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0033-mingw-add-ModuleFileName-dir-to-PATH.patch b/mingw-w64-python/0033-mingw-add-ModuleFileName-dir-to-PATH.patch index 84ee084daa..677b6cdbb4 100644 --- a/mingw-w64-python/0033-mingw-add-ModuleFileName-dir-to-PATH.patch +++ b/mingw-w64-python/0033-mingw-add-ModuleFileName-dir-to-PATH.patch @@ -1,4 +1,4 @@ -From 1a866712f70f3f146587b0d25ad7f66b185a0afc Mon Sep 17 00:00:00 2001 +From ef90ac0fa4d305d9fa76ead9755ab7a731cd0f8c Mon Sep 17 00:00:00 2001 From: Ray Donnelly Date: Thu, 17 Jun 2021 18:51:48 +0530 Subject: [PATCH 033/N] mingw add ModuleFileName dir to PATH @@ -13,7 +13,7 @@ Co-authored-by: Christoph Reiter 1 file changed, 30 insertions(+) diff --git a/Modules/getpath.c b/Modules/getpath.c -index 3010182..c52e0df 100644 +index bede134..c782e0f 100644 --- a/Modules/getpath.c +++ b/Modules/getpath.c @@ -1641,6 +1641,36 @@ calculate_path(PyCalculatePath *calculate, _PyPathConfig *pathconfig) @@ -54,5 +54,5 @@ index 3010182..c52e0df 100644 && calculate->warnings) { -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0034-mingw-add-BUILDIN_WIN32_MODULEs-time-msvcrt.patch b/mingw-w64-python/0034-mingw-add-BUILDIN_WIN32_MODULEs-time-msvcrt.patch index bc74438917..245b5a887a 100644 --- a/mingw-w64-python/0034-mingw-add-BUILDIN_WIN32_MODULEs-time-msvcrt.patch +++ b/mingw-w64-python/0034-mingw-add-BUILDIN_WIN32_MODULEs-time-msvcrt.patch @@ -1,4 +1,4 @@ -From e9e44cbc990a6d1be36bc7739de1b365bd5f3deb Mon Sep 17 00:00:00 2001 +From 970c6cc2d5fcb3b09f2735da2606e6a24bd7d505 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:49 +0530 @@ -23,5 +23,5 @@ index d071a74..825ce5d 100644 +@USE_WIN32_MODULE@msvcrt -DPy_BUILD_CORE ../PC/msvcrtmodule.c -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0035-msys-cygwin-semi-native-build-sysconfig.patch b/mingw-w64-python/0035-msys-cygwin-semi-native-build-sysconfig.patch index bcd94ef70a..e8b16b7240 100644 --- a/mingw-w64-python/0035-msys-cygwin-semi-native-build-sysconfig.patch +++ b/mingw-w64-python/0035-msys-cygwin-semi-native-build-sysconfig.patch @@ -1,4 +1,4 @@ -From 87605ef6c8e472a8b1e38d0fbeaf4f75b87a9964 Mon Sep 17 00:00:00 2001 +From 73afad716d68e9fb11b05e2c0cbf27c66279934a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:50 +0530 @@ -34,10 +34,10 @@ index 65cb345..f69d0db 100644 vars.update(done) return vars diff --git a/Makefile.pre.in b/Makefile.pre.in -index 8c8363a..e0b8155 100644 +index 1c46d07..3d42756 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in -@@ -137,6 +137,13 @@ exec_prefix= @exec_prefix@ +@@ -136,6 +136,13 @@ exec_prefix= @exec_prefix@ # Install prefix for data files datarootdir= @datarootdir@ @@ -52,7 +52,7 @@ index 8c8363a..e0b8155 100644 BINDIR= @bindir@ LIBDIR= @libdir@ diff --git a/configure.ac b/configure.ac -index bd4ff50..a9640e9 100644 +index 7f2bb28..a7d664c 100644 --- a/configure.ac +++ b/configure.ac @@ -618,6 +618,65 @@ then @@ -122,5 +122,5 @@ index bd4ff50..a9640e9 100644 AC_SUBST(INITSYS) case $host in -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0036-sysconfig-mingw-sysconfig-like-posix.patch b/mingw-w64-python/0036-sysconfig-mingw-sysconfig-like-posix.patch index 71ca745a75..56e151a019 100644 --- a/mingw-w64-python/0036-sysconfig-mingw-sysconfig-like-posix.patch +++ b/mingw-w64-python/0036-sysconfig-mingw-sysconfig-like-posix.patch @@ -1,4 +1,4 @@ -From ab96d425d200796577c4d9eef79cc1e0e62a39dc Mon Sep 17 00:00:00 2001 +From d838915f88ce43b34f41387829b86b7c0c982a44 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Tue, 21 Sep 2021 20:53:59 +0200 Subject: [PATCH 036/N] sysconfig: mingw sysconfig like posix @@ -58,5 +58,5 @@ index f69d0db..64f7719 100644 # -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0037-build-_winapi-earlier-so-we-can-use-it-in-distutils-.patch b/mingw-w64-python/0037-build-_winapi-earlier-so-we-can-use-it-in-distutils-.patch index 4552490385..e17e0208ed 100644 --- a/mingw-w64-python/0037-build-_winapi-earlier-so-we-can-use-it-in-distutils-.patch +++ b/mingw-w64-python/0037-build-_winapi-earlier-so-we-can-use-it-in-distutils-.patch @@ -1,4 +1,4 @@ -From fa3d5a352904467d12247164a7673033c5e95d2a Mon Sep 17 00:00:00 2001 +From 57a08f6618707d6eec15884e12905a035edbd39a Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Tue, 21 Sep 2021 21:13:57 +0200 Subject: [PATCH 037/N] build _winapi earlier so we can use it in distutils @@ -20,10 +20,10 @@ index 825ce5d..b4e7ff7 100644 +@USE_WIN32_MODULE@_winapi _winapi.c diff --git a/setup.py b/setup.py -index c52fd3b..6a352af 100644 +index d6b0856..27f7bb2 100644 --- a/setup.py +++ b/setup.py -@@ -1612,7 +1612,9 @@ class PyBuildExt(build_ext): +@@ -1615,7 +1615,9 @@ class PyBuildExt(build_ext): self.add(Extension('msvcrt', [os.path.join(pc_srcdir, p) for p in ['msvcrtmodule.c']])) @@ -35,5 +35,5 @@ index c52fd3b..6a352af 100644 self.add(Extension('_msi', [os.path.join(pc_srcdir, p) for p in ['_msi.c']], -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0038-cross-dont-add-multiarch-paths-if-cross-compiling.patch b/mingw-w64-python/0038-cross-dont-add-multiarch-paths-if-cross-compiling.patch index 3346aa8c26..2f8ecac498 100644 --- a/mingw-w64-python/0038-cross-dont-add-multiarch-paths-if-cross-compiling.patch +++ b/mingw-w64-python/0038-cross-dont-add-multiarch-paths-if-cross-compiling.patch @@ -1,4 +1,4 @@ -From 64886b38c5ad2d78730ed147ba398693731a8e89 Mon Sep 17 00:00:00 2001 +From 94bc3a2e5f1ff3b339127ba2d6f9df68c37b1eb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:52 +0530 @@ -13,10 +13,10 @@ Co-authored-by: Алексей 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py -index 6a352af..497abbf 100644 +index 27f7bb2..5164bf7 100644 --- a/setup.py +++ b/setup.py -@@ -737,10 +737,10 @@ class PyBuildExt(build_ext): +@@ -740,10 +740,10 @@ class PyBuildExt(build_ext): if not CROSS_COMPILING: add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib') add_dir_to_list(self.compiler.include_dirs, '/usr/local/include') @@ -29,5 +29,5 @@ index 6a352af..497abbf 100644 def init_inc_lib_dirs(self): -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0039-mingw-use-backslashes-in-compileall-py.patch b/mingw-w64-python/0039-mingw-use-backslashes-in-compileall-py.patch index ad1793e88a..5989ff5e2e 100644 --- a/mingw-w64-python/0039-mingw-use-backslashes-in-compileall-py.patch +++ b/mingw-w64-python/0039-mingw-use-backslashes-in-compileall-py.patch @@ -1,4 +1,4 @@ -From 47c94ca56a6ebe7423ed267a69d1b9931893da3b Mon Sep 17 00:00:00 2001 +From dacfd8590ddca1e85a5b8da81fe5074c7fcea5b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:53 +0530 @@ -13,7 +13,7 @@ Co-authored-by: Алексей 1 file changed, 2 insertions(+) diff --git a/Lib/compileall.py b/Lib/compileall.py -index 39f4bb3..3490c09 100644 +index 25ad83c..f57879e 100644 --- a/Lib/compileall.py +++ b/Lib/compileall.py @@ -38,6 +38,8 @@ def _walk_dir(dir, maxlevels, quiet=0): @@ -26,5 +26,5 @@ index 39f4bb3..3490c09 100644 yield fullname elif (maxlevels > 0 and name != os.curdir and name != os.pardir and -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0040-msys-convert_path-fix-and-root-hack.patch b/mingw-w64-python/0040-msys-convert_path-fix-and-root-hack.patch index 294fea7aeb..1f7943cc2a 100644 --- a/mingw-w64-python/0040-msys-convert_path-fix-and-root-hack.patch +++ b/mingw-w64-python/0040-msys-convert_path-fix-and-root-hack.patch @@ -1,4 +1,4 @@ -From 22fc2593de88d46a11786898d401e4801faeb125 Mon Sep 17 00:00:00 2001 +From 8a92dacab78e822097ba9064a104c81ac1baec29 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Tue, 21 Sep 2021 21:18:36 +0200 Subject: [PATCH 040/N] msys convert_path fix and root hack @@ -8,10 +8,10 @@ Subject: [PATCH 040/N] msys convert_path fix and root hack 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Makefile.pre.in b/Makefile.pre.in -index e0b8155..cf16e93 100644 +index 3d42756..d00acbd 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in -@@ -1707,6 +1707,12 @@ libainstall: @DEF_MAKE_RULE@ python-config +@@ -1706,6 +1706,12 @@ libainstall: @DEF_MAKE_RULE@ python-config else true; \ fi @@ -24,7 +24,7 @@ index e0b8155..cf16e93 100644 # Install the dynamically loadable modules # This goes into $(exec_prefix) sharedinstall: sharedmods -@@ -1714,9 +1720,9 @@ sharedinstall: sharedmods +@@ -1713,9 +1719,9 @@ sharedinstall: sharedmods --prefix=$(prefix) \ --install-scripts=$(BINDIR) \ --install-platlib=$(DESTSHARED) \ @@ -38,5 +38,5 @@ index e0b8155..cf16e93 100644 # Here are a couple of targets for MacOSX again, to install a full # framework-based Python. frameworkinstall installs everything, the -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0041-allow-static-tcltk.patch b/mingw-w64-python/0041-allow-static-tcltk.patch index 34c237cf5b..12f26715e6 100644 --- a/mingw-w64-python/0041-allow-static-tcltk.patch +++ b/mingw-w64-python/0041-allow-static-tcltk.patch @@ -1,4 +1,4 @@ -From 096b2ca2e049158126943fbd39eb969d2e040262 Mon Sep 17 00:00:00 2001 +From 31ffe9b84ec3c7b5a09f637ca94441d501bab380 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:54 +0530 @@ -13,10 +13,10 @@ Co-authored-by: Алексей 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/setup.py b/setup.py -index 497abbf..31b08de 100644 +index 5164bf7..f761245 100644 --- a/setup.py +++ b/setup.py -@@ -786,7 +786,7 @@ class PyBuildExt(build_ext): +@@ -789,7 +789,7 @@ class PyBuildExt(build_ext): if HOST_PLATFORM == 'hp-ux11': self.lib_dirs += ['/usr/lib/hpux64', '/usr/lib/hpux32'] @@ -25,7 +25,7 @@ index 497abbf..31b08de 100644 # This should work on any unixy platform ;-) # If the user has bothered specifying additional -I and -L flags # in OPT and LDFLAGS we might as well use them here. -@@ -796,6 +796,8 @@ class PyBuildExt(build_ext): +@@ -799,6 +799,8 @@ class PyBuildExt(build_ext): # directories with whitespace in the name to store libraries. cflags, ldflags = sysconfig.get_config_vars( 'CFLAGS', 'LDFLAGS') @@ -34,7 +34,7 @@ index 497abbf..31b08de 100644 for item in cflags.split(): if item.startswith('-I'): self.inc_dirs.append(item[2:]) -@@ -2047,14 +2049,19 @@ class PyBuildExt(build_ext): +@@ -2049,14 +2051,19 @@ class PyBuildExt(build_ext): # The versions with dots are used on Unix, and the versions without # dots on Windows, for detection by cygwin. tcllib = tklib = tcl_includes = tk_includes = None @@ -62,7 +62,7 @@ index 497abbf..31b08de 100644 break # Now check for the header files -@@ -2125,10 +2132,18 @@ class PyBuildExt(build_ext): +@@ -2127,10 +2134,18 @@ class PyBuildExt(build_ext): # Add the Tcl/Tk libraries libs.append('tk'+ version) libs.append('tcl'+ version) @@ -83,5 +83,5 @@ index 497abbf..31b08de 100644 # XXX handle these, but how to detect? # *** Uncomment and edit for PIL (TkImaging) extension only: -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0042-mingw-pdcurses_ISPAD.patch b/mingw-w64-python/0042-mingw-pdcurses_ISPAD.patch index 55651c47fb..c30851144b 100644 --- a/mingw-w64-python/0042-mingw-pdcurses_ISPAD.patch +++ b/mingw-w64-python/0042-mingw-pdcurses_ISPAD.patch @@ -1,4 +1,4 @@ -From 2b8402c1cab75d631728eb1aecf02eb0f0f66265 Mon Sep 17 00:00:00 2001 +From 6c38cd961b5f26566fcda0149a0b5f56314891ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:55 +0530 @@ -31,5 +31,5 @@ index b70252d..0d5cee2 100644 /* configure was checking , but we will use , which has some or all these features. */ -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0043-grammar-fixes.patch b/mingw-w64-python/0043-grammar-fixes.patch index 46962a0df5..398e290fb7 100644 --- a/mingw-w64-python/0043-grammar-fixes.patch +++ b/mingw-w64-python/0043-grammar-fixes.patch @@ -1,4 +1,4 @@ -From 36b85a28791eb087338e12f796e8d473d22f3ace Mon Sep 17 00:00:00 2001 +From 7161562c97559e655f41eb22c64cbcde2b964c3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:56 +0530 @@ -41,5 +41,5 @@ index b7aa528..4a1ee9a 100644 {2, 1}, {3, 2}, -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0044-builddir-fixes.patch b/mingw-w64-python/0044-builddir-fixes.patch index 2a133ead0e..b7c65cbb9c 100644 --- a/mingw-w64-python/0044-builddir-fixes.patch +++ b/mingw-w64-python/0044-builddir-fixes.patch @@ -1,4 +1,4 @@ -From e835e97afda8c4c672defae902194866fc3df0a4 Mon Sep 17 00:00:00 2001 +From 9aaf5d454559ff3ae731a84bcda8c6e2fd1f5161 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:57 +0530 @@ -15,10 +15,10 @@ Co-authored-by: Christoph Reiter 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Makefile.pre.in b/Makefile.pre.in -index cf16e93..7b3fdf6 100644 +index d00acbd..1895e74 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in -@@ -741,20 +741,20 @@ Programs/_testembed: Programs/_testembed.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY) +@@ -740,20 +740,20 @@ Programs/_testembed: Programs/_testembed.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY) Programs/_freeze_importlib.o: Programs/_freeze_importlib.c Makefile @@ -43,7 +43,7 @@ index cf16e93..7b3fdf6 100644 $(srcdir)/Lib/importlib/_bootstrap.py \ $(srcdir)/Python/importlib.h.new $(UPDATE_FILE) $(srcdir)/Python/importlib.h $(srcdir)/Python/importlib.h.new -@@ -1882,7 +1882,7 @@ clean-retain-profile: pycremoval +@@ -1881,7 +1881,7 @@ clean-retain-profile: pycremoval find build -name '*.py[co]' -exec rm -f {} ';' || true -rm -f pybuilddir.txt -rm -f Lib/lib2to3/*Grammar*.pickle @@ -66,5 +66,5 @@ index 2e4ccbb..a8d5c31 100644 from frozen.obj. In the Makefile, frozen.o is not linked into this executable, so we define the variable here. */ -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0045-msys-monkeypatch-os-system-via-sh-exe.patch b/mingw-w64-python/0045-msys-monkeypatch-os-system-via-sh-exe.patch index 2955b8a96a..d1f394093e 100644 --- a/mingw-w64-python/0045-msys-monkeypatch-os-system-via-sh-exe.patch +++ b/mingw-w64-python/0045-msys-monkeypatch-os-system-via-sh-exe.patch @@ -1,4 +1,4 @@ -From 74ee0fa7cbd23e29f60d03606ee32b34bc0dbc6c Mon Sep 17 00:00:00 2001 +From dd99397c2c183cc1ba25ca094458be36cedcef20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:57 +0530 @@ -13,7 +13,7 @@ Co-authored-by: Алексей 1 file changed, 11 insertions(+) diff --git a/setup.py b/setup.py -index 31b08de..207a61c 100644 +index f761245..8454b28 100644 --- a/setup.py +++ b/setup.py @@ -58,6 +58,17 @@ def get_platform(): @@ -35,5 +35,5 @@ index 31b08de..207a61c 100644 HOST_PLATFORM = get_platform() MS_WINDOWS = (HOST_PLATFORM == 'win32') -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0046-msys-replace-slashes-used-in-io-redirection.patch b/mingw-w64-python/0046-msys-replace-slashes-used-in-io-redirection.patch index cc3fc0b3c4..8dd35fbea7 100644 --- a/mingw-w64-python/0046-msys-replace-slashes-used-in-io-redirection.patch +++ b/mingw-w64-python/0046-msys-replace-slashes-used-in-io-redirection.patch @@ -1,4 +1,4 @@ -From a85ea70acca8b8d49c5dea8451ec512ea979d88d Mon Sep 17 00:00:00 2001 +From 6ddd49f455c6312999c2ddc4340e44b59f892915 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:58 +0530 @@ -14,19 +14,19 @@ Co-authored-by: Christoph Reiter 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/setup.py b/setup.py -index 207a61c..d7a60e0 100644 +index 8454b28..d4778b0 100644 --- a/setup.py +++ b/setup.py -@@ -646,7 +646,7 @@ class PyBuildExt(build_ext): +@@ -650,7 +650,7 @@ class PyBuildExt(build_ext): + def add_multiarch_paths(self): # Debian/Ubuntu multiarch support. # https://wiki.ubuntu.com/MultiarchSpec - cc = sysconfig.get_config_var('CC') - tmpfile = os.path.join(self.build_temp, 'multiarch') + tmpfile = os.path.join(self.build_temp, 'multiarch').replace('\\','/') if not os.path.exists(self.build_temp): os.makedirs(self.build_temp) ret = run_command( -@@ -671,7 +671,7 @@ class PyBuildExt(build_ext): +@@ -675,7 +675,7 @@ class PyBuildExt(build_ext): opt = '' if CROSS_COMPILING: opt = '-t' + sysconfig.get_config_var('HOST_GNU_TYPE') @@ -35,16 +35,16 @@ index 207a61c..d7a60e0 100644 if not os.path.exists(self.build_temp): os.makedirs(self.build_temp) ret = run_command( -@@ -690,7 +690,7 @@ class PyBuildExt(build_ext): +@@ -693,7 +693,7 @@ class PyBuildExt(build_ext): + os.unlink(tmpfile) def add_cross_compiling_paths(self): - cc = sysconfig.get_config_var('CC') - tmpfile = os.path.join(self.build_temp, 'ccpaths') + tmpfile = os.path.join(self.build_temp, 'ccpaths').replace('\\','/') if not os.path.exists(self.build_temp): os.makedirs(self.build_temp) - ret = run_command('%s -E -v - %s 1>/dev/null' % (cc, tmpfile)) -@@ -1004,7 +1004,7 @@ class PyBuildExt(build_ext): + ret = run_command('%s -E -v - %s 1>/dev/null' % (CC, tmpfile)) +@@ -1007,7 +1007,7 @@ class PyBuildExt(build_ext): readline_termcap_library = "" curses_library = "" # Cannot use os.popen here in py3k. @@ -53,7 +53,7 @@ index 207a61c..d7a60e0 100644 if not os.path.exists(self.build_temp): os.makedirs(self.build_temp) # Determine if readline is already linked against curses or tinfo. -@@ -2003,12 +2003,12 @@ class PyBuildExt(build_ext): +@@ -2005,12 +2005,12 @@ class PyBuildExt(build_ext): cflags = sysconfig.get_config_vars('CFLAGS')[0] archs = re.findall(r'-arch\s+(\w+)', cflags) @@ -69,5 +69,5 @@ index 207a61c..d7a60e0 100644 with open(tmpfile) as fp: detected_archs = [] -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0047-remove_path_max.default.patch b/mingw-w64-python/0047-remove_path_max.default.patch index 48a1952e09..38ddaeaf99 100644 --- a/mingw-w64-python/0047-remove_path_max.default.patch +++ b/mingw-w64-python/0047-remove_path_max.default.patch @@ -1,4 +1,4 @@ -From 01d2127df3190c472307aff3aaa71ab65e2450e4 Mon Sep 17 00:00:00 2001 +From 208a623ac4e8cb7b3aee59425146ffb365fd4db6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:59 +0530 @@ -25,5 +25,5 @@ index 3243944..99d4977 100644 #endif -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0048-dont-link-with-gettext.patch b/mingw-w64-python/0048-dont-link-with-gettext.patch index 03ce7b473f..74d37cd44e 100644 --- a/mingw-w64-python/0048-dont-link-with-gettext.patch +++ b/mingw-w64-python/0048-dont-link-with-gettext.patch @@ -1,4 +1,4 @@ -From 9b3cfc647bdeedc9caa6d89cdbcb4dfcdb3490f8 Mon Sep 17 00:00:00 2001 +From eee9aaf856e742f7cac350f3d6a2c0a50d84ee72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:52:00 +0530 @@ -32,10 +32,10 @@ index 2e353bb..ea222af 100644 #include #include diff --git a/configure.ac b/configure.ac -index a9640e9..0e1e9e4 100644 +index a7d664c..7589b6a 100644 --- a/configure.ac +++ b/configure.ac -@@ -3154,10 +3154,19 @@ AC_SEARCH_LIBS(sem_init, pthread rt posix4) +@@ -3166,10 +3166,19 @@ AC_SEARCH_LIBS(sem_init, pthread rt posix4) fi # check if we need libintl for locale functions @@ -56,5 +56,5 @@ index a9640e9..0e1e9e4 100644 # checks for system dependent C++ extensions support case "$ac_sys_system" in -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0049-ctypes-python-dll.patch b/mingw-w64-python/0049-ctypes-python-dll.patch index 1ca5bc162a..62bf061fce 100644 --- a/mingw-w64-python/0049-ctypes-python-dll.patch +++ b/mingw-w64-python/0049-ctypes-python-dll.patch @@ -1,4 +1,4 @@ -From 2a0f9b8311884449312bb934557f43a93a7ab426 Mon Sep 17 00:00:00 2001 +From b8b76d0c3fbc1c7e2bba5f96b74004b01ab80e28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:52:01 +0530 @@ -29,5 +29,5 @@ index 4afa4eb..2fe2eec 100644 elif _sys.platform == "cygwin": pythonapi = PyDLL("libpython%d.%d.dll" % _sys.version_info[:2]) -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0050-gdbm-module-includes.patch b/mingw-w64-python/0050-gdbm-module-includes.patch index dd168db53c..fb902479e6 100644 --- a/mingw-w64-python/0050-gdbm-module-includes.patch +++ b/mingw-w64-python/0050-gdbm-module-includes.patch @@ -1,4 +1,4 @@ -From 34ca4e0b61ce539fee85e283e71d147d4035ae72 Mon Sep 17 00:00:00 2001 +From 149095ab008febab268fb6c856993a83ccd08eb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:52:02 +0530 @@ -13,7 +13,7 @@ Co-authored-by: Алексей 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/_gdbmmodule.c b/Modules/_gdbmmodule.c -index dd4c6b1..d51015c 100644 +index 16b0f79..46b28b2 100644 --- a/Modules/_gdbmmodule.c +++ b/Modules/_gdbmmodule.c @@ -11,7 +11,7 @@ @@ -26,5 +26,5 @@ index dd4c6b1..d51015c 100644 extern const char * gdbm_strerror(gdbm_error); #endif -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0051-use-gnu_printf-in-format.patch b/mingw-w64-python/0051-use-gnu_printf-in-format.patch index 5b9554255c..a4ee1d044c 100644 --- a/mingw-w64-python/0051-use-gnu_printf-in-format.patch +++ b/mingw-w64-python/0051-use-gnu_printf-in-format.patch @@ -1,4 +1,4 @@ -From c25ea3b8769fa270074f16ead5f119260219d127 Mon Sep 17 00:00:00 2001 +From 0f1bebcc7b043d9273ac3870531a59fd8859326d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:52:03 +0530 @@ -81,5 +81,5 @@ index 670e5d2..d582963 100644 PyAPI_FUNC(void) PySys_FormatStderr(const char *format, ...); -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0052-mingw-fix-ssl-dont-use-enum_certificates.patch b/mingw-w64-python/0052-mingw-fix-ssl-dont-use-enum_certificates.patch index 795e7938b9..af4ebd41e0 100644 --- a/mingw-w64-python/0052-mingw-fix-ssl-dont-use-enum_certificates.patch +++ b/mingw-w64-python/0052-mingw-fix-ssl-dont-use-enum_certificates.patch @@ -1,4 +1,4 @@ -From f5d305af4ee0826f1dcafe85fc7493657e667cb0 Mon Sep 17 00:00:00 2001 +From b29e861982970d42e382108b4b16c8cf25d32285 Mon Sep 17 00:00:00 2001 From: Ray Donnelly Date: Thu, 17 Jun 2021 18:52:03 +0530 Subject: [PATCH 052/N] mingw fix ssl dont use enum_certificates @@ -35,5 +35,5 @@ index 30f4e59..dda3ae1 100644 self._load_windows_store_certs(storename, purpose) self.set_default_verify_paths() -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0053-fix-using-dllhandle-and-winver-mingw.patch b/mingw-w64-python/0053-fix-using-dllhandle-and-winver-mingw.patch index 1cfab1e3a4..a9a1d2cf54 100644 --- a/mingw-w64-python/0053-fix-using-dllhandle-and-winver-mingw.patch +++ b/mingw-w64-python/0053-fix-using-dllhandle-and-winver-mingw.patch @@ -1,4 +1,4 @@ -From 70aae126fda0fca2f004edd82894c13f0b279b00 Mon Sep 17 00:00:00 2001 +From cb37925d62b9d617d83cc6cba9480964c10103b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:52:06 +0530 @@ -13,7 +13,7 @@ Co-authored-by: Алексей 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Python/sysmodule.c b/Python/sysmodule.c -index 3e4115f..839ed1c 100644 +index a52b299..e890979 100644 --- a/Python/sysmodule.c +++ b/Python/sysmodule.c @@ -36,7 +36,7 @@ Data members: @@ -25,7 +25,7 @@ index 3e4115f..839ed1c 100644 extern void *PyWin_DLLhModule; /* A string loaded from the DLL at startup: */ extern const char *PyWin_DLLVersionString; -@@ -2731,7 +2731,7 @@ _PySys_InitCore(PyThreadState *tstate, PyObject *sysdict) +@@ -2729,7 +2729,7 @@ _PySys_InitCore(PyThreadState *tstate, PyObject *sysdict) PyUnicode_FromString("little")); #endif @@ -35,5 +35,5 @@ index 3e4115f..839ed1c 100644 PyLong_FromVoidPtr(PyWin_DLLhModule)); SET_SYS_FROM_STRING("winver", -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0054-Add-AMD64-to-sys-config-so-msvccompiler-get_build_ve.patch b/mingw-w64-python/0054-Add-AMD64-to-sys-config-so-msvccompiler-get_build_ve.patch index c054d6bc23..42179e9368 100644 --- a/mingw-w64-python/0054-Add-AMD64-to-sys-config-so-msvccompiler-get_build_ve.patch +++ b/mingw-w64-python/0054-Add-AMD64-to-sys-config-so-msvccompiler-get_build_ve.patch @@ -1,4 +1,4 @@ -From 887b0e7895143809d0c8170caa3a4dd2306efefd Mon Sep 17 00:00:00 2001 +From 3dbbdd2957d1209d531468bdeb6846ea769d5a14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:52:07 +0530 @@ -38,5 +38,5 @@ index 59c0dbf..adccaa7 100644 #elif defined(__cplusplus) #define COMPILER "[C++]" -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0055-MINGW-link-with-additional-library.patch b/mingw-w64-python/0055-MINGW-link-with-additional-library.patch index 8663d539d6..af5f858096 100644 --- a/mingw-w64-python/0055-MINGW-link-with-additional-library.patch +++ b/mingw-w64-python/0055-MINGW-link-with-additional-library.patch @@ -1,4 +1,4 @@ -From 1d8904ee69999ae9e58bec2b177472e67493628a Mon Sep 17 00:00:00 2001 +From 19a6447da32b6e49268e27485804087170ab21fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:52:08 +0530 @@ -9,10 +9,10 @@ Subject: [PATCH 055/N] MINGW link with additional library 1 file changed, 9 insertions(+) diff --git a/configure.ac b/configure.ac -index 0e1e9e4..4316338 100644 +index 7589b6a..d97844f 100644 --- a/configure.ac +++ b/configure.ac -@@ -5861,6 +5861,15 @@ for dir in $SRCDIRS; do +@@ -5873,6 +5873,15 @@ for dir in $SRCDIRS; do done AC_MSG_RESULT(done) @@ -29,5 +29,5 @@ index 0e1e9e4..4316338 100644 AC_MSG_CHECKING(for -O2) saved_cflags="$CFLAGS" -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0056-install-msilib.patch b/mingw-w64-python/0056-install-msilib.patch index 28e1bc731e..711ce0a4a7 100644 --- a/mingw-w64-python/0056-install-msilib.patch +++ b/mingw-w64-python/0056-install-msilib.patch @@ -1,4 +1,4 @@ -From 63cdce7b086866930e5d34b1ade187dc0f92309d Mon Sep 17 00:00:00 2001 +From eeee8f68e2eb0c50e61df4a7a3d9738a65faccc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sa=C3=BAl=20Ibarra=20Corretg=C3=A9?= Date: Thu, 17 Jun 2021 18:52:09 +0530 Subject: [PATCH 056/N] install msilib @@ -14,10 +14,10 @@ Co-authored-by: Ray Donnelly 1 file changed, 1 insertion(+) diff --git a/Makefile.pre.in b/Makefile.pre.in -index 7b3fdf6..87e95ec 100644 +index 1895e74..1d2e16e 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in -@@ -1497,6 +1497,7 @@ LIBSUBDIRS= tkinter tkinter/test tkinter/test/test_tkinter \ +@@ -1496,6 +1496,7 @@ LIBSUBDIRS= tkinter tkinter/test tkinter/test/test_tkinter \ test/test_peg_generator \ test/test_tools test/test_warnings test/test_warnings/data \ turtledemo \ @@ -26,5 +26,5 @@ index 7b3fdf6..87e95ec 100644 unittest unittest/test unittest/test/testmock \ venv venv/scripts venv/scripts/common venv/scripts/posix \ -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0057-fix-signal-module-build.patch b/mingw-w64-python/0057-fix-signal-module-build.patch index 84791f772a..d872caa3b0 100644 --- a/mingw-w64-python/0057-fix-signal-module-build.patch +++ b/mingw-w64-python/0057-fix-signal-module-build.patch @@ -1,4 +1,4 @@ -From 9aea35d5abfebe9c7db885e7675f29d82a253b3b Mon Sep 17 00:00:00 2001 +From cbea8b321ec418a401189e0b92f54e63e6570be7 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Thu, 17 Jun 2021 18:52:10 +0530 Subject: [PATCH 057/N] fix signal module build @@ -25,5 +25,5 @@ index 2bafdd0..7ce4355 100644 time -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal timemodule.c # -lm # time operations and variables _thread -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal _threadmodule.c # low-level threading interface -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0058-build-build-winconsoleio-and-_testconsole.patch b/mingw-w64-python/0058-build-build-winconsoleio-and-_testconsole.patch index 2f66440ae3..879a632d72 100644 --- a/mingw-w64-python/0058-build-build-winconsoleio-and-_testconsole.patch +++ b/mingw-w64-python/0058-build-build-winconsoleio-and-_testconsole.patch @@ -1,4 +1,4 @@ -From 3ebd25cabfc22fab766e53b0e7b8f60d04073f2f Mon Sep 17 00:00:00 2001 +From e1f2b80e5f06d3486f68af91df064b743ddd41e5 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Thu, 17 Jun 2021 18:52:11 +0530 Subject: [PATCH 058/N] build: build winconsoleio and _testconsole @@ -26,10 +26,10 @@ index 7ce4355..6bb5e51 100644 # faulthandler module faulthandler faulthandler.c diff --git a/setup.py b/setup.py -index d7a60e0..ede0e72 100644 +index d4778b0..6f4730d 100644 --- a/setup.py +++ b/setup.py -@@ -998,6 +998,9 @@ class PyBuildExt(build_ext): +@@ -1001,6 +1001,9 @@ class PyBuildExt(build_ext): ['_xxtestfuzz/_xxtestfuzz.c', '_xxtestfuzz/fuzzer.c'])) @@ -40,5 +40,5 @@ index d7a60e0..ede0e72 100644 # readline do_readline = self.compiler.find_library_file(self.lib_dirs, 'readline') -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0059-expose-sem_unlink.patch b/mingw-w64-python/0059-expose-sem_unlink.patch index d8d0bfc603..c452b2bae4 100644 --- a/mingw-w64-python/0059-expose-sem_unlink.patch +++ b/mingw-w64-python/0059-expose-sem_unlink.patch @@ -1,4 +1,4 @@ -From 9aca6a28934f67df24b2b640c1d8c40623f40afd Mon Sep 17 00:00:00 2001 +From 99ec2bf99c71fc9b81d241ead84c7044624053f2 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Thu, 17 Jun 2021 18:52:12 +0530 Subject: [PATCH 059/N] expose sem_unlink @@ -25,5 +25,5 @@ index 806e638..d7954d1 100644 #endif {NULL} -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0060-cygpty-isatty.patch b/mingw-w64-python/0060-cygpty-isatty.patch index d96ddcd670..db0a4a3f05 100644 --- a/mingw-w64-python/0060-cygpty-isatty.patch +++ b/mingw-w64-python/0060-cygpty-isatty.patch @@ -1,4 +1,4 @@ -From 0255306a4066705227cd3d903290d9550593e295 Mon Sep 17 00:00:00 2001 +From 8a9eeefbd816e25d1e130602e0a5f824d6915b12 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Thu, 17 Jun 2021 18:52:14 +0530 Subject: [PATCH 060/N] cygpty isatty @@ -71,10 +71,10 @@ index 0000000..82fd0af + +#endif /* _ISCYGPTY_H */ diff --git a/Makefile.pre.in b/Makefile.pre.in -index 87e95ec..e351cae 100644 +index 1d2e16e..6d49228 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in -@@ -372,6 +372,7 @@ PYTHON_OBJS= \ +@@ -371,6 +371,7 @@ PYTHON_OBJS= \ Python/import.o \ Python/importdl.o \ Python/initconfig.o \ @@ -82,7 +82,7 @@ index 87e95ec..e351cae 100644 Python/marshal.o \ Python/modsupport.o \ Python/mysnprintf.o \ -@@ -1070,6 +1071,7 @@ PYTHON_HEADERS= \ +@@ -1069,6 +1070,7 @@ PYTHON_HEADERS= \ $(srcdir)/Include/import.h \ $(srcdir)/Include/interpreteridobject.h \ $(srcdir)/Include/intrcheck.h \ @@ -133,7 +133,7 @@ index 2cc891f..17469e3 100644 diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c -index 40fc270..bb1b81d 100644 +index add8ed5..27d198e 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -36,6 +36,7 @@ @@ -144,15 +144,15 @@ index 40fc270..bb1b81d 100644 #include /* needed for ctermid() */ -@@ -10082,7 +10083,7 @@ os_isatty_impl(PyObject *module, int fd) - { +@@ -10091,7 +10092,7 @@ os_isatty_impl(PyObject *module, int fd) int return_value; + Py_BEGIN_ALLOW_THREADS _Py_BEGIN_SUPPRESS_IPH - return_value = isatty(fd); + return_value = isatty(fd) || is_cygpty(fd); _Py_END_SUPPRESS_IPH + Py_END_ALLOW_THREADS return return_value; - } diff --git a/Objects/fileobject.c b/Objects/fileobject.c index 1c6ecaf..afddc4f 100644 --- a/Objects/fileobject.c @@ -205,7 +205,7 @@ index 21c70f9..58d7512 100644 } diff --git a/Python/fileutils.c b/Python/fileutils.c -index 4b299b2..573a5c2 100644 +index 75ee355..e9d15d1 100644 --- a/Python/fileutils.c +++ b/Python/fileutils.c @@ -1,4 +1,5 @@ @@ -214,15 +214,15 @@ index 4b299b2..573a5c2 100644 #include "pycore_fileutils.h" #include "osdefs.h" // SEP #include -@@ -70,7 +71,7 @@ _Py_device_encoding(int fd) - #endif +@@ -71,7 +72,7 @@ _Py_device_encoding(int fd) int valid; + Py_BEGIN_ALLOW_THREADS _Py_BEGIN_SUPPRESS_IPH - valid = isatty(fd); + valid = isatty(fd) || is_cygpty(fd); _Py_END_SUPPRESS_IPH + Py_END_ALLOW_THREADS if (!valid) - Py_RETURN_NONE; diff --git a/Python/frozenmain.c b/Python/frozenmain.c index dd04d60..6607762 100644 --- a/Python/frozenmain.c @@ -457,5 +457,5 @@ index 60f091c..734084c 100644 if (!Py_InteractiveFlag) return 0; -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0061-disable-broken-gdbm-module.patch b/mingw-w64-python/0061-disable-broken-gdbm-module.patch index 69865a695e..f179acdcac 100644 --- a/mingw-w64-python/0061-disable-broken-gdbm-module.patch +++ b/mingw-w64-python/0061-disable-broken-gdbm-module.patch @@ -1,4 +1,4 @@ -From 391cfafdf3cd9cc56516cd6d3d8d37bf68ef870c Mon Sep 17 00:00:00 2001 +From 20e6ae1657b35dd58fec49ebd93c8388b6f2756d Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Thu, 17 Jun 2021 18:52:15 +0530 Subject: [PATCH 061/N] disable broken gdbm module @@ -12,10 +12,10 @@ Co-authored-by: Алексей 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py -index ede0e72..74b844c 100644 +index 6f4730d..4d8dc48 100644 --- a/setup.py +++ b/setup.py -@@ -1405,7 +1405,7 @@ class PyBuildExt(build_ext): +@@ -1408,7 +1408,7 @@ class PyBuildExt(build_ext): if dbm_args: dbm_order = [arg.split('=')[-1] for arg in dbm_args][-1].split(":") else: @@ -25,5 +25,5 @@ index ede0e72..74b844c 100644 for cand in dbm_order: if cand == "ndbm": -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0062-build-link-win-resource-files-and-build-pythonw.patch b/mingw-w64-python/0062-build-link-win-resource-files-and-build-pythonw.patch index f24555e70d..e1cb567ad5 100644 --- a/mingw-w64-python/0062-build-link-win-resource-files-and-build-pythonw.patch +++ b/mingw-w64-python/0062-build-link-win-resource-files-and-build-pythonw.patch @@ -1,4 +1,4 @@ -From 17ac3e7063af45b116396303f85be4eb95f0e9d9 Mon Sep 17 00:00:00 2001 +From b7299adb0b8100942f45e9eb9a0e5ef951ef998d Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Thu, 17 Jun 2021 18:52:16 +0530 Subject: [PATCH 062/N] build: link win resource files and build pythonw @@ -13,7 +13,7 @@ Co-authored-by: Алексей 2 files changed, 47 insertions(+), 5 deletions(-) diff --git a/Makefile.pre.in b/Makefile.pre.in -index e351cae..afeee0e 100644 +index 6d49228..fd3d142 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -38,6 +38,7 @@ CXX= @CXX@ @@ -24,7 +24,7 @@ index e351cae..afeee0e 100644 READELF= @READELF@ SOABI= @SOABI@ LDVERSION= @LDVERSION@ -@@ -119,6 +120,7 @@ PY_CORE_CFLAGS= $(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE +@@ -118,6 +119,7 @@ PY_CORE_CFLAGS= $(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE PY_CORE_LDFLAGS=$(PY_LDFLAGS) $(PY_LDFLAGS_NODIST) # Strict or non-strict aliasing flags used to compile dtoa.c, see above CFLAGS_ALIASING=@CFLAGS_ALIASING@ @@ -32,7 +32,7 @@ index e351cae..afeee0e 100644 # Machine-dependent subdirectories -@@ -260,6 +262,7 @@ LIBOBJS= @LIBOBJS@ +@@ -259,6 +261,7 @@ LIBOBJS= @LIBOBJS@ PYTHON= python$(EXE) BUILDPYTHON= python$(BUILDEXE) @@ -40,7 +40,7 @@ index e351cae..afeee0e 100644 PYTHON_FOR_REGEN?=@PYTHON_FOR_REGEN@ UPDATE_FILE=@PYTHON_FOR_REGEN@ $(srcdir)/Tools/scripts/update_file.py -@@ -482,7 +485,7 @@ DTRACE_DEPS = \ +@@ -481,7 +484,7 @@ DTRACE_DEPS = \ # Default target all: @DEF_MAKE_ALL_RULE@ @@ -49,7 +49,7 @@ index e351cae..afeee0e 100644 Programs/_testembed python-config # Check that the source is clean when building out of source. -@@ -596,9 +599,21 @@ coverage-report: regen-grammar regen-token regen-importlib +@@ -595,9 +598,21 @@ coverage-report: regen-grammar regen-token regen-importlib clinic: check-clean-src $(srcdir)/Modules/_blake2/blake2s_impl.c $(PYTHON_FOR_REGEN) $(srcdir)/Tools/clinic/clinic.py --make --srcdir $(srcdir) @@ -73,7 +73,7 @@ index e351cae..afeee0e 100644 platform: $(BUILDPYTHON) pybuilddir.txt $(RUNSHARED) $(PYTHON_FOR_BUILD) -c 'import sys ; from sysconfig import get_platform ; print("%s-%d.%d" % (get_platform(), *sys.version_info[:2]))' >platform -@@ -708,10 +723,10 @@ $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK): \ +@@ -707,10 +722,10 @@ $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK): \ # This rule builds the Cygwin Python DLL and import library if configured # for a shared core library; otherwise, this rule is a noop. @@ -86,7 +86,7 @@ index e351cae..afeee0e 100644 else true; \ fi -@@ -1325,6 +1340,7 @@ altbininstall: $(BUILDPYTHON) @FRAMEWORKPYTHONW@ +@@ -1324,6 +1339,7 @@ altbininstall: $(BUILDPYTHON) @FRAMEWORKPYTHONW@ done if test "$(PYTHONFRAMEWORKDIR)" = "no-framework" ; then \ $(INSTALL_PROGRAM) $(BUILDPYTHON) $(DESTDIR)$(BINDIR)/python$(LDVERSION)$(EXE); \ @@ -95,10 +95,10 @@ index e351cae..afeee0e 100644 $(INSTALL_PROGRAM) $(STRIPFLAG) Mac/pythonw $(DESTDIR)$(BINDIR)/python$(LDVERSION)$(EXE); \ fi diff --git a/configure.ac b/configure.ac -index 4316338..be8ede9 100644 +index d97844f..9eed603 100644 --- a/configure.ac +++ b/configure.ac -@@ -1343,6 +1343,9 @@ fi +@@ -1350,6 +1350,9 @@ fi AC_MSG_RESULT($LDLIBRARY) @@ -108,7 +108,7 @@ index 4316338..be8ede9 100644 AC_SUBST(AR) AC_CHECK_TOOLS(AR, ar aal, ar) -@@ -5865,10 +5868,33 @@ AC_MSG_RESULT(done) +@@ -5877,10 +5880,33 @@ AC_MSG_RESULT(done) case $host in *-*-mingw*) LIBS="$LIBS -lversion -lshlwapi -lpathcch" @@ -143,5 +143,5 @@ index 4316338..be8ede9 100644 # Availability of -O2: AC_MSG_CHECKING(for -O2) -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0063-3.7-mpdec-mingw.patch b/mingw-w64-python/0063-3.7-mpdec-mingw.patch index d9dd567c68..41c275ab1b 100644 --- a/mingw-w64-python/0063-3.7-mpdec-mingw.patch +++ b/mingw-w64-python/0063-3.7-mpdec-mingw.patch @@ -1,4 +1,4 @@ -From a15d5dafd3604b7f6ddb3fa99dd26ec0757024a9 Mon Sep 17 00:00:00 2001 +From 497e7da62c91dae5885c2c008bbf4c0cf2674484 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:52:17 +0530 @@ -9,10 +9,10 @@ Subject: [PATCH 063/N] 3.7 mpdec mingw 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py -index 74b844c..a4222fc 100644 +index 4d8dc48..d376299 100644 --- a/setup.py +++ b/setup.py -@@ -2291,7 +2291,7 @@ class PyBuildExt(build_ext): +@@ -2293,7 +2293,7 @@ class PyBuildExt(build_ext): undef_macros = [] if '--with-system-libmpdec' in sysconfig.get_config_var("CONFIG_ARGS"): include_dirs = [] @@ -22,5 +22,5 @@ index 74b844c..a4222fc 100644 depends = ['_decimal/docstrings.h'] else: -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0064-disable-readline.patch b/mingw-w64-python/0064-disable-readline.patch index d753323450..ea021eb7b5 100644 --- a/mingw-w64-python/0064-disable-readline.patch +++ b/mingw-w64-python/0064-disable-readline.patch @@ -1,4 +1,4 @@ -From 7dc48f709c1ac3fd9d05b0f50ce4056bd3bf5268 Mon Sep 17 00:00:00 2001 +From a082473053ab623768a491fbdfe5e8844dbef47c Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Thu, 17 Jun 2021 18:52:17 +0530 Subject: [PATCH 064/N] disable readline @@ -12,10 +12,10 @@ Co-authored-by: Алексей 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py -index a4222fc..a4d206e 100644 +index d376299..1e4f9e5 100644 --- a/setup.py +++ b/setup.py -@@ -1003,7 +1003,10 @@ class PyBuildExt(build_ext): +@@ -1006,7 +1006,10 @@ class PyBuildExt(build_ext): def detect_readline_curses(self): # readline @@ -28,5 +28,5 @@ index a4222fc..a4d206e 100644 curses_library = "" # Cannot use os.popen here in py3k. -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0065-fix-isselectable.patch b/mingw-w64-python/0065-fix-isselectable.patch index 507030059d..6f216b4115 100644 --- a/mingw-w64-python/0065-fix-isselectable.patch +++ b/mingw-w64-python/0065-fix-isselectable.patch @@ -1,4 +1,4 @@ -From 27e5727fb44af8826b8725b2bc6de09e79e1b78f Mon Sep 17 00:00:00 2001 +From d16c515f1b7daf1ec4907bb6553a21d8aa79208f Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Thu, 17 Jun 2021 18:52:18 +0530 Subject: [PATCH 065/N] fix isselectable @@ -25,5 +25,5 @@ index 6ec2994..a80f195 100644 #define _PyIsSelectable_fd(FD) (1) #else -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0066-use-_wcsnicmp-instead-wcsncasecmp.patch b/mingw-w64-python/0066-use-_wcsnicmp-instead-wcsncasecmp.patch index 11ed43b3bd..e98f5858db 100644 --- a/mingw-w64-python/0066-use-_wcsnicmp-instead-wcsncasecmp.patch +++ b/mingw-w64-python/0066-use-_wcsnicmp-instead-wcsncasecmp.patch @@ -1,4 +1,4 @@ -From c217628934d0d7a1b440eae998a7813702e320c2 Mon Sep 17 00:00:00 2001 +From 4ae7b41506418a80dc2207db09dcde0dee95dd25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:52:19 +0530 @@ -9,7 +9,7 @@ Subject: [PATCH 066/N] use _wcsnicmp instead wcsncasecmp 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/getpath.c b/Modules/getpath.c -index c52e0df..2018495 100644 +index c782e0f..83422d3 100644 --- a/Modules/getpath.c +++ b/Modules/getpath.c @@ -427,7 +427,7 @@ add_exe_suffix(wchar_t **progpath_p) @@ -22,5 +22,5 @@ index c52e0df..2018495 100644 } -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0067-_xxsubinterpretersmodule.patch b/mingw-w64-python/0067-_xxsubinterpretersmodule.patch index 229a3c24b8..e6565a1d8f 100644 --- a/mingw-w64-python/0067-_xxsubinterpretersmodule.patch +++ b/mingw-w64-python/0067-_xxsubinterpretersmodule.patch @@ -1,4 +1,4 @@ -From c392c6966b0f46197e48dfd89b9361358be823ab Mon Sep 17 00:00:00 2001 +From 6fc673a188ce4b552cf5bdd76271e159fe268667 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:52:20 +0530 @@ -22,5 +22,5 @@ index 314059d..f26e662 100644 sizeof(channelid), /* tp_basicsize */ 0, /* tp_itemsize */ -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0068-sqlite3-module-defines.patch b/mingw-w64-python/0068-sqlite3-module-defines.patch index 47625f12af..34774e1456 100644 --- a/mingw-w64-python/0068-sqlite3-module-defines.patch +++ b/mingw-w64-python/0068-sqlite3-module-defines.patch @@ -1,4 +1,4 @@ -From fdb194111cc3b59ae7193577e9c63d1367a6a6f2 Mon Sep 17 00:00:00 2001 +From 085855f074cd37e9936c57e9d9c8938b3821d325 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Thu, 17 Jun 2021 18:52:21 +0530 Subject: [PATCH 068/N] sqlite3 module defines @@ -8,10 +8,10 @@ Subject: [PATCH 068/N] sqlite3 module defines 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/setup.py b/setup.py -index a4d206e..8458232 100644 +index 1e4f9e5..4433082 100644 --- a/setup.py +++ b/setup.py -@@ -1560,10 +1560,7 @@ class PyBuildExt(build_ext): +@@ -1563,10 +1563,7 @@ class PyBuildExt(build_ext): '_sqlite/util.c', ] sqlite_defines = [] @@ -24,5 +24,5 @@ index a4d206e..8458232 100644 # Enable support for loadable extensions in the sqlite3 module # if --enable-loadable-sqlite-extensions configure option is used. -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0069-configure.ac-fix-inet_pton-check.patch b/mingw-w64-python/0069-configure.ac-fix-inet_pton-check.patch index b7a949598c..d879d15ad4 100644 --- a/mingw-w64-python/0069-configure.ac-fix-inet_pton-check.patch +++ b/mingw-w64-python/0069-configure.ac-fix-inet_pton-check.patch @@ -1,4 +1,4 @@ -From e76cda7b6d05184ac17991dc46a568c42763a94a Mon Sep 17 00:00:00 2001 +From 633a10ccfe845317a554b81eacad8bc047db6006 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Thu, 17 Jun 2021 18:52:23 +0530 Subject: [PATCH 069/N] configure.ac: fix inet_pton check @@ -12,10 +12,10 @@ Co-authored-by: Алексей 1 file changed, 4 insertions(+) diff --git a/configure.ac b/configure.ac -index be8ede9..032d658 100644 +index 9eed603..d4bd1d1 100644 --- a/configure.ac +++ b/configure.ac -@@ -4274,10 +4274,14 @@ AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +@@ -4286,10 +4286,14 @@ AC_LINK_IFELSE([AC_LANG_PROGRAM([[ AC_MSG_CHECKING(for inet_pton) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ @@ -31,5 +31,5 @@ index be8ede9..032d658 100644 [AC_DEFINE(HAVE_INET_PTON, 1, Define if you have the 'inet_pton' function.) AC_MSG_RESULT(yes)], -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0070-set-venv-activate-path-unix.patch b/mingw-w64-python/0070-set-venv-activate-path-unix.patch index 8afc5e2d2a..9b10d01599 100644 --- a/mingw-w64-python/0070-set-venv-activate-path-unix.patch +++ b/mingw-w64-python/0070-set-venv-activate-path-unix.patch @@ -1,4 +1,4 @@ -From 737d758a51b3e1778df4594ffbc671785c5a6425 Mon Sep 17 00:00:00 2001 +From a2adb3b1813a50dd0fe01a41dc285d2161bb795c Mon Sep 17 00:00:00 2001 From: Dan Yeaw Date: Thu, 17 Jun 2021 18:52:25 +0530 Subject: [PATCH 070/N] set venv activate path unix @@ -25,5 +25,5 @@ index 45af353..877b5d3 100644 _OLD_VIRTUAL_PATH="$PATH" -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0071-venv-creation-fixes.patch b/mingw-w64-python/0071-venv-creation-fixes.patch index 2e152f1226..3ac1e5811c 100644 --- a/mingw-w64-python/0071-venv-creation-fixes.patch +++ b/mingw-w64-python/0071-venv-creation-fixes.patch @@ -1,14 +1,14 @@ -From c82449ed5fed227754cfe841e67b7591b8683ed7 Mon Sep 17 00:00:00 2001 +From 69f75280a041d3c896f5349dfb6ce9a4a5436610 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Thu, 17 Jun 2021 18:52:26 +0530 Subject: [PATCH 071/N] venv creation fixes --- - Lib/venv/__init__.py | 19 ++++++++++++++----- - 1 file changed, 14 insertions(+), 5 deletions(-) + Lib/venv/__init__.py | 17 +++++++++++++---- + 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/Lib/venv/__init__.py b/Lib/venv/__init__.py -index 8009deb..b471006 100644 +index 6f1af29..83ba0bc 100644 --- a/Lib/venv/__init__.py +++ b/Lib/venv/__init__.py @@ -11,6 +11,7 @@ import subprocess @@ -28,7 +28,7 @@ index 8009deb..b471006 100644 binname = 'Scripts' incpath = 'Include' libpath = os.path.join(env_dir, 'Lib', 'site-packages') -@@ -252,7 +253,7 @@ class EnvBuilder: +@@ -266,7 +267,7 @@ class EnvBuilder: if not os.path.islink(path): os.chmod(path, 0o755) else: @@ -37,7 +37,7 @@ index 8009deb..b471006 100644 # For symlinking, we need a complete copy of the root directory # If symlinks fail, you'll get unnecessary copies of files, but # we assume that if you've opted into symlinks on Windows then -@@ -275,7 +276,13 @@ class EnvBuilder: +@@ -290,7 +291,13 @@ class EnvBuilder: if os.path.lexists(src): copier(src, os.path.join(binpath, suffix)) @@ -52,20 +52,19 @@ index 8009deb..b471006 100644 # copy init.tcl for root, dirs, files in os.walk(context.python_dir): if 'init.tcl' in files: -@@ -293,9 +300,11 @@ class EnvBuilder: +@@ -308,9 +315,11 @@ class EnvBuilder: # We run ensurepip in isolated mode to avoid side effects from # environment vars, the current directory and anything else # intended for the global Python environment + env = os.environ.copy() + env.pop("MSYSTEM", None) - cmd = [context.env_exe, '-Im', 'ensurepip', '--upgrade', -- '--default-pip'] + cmd = [context.env_exec_cmd, '-Im', 'ensurepip', '--upgrade', + '--default-pip'] - subprocess.check_output(cmd, stderr=subprocess.STDOUT) -+ '--default-pip'] + subprocess.check_call(cmd, stderr=subprocess.STDOUT, env=env) def setup_scripts(self, context): """ -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0072-pass-gen-profile-ldflags.patch b/mingw-w64-python/0072-pass-gen-profile-ldflags.patch index ef6d1f2d22..53f792893b 100644 --- a/mingw-w64-python/0072-pass-gen-profile-ldflags.patch +++ b/mingw-w64-python/0072-pass-gen-profile-ldflags.patch @@ -1,4 +1,4 @@ -From 6e6cac92a946334a81bb08adbc54902d428b2dc5 Mon Sep 17 00:00:00 2001 +From 88ca22ab8f9389cef4f59ba22263521e9e812e4c Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Thu, 17 Jun 2021 18:52:27 +0530 Subject: [PATCH 072/N] pass gen profile ldflags @@ -12,10 +12,10 @@ Co-authored-by: Алексей 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.pre.in b/Makefile.pre.in -index afeee0e..2018514 100644 +index fd3d142..8df163c 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in -@@ -726,7 +726,7 @@ $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK): \ +@@ -725,7 +725,7 @@ $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK): \ $(DLLLIBRARY) libpython$(LDVERSION).dll.a: $(LIBRARY_OBJS) python_nt.o if test -n "$(DLLLIBRARY)"; then \ $(LDSHARED) -Wl,--out-implib=$@ -o $(DLLLIBRARY) $^ \ @@ -25,5 +25,5 @@ index afeee0e..2018514 100644 fi -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0073-pkg-config-windows-must-link-ext-with-python-lib.patch b/mingw-w64-python/0073-pkg-config-windows-must-link-ext-with-python-lib.patch index 436e19c581..8297a300fe 100644 --- a/mingw-w64-python/0073-pkg-config-windows-must-link-ext-with-python-lib.patch +++ b/mingw-w64-python/0073-pkg-config-windows-must-link-ext-with-python-lib.patch @@ -1,4 +1,4 @@ -From 95164a8cedfca44250dd81d98d92cfc8d4c7f0b1 Mon Sep 17 00:00:00 2001 +From 2347d7d4f966ff4eb69c1467934298618139c860 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:52:29 +0530 @@ -21,10 +21,10 @@ index 87e04de..3900190 100644 +Libs: -L${libdir} -lpython@VERSION@@ABIFLAGS@ Cflags: -I${includedir}/python@VERSION@@ABIFLAGS@ diff --git a/configure.ac b/configure.ac -index 032d658..588ffd4 100644 +index d4bd1d1..da43ea0 100644 --- a/configure.ac +++ b/configure.ac -@@ -5150,7 +5150,7 @@ AC_MSG_RESULT($LDVERSION) +@@ -5162,7 +5162,7 @@ AC_MSG_RESULT($LDVERSION) # On Android and Cygwin the shared libraries must be linked with libpython. AC_SUBST(LIBPYTHON) @@ -34,5 +34,5 @@ index 032d658..588ffd4 100644 else LIBPYTHON='' -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0074-importlib-bootstrap-path-sep.patch b/mingw-w64-python/0074-importlib-bootstrap-path-sep.patch index a2d8aba676..ad02d6b0b1 100644 --- a/mingw-w64-python/0074-importlib-bootstrap-path-sep.patch +++ b/mingw-w64-python/0074-importlib-bootstrap-path-sep.patch @@ -1,4 +1,4 @@ -From 3fa40ebd03d9cd5b0ab7341344f5d3c31647680f Mon Sep 17 00:00:00 2001 +From 00845689609c8a686c27a546f42d9885cee1430f Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Thu, 17 Jun 2021 18:52:30 +0530 Subject: [PATCH 074/N] importlib bootstrap path sep @@ -27,5 +27,5 @@ index fe31f43..229d9aa 100644 setattr(self_module, 'path_sep', path_sep) setattr(self_module, 'path_separators', ''.join(path_separators)) -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0075-pathlib-path-sep.patch b/mingw-w64-python/0075-pathlib-path-sep.patch index a3c4e2764b..d40338ed5b 100644 --- a/mingw-w64-python/0075-pathlib-path-sep.patch +++ b/mingw-w64-python/0075-pathlib-path-sep.patch @@ -1,4 +1,4 @@ -From 81189e3707d4f72b57e86e40f065f811d80a97ac Mon Sep 17 00:00:00 2001 +From 9b2ffb2eae17a32f862bebb289faebbc38704ffb Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Thu, 17 Jun 2021 18:52:31 +0530 Subject: [PATCH 075/N] pathlib path sep @@ -21,5 +21,5 @@ index 7aeda14..a66e754 100644 pathmod = ntpath -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0076-warnings-fixes.patch b/mingw-w64-python/0076-warnings-fixes.patch index 195bef94bb..bea6879298 100644 --- a/mingw-w64-python/0076-warnings-fixes.patch +++ b/mingw-w64-python/0076-warnings-fixes.patch @@ -1,4 +1,4 @@ -From 92b8d29b62c51db1359f987b022cae560dc5c3c3 Mon Sep 17 00:00:00 2001 +From 9559d653daabba18d30dd3ef4ed2b1f4b7beeee6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:52:33 +0530 @@ -28,7 +28,7 @@ index 1058184..36af7bc 100644 SIZE_T attribute_list_size = 0; diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c -index bb1b81d..bf19ac8 100644 +index 27d198e..590b459 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -5343,7 +5343,7 @@ os_utime_impl(PyObject *module, path_t *path, PyObject *times, PyObject *ns, @@ -40,7 +40,7 @@ index bb1b81d..bf19ac8 100644 FILETIME atime, mtime; #else int result; -@@ -14360,7 +14360,7 @@ os__add_dll_directory_impl(PyObject *module, path_t *path) +@@ -14370,7 +14370,7 @@ os__add_dll_directory_impl(PyObject *module, path_t *path) loaded. */ Py_BEGIN_ALLOW_THREADS if (!(hKernel32 = GetModuleHandleW(L"kernel32")) || @@ -49,7 +49,7 @@ index bb1b81d..bf19ac8 100644 hKernel32, "AddDllDirectory")) || !(cookie = (*AddDllDirectory)(path->wide))) { err = GetLastError(); -@@ -14410,7 +14410,7 @@ os__remove_dll_directory_impl(PyObject *module, PyObject *cookie) +@@ -14420,7 +14420,7 @@ os__remove_dll_directory_impl(PyObject *module, PyObject *cookie) loaded. */ Py_BEGIN_ALLOW_THREADS if (!(hKernel32 = GetModuleHandleW(L"kernel32")) || @@ -74,11 +74,11 @@ index ba2c9f5..81bad15 100644 # define HAVE_GETNAMEINFO # define ENABLE_IPV6 diff --git a/PC/python_exe.rc b/PC/python_exe.rc -index ae0b029..e667ffa 100644 +index c3d3bff..dde0e53 100644 --- a/PC/python_exe.rc +++ b/PC/python_exe.rc -@@ -7,7 +7,7 @@ - #include +@@ -12,7 +12,7 @@ + // current versions of Windows. 1 RT_MANIFEST "python.manifest" -1 ICON DISCARDABLE "icons\python.ico" @@ -87,11 +87,11 @@ index ae0b029..e667ffa 100644 ///////////////////////////////////////////////////////////////////////////// diff --git a/PC/pythonw_exe.rc b/PC/pythonw_exe.rc -index 88bf359..413d7d1 100644 +index 38570b7..7ce1043 100644 --- a/PC/pythonw_exe.rc +++ b/PC/pythonw_exe.rc -@@ -7,7 +7,7 @@ - #include +@@ -12,7 +12,7 @@ + // current versions of Windows. 1 RT_MANIFEST "python.manifest" -1 ICON DISCARDABLE "icons\pythonw.ico" @@ -127,5 +127,5 @@ index 0ce5e94..6a6fe7e 100644 /* minimum/maximum thread stack sizes supported */ -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0077-fix-build-testinternalcapi.patch b/mingw-w64-python/0077-fix-build-testinternalcapi.patch index d25b42276f..f88e61877c 100644 --- a/mingw-w64-python/0077-fix-build-testinternalcapi.patch +++ b/mingw-w64-python/0077-fix-build-testinternalcapi.patch @@ -1,4 +1,4 @@ -From 08145aec08b12bed92d9010aedcf60cfcc23370b Mon Sep 17 00:00:00 2001 +From 97783515a6ca364e4d9830a2d26a5fc53e565c0d Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Thu, 17 Jun 2021 18:52:34 +0530 Subject: [PATCH 077/N] fix build testinternalcapi @@ -8,10 +8,10 @@ Subject: [PATCH 077/N] fix build testinternalcapi 1 file changed, 4 insertions(+) diff --git a/setup.py b/setup.py -index 8458232..a4e6dc1 100644 +index 4433082..e52eacd 100644 --- a/setup.py +++ b/setup.py -@@ -981,7 +981,11 @@ class PyBuildExt(build_ext): +@@ -984,7 +984,11 @@ class PyBuildExt(build_ext): depends=['testcapi_long.h'])) # Python Internal C API test module @@ -24,5 +24,5 @@ index 8458232..a4e6dc1 100644 # Python PEP-3118 (buffer protocol) test module -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0078-extend-MS_WINDOWS-flag.patch b/mingw-w64-python/0078-extend-MS_WINDOWS-flag.patch index 02a50c78e2..cab5dfaf03 100644 --- a/mingw-w64-python/0078-extend-MS_WINDOWS-flag.patch +++ b/mingw-w64-python/0078-extend-MS_WINDOWS-flag.patch @@ -1,4 +1,4 @@ -From b3cac7696a876238e11f9ea45b32d8b3ef755dc3 Mon Sep 17 00:00:00 2001 +From 708910315fbd4219dd87ff95f11b695fc9c51880 Mon Sep 17 00:00:00 2001 From: Long Nguyen Date: Thu, 17 Jun 2021 18:52:34 +0530 Subject: [PATCH 078/N] extend MS_WINDOWS flag @@ -8,7 +8,7 @@ Subject: [PATCH 078/N] extend MS_WINDOWS flag 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py -index a4e6dc1..d161108 100644 +index e52eacd..71e6ea5 100644 --- a/setup.py +++ b/setup.py @@ -71,7 +71,7 @@ if sys.platform == "win32" and "MSYSTEM" in os.environ: @@ -21,5 +21,5 @@ index a4e6dc1..d161108 100644 MACOS = (HOST_PLATFORM == 'darwin') AIX = (HOST_PLATFORM.startswith('aix')) -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0079-clang-arm64.patch b/mingw-w64-python/0079-clang-arm64.patch index e9c7845b9a..0578ec32ee 100644 --- a/mingw-w64-python/0079-clang-arm64.patch +++ b/mingw-w64-python/0079-clang-arm64.patch @@ -1,4 +1,4 @@ -From 61eb03c5793ae5c6026c7a854e1165556e3c42e7 Mon Sep 17 00:00:00 2001 +From d60430d1aff530e167ab4fdfdfa23ff21e9339e6 Mon Sep 17 00:00:00 2001 From: jeremyd2019 <4524874+jeremyd2019@users.noreply.github.com> Date: Thu, 17 Jun 2021 18:52:36 +0530 Subject: [PATCH 079/N] clang arm64 @@ -45,5 +45,5 @@ index adccaa7..b529e29 100644 #elif defined(__cplusplus) #define COMPILER "[C++]" -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0080-configure.ac-set-MINGW-stack-reserve.patch b/mingw-w64-python/0080-configure.ac-set-MINGW-stack-reserve.patch index c7bc46f03b..78f98299a4 100644 --- a/mingw-w64-python/0080-configure.ac-set-MINGW-stack-reserve.patch +++ b/mingw-w64-python/0080-configure.ac-set-MINGW-stack-reserve.patch @@ -1,4 +1,4 @@ -From 2a92ce2774eee311160740719a7c80e85c62ab36 Mon Sep 17 00:00:00 2001 +From 6fcebb6fa95bdf21bdc224c492b8b2ed8e4001f2 Mon Sep 17 00:00:00 2001 From: jeremyd2019 <4524874+jeremyd2019@users.noreply.github.com> Date: Thu, 17 Jun 2021 18:52:37 +0530 Subject: [PATCH 080/N] configure.ac: set MINGW stack reserve @@ -8,10 +8,10 @@ Subject: [PATCH 080/N] configure.ac: set MINGW stack reserve 1 file changed, 5 insertions(+) diff --git a/configure.ac b/configure.ac -index 588ffd4..5b41066 100644 +index da43ea0..2ca299a 100644 --- a/configure.ac +++ b/configure.ac -@@ -3065,6 +3065,11 @@ then +@@ -3072,6 +3072,11 @@ then VxWorks*) LINKFORSHARED='--export-dynamic';; esac @@ -24,5 +24,5 @@ index 588ffd4..5b41066 100644 AC_MSG_RESULT($LINKFORSHARED) -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0081-Don-t-use-os.pathsep-to-find-EOF.patch b/mingw-w64-python/0081-Don-t-use-os.pathsep-to-find-EOF.patch index eef4a376b7..e9413452d8 100644 --- a/mingw-w64-python/0081-Don-t-use-os.pathsep-to-find-EOF.patch +++ b/mingw-w64-python/0081-Don-t-use-os.pathsep-to-find-EOF.patch @@ -1,4 +1,4 @@ -From c791a766360579cd96c1a03563f674ca4e9e5698 Mon Sep 17 00:00:00 2001 +From 0740c27a55b7944ecda9196eac7e5ba8e35fa7b3 Mon Sep 17 00:00:00 2001 From: Naveen M K Date: Fri, 18 Jun 2021 12:38:11 +0530 Subject: [PATCH 081/N] Don't use os.pathsep to find EOF not all @@ -23,5 +23,5 @@ index b344f03..474ef89 100644 else: eof = 'Ctrl-D (i.e. EOF)' -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0082-Fix-extension-suffix-for-c-extensions-on-mingw.patch b/mingw-w64-python/0082-Fix-extension-suffix-for-c-extensions-on-mingw.patch index 550473adcb..11274d1f5c 100644 --- a/mingw-w64-python/0082-Fix-extension-suffix-for-c-extensions-on-mingw.patch +++ b/mingw-w64-python/0082-Fix-extension-suffix-for-c-extensions-on-mingw.patch @@ -1,4 +1,4 @@ -From cda85af5ff314ebd772e1000b48eefaddb0914b7 Mon Sep 17 00:00:00 2001 +From 4d16e070def9794b1ec6fb0ec07a0d09f6703541 Mon Sep 17 00:00:00 2001 From: Naveen M K Date: Wed, 23 Jun 2021 18:12:12 +0530 Subject: [PATCH 082/N] Fix extension suffix for c-extensions on mingw @@ -21,10 +21,10 @@ Signed-off-by: Naveen M K 3 files changed, 72 insertions(+), 17 deletions(-) diff --git a/Makefile.pre.in b/Makefile.pre.in -index 2018514..a8aecc2 100644 +index 8df163c..4430d21 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in -@@ -165,6 +165,7 @@ CONFINCLUDEPY= $(CONFINCLUDEDIR)/python$(LDVERSION) +@@ -164,6 +164,7 @@ CONFINCLUDEPY= $(CONFINCLUDEDIR)/python$(LDVERSION) # Symbols used for using shared libraries SHLIB_SUFFIX= @SHLIB_SUFFIX@ EXT_SUFFIX= @EXT_SUFFIX@ @@ -32,7 +32,7 @@ index 2018514..a8aecc2 100644 LDSHARED= @LDSHARED@ $(PY_LDFLAGS) BLDSHARED= @BLDSHARED@ $(PY_CORE_LDFLAGS) LDCXXSHARED= @LDCXXSHARED@ -@@ -848,8 +849,7 @@ Python/dynload_hpux.o: $(srcdir)/Python/dynload_hpux.c Makefile +@@ -847,8 +848,7 @@ Python/dynload_hpux.o: $(srcdir)/Python/dynload_hpux.c Makefile Python/dynload_win.o: $(srcdir)/Python/dynload_win.c Makefile $(CC) -c $(PY_CORE_CFLAGS) \ @@ -42,7 +42,7 @@ index 2018514..a8aecc2 100644 -o $@ $(srcdir)/Python/dynload_win.c Python/sysmodule.o: $(srcdir)/Python/sysmodule.c Makefile $(srcdir)/Include/pydtrace.h -@@ -1688,7 +1688,7 @@ libainstall: @DEF_MAKE_RULE@ python-config +@@ -1687,7 +1687,7 @@ libainstall: @DEF_MAKE_RULE@ python-config done @if test -d $(LIBRARY); then :; else \ if test "$(PYTHONFRAMEWORKDIR)" = no-framework; then \ @@ -69,10 +69,10 @@ index bd34310..60fb603 100644 PYD_UNTAGGED_SUFFIX, NULL diff --git a/configure.ac b/configure.ac -index 5b41066..69cb8fb 100644 +index 2ca299a..11872dc 100644 --- a/configure.ac +++ b/configure.ac -@@ -2825,7 +2825,7 @@ if test -z "$SHLIB_SUFFIX"; then +@@ -2832,7 +2832,7 @@ if test -z "$SHLIB_SUFFIX"; then *) SHLIB_SUFFIX=.so;; esac case $host_os in @@ -81,7 +81,7 @@ index 5b41066..69cb8fb 100644 esac fi AC_MSG_RESULT($SHLIB_SUFFIX) -@@ -5115,6 +5115,68 @@ esac +@@ -5127,6 +5127,68 @@ esac # check for endianness AC_C_BIGENDIAN @@ -150,7 +150,7 @@ index 5b41066..69cb8fb 100644 # ABI version string for Python extension modules. This appears between the # periods in shared library file names, e.g. foo..so. It is calculated # from the following attributes which affect the ABI of this Python build (in -@@ -5147,7 +5209,12 @@ if test "$Py_DEBUG" = 'true' -a "$with_trace_refs" != "yes"; then +@@ -5159,7 +5221,12 @@ if test "$Py_DEBUG" = 'true' -a "$with_trace_refs" != "yes"; then fi AC_SUBST(EXT_SUFFIX) @@ -164,7 +164,7 @@ index 5b41066..69cb8fb 100644 AC_MSG_CHECKING(LDVERSION) LDVERSION='$(VERSION)$(ABIFLAGS)' -@@ -5819,12 +5886,6 @@ case "$ac_cv_computed_gotos" in yes*) +@@ -5831,12 +5898,6 @@ case "$ac_cv_computed_gotos" in yes*) AC_DEFINE(HAVE_COMPUTED_GOTOS, 1, [Define if the C compiler supports computed gotos.]) esac @@ -178,5 +178,5 @@ index 5b41066..69cb8fb 100644 case $ac_sys_system in AIX*) -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0083-Change-the-get_platform-method-in-sysconfig.patch b/mingw-w64-python/0083-Change-the-get_platform-method-in-sysconfig.patch index a85924461c..9bdfe13a73 100644 --- a/mingw-w64-python/0083-Change-the-get_platform-method-in-sysconfig.patch +++ b/mingw-w64-python/0083-Change-the-get_platform-method-in-sysconfig.patch @@ -1,4 +1,4 @@ -From ff2b019fd2d67ea53fd8431a3aa59b4508331f2c Mon Sep 17 00:00:00 2001 +From ad6c62686c8ab254bf39b12f022da558f971e746 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Tue, 21 Sep 2021 21:36:58 +0200 Subject: [PATCH 083/N] Change the `get_platform()` method in sysconfig @@ -60,5 +60,5 @@ index b529e29..2d935fe 100644 #elif defined(__cplusplus) #define COMPILER "[C++]" -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0084-distutils-compiler-customize-mingw-cygwin-compilers.patch b/mingw-w64-python/0084-distutils-compiler-customize-mingw-cygwin-compilers.patch index 60bff28cba..e636e3aac7 100644 --- a/mingw-w64-python/0084-distutils-compiler-customize-mingw-cygwin-compilers.patch +++ b/mingw-w64-python/0084-distutils-compiler-customize-mingw-cygwin-compilers.patch @@ -1,4 +1,4 @@ -From 68b961fb34930195f208a85d0123e3a6d700f515 Mon Sep 17 00:00:00 2001 +From a7788dfddf5093a98a150ae80f07c4e422b788be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:21 +0530 @@ -50,5 +50,5 @@ index 37feae5..bbe8e3c 100644 if not get_config_var('CUSTOMIZED_OSX_COMPILER'): import _osx_support -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0085-distutils-compiler-enable-new-dtags.patch b/mingw-w64-python/0085-distutils-compiler-enable-new-dtags.patch index 64c0d482a3..57283706a6 100644 --- a/mingw-w64-python/0085-distutils-compiler-enable-new-dtags.patch +++ b/mingw-w64-python/0085-distutils-compiler-enable-new-dtags.patch @@ -1,4 +1,4 @@ -From fc9e160c083b5aa586615624a0000dcc901990df Mon Sep 17 00:00:00 2001 +From 3248618ff70ee55c54bc325d5dcc894f29f1b9fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:22 +0530 @@ -13,10 +13,10 @@ Co-authored-by: Алексей 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Lib/distutils/unixccompiler.py b/Lib/distutils/unixccompiler.py -index f0792de..60776bc 100644 +index d00c489..76a7d82 100644 --- a/Lib/distutils/unixccompiler.py +++ b/Lib/distutils/unixccompiler.py -@@ -248,9 +248,13 @@ class UnixCCompiler(CCompiler): +@@ -249,9 +249,13 @@ class UnixCCompiler(CCompiler): # -Wl whenever gcc was used in the past it is probably # safest to keep doing so. if sysconfig.get_config_var("GNULD") == "yes": @@ -33,5 +33,5 @@ index f0792de..60776bc 100644 return "-Wl,-R" + dir else: -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0086-distutils-MINGW-build-extensions-with-GCC.patch b/mingw-w64-python/0086-distutils-MINGW-build-extensions-with-GCC.patch index c216b1a389..319b672c90 100644 --- a/mingw-w64-python/0086-distutils-MINGW-build-extensions-with-GCC.patch +++ b/mingw-w64-python/0086-distutils-MINGW-build-extensions-with-GCC.patch @@ -1,4 +1,4 @@ -From bc18b4c3c94375ddff17aaf5a1bb5bd1e401997f Mon Sep 17 00:00:00 2001 +From d8641e86487fdcbb8a6cf3486e3ecfd2f0ef0eb0 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Tue, 21 Sep 2021 20:52:22 +0200 Subject: [PATCH 086/N] distutils: MINGW build extensions with GCC @@ -56,5 +56,5 @@ index 4b002ec..7b2e1e0 100644 return 'win-amd64' if '(arm)' in sys.version.lower(): -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0087-distutils-use-Mingw32CCompiler-as-default-compiler-f.patch b/mingw-w64-python/0087-distutils-use-Mingw32CCompiler-as-default-compiler-f.patch index af8596a96d..b3115edced 100644 --- a/mingw-w64-python/0087-distutils-use-Mingw32CCompiler-as-default-compiler-f.patch +++ b/mingw-w64-python/0087-distutils-use-Mingw32CCompiler-as-default-compiler-f.patch @@ -1,4 +1,4 @@ -From 40bf9e42ca67d8ac0592bc6674a9e958eabd74c3 Mon Sep 17 00:00:00 2001 +From ecb4ca01159962cbf3c66e4242583e6cdc8ccd02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:35 +0530 @@ -15,7 +15,7 @@ Co-authored-by: Алексей 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/Lib/distutils/ccompiler.py b/Lib/distutils/ccompiler.py -index b5ef143..24eafc6 100644 +index 4c47f2e..ab61a86 100644 --- a/Lib/distutils/ccompiler.py +++ b/Lib/distutils/ccompiler.py @@ -9,7 +9,7 @@ from distutils.spawn import spawn @@ -69,5 +69,5 @@ index 66c12dd..1960ef8 100644 # Because these compilers aren't configured in Python's pyconfig.h file by # default, we should at least warn the user if he is using an unmodified -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0088-distutils-find-import-library.patch b/mingw-w64-python/0088-distutils-find-import-library.patch index f1bef12fdd..b10bc84a33 100644 --- a/mingw-w64-python/0088-distutils-find-import-library.patch +++ b/mingw-w64-python/0088-distutils-find-import-library.patch @@ -1,4 +1,4 @@ -From 41d8050684eb5925e8a4c979610a3aa340139e6d Mon Sep 17 00:00:00 2001 +From fbb6aa9546fe88f2ef3111958b86ab32199e890f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:36 +0530 @@ -25,5 +25,5 @@ index 1960ef8..39ad631 100644 shared_lib_format = "%s%s" exe_extension = ".exe" -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0089-distutils-avoid-circular-dependency-from-time-module.patch b/mingw-w64-python/0089-distutils-avoid-circular-dependency-from-time-module.patch index c9dc5cefbc..dedc2a922b 100644 --- a/mingw-w64-python/0089-distutils-avoid-circular-dependency-from-time-module.patch +++ b/mingw-w64-python/0089-distutils-avoid-circular-dependency-from-time-module.patch @@ -1,4 +1,4 @@ -From a4abb467ae7cf72e1552727b7725e40fc7412448 Mon Sep 17 00:00:00 2001 +From 7f323f7b626ea0948e135152cbd4befd47506276 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:41 +0530 @@ -34,5 +34,5 @@ index 39ad631..5b281e2 100644 try: out_string = out.read() -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0090-distutils-generalization-of-posix-build-in-distutils.patch b/mingw-w64-python/0090-distutils-generalization-of-posix-build-in-distutils.patch index 98e7e86381..74e525b7ad 100644 --- a/mingw-w64-python/0090-distutils-generalization-of-posix-build-in-distutils.patch +++ b/mingw-w64-python/0090-distutils-generalization-of-posix-build-in-distutils.patch @@ -1,4 +1,4 @@ -From 24eed4bff46abb9913a9869684eef985161155a3 Mon Sep 17 00:00:00 2001 +From 5e1dae781cfdd94792d7ee6e45a694a247e55002 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:41 +0530 @@ -91,5 +91,5 @@ index bbe8e3c..80d3523 100644 if (not os.path.isabs(_config_vars['srcdir']) and base != os.getcwd()): -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0091-distutils-mingw-sysconfig-like-posix.patch b/mingw-w64-python/0091-distutils-mingw-sysconfig-like-posix.patch index 7c4db6cb7f..34d0ec29eb 100644 --- a/mingw-w64-python/0091-distutils-mingw-sysconfig-like-posix.patch +++ b/mingw-w64-python/0091-distutils-mingw-sysconfig-like-posix.patch @@ -1,4 +1,4 @@ -From a0d9baa8dc4b4afb5e7ba33980ec6d9f3d67551c Mon Sep 17 00:00:00 2001 +From c07dcfbd45bf8440d7178f912c7c9648966042b5 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Tue, 21 Sep 2021 20:53:29 +0200 Subject: [PATCH 091/N] distutils: mingw sysconfig like posix @@ -24,5 +24,5 @@ index 1c9d471..1dbdfe0 100644 # building python standard extensions self.library_dirs.append('.') -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0092-distutils-get_versions-fixes.patch b/mingw-w64-python/0092-distutils-get_versions-fixes.patch index c6d704533e..9caf681604 100644 --- a/mingw-w64-python/0092-distutils-get_versions-fixes.patch +++ b/mingw-w64-python/0092-distutils-get_versions-fixes.patch @@ -1,4 +1,4 @@ -From 985a20ad50a309a528397ec6f43cf15f848c2797 Mon Sep 17 00:00:00 2001 +From 0df2d034bb72529a6fb719c5c3e430a98b5cc211 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Tue, 21 Sep 2021 21:14:31 +0200 Subject: [PATCH 092/N] distutils: get_versions() fixes @@ -52,5 +52,5 @@ index 5b281e2..fba3485 100644 def is_cygwingcc(): -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0093-distutils-install-layout-as-posix.patch b/mingw-w64-python/0093-distutils-install-layout-as-posix.patch index cccc53696a..3b59e29c0e 100644 --- a/mingw-w64-python/0093-distutils-install-layout-as-posix.patch +++ b/mingw-w64-python/0093-distutils-install-layout-as-posix.patch @@ -1,4 +1,4 @@ -From 71cd2a0390d9e9fad42fed5c0e06d758de39edcf Mon Sep 17 00:00:00 2001 +From 1909d79d7a506d55e07b708e39b5620b2bdf27c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:59 +0530 @@ -43,5 +43,5 @@ index aaa300e..c611252 100644 } -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0094-distutils-msys-convert_path-fix-and-root-hack.patch b/mingw-w64-python/0094-distutils-msys-convert_path-fix-and-root-hack.patch index 96acea6e4b..4017cc4d58 100644 --- a/mingw-w64-python/0094-distutils-msys-convert_path-fix-and-root-hack.patch +++ b/mingw-w64-python/0094-distutils-msys-convert_path-fix-and-root-hack.patch @@ -1,4 +1,4 @@ -From 1ed69d8e50d34a111c7b42951863e13d9cef1930 Mon Sep 17 00:00:00 2001 +From c9dcbae3befb667d806f882ac9fff0defb38d9a1 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Tue, 21 Sep 2021 21:18:50 +0200 Subject: [PATCH 094/N] distutils: msys convert_path fix and root hack @@ -75,5 +75,5 @@ index 7b2e1e0..75a369d 100644 else: raise DistutilsPlatformError("nothing known about platform '%s'" % os.name) -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0095-distutils-mingw-build-optimized-ext.patch b/mingw-w64-python/0095-distutils-mingw-build-optimized-ext.patch index f499259230..7614768fbb 100644 --- a/mingw-w64-python/0095-distutils-mingw-build-optimized-ext.patch +++ b/mingw-w64-python/0095-distutils-mingw-build-optimized-ext.patch @@ -1,4 +1,4 @@ -From 1da2752289e00fe51e2c8a0b25138ac83f1f0983 Mon Sep 17 00:00:00 2001 +From b6462264592f88d2930107496aea431a52516f2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:52:04 +0530 @@ -30,5 +30,5 @@ index fba3485..bb97880 100644 linker_so='%s %s %s' % (self.linker_dll, shared_option, -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0096-distutils-cygwinccompiler-dont-strip-modules-if-pyde.patch b/mingw-w64-python/0096-distutils-cygwinccompiler-dont-strip-modules-if-pyde.patch index 2ae5b3ffa5..c48b100ec4 100644 --- a/mingw-w64-python/0096-distutils-cygwinccompiler-dont-strip-modules-if-pyde.patch +++ b/mingw-w64-python/0096-distutils-cygwinccompiler-dont-strip-modules-if-pyde.patch @@ -1,4 +1,4 @@ -From 6d880609657632bc2f9d93964d7f9edbb2a6e430 Mon Sep 17 00:00:00 2001 +From 9536f0bbb21ebe13c7f539540a5e38dbd875bc51 Mon Sep 17 00:00:00 2001 From: Ray Donnelly Date: Thu, 17 Jun 2021 18:52:05 +0530 Subject: [PATCH 096/N] distutils: cygwinccompiler dont strip modules if @@ -26,5 +26,5 @@ index bb97880..c134525 100644 UnixCCompiler.link(self, target_desc, objects, output_filename, -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0097-distutils-get-compilers-from-env-vars.patch b/mingw-w64-python/0097-distutils-get-compilers-from-env-vars.patch index 4c7d500e8e..0de5977b0f 100644 --- a/mingw-w64-python/0097-distutils-get-compilers-from-env-vars.patch +++ b/mingw-w64-python/0097-distutils-get-compilers-from-env-vars.patch @@ -1,4 +1,4 @@ -From b1f1cbeefcc5ed956ee484cd96008d5d37eb7db2 Mon Sep 17 00:00:00 2001 +From 42bab63733b59dad0ebbe18b1f6d18ba588240df Mon Sep 17 00:00:00 2001 From: Long Nguyen Date: Tue, 17 Aug 2021 20:26:05 +0700 Subject: [PATCH 097/N] distutils: get compilers from env vars @@ -157,5 +157,5 @@ index c134525..75bc17b 100644 + out_string = check_output([cc, '-dumpmachine']) return out_string.strip().endswith(b'cygwin') -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0098-distutils-add-windmc-to-cygwinccompiler.patch b/mingw-w64-python/0098-distutils-add-windmc-to-cygwinccompiler.patch index e8f894fef1..ad88994ceb 100644 --- a/mingw-w64-python/0098-distutils-add-windmc-to-cygwinccompiler.patch +++ b/mingw-w64-python/0098-distutils-add-windmc-to-cygwinccompiler.patch @@ -1,4 +1,4 @@ -From 0c751ecfc03048c60a59b090cf93f64d09255c4b Mon Sep 17 00:00:00 2001 +From ebe7844e3d6d1b64f155033731fd44f1770243f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:52:28 +0530 @@ -54,5 +54,5 @@ index 75bc17b..6a40e80 100644 (ext, src_name)) base = os.path.splitdrive(base)[1] # Chop off the drive -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0099-distutils-fix-msvc9-import.patch b/mingw-w64-python/0099-distutils-fix-msvc9-import.patch index 10ed072b07..4471e29f92 100644 --- a/mingw-w64-python/0099-distutils-fix-msvc9-import.patch +++ b/mingw-w64-python/0099-distutils-fix-msvc9-import.patch @@ -1,4 +1,4 @@ -From d947ead836ca0eead2e28103a790011387720a2f Mon Sep 17 00:00:00 2001 +From dd68c5c4b419561600a9ad34a2741395a166ac4f Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Thu, 17 Jun 2021 18:52:24 +0530 Subject: [PATCH 099/N] distutils: fix msvc9 import @@ -12,7 +12,7 @@ Co-authored-by: Алексей 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Lib/distutils/msvc9compiler.py b/Lib/distutils/msvc9compiler.py -index 6934e96..dddb2fd 100644 +index a7976fb..c341679 100644 --- a/Lib/distutils/msvc9compiler.py +++ b/Lib/distutils/msvc9compiler.py @@ -291,8 +291,6 @@ def query_vcvarsall(version, arch="x86"): @@ -34,5 +34,5 @@ index 6934e96..dddb2fd 100644 self.__root = r"Software\Microsoft\VisualStudio" # self.__macros = MACROS -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0100-distutils-mingw-add-LIBPL-to-library-dirs.patch b/mingw-w64-python/0100-distutils-mingw-add-LIBPL-to-library-dirs.patch index 2533e3438a..3c1e96b433 100644 --- a/mingw-w64-python/0100-distutils-mingw-add-LIBPL-to-library-dirs.patch +++ b/mingw-w64-python/0100-distutils-mingw-add-LIBPL-to-library-dirs.patch @@ -1,4 +1,4 @@ -From 609d9e23ff0403233ae2e8a81eaa55eda54d175f Mon Sep 17 00:00:00 2001 +From 041c30f5c5e8e43c72147b50d0f4b2eefdb17d3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:52:06 +0530 @@ -22,5 +22,5 @@ index 1dbdfe0..1598735 100644 # building third party extensions config_dir_name = os.path.basename(sysconfig.get_config_var('LIBPL')) -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0101-distutils-Change-the-get_platform-method-in-distutil.patch b/mingw-w64-python/0101-distutils-Change-the-get_platform-method-in-distutil.patch index 79f856f76b..27c82b5fcb 100644 --- a/mingw-w64-python/0101-distutils-Change-the-get_platform-method-in-distutil.patch +++ b/mingw-w64-python/0101-distutils-Change-the-get_platform-method-in-distutil.patch @@ -1,4 +1,4 @@ -From 5a61407b52dc9d8f2949af82bff034cac2d99c2d Mon Sep 17 00:00:00 2001 +From f86f222d41d6ee022b1eefd2494c10e97d54b16e Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Tue, 21 Sep 2021 21:37:23 +0200 Subject: [PATCH 101/N] distutils: Change the `get_platform()` method in @@ -40,5 +40,5 @@ index 75a369d..5b51c76 100644 return 'win-amd64' if '(arm)' in sys.version.lower(): -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0102-build-Fix-ncursesw-include-lookup.patch b/mingw-w64-python/0102-build-Fix-ncursesw-include-lookup.patch index eb36242efb..3fb86977a0 100644 --- a/mingw-w64-python/0102-build-Fix-ncursesw-include-lookup.patch +++ b/mingw-w64-python/0102-build-Fix-ncursesw-include-lookup.patch @@ -1,4 +1,4 @@ -From 7f0e7c96729a306b58ab87ecb4e051b460bec6ce Mon Sep 17 00:00:00 2001 +From 61995cb8065dde6dcc0eec9ecb5ef2aa3170fef8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:52:09 +0530 @@ -13,10 +13,10 @@ pkg-config and use the exported path via sysconfig in setup.py 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/Makefile.pre.in b/Makefile.pre.in -index a8aecc2..3aca037 100644 +index 4430d21..99bed41 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in -@@ -313,6 +313,7 @@ IO_OBJS= \ +@@ -312,6 +312,7 @@ IO_OBJS= \ ########################################################################## LIBFFI_INCLUDEDIR= @LIBFFI_INCLUDEDIR@ @@ -25,10 +25,10 @@ index a8aecc2..3aca037 100644 ########################################################################## # Parser diff --git a/configure.ac b/configure.ac -index 69cb8fb..6b21b79 100644 +index 11872dc..fb90929 100644 --- a/configure.ac +++ b/configure.ac -@@ -5557,10 +5557,17 @@ then +@@ -5569,10 +5569,17 @@ then [Define if you have struct stat.st_mtimensec]) fi @@ -48,10 +48,10 @@ index 69cb8fb..6b21b79 100644 AC_CHECK_HEADERS(curses.h ncurses.h) diff --git a/setup.py b/setup.py -index d161108..46de8be 100644 +index 71e6ea5..badb119 100644 --- a/setup.py +++ b/setup.py -@@ -1104,7 +1104,7 @@ class PyBuildExt(build_ext): +@@ -1107,7 +1107,7 @@ class PyBuildExt(build_ext): if curses_library == 'ncursesw': curses_defines.append(('HAVE_NCURSESW', '1')) if not CROSS_COMPILING: @@ -61,5 +61,5 @@ index d161108..46de8be 100644 # _curses_panel.so must link with panelw. panel_library = 'panelw' -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0103-tests-fix-test_bytes.patch b/mingw-w64-python/0103-tests-fix-test_bytes.patch index d3d1dbbfca..21f99362cd 100644 --- a/mingw-w64-python/0103-tests-fix-test_bytes.patch +++ b/mingw-w64-python/0103-tests-fix-test_bytes.patch @@ -1,4 +1,4 @@ -From dee249e62d0d3f610538286927b24ea6f9f5b332 Mon Sep 17 00:00:00 2001 +From 225617465f44e8c1d9a3d678f2fd63c979dca417 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Fri, 23 Jul 2021 08:51:32 +0200 Subject: [PATCH 103/N] tests: fix test_bytes @@ -23,5 +23,5 @@ index 227e6d7..193ce10 100644 return (ptr_format % ptr) else: -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0104-time-fix-strftime-not-raising-for-invalid-year-value.patch b/mingw-w64-python/0104-time-fix-strftime-not-raising-for-invalid-year-value.patch index 759ac3be0c..5aa4632cc3 100644 --- a/mingw-w64-python/0104-time-fix-strftime-not-raising-for-invalid-year-value.patch +++ b/mingw-w64-python/0104-time-fix-strftime-not-raising-for-invalid-year-value.patch @@ -1,4 +1,4 @@ -From 72e058ef4fdb8aa7a5d5a1a8b45a16d9c0ef975f Mon Sep 17 00:00:00 2001 +From 5f3accecfce4d1284e7fad8fdc01165ee1bb7488 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Fri, 23 Jul 2021 08:52:50 +0200 Subject: [PATCH 104/N] time: fix strftime not raising for invalid year @@ -11,7 +11,7 @@ This fixes a test case in test_time 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/timemodule.c b/Modules/timemodule.c -index 80eab30..f0cdcfa 100644 +index df59f2a..ded8165 100644 --- a/Modules/timemodule.c +++ b/Modules/timemodule.c @@ -754,7 +754,7 @@ time_strftime(PyObject *self, PyObject *args) @@ -24,5 +24,5 @@ index 80eab30..f0cdcfa 100644 PyErr_SetString(PyExc_ValueError, "strftime() requires year in [1; 9999]"); -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0105-ctypes-find_library-c-should-return-None-with-ucrt.patch b/mingw-w64-python/0105-ctypes-find_library-c-should-return-None-with-ucrt.patch index 738d9ead4c..0dac44e687 100644 --- a/mingw-w64-python/0105-ctypes-find_library-c-should-return-None-with-ucrt.patch +++ b/mingw-w64-python/0105-ctypes-find_library-c-should-return-None-with-ucrt.patch @@ -1,4 +1,4 @@ -From bf97e2d2da502effd0116a00d4a02a69b7a9c2a9 Mon Sep 17 00:00:00 2001 +From fdf596a74bc3f361136eab3a23a0fedd1bc2e9e2 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Fri, 23 Jul 2021 18:23:58 +0200 Subject: [PATCH 105/N] ctypes: find_library('c') should return None with @@ -37,5 +37,5 @@ index 0c2510e..48ddb3b 100644 # See MSDN for the REAL search order. for directory in os.environ['PATH'].split(os.pathsep): -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0106-build-Disable-checks-for-dlopen-dlfcn.patch b/mingw-w64-python/0106-build-Disable-checks-for-dlopen-dlfcn.patch index dc7839bcde..489c1b42c8 100644 --- a/mingw-w64-python/0106-build-Disable-checks-for-dlopen-dlfcn.patch +++ b/mingw-w64-python/0106-build-Disable-checks-for-dlopen-dlfcn.patch @@ -1,4 +1,4 @@ -From 33575171384e6e85efaf11ed9210463a870a7258 Mon Sep 17 00:00:00 2001 +From 54da3cecac7208fce008b7f05e19df0e45e245bc Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sun, 25 Jul 2021 13:54:12 +0200 Subject: [PATCH 106/N] build: Disable checks for dlopen/dlfcn @@ -10,10 +10,10 @@ checks for it. 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/configure.ac b/configure.ac -index 6b21b79..12373f7 100644 +index fb90929..bfa18be 100644 --- a/configure.ac +++ b/configure.ac -@@ -2423,7 +2423,7 @@ dnl AC_MSG_RESULT($cpp_type) +@@ -2430,7 +2430,7 @@ dnl AC_MSG_RESULT($cpp_type) # checks for header files AC_HEADER_STDC @@ -22,7 +22,7 @@ index 6b21b79..12373f7 100644 fcntl.h grp.h \ ieeefp.h io.h langinfo.h libintl.h process.h \ shadow.h signal.h stropts.h termios.h \ -@@ -2437,6 +2437,12 @@ sys/times.h sys/types.h sys/uio.h sys/un.h sys/utsname.h sys/wait.h pty.h \ +@@ -2444,6 +2444,12 @@ sys/times.h sys/types.h sys/uio.h sys/un.h sys/utsname.h sys/wait.h pty.h \ libutil.h sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \ linux/tipc.h linux/random.h spawn.h util.h alloca.h endian.h \ sys/endian.h sys/sysmacros.h linux/memfd.h linux/wait.h sys/memfd.h sys/mman.h) @@ -35,7 +35,7 @@ index 6b21b79..12373f7 100644 AC_HEADER_DIRENT AC_HEADER_MAJOR -@@ -3108,7 +3114,12 @@ AC_MSG_RESULT($SHLIBS) +@@ -3115,7 +3121,12 @@ AC_MSG_RESULT($SHLIBS) # checks for libraries AC_CHECK_LIB(sendfile, sendfile) @@ -49,7 +49,7 @@ index 6b21b79..12373f7 100644 AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX # checks for uuid.h location -@@ -5014,7 +5025,10 @@ then +@@ -5026,7 +5037,10 @@ then [define to 1 if your sem_getvalue is broken.]) fi @@ -62,5 +62,5 @@ index 6b21b79..12373f7 100644 # determine what size digit to use for Python's longs AC_MSG_CHECKING([digit size for Python's longs]) -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0107-Fix-install-location-of-the-import-library.patch b/mingw-w64-python/0107-Fix-install-location-of-the-import-library.patch index 2351466117..740acce830 100644 --- a/mingw-w64-python/0107-Fix-install-location-of-the-import-library.patch +++ b/mingw-w64-python/0107-Fix-install-location-of-the-import-library.patch @@ -1,4 +1,4 @@ -From 212191d85f1af9b7fb395c07db30ff4a9e3cd8da Mon Sep 17 00:00:00 2001 +From acc12ead338af28f76fa1164d2aff52bba7f06cf Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sun, 25 Jul 2021 15:46:01 +0200 Subject: [PATCH 107/N] Fix install location of the import library @@ -8,10 +8,10 @@ Subject: [PATCH 107/N] Fix install location of the import library 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.pre.in b/Makefile.pre.in -index 3aca037..2154bdf 100644 +index 99bed41..14bd6e3 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in -@@ -1690,7 +1690,7 @@ libainstall: @DEF_MAKE_RULE@ python-config +@@ -1689,7 +1689,7 @@ libainstall: @DEF_MAKE_RULE@ python-config @if test -d $(LIBRARY); then :; else \ if test "$(PYTHONFRAMEWORKDIR)" = no-framework; then \ if test "$(SHLIB_SUFFIX)" = .dll -o "$(SHLIB_SUFFIX)" = .pyd; then \ @@ -21,5 +21,5 @@ index 3aca037..2154bdf 100644 $(INSTALL_DATA) $(LIBRARY) $(DESTDIR)$(LIBPL)/$(LIBRARY) ; \ fi; \ -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0108-Set-MSYS2_ARG_CONV_EXCL-for-the-shared-Python-module.patch b/mingw-w64-python/0108-Set-MSYS2_ARG_CONV_EXCL-for-the-shared-Python-module.patch index 59619b91c8..0dec35566b 100644 --- a/mingw-w64-python/0108-Set-MSYS2_ARG_CONV_EXCL-for-the-shared-Python-module.patch +++ b/mingw-w64-python/0108-Set-MSYS2_ARG_CONV_EXCL-for-the-shared-Python-module.patch @@ -1,4 +1,4 @@ -From be91fcc4aa3d4b31521a4eda1256470f5ea43760 Mon Sep 17 00:00:00 2001 +From ecf4b76f6cea01e049ae43f11482dc1688f669a3 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sun, 25 Jul 2021 15:46:54 +0200 Subject: [PATCH 108/N] Set MSYS2_ARG_CONV_EXCL for the shared Python module @@ -10,10 +10,10 @@ Otherwise one has to set it when calling "make install". 1 file changed, 1 insertion(+) diff --git a/Makefile.pre.in b/Makefile.pre.in -index 2154bdf..7b8317a 100644 +index 14bd6e3..35055fb 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in -@@ -1736,6 +1736,7 @@ endif +@@ -1735,6 +1735,7 @@ endif # Install the dynamically loadable modules # This goes into $(exec_prefix) sharedinstall: sharedmods @@ -22,5 +22,5 @@ index 2154bdf..7b8317a 100644 --prefix=$(prefix) \ --install-scripts=$(BINDIR) \ -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0109-build-Integrate-venvlauncher-build-installation-into.patch b/mingw-w64-python/0109-build-Integrate-venvlauncher-build-installation-into.patch index 01d92fcb21..03dd7cfb99 100644 --- a/mingw-w64-python/0109-build-Integrate-venvlauncher-build-installation-into.patch +++ b/mingw-w64-python/0109-build-Integrate-venvlauncher-build-installation-into.patch @@ -1,4 +1,4 @@ -From f86fcd93f6748af7964e2875a890e3957ce3a2c4 Mon Sep 17 00:00:00 2001 +From 4ff3883e35104746d0284523bdf80dc7f1bd36c3 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sun, 25 Jul 2021 16:53:35 +0200 Subject: [PATCH 109/N] build: Integrate venvlauncher build/installation into @@ -12,10 +12,10 @@ but a copy of main binary seems to work as well for now. 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/Makefile.pre.in b/Makefile.pre.in -index 7b8317a..6012869 100644 +index 35055fb..498186f 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in -@@ -161,6 +161,7 @@ BINLIBDEST= @BINLIBDEST@ +@@ -160,6 +160,7 @@ BINLIBDEST= @BINLIBDEST@ LIBDEST= $(SCRIPTDIR)/python$(VERSION) INCLUDEPY= $(INCLUDEDIR)/python$(LDVERSION) CONFINCLUDEPY= $(CONFINCLUDEDIR)/python$(LDVERSION) @@ -23,7 +23,7 @@ index 7b8317a..6012869 100644 # Symbols used for using shared libraries SHLIB_SUFFIX= @SHLIB_SUFFIX@ -@@ -264,6 +265,8 @@ LIBOBJS= @LIBOBJS@ +@@ -263,6 +264,8 @@ LIBOBJS= @LIBOBJS@ PYTHON= python$(EXE) BUILDPYTHON= python$(BUILDEXE) BUILDPYTHONW= pythonw$(BUILDEXE) @@ -32,7 +32,7 @@ index 7b8317a..6012869 100644 PYTHON_FOR_REGEN?=@PYTHON_FOR_REGEN@ UPDATE_FILE=@PYTHON_FOR_REGEN@ $(srcdir)/Tools/scripts/update_file.py -@@ -487,7 +490,7 @@ DTRACE_DEPS = \ +@@ -486,7 +489,7 @@ DTRACE_DEPS = \ # Default target all: @DEF_MAKE_ALL_RULE@ @@ -41,7 +41,7 @@ index 7b8317a..6012869 100644 Programs/_testembed python-config # Check that the source is clean when building out of source. -@@ -617,6 +620,14 @@ $(BUILDPYTHONW): Programs/python.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY) pythonw +@@ -616,6 +619,14 @@ $(BUILDPYTHONW): Programs/python.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY) pythonw $(BUILDPYTHON): Programs/python.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY) python_exe.o $(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -municode -o $@ Programs/python.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) python_exe.o @@ -56,7 +56,7 @@ index 7b8317a..6012869 100644 platform: $(BUILDPYTHON) pybuilddir.txt $(RUNSHARED) $(PYTHON_FOR_BUILD) -c 'import sys ; from sysconfig import get_platform ; print("%s-%d.%d" % (get_platform(), *sys.version_info[:2]))' >platform -@@ -1331,7 +1342,7 @@ $(DESTSHARED): +@@ -1330,7 +1341,7 @@ $(DESTSHARED): # Install the interpreter with $(VERSION) affixed # This goes into $(exec_prefix) altbininstall: $(BUILDPYTHON) @FRAMEWORKPYTHONW@ @@ -65,7 +65,7 @@ index 7b8317a..6012869 100644 do \ if test ! -d $(DESTDIR)$$i; then \ echo "Creating directory $$i"; \ -@@ -1342,6 +1353,8 @@ altbininstall: $(BUILDPYTHON) @FRAMEWORKPYTHONW@ +@@ -1341,6 +1352,8 @@ altbininstall: $(BUILDPYTHON) @FRAMEWORKPYTHONW@ if test "$(PYTHONFRAMEWORKDIR)" = "no-framework" ; then \ $(INSTALL_PROGRAM) $(BUILDPYTHON) $(DESTDIR)$(BINDIR)/python$(LDVERSION)$(EXE); \ $(INSTALL_PROGRAM) $(BUILDPYTHONW) $(DESTDIR)$(BINDIR)/python3w$(EXE); \ @@ -75,5 +75,5 @@ index 7b8317a..6012869 100644 $(INSTALL_PROGRAM) $(STRIPFLAG) Mac/pythonw $(DESTDIR)$(BINDIR)/python$(LDVERSION)$(EXE); \ fi -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0110-configure.ac-set-_WIN32_WINNT-version.patch b/mingw-w64-python/0110-configure.ac-set-_WIN32_WINNT-version.patch index 45235b309d..b7e958aeee 100644 --- a/mingw-w64-python/0110-configure.ac-set-_WIN32_WINNT-version.patch +++ b/mingw-w64-python/0110-configure.ac-set-_WIN32_WINNT-version.patch @@ -1,4 +1,4 @@ -From 3724005ffa45a6115f94f8361d0f08cb95af568b Mon Sep 17 00:00:00 2001 +From 15e69064ff0d465ee518919a3f83028e302ad4fb Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sun, 1 Aug 2021 15:18:50 +0200 Subject: [PATCH 110/N] configure.ac: set _WIN32_WINNT version @@ -8,10 +8,10 @@ Subject: [PATCH 110/N] configure.ac: set _WIN32_WINNT version 1 file changed, 5 insertions(+) diff --git a/configure.ac b/configure.ac -index 12373f7..2455a05 100644 +index bfa18be..77982d0 100644 --- a/configure.ac +++ b/configure.ac -@@ -3477,6 +3477,11 @@ else +@@ -3489,6 +3489,11 @@ else fi]) AC_MSG_RESULT($with_dbmliborder) @@ -24,5 +24,5 @@ index 12373f7..2455a05 100644 AC_SUBST(USE_WIN32_MODULE) USE_WIN32_MODULE='#' -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0111-configure.ac-don-t-check-for-clock_-functions.patch b/mingw-w64-python/0111-configure.ac-don-t-check-for-clock_-functions.patch index 3d9f9c4fe3..9aa1de34c5 100644 --- a/mingw-w64-python/0111-configure.ac-don-t-check-for-clock_-functions.patch +++ b/mingw-w64-python/0111-configure.ac-don-t-check-for-clock_-functions.patch @@ -1,4 +1,4 @@ -From 80640c7c44d34d8cebfa0768575750e7753bcb8e Mon Sep 17 00:00:00 2001 +From 6f3fc42d39c6d0009933bde5a2322a54de764846 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sun, 1 Aug 2021 18:35:17 +0200 Subject: [PATCH 111/N] configure.ac: don't check for clock_ functions @@ -9,10 +9,10 @@ They shouldn't be exposed on Windows and lead to winpthread being linked in 1 file changed, 5 insertions(+) diff --git a/configure.ac b/configure.ac -index 2455a05..dd6969d 100644 +index 77982d0..f986188 100644 --- a/configure.ac +++ b/configure.ac -@@ -4369,6 +4369,9 @@ char *r = crypt_r("", "", &d); +@@ -4381,6 +4381,9 @@ char *r = crypt_r("", "", &d); []) ) @@ -22,7 +22,7 @@ index 2455a05..dd6969d 100644 AC_CHECK_FUNCS(clock_gettime, [], [ AC_CHECK_LIB(rt, clock_gettime, [ LIBS="$LIBS -lrt" -@@ -4389,6 +4392,8 @@ AC_CHECK_FUNCS(clock_settime, [], [ +@@ -4401,6 +4404,8 @@ AC_CHECK_FUNCS(clock_settime, [], [ AC_DEFINE(HAVE_CLOCK_SETTIME, 1) ]) ]) @@ -32,5 +32,5 @@ index 2455a05..dd6969d 100644 AC_MSG_CHECKING(for major, minor, and makedev) AC_LINK_IFELSE([AC_LANG_PROGRAM([[ -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0112-expanduser-normpath-paths-coming-from-env-vars.patch b/mingw-w64-python/0112-expanduser-normpath-paths-coming-from-env-vars.patch index 2eee6c3dd2..5458f0415c 100644 --- a/mingw-w64-python/0112-expanduser-normpath-paths-coming-from-env-vars.patch +++ b/mingw-w64-python/0112-expanduser-normpath-paths-coming-from-env-vars.patch @@ -1,4 +1,4 @@ -From 2748eca808bc4a0d9f79a86803217147fa4c69ec Mon Sep 17 00:00:00 2001 +From 0762b765e0c3463fc531aa3458ac3645e27c003c Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sun, 8 Aug 2021 10:17:35 +0200 Subject: [PATCH 112/N] expanduser: normpath paths coming from env vars @@ -31,5 +31,5 @@ index 77f5614..5d1c6b9 100644 # Expand paths containing shell variable substitutions. -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0113-Add-support-for-Windows-7-Python-3.9.patch b/mingw-w64-python/0113-Add-support-for-Windows-7-Python-3.9.patch index 16c0c492a9..f5283ac950 100644 --- a/mingw-w64-python/0113-Add-support-for-Windows-7-Python-3.9.patch +++ b/mingw-w64-python/0113-Add-support-for-Windows-7-Python-3.9.patch @@ -1,16 +1,16 @@ -From 0f459a423fa1754bae5817940d62348b5197fda5 Mon Sep 17 00:00:00 2001 +From fc6619697a171ecfe63a933e3f93b1841ce13cc2 Mon Sep 17 00:00:00 2001 From: Naveen M K Date: Thu, 17 Jun 2021 18:52:39 +0530 Subject: [PATCH 113/N] Add support for Windows 7 Python 3.9 --- - Modules/posixmodule.c | 22 +++++++++++------ - PC/getpathp.c | 57 +++++++++++++++++++++++++++++++++++++++---- + Modules/posixmodule.c | 22 ++++++++++------ + PC/getpathp.c | 58 +++++++++++++++++++++++++++++++++++++++---- configure.ac | 2 +- - 3 files changed, 68 insertions(+), 13 deletions(-) + 3 files changed, 69 insertions(+), 13 deletions(-) diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c -index bf19ac8..215c81f 100644 +index 590b459..1b627df 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -18,7 +18,7 @@ @@ -71,18 +71,19 @@ index bf19ac8..215c81f 100644 diff --git a/PC/getpathp.c b/PC/getpathp.c -index 53da3a6..40b0db3 100644 +index 7c0eeab..2d03b74 100644 --- a/PC/getpathp.c +++ b/PC/getpathp.c -@@ -90,7 +90,6 @@ +@@ -90,7 +90,7 @@ #endif #include -#include - #include ++#include #ifdef HAVE_SYS_TYPES_H -@@ -250,14 +249,43 @@ ismodule(wchar_t *filename, int update_filename) + #include +@@ -249,14 +249,43 @@ ismodule(wchar_t *filename, int update_filename) stuff as fits will be appended. */ @@ -128,7 +129,7 @@ index 53da3a6..40b0db3 100644 /* Call PathCchCanonicalizeEx(path): remove navigation elements such as "." and ".." to produce a direct, well-formed path. */ static PyStatus -@@ -267,8 +295,27 @@ canonicalize(wchar_t *buffer, const wchar_t *path) +@@ -266,8 +295,27 @@ canonicalize(wchar_t *buffer, const wchar_t *path) return _PyStatus_NO_MEMORY(); } @@ -159,10 +160,10 @@ index 53da3a6..40b0db3 100644 return _PyStatus_OK(); } diff --git a/configure.ac b/configure.ac -index dd6969d..23dd59b 100644 +index f986188..f5be44c 100644 --- a/configure.ac +++ b/configure.ac -@@ -5968,7 +5968,7 @@ AC_MSG_RESULT(done) +@@ -5980,7 +5980,7 @@ AC_MSG_RESULT(done) # For mingw build need additional library for linking case $host in *-*-mingw*) @@ -172,5 +173,5 @@ index dd6969d..23dd59b 100644 if test "$AWK" = "gawk"; then awk_extra_flag="--non-decimal-data" -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0114-Commit-regenerated-importlib.patch b/mingw-w64-python/0114-Commit-regenerated-importlib.patch index 00ef34aa4a..4e30f7e39a 100644 --- a/mingw-w64-python/0114-Commit-regenerated-importlib.patch +++ b/mingw-w64-python/0114-Commit-regenerated-importlib.patch @@ -1,4 +1,4 @@ -From 4ad86b7afa525e568e3c57b795df33b6a5369a3c Mon Sep 17 00:00:00 2001 +From ba0fc684a60cae28806d23a30fafac9c090db205 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sun, 1 Aug 2021 16:09:12 +0200 Subject: [PATCH 114/N] Commit regenerated importlib @@ -2390,5 +2390,5 @@ index 6d40249..17f549b 100644 + 0,20,14,127,0,27,10,23,8,11,8,61, }; -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0115-CI-test-the-build-and-add-some-mingw-specific-tests.patch b/mingw-w64-python/0115-CI-test-the-build-and-add-some-mingw-specific-tests.patch index bf1bacc1a5..387b3ee690 100644 --- a/mingw-w64-python/0115-CI-test-the-build-and-add-some-mingw-specific-tests.patch +++ b/mingw-w64-python/0115-CI-test-the-build-and-add-some-mingw-specific-tests.patch @@ -1,4 +1,4 @@ -From dace5a0283f861847979063d2ceb14bbf3cbc0f2 Mon Sep 17 00:00:00 2001 +From 1f3d70f51035932de24c2df7084f9224fbd632ea Mon Sep 17 00:00:00 2001 From: Naveen M K Date: Fri, 18 Jun 2021 17:51:59 +0530 Subject: [PATCH 115/N] CI: test the build and add some mingw specific tests @@ -585,5 +585,5 @@ index 0000000..70acbd1 +if __name__ == '__main__': + unittest.main(defaultTest='suite') -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0116-decimal-backport-build-fixes.patch b/mingw-w64-python/0116-decimal-backport-build-fixes.patch index 26d7337aee..b2b80683ef 100644 --- a/mingw-w64-python/0116-decimal-backport-build-fixes.patch +++ b/mingw-w64-python/0116-decimal-backport-build-fixes.patch @@ -1,4 +1,4 @@ -From f9d77130f2c14f49081ba243f346e0c458f45d5e Mon Sep 17 00:00:00 2001 +From 96d183dd8ee2b5ff4380f230e2a24a1125a9851b Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Thu, 23 Sep 2021 09:55:32 +0200 Subject: [PATCH 116/N] decimal: backport build fixes @@ -31,5 +31,5 @@ index d80d791..28fd209 100644 sep = dotsep_as_utf8(spec.sep); if (sep == NULL) { -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0117-smoketests-test-that-_decimal-exists.patch b/mingw-w64-python/0117-smoketests-test-that-_decimal-exists.patch index 6763624de9..c582e09bfa 100644 --- a/mingw-w64-python/0117-smoketests-test-that-_decimal-exists.patch +++ b/mingw-w64-python/0117-smoketests-test-that-_decimal-exists.patch @@ -1,4 +1,4 @@ -From b7d2e9e27140b56c131e1705bd20dcc7dac63eb2 Mon Sep 17 00:00:00 2001 +From d5a8017fac49caaf9ec52f0f46760ce62f2849cc Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Thu, 23 Sep 2021 09:57:56 +0200 Subject: [PATCH 117/N] smoketests: test that _decimal exists @@ -22,5 +22,5 @@ index 70acbd1..527aafb 100644 import socket self.assertTrue(hasattr(socket, "inet_ntop")) -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0118-Prefer-sysconfig.python_build.patch b/mingw-w64-python/0118-Prefer-sysconfig.python_build.patch index 666eac1c39..65446951da 100644 --- a/mingw-w64-python/0118-Prefer-sysconfig.python_build.patch +++ b/mingw-w64-python/0118-Prefer-sysconfig.python_build.patch @@ -1,4 +1,4 @@ -From ac9f30ac5c47c7f54306c1f8fc5d4d05b9d78386 Mon Sep 17 00:00:00 2001 +From 16683cb6295f388e9425517edecdd5368343a62c Mon Sep 17 00:00:00 2001 From: Long Nguyen Date: Fri, 1 Oct 2021 07:28:36 +0700 Subject: [PATCH 118/N] Prefer sysconfig.python_build @@ -21,5 +21,5 @@ index 1598735..82a21d2 100644 config_dir_name = os.path.basename(sysconfig.get_config_var('LIBPL')) self.library_dirs.append(os.path.join(sys.prefix, "lib", -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0119-distutils-remove-checks-for-ancient-gcc-binutils.patch b/mingw-w64-python/0119-distutils-remove-checks-for-ancient-gcc-binutils.patch index 15d3aea8a9..15f15baa60 100644 --- a/mingw-w64-python/0119-distutils-remove-checks-for-ancient-gcc-binutils.patch +++ b/mingw-w64-python/0119-distutils-remove-checks-for-ancient-gcc-binutils.patch @@ -1,4 +1,4 @@ -From 8ec77b61a8c33a8096882be9edfe0b23c4c62e2c Mon Sep 17 00:00:00 2001 +From 662d8c68e4559c6deebf5abb78767b81d9266fe9 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sun, 7 Nov 2021 23:06:13 +0100 Subject: [PATCH 119/N] distutils: remove checks for ancient gcc/binutils @@ -256,5 +256,5 @@ index 9dc869d..f525ab4 100644 # none -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0120-distutils-split-CC-env-var-before-passing-to-subproc.patch b/mingw-w64-python/0120-distutils-split-CC-env-var-before-passing-to-subproc.patch index 01446f62c6..3f31dbe044 100644 --- a/mingw-w64-python/0120-distutils-split-CC-env-var-before-passing-to-subproc.patch +++ b/mingw-w64-python/0120-distutils-split-CC-env-var-before-passing-to-subproc.patch @@ -1,4 +1,4 @@ -From 8736112bab36bc8f0612f33237f64473640ff3b8 Mon Sep 17 00:00:00 2001 +From 382c91ed3b11b65cfaeebb3d02f8886b401f4ab0 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sun, 7 Nov 2021 23:12:10 +0100 Subject: [PATCH 120/N] distutils: split CC env var before passing to @@ -32,5 +32,5 @@ index 2804f69..6e22555 100644 + out_string = check_output(shlex.split(cc) + ['-dumpmachine']) return out_string.strip().endswith(b'cygwin') -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0121-_testconsole.c-Fix-casing-path-sep.patch b/mingw-w64-python/0121-_testconsole.c-Fix-casing-path-sep.patch index b7dfa28f09..80b9669158 100644 --- a/mingw-w64-python/0121-_testconsole.c-Fix-casing-path-sep.patch +++ b/mingw-w64-python/0121-_testconsole.c-Fix-casing-path-sep.patch @@ -1,4 +1,4 @@ -From 11779b2113f6d60fafff13d7e625fff72980e9bf Mon Sep 17 00:00:00 2001 +From 667b4b663c1382c6daa8bac219bdeb97419b4b73 Mon Sep 17 00:00:00 2001 From: Long Nguyen Date: Sun, 14 Nov 2021 14:55:35 +0700 Subject: [PATCH 121/N] _testconsole.c: Fix casing & path sep @@ -30,5 +30,5 @@ index b62f21c..c8b9593 100644 PyMethodDef testconsole_methods[] = { _TESTCONSOLE_WRITE_INPUT_METHODDEF -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0122-Return-consistent-architecture-markers-for-python-on.patch b/mingw-w64-python/0122-Return-consistent-architecture-markers-for-python-on.patch index af24f0f7c1..77fbb0694d 100644 --- a/mingw-w64-python/0122-Return-consistent-architecture-markers-for-python-on.patch +++ b/mingw-w64-python/0122-Return-consistent-architecture-markers-for-python-on.patch @@ -1,4 +1,4 @@ -From 8bcd28b1e2e0394240fa839bb4516d68339cdeaf Mon Sep 17 00:00:00 2001 +From 4f4a764595a50871a5955a0e5b53fbb6590e1bb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Storsj=C3=B6?= Date: Fri, 19 Nov 2021 12:18:06 +0200 Subject: [PATCH 122/N] Return consistent architecture markers for python on @@ -51,10 +51,10 @@ index 2d935fe..fc8132c 100644 #define ARCH_SUFFIX " 32 bit" #endif diff --git a/configure.ac b/configure.ac -index 23dd59b..e688fb8 100644 +index f5be44c..81e94c3 100644 --- a/configure.ac +++ b/configure.ac -@@ -5197,6 +5197,9 @@ case $host_os in +@@ -5209,6 +5209,9 @@ case $host_os in aarch64-*-mingw*) PYD_PLATFORM_TAG+="mingw_aarch64" ;; @@ -65,5 +65,5 @@ index 23dd59b..e688fb8 100644 AC_MSG_RESULT($PYD_PLATFORM_TAG) esac -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0123-distutils-add-back-gcc_version.patch b/mingw-w64-python/0123-distutils-add-back-gcc_version.patch index 1c93ceab1e..a6ead317b5 100644 --- a/mingw-w64-python/0123-distutils-add-back-gcc_version.patch +++ b/mingw-w64-python/0123-distutils-add-back-gcc_version.patch @@ -1,4 +1,4 @@ -From 825cae18785111ece6ac216335c4b83fccd6034c Mon Sep 17 00:00:00 2001 +From cd85d3a248958e37c27fa2a75302c9bf74f74bf2 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sun, 21 Nov 2021 14:00:06 +0100 Subject: [PATCH 123/N] distutils: add back gcc_version @@ -34,5 +34,5 @@ index 6e22555..d8c8428 100644 shared_option = "-shared" -- -2.34.0 +2.34.1 diff --git a/mingw-w64-python/0124-fix-mingw-cross-compiling-in-setup.py.patch b/mingw-w64-python/0124-fix-mingw-cross-compiling-in-setup.py.patch new file mode 100644 index 0000000000..bd820ddb5c --- /dev/null +++ b/mingw-w64-python/0124-fix-mingw-cross-compiling-in-setup.py.patch @@ -0,0 +1,47 @@ +From a0c70e5ea03a000ac5cc27ed5c64c21c6799667a Mon Sep 17 00:00:00 2001 +From: jeremyd2019 +Date: Mon, 22 Nov 2021 13:15:12 -0800 +Subject: [PATCH 124/N] fix mingw cross compiling in setup.py + +gcc outputs with `;` path delimiter on mingw, so use `os.pathsep` instead of `:` (assuming this is a host rather than target decision) + +clang does not output `LIBRARY_PATH` with `-E -v`, so add an extra call to `-print-search-dirs` to find its library path. +--- + setup.py | 15 +++++++++++++-- + 1 file changed, 13 insertions(+), 2 deletions(-) + +diff --git a/setup.py b/setup.py +index badb119..2d07ea3 100644 +--- a/setup.py ++++ b/setup.py +@@ -713,14 +713,25 @@ class PyBuildExt(build_ext): + elif line.startswith("End of search list"): + in_incdirs = False + elif (is_gcc or is_clang) and line.startswith("LIBRARY_PATH"): +- for d in line.strip().split("=")[1].split(":"): ++ for d in line.strip().split("=")[1].split(os.pathsep): + d = os.path.normpath(d) +- if '/gcc/' not in d: ++ if '/gcc/' not in d and '/clang/' not in d: + add_dir_to_list(self.compiler.library_dirs, + d) + elif (is_gcc or is_clang) and in_incdirs and '/gcc/' not in line and '/clang/' not in line: + add_dir_to_list(self.compiler.include_dirs, + line.strip()) ++ if is_clang: ++ ret = run_command('%s -print-search-dirs >%s' % (cc, tmpfile)) ++ if ret == 0: ++ with open(tmpfile) as fp: ++ for line in fp.readlines(): ++ if line.startswith("libraries:"): ++ for d in line.strip().split("=")[1].split(os.pathsep): ++ d = os.path.normpath(d) ++ if '/gcc/' not in d and '/clang/' not in d: ++ add_dir_to_list(self.compiler.library_dirs, ++ d) + finally: + os.unlink(tmpfile) + +-- +2.34.1 + diff --git a/mingw-w64-python/0125-Use-actions-setup-python-for-setting-up-correct-vers.patch b/mingw-w64-python/0125-Use-actions-setup-python-for-setting-up-correct-vers.patch new file mode 100644 index 0000000000..0b687910f5 --- /dev/null +++ b/mingw-w64-python/0125-Use-actions-setup-python-for-setting-up-correct-vers.patch @@ -0,0 +1,36 @@ +From 20616d4f465d8649a0e73c84d3e7587162da3d2d Mon Sep 17 00:00:00 2001 +From: Naveen M K +Date: Fri, 21 Jan 2022 19:25:44 +0530 +Subject: [PATCH 125/N] Use actions/setup-python for setting up correct + version in cross build + +Fixes https://github.com/msys2-contrib/cpython-mingw/issues/67 +--- + .github/workflows/mingw.yml | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +diff --git a/.github/workflows/mingw.yml b/.github/workflows/mingw.yml +index eb27adc..ffd6ecb 100644 +--- a/.github/workflows/mingw.yml ++++ b/.github/workflows/mingw.yml +@@ -162,7 +162,16 @@ jobs: + - name: Install deps + run: | + pacman --noconfirm -Suuy +- pacman --needed --noconfirm -S mingw-w64-gcc autoconf-archive autoconf automake python zip ++ pacman --needed --noconfirm -S mingw-w64-gcc autoconf-archive autoconf automake zip ++ ++ - uses: actions/setup-python@v2 ++ with: ++ python-version: '3.9' ++ ++ - name: Check Python Version ++ run: | ++ which python ++ python --version + + - name: Build + run: | +-- +2.34.1 + diff --git a/mingw-w64-python/0126-Fix-buffer-overflow-in-Py_GetSepW.patch b/mingw-w64-python/0126-Fix-buffer-overflow-in-Py_GetSepW.patch new file mode 100644 index 0000000000..b780e10db2 --- /dev/null +++ b/mingw-w64-python/0126-Fix-buffer-overflow-in-Py_GetSepW.patch @@ -0,0 +1,65 @@ +From 3210f304dbb65efb04a6525913a4dc1e0003fb46 Mon Sep 17 00:00:00 2001 +From: cat +Date: Sat, 11 Dec 2021 14:21:07 +0500 +Subject: [PATCH 126/N] Fix buffer overflow in Py_GetSepW(). + +--- + Python/pathconfig.c | 28 ++++++++++++++++++++++++++-- + 1 file changed, 26 insertions(+), 2 deletions(-) + +diff --git a/Python/pathconfig.c b/Python/pathconfig.c +index 222850b..7d75216 100644 +--- a/Python/pathconfig.c ++++ b/Python/pathconfig.c +@@ -20,6 +20,30 @@ extern "C" { + #include + #endif + ++static int ++Py_StartsWithA(const char * str, const char * prefix) ++{ ++ while(*prefix) ++ { ++ if(*prefix++ != *str++) ++ return 0; ++ } ++ ++ return 1; ++} ++ ++static int ++Py_StartsWithW(const wchar_t * str, const wchar_t * prefix) ++{ ++ while(*prefix) ++ { ++ if(*prefix++ != *str++) ++ return 0; ++ } ++ ++ return 1; ++} ++ + char + Py_GetSepA(const char *name) + { +@@ -30,7 +54,7 @@ Py_GetSepA(const char *name) + * The "\\?\" prefix .. indicate that the path should be passed to the system with minimal + * modification, which means that you cannot use forward slashes to represent path separators + */ +- if (name != NULL && memcmp(name, "\\\\?\\", sizeof("\\\\?\\") - sizeof(char)) == 0) ++ if (name != NULL && Py_StartsWithA(name, "\\\\?\\") != 0) + { + return '\\'; + } +@@ -82,7 +106,7 @@ Py_GetSepW(const wchar_t *name) + * The "\\?\" prefix .. indicate that the path should be passed to the system with minimal + * modification, which means that you cannot use forward slashes to represent path separators + */ +- if (name != NULL && memcmp(name, L"\\\\?\\", sizeof(L"\\\\?\\") - sizeof(wchar_t)) == 0) ++ if (name != NULL && Py_StartsWithW(name, L"\\\\?\\") != 0) + { + return L'\\'; + } +-- +2.34.1 + diff --git a/mingw-w64-python/0127-Remove-unnecessary-strlen-in-Py_NormalizeSepsW.patch b/mingw-w64-python/0127-Remove-unnecessary-strlen-in-Py_NormalizeSepsW.patch new file mode 100644 index 0000000000..0414138715 --- /dev/null +++ b/mingw-w64-python/0127-Remove-unnecessary-strlen-in-Py_NormalizeSepsW.patch @@ -0,0 +1,42 @@ +From 473806045dc48fa00d29c6000b03210ddd700bf6 Mon Sep 17 00:00:00 2001 +From: cat +Date: Sat, 11 Dec 2021 14:23:29 +0500 +Subject: [PATCH 127/N] Remove unnecessary strlen() in Py_NormalizeSepsW(). + +--- + Python/pathconfig.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/Python/pathconfig.c b/Python/pathconfig.c +index 7d75216..d47cb6f 100644 +--- a/Python/pathconfig.c ++++ b/Python/pathconfig.c +@@ -83,10 +83,11 @@ Py_GetAltSepA(const char *name) + void + Py_NormalizeSepsA(char *name) + { ++ assert(name != NULL); + char sep = Py_GetSepA(name); + char altsep = Py_GetAltSepA(name); + char* seps; +- if (strlen(name) > 1 && name[1] == ':') { ++ if (name[0] != '\0' && name[1] == ':') { + name[0] = toupper(name[0]); + } + seps = strchr(name, altsep); +@@ -135,10 +136,11 @@ Py_GetAltSepW(const wchar_t *name) + void + Py_NormalizeSepsW(wchar_t *name) + { ++ assert(name != NULL); + wchar_t sep = Py_GetSepW(name); + wchar_t altsep = Py_GetAltSepW(name); + wchar_t* seps; +- if (wcslen(name) > 1 && name[1] == L':') { ++ if (name[0] != L'\0' && name[1] == L':') { + name[0] = towupper(name[0]); + } + seps = wcschr(name, altsep); +-- +2.34.1 + diff --git a/mingw-w64-python/0128-handle-ncursesw-pkg-config-when-cross-compiling.patch b/mingw-w64-python/0128-handle-ncursesw-pkg-config-when-cross-compiling.patch new file mode 100644 index 0000000000..32b7e929e1 --- /dev/null +++ b/mingw-w64-python/0128-handle-ncursesw-pkg-config-when-cross-compiling.patch @@ -0,0 +1,63 @@ +From 12d1cb5b7c60901e36163b3e0599f11703c4946a Mon Sep 17 00:00:00 2001 +From: jeremyd2019 +Date: Mon, 22 Nov 2021 16:04:41 -0800 +Subject: [PATCH 128/N] handle ncursesw pkg-config when cross-compiling + +strip extra args from pkg-config --cflags-only-I, setup.py is only expecting a single path. + +Use pkg-config ncursesw include dir even if cross-compiling (PKG_CONFIG_PATH should be set in that case). +--- + configure.ac | 8 +++----- + setup.py | 3 +-- + 2 files changed, 4 insertions(+), 7 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 81e94c3..ca712f1 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3403,7 +3403,7 @@ else + fi + + if test "$with_system_ffi" = "yes" && test -n "$PKG_CONFIG"; then +- LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`" ++ LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ .*$//'`" + else + LIBFFI_INCLUDEDIR="" + fi +@@ -5597,7 +5597,7 @@ then + fi + + if test -n "$PKG_CONFIG"; then +- NCURSESW_INCLUDEDIR="`"$PKG_CONFIG" ncursesw --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`" ++ NCURSESW_INCLUDEDIR="`"$PKG_CONFIG" ncursesw --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ .*$//'`" + else + NCURSESW_INCLUDEDIR="" + fi +@@ -5605,9 +5605,7 @@ AC_SUBST(NCURSESW_INCLUDEDIR) + + # first curses header check + ac_save_cppflags="$CPPFLAGS" +-if test "$cross_compiling" = no; then +- CPPFLAGS="$CPPFLAGS -I$NCURSESW_INCLUDEDIR" +-fi ++CPPFLAGS="$CPPFLAGS -I$NCURSESW_INCLUDEDIR" + + AC_CHECK_HEADERS(curses.h ncurses.h) + +diff --git a/setup.py b/setup.py +index 2d07ea3..7ef50e9 100644 +--- a/setup.py ++++ b/setup.py +@@ -1117,8 +1117,7 @@ class PyBuildExt(build_ext): + panel_library = 'panel' + if curses_library == 'ncursesw': + curses_defines.append(('HAVE_NCURSESW', '1')) +- if not CROSS_COMPILING: +- curses_includes.append(sysconfig.get_config_var("NCURSESW_INCLUDEDIR")) ++ curses_includes.append(sysconfig.get_config_var("NCURSESW_INCLUDEDIR")) + # Bug 1464056: If _curses.so links with ncursesw, + # _curses_panel.so must link with panelw. + panel_library = 'panelw' +-- +2.34.1 + diff --git a/mingw-w64-python/PKGBUILD b/mingw-w64-python/PKGBUILD index dea9387652..62bcfe3fa2 100644 --- a/mingw-w64-python/PKGBUILD +++ b/mingw-w64-python/PKGBUILD @@ -21,8 +21,8 @@ else pkgbase="mingw-w64-${_realname}${_pybasever}" pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}${_pybasever}") fi -pkgver=${_pybasever}.7 -pkgrel=4 +pkgver=${_pybasever}.10 +pkgrel=2 pkgdesc="A high-level scripting language (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') @@ -170,7 +170,12 @@ source=("https://www.python.org/ftp/python/${pkgver%rc?}/Python-${pkgver}.tar.xz 0120-distutils-split-CC-env-var-before-passing-to-subproc.patch 0121-_testconsole.c-Fix-casing-path-sep.patch 0122-Return-consistent-architecture-markers-for-python-on.patch - 0123-distutils-add-back-gcc_version.patch) + 0123-distutils-add-back-gcc_version.patch + 0124-fix-mingw-cross-compiling-in-setup.py.patch + 0125-Use-actions-setup-python-for-setting-up-correct-vers.patch + 0126-Fix-buffer-overflow-in-Py_GetSepW.patch + 0127-Remove-unnecessary-strlen-in-Py_NormalizeSepsW.patch + 0128-handle-ncursesw-pkg-config-when-cross-compiling.patch) # Helper macros to help make tasks easier # apply_patch_with_msg() { @@ -306,7 +311,12 @@ prepare() { 0120-distutils-split-CC-env-var-before-passing-to-subproc.patch \ 0121-_testconsole.c-Fix-casing-path-sep.patch \ 0122-Return-consistent-architecture-markers-for-python-on.patch \ - 0123-distutils-add-back-gcc_version.patch + 0123-distutils-add-back-gcc_version.patch \ + 0124-fix-mingw-cross-compiling-in-setup.py.patch \ + 0125-Use-actions-setup-python-for-setting-up-correct-vers.patch \ + 0126-Fix-buffer-overflow-in-Py_GetSepW.patch \ + 0127-Remove-unnecessary-strlen-in-Py_NormalizeSepsW.patch \ + 0128-handle-ncursesw-pkg-config-when-cross-compiling.patch autoreconf -vfi } @@ -402,127 +412,132 @@ package() { fi } -sha256sums=('f8145616e68c00041d1a6399b76387390388f8359581abc24432bb969b5e3c57' - '62dee5891edefd2c05f7c5fb93becc4a83eeb5ff9ac6ed2ffb37cd93a5296c2f' - 'facf4dd94f93745a5ffa03b0d9b00b032d85a1629b91ba0113152f2fb20110df' - '31b5385e31ead9867047d9d343d4567b49f51d5cb6301076d243c1d8537789cb' - '40fd2bbc169f0db3fb3fe9ec1f960b1dfbe15dfd8c462c10f36e680150368693' - 'a4b0454b42e1ce408f6c6632cec94175b13c6d5ee2aa3cd33d3e4b4b6d48d1a7' - '44d18e581bdc6519ee746e63fff4ea81b913ec15d09fb575701f0a2412c02515' - '88c3bcdbe91e5221e7964e83b267ed63d4b46e0a304dd75b88c796485d4118e2' - '2aa4db9736094c76529d4e72a740aff140161f5ba52002b70e1d7110c069e1d8' - 'daec5d65d62d742f421b41bb93fb327acd1dde42c398c726b0293dca41d17586' - '7e7ad89cc3686beff133a6a15744ac523ebfceffc853a327055698ecb1df9c97' - 'd233182363189d80f7a9fdc21957e0cf0d24eec96420e93ba157817d18258902' - 'c137f268598e317f1ddb8d0e8c50ab34afb9f8af082b70f02fafa3187b986e77' - '034a0bba9a867056d21a8c553988ecbb1ec9a05c916770aa4f9fdefd47bf69f0' - '5edebfd151887950f63f57d1fb8b04fbd07d7a9a2448a7c6117f7ae44ae277a1' - 'fae9ac675f98bab4e069a08146529842a1de67b781c1a34d9cbb2c34473bd534' - '4fdfebd8cfdbf063d4b6f3ed8ec0cfcf3eb24cc357a8355d48635ee435424e1c' - '74319cb9003d5d8b0dd8cbd13ba1aadafd97b9c0e6745d4c968360c0db8efd85' - '7bfdd2dae64607834fa86ea628f2ab516306cc630ae9a25cd0e50f26afc38410' - '895d7db4d450ef65532b75afff0dee59f5c6201e49513804a5b5b605c443d35c' - 'e91c00307f4ef91f4ce0f2afe7242ed72a97b7a4cabe78cbe5b637780153782e' - '224032f9ccdd02bd6ead869b994fae615ebf64861719f07ed1d04ba7501b8bf3' - 'cce804c221beaadd88a0caefcb1fab7b4b5d12676e7480e080027712fed5f535' - 'bb61e25cdeda43600f021fda5ae12a3894e4edc4aa7ab88a82fdfbee5baef169' - 'f8cc1303c4d1ad8902c31eb28f2f50f84ebae8534d114f3a710842436f5d0156' - 'ab8e7b565b616cd38912fd985b2b179caebf94ca3a93989b628b10aa5497bcf5' - 'baac8ad6653f230b0cd246750f5224376d550e415e01abf538b317af79ff45f2' - '0bd5d9c6165a292e46b20db43848bf3fc01aed351bc0129e0e8394b337124e63' - 'cecc2f13e03f2a02cd3168cd59178e02b96898a79d26c25a6383cc90e85bc99a' - '3a58224757d0137c1829811773c6bc55b41ec9a71045a3aa8104c17cd2d1bc7b' - '2aac0253b2da3e0df0ecdb051f8ed8dee7cf512d347507173219b0d4479212e5' - '970ffa333e58eee1c4695bc25b3e9c65100b225d51e8da1ae8752d203b5dcf42' - 'b73d39ef2a1c1f2b32ae6ce534be7651cdf693487861e432bbfcad3c03f2fcd3' - 'eb8c6daa2a51f462a6b12fcf2eae08b86ebe5fe9fe8ce6ccb69b4c80876703ba' - 'ba8137f997bcae37963e430c59a0e8f306f8f2815dcba50e69da36a6326066c4' - '41523d21ae6e13c878d929dfcc86da3913752ea0c325e16060bcf115814681fa' - 'e7d181d5562b918837efa4c5a77884bde328ab81522e11d0989ddec8f4518995' - '33808d7711313245a9f4275579e0f1d976f35a068d7f90381ab8301765ceede4' - 'be4685b97eb1062f9cd3840f22bb796e89a8b56985185e324f5e880756d005aa' - '0f15005bf785df95402fb7cc974ee9625b70dca60de886e77153300d71444243' - '9fe5c25c9c3e3d0903d70b86eb3db089fcf87a534709cf648334d8d629ef561e' - 'b658719f2ee4139d39b8578d65b51f8bf49de037c289730a72bf4dfbd2da0486' - '868f5345735931a80f5e5feebab34f64b934870b2a1b51cc21649d92915f3195' - '56fe041fe46eff76e76339476181f46f9dd5b13d02c00d1fec6e7858861722d7' - '1563ceec0dabfe9f2ef4aee4d64c2f91ecaa676e8e0b50ce24555fd154270cb5' - 'c5848a029d2a99b1243bb29c4ca312289eed1e87e56ab116388d5f16657dd7f9' - 'cb7826bcd96a8d5e7e54d3b68d3c380239e256cfbe7a9158a6df5291d88b7a1c' - '2a19cb76fce616706a756824f8fc15593705a510d75e7470472354b0e7d9651f' - '36276acaef36d7f931466b354ad65518f8a281e0d710b2559816227c5f9e896b' - '3e09967925852f77d65bdbb8ef67d4f831b15dbf84f8ee4b302a124abe591dd7' - 'd810d09d7d9c51764fd2979c5d993788922f8c3973e634ff794120b4ef3ebd82' - '9c49ce0e358eeec2c601e40d6be1d77bf1cd768718e957b0b4fa05fe29c8afe7' - '3b4218fe344cfca87412e3a5c8a6ab4e27a15a51a2f6a7b5d9b5516092232edd' - 'bf1d6c7c015057c3a866f3162b5fa519aa5c922edcbd8f5a80cb5339b1a7d6f8' - 'c4b4519eacd0bc8d4539929794fd1dc64051a0c08c8ada84f497ed91e5d8a506' - 'e413edeed77f5d50cfc3820748bf1416098b9fdb9ac066c8386ed0bdea3c74f2' - 'eaaae33a228ef8e8756b64a484abec18c1b0ead89b791c0712637e8a7292c3eb' - '0454bf64b7cd457ce9bbffa0d485b50c0b67826ccc7aee5c489df83e20cc8a5f' - 'ce94a5bfda2bbd6c9d8d98f2677c31f4cec5102611e78bc6d38ba13dfa22bf0b' - '9a4161f8684bdb2b9e0581b2156419ccd0dfe8b0486af6787be2985928ee94a3' - '631d9ff17da9fd37d0e299ee8b216e8344e057f4a7440c07aa497985afd6664b' - 'ea9d50b27a8b29b469bbe4f2cb5e695691af698827e790e2ad1420b6ab04b233' - 'ef0a4f372c5903212e24918aac86069d0798cd361554538037b3588e9bf19523' - '2086dadea83905f42988ff5037d31be4dbe8253aa83d6b67a332d3a4cf165a61' - 'ef31fd0238162f2109e9ee80a1e41ce2a756ada8171cdec0a8f37ff3f76e8cd8' - 'd45a8392eee1d7d5a7d91ae61f96a885a4899104ac9533ed6a32ce16f35d1852' - '98c4ddbef16395313d296cf86553c0d9d061308137fde247dcbc633de5e2461d' - 'cf1128a6430a596301769281ec2c4f2dafd328b31bc9501700a185a21fd2fc23' - '2547abc66905ea80b599e4d32694b56c8ab4092915807d825988826b85dee643' - '5fcf08ed217adbfe3f2323a8cf0838ec8b11173247ee734b6984845efb555ed1' - 'f670325ad0dc35d8710bd9109a115eda65db44b0bd7dc6c44900c2558e58fc0c' - 'eb8b9f47583cb54e34e610e9025eb5f2049cdd701e4bd7f9de45759eaf364a92' - '359373beb1f2fcb911659f05904bbd483cf35827562c14c5877f6be5a2ce20a7' - '6e50a79feb4ccc655666c95c1d421a1617af9246f967e50862f41bf7025156fd' - '1b2a28b12c017d13358d35747ac34b1167509ad1df387359c0b40020a1273b8e' - '7240b47fb2d64c20d35183af9e8b1de88eb8725d98ecd9dd7a099d6ddebf6804' - 'de98c0fb9472e6fce69a9a99c208577708c4c9bd27e004319977b71eb6a51ce8' - 'ff30c56ffced45caa4129d2c33196237d803f36759b2bfe10aa6a918098fa1b1' - 'c9f7bf2853bbc00729adbd03e32d25a15525887d57d947b78d0d4ae4b0b81456' - 'a668afa04b36e90a37cb52b1b00696c4ba4637e1b55dee9db1e3b07475bcb909' - '5ef6761afa3cec5921383f9a0a015d139335cf58ddc04f70a38cf10b4302da61' - 'fcad9789af50cdf48b0c61b257ef110c173908e963ae865d20013e9ce00a10f2' - '30045769cf6f34e436152a87bfd676a9c95399c2c0f5b2fcba2b29e74dd1173f' - '9782367937a0848eb4672c60a73d94ba27dd3d3794b32f26641b1da4ad417f5b' - '0c3b64d9d3c876f8aeda7b90b988ddbf6f7f0cc41b79476560d52b0812d601af' - '2860fa9641d27f72cec51096f9bb793f7527316317b6558d3774e221c050d4dc' - 'ceadfe08d129b940f5fbbbd7676482e2de30fa3163f8faf5439717e9743905e9' - '45b8f9cea7cf42bd52969f9b8518b5d585aaf966770517d673c5276bb0232b77' - '8b3c21e13d1368907af5f6381af100af95860fc639d62b240d8cb4e7fcdd3620' - 'b757a321247d91061cec371eeba8d83dc570be5f2ef3114baadfe1e400242a55' - '3dfecad6652374ab78cfd6c2d2379f28d261e900c54e064758547a4d14624b52' - 'bc420000d9968dedf38bcfea72396afa577e867069986cf4b09d3ef4f18d2e08' - '03a8660757c9328431b26c6db71504b3d3b0b1e99da05b890b0617a01fd50cac' - 'd6c0230be39d4254ee9a977ef8846168da2165178e5d4451670685db0d6be54b' - 'f5c5a2c9c1f2caf48c860b53f78d2f50488e72ba8e7a63409545a37fd5f3458d' - 'a367e7df40d991755dde4a06f626ad00f3289f29da3b7b98dd14dc40b62c596c' - 'cebe9d80e1073ce9b2666bd8aba1cf9b5faee3e50075cb415cf9be4267962569' - '09cd036c0612adc45de07090ec79f35856189ca4975573d08e92fa11d3c55502' - '2e46feb5f6ec1eed759b2afd3089bb829d45baa7482cf8fe12b3c1f25b418d8b' - 'e0e2f45c23934879d35d1ce34b94b4cf56187076df985c3ed138977827fa1691' - '182b4c2c50325b4d7ef552caa453e6bbe02b4bd3fb702215d20449e8e233cf94' - 'a4a8c74a2c329bb503e8377c0ca55b57d8c0252f1c96f06ba96c4c54012854fd' - '96c3c78efdde9ee90f238c6b093ccd5d5ebfac45914a2da156dad9cf287633f4' - 'beff69d5a66e14a4bc56050800cef779c96049aef722ca30a49d0b52f25cb4a6' - '120aed1c70df0baae6e78b896aa016929617dfaf3e3afc721f0f9779384529d7' - 'a8f97320a115e5f1525b364a9427481eb6d1418128106e7a99279b86f95b87d3' - '6f1b6f865052c9081b8a9956775d621b2dbfc6d22b4dd0e35db47b74192b07c7' - 'caca983baa6cc004b3ef2ee913af5ec1982ad8f04390dd335503b0185cd2d7e5' - 'e3b5abae5a1b3bbe6108b732fe2dc9f4b14c8962161dc13ebd4df69bbd870b4c' - '0d6a07d8e3c2f5e29b00dc99f939fae79d903c464c38b6590999b8d10d41ef19' - 'c9b2552990c528d0f7be7ad82803851bb16d574e7665adfb3eae3a24aae83fc5' - 'ce21963119d3b568c787081814bbe9d46e352ea8134838b7e092be004e5663d2' - 'a299a06c07a2a5b207a2e0bf9ce9b79427efeb92b0a3e150f0a456c81cb451b4' - 'dbec7ed2680a489446bd6f767149ace3c7d624842d9503249ecad7c4c9714f59' - '63e512d17e64f1500ead8a479c73296c6e4ada26175e867d2c58079429c4e251' - '102d0812928bb817910eb5d965ca1ab3b25d4de048dd5fc8d90bdac30585f6f7' - '5beda69c068727d1c5c94daf61f945febb493da1ca9681071e9718d3d4b146a4' - '678b0f67b6a7b9615c1c31fdab54b892c26ad26ad2f61957d7ea00e7922a77d3' - '499c1338b65229c1fd18eb05e45ee594eef1f8aaf217fb5a1e4b8ac982432aa6' - '56ae4c1a398914f7dfa93f4429d2be6e9f81c07d876824e5520e31ecbc98fad9' - 'f72499c24b56e13817255fedb14299a741cd7e2ba27d7645b919ddfb95c78db9' - 'e3fcb48ac5bcf26f27d3eafc20339160cafabdad40c2f50b52b2511300058579' - '0d8c0df418f382c8a46544d7ddfce508e010c8f94d54160bb02593c19a006ea5' - '5dad739b639b0db6344be0faa1f68243567f6a625c4ce9a2d263d06e55f66367') +sha256sums=('0a8fbfb5287ebc3a13e9baf3d54e08fa06778ffeccf6311aef821bb3a6586cc8' + '60650cee2336a38745531e0c471399ecfc368700f4d28793797c302c3a50a566' + '168a439e7aff58ed3dc8f373516ec98eb30913fc1d2f221179c203089b0edcf5' + '38224674f5c5ffb0091823c383fe01a984df8a1ad04600d2ca8626bc56686b30' + '09840437dd5ef3a7f95c8b82f0b848bf3b6013a75935bd7e860514a0d4816776' + 'a08b996f85450f6d0034e051319f2f251378cbad731758fe41b95a8a63d8c114' + '936f53654f5bb61ba17b1865890c19f265985355396ac6cf44f868809156178e' + '86c7b3a2900c8c865caf3822cb6f386e364c621df762778087238cd1dfeae5f2' + 'b7fbbfe4ee8427a1557e03ef8a882063c9c4442ad2704a5b1405bc0887a63bc7' + 'f9d8304547f4e78293c96ed19038a7204520797a337a97ff8adc3e46deb1c772' + '5fc51578040d4d2b6ba30437a882b62a850bdfb6cab5a02e2ab073d47c5a2727' + '3451df1a841470d5441644acaec1e3fa2a68c505c93419251ddeb673141f8297' + 'fee31a78904b3728e548a64af7172100f97b4f61db26b02b31f7ae3f4ee0d17d' + '86867a92b3d230bb6167c04fbb0fcd479cd85823ecda49cc59490c6afae9c900' + '3cd374775817ff1c345bb04654df07d3e363a3e3513dce19969b4710343da048' + '5c3b83875f9bb96dfc46db2876fd11f52ff11b7ee419ab3117643527b2f7e752' + 'e1f4bf7ee19a132682088bd0afebf4e38fcfe6f61f7a068a2bd8384036f986ad' + 'e6a813338ff07bcdeab6a9a2cfd448a6abe85f9407e6f294ea938b53ece9f916' + '8fc1ca5cc349f0101bcb6411c6727b4510f432ac449fff35941f34d6f3b30846' + 'bbe154f44ffac46b365c9100d1fba385d9fe727ee9698ce47684c82cc2c2fc0a' + 'd07b44e0461147d4b1fac4cfe7d49f95ecfe19f7e872e93c02653620b378c1ae' + '111d535b6938515b2fe66bd0870e09f7e6110bfbd53b2b896f435de93672ba9b' + '49f98bd4b4cb2bf26d40fe53918ef4b8ea5f366e077e24cfce265004d9e5e813' + '727968284fa21a92dad810e444091350fac9b34aca29f772e67f6ac47e74284d' + 'a5bbaafc5eed72346f618e2d3642109f31f1e62d8025fa5ccd2a73853fb81f64' + '95883f9bdb8b1ba84ca02e803c1aac662bb63fe3c35c18f70a1ffee07db2e760' + '7fd66c363e37673a90189efc832647834bc2b4021169b0a4c2c3f553e2aee252' + '418cdcca9196bb396b2c2cbfaecc54ac4858c5aaf040d97f00cd2e8fbc2101bb' + 'b467817f1b44c14ee218156a1d39007d96bbf924e8d784a97ee6247c09ca7790' + '88c22e47524d5ee5669d0fe470863a9e602d6f033225575e07d0e40069b96021' + '95cc396fcb39ab9cd8b0ab0118a2aab680ffd780e4223738ae6096b45637c103' + 'c4e5ca79353e3138cfca40d8e837436e0391b8a899ef4fbb12b7f8cfae70685a' + 'bf9bb6ec92e57f7ac8b8036dce564937319efe9bec789e90c9e5f535cf199a2d' + '7642ef2113842a1d5b82d4e2975c3101d0e8a7cfcebb21618f42b99b7346710a' + '04837a3b9a35f5ab49ad5f96a292565aaa27d3b377e6c46c41764373156235c4' + 'c1918a148aeb2c55139cd08c27974ba6edd0ef0248474a739c27ddb0e7fdba27' + '493ebda56669d48c756cd499b6eda43b975a71a3a04aef50949e8afdb31ebb64' + '927cf53ad8053cf04c670925dbc7ba70c98de33a1d7830c4e3f6242bba627e72' + '7aa0e088de3f7d5ed56de08e854b0ccf7447587c031b291cb70385314ab23049' + '782d5705129ce4432df35377cd8143a83111e03c2244ed7cc4bdc44d6ff07856' + 'e2e46ce6a0ee1dc7b88875a01be16ac8d142c8b588c5e434bfe6663c90ddf2df' + 'e3be03dc47acd14dd2f2a730c6dc5518f814d5841d62abea6a0b48efa06a4228' + '8e5a3171da2c2b3c771b1855b7918b7326c872de7fa0d14bcb65608837cbeea2' + 'd7798e45c09f0fd38c123e7ca5224ea2554e758a6d870347c5fef6edc50b6c6d' + 'b35baeb182ce5193613029602c3975f8df62ff2914329baf2c09d3b615620b2a' + '4fcb2f83b721e0529ce89fea66728b416f703caa49e2c169f9e23c9a60e34592' + 'a9b1a3956f208db9fff439a98535c287385a7f5e2631a4181582b8ae72a9c589' + '92a9af8ff4295279cf647c01d84081696087d9f5af33f06079c5f5594a71b983' + '7f89f54f228e93e7214a4c63fef63fe6114afae7e0645e2b89c1ab4b18c36403' + '09793e3629c2e173a034e0bdd182d2d71e26675434951356839a241d0094f3cf' + '6192d280c42f769e9ed78dcedf853e3c8f0bc8d3cc55238f0650f3699dc5c71b' + '8811fc1885cab84ec168b75af75a1aa80a889831d750403a78701ba953171369' + 'a275aef09e2d1de2f3a86146dac64fc43c67a4316c2d357e373da9fed6da58a1' + 'ca05645a9a11218dd5af61dd29189d4987ac73835df2fd2fe2584c50b11e3a53' + 'e98878ba09845b99b1126b62fff9bff287a971a5af7a4a40d725652144e9a929' + '4b0a7a3af45c5c3de5dfc2d4f8e22753f74dccd683ad11aabaa9efa4f71124c0' + '5066a8e32ede96a77b012295169620bfe5e91b6976fd6688a8d014dc007c6f07' + '2ab1246d675e3befd23c666eff2d691986526f8a07ec8932876b762ce877a668' + '941cd99a3ce9b345af8bdcd2b260a49fa161575ee365e56e8d5074b399b33798' + '76e840d422804f01bac1b51e936b1626b87eb867f624245aa58864706186aa81' + '8723dbd000deff073a02c6823236dd207d524e7951fdeebe961e5c2f5e29ba21' + '7a80ff908bf9a5e82c5664550a2fd259b037ca21cdb56aa081ff73ac0b15edf2' + 'd6c23fe6707926d2e0184b3f680766fcb669e2397157a9366405e9350addd030' + 'aa562c7b20d64175fe191cd6c00eb4550aa5d48e00031d45be67f9bea69279c0' + 'b5631dd8f2f4fafdef0c3d0becb33d63021f334fd2451c9ff4b527e6780736df' + '36c7ca7815354e5765c0cf4b16d9a3a83b55261d0a731962c7fdde5f6912a14f' + '271aada30e4887a290c3532bdc4820d58b2424f7866ad8374840d26e338765c2' + '64eb809b66e4ee7bfd8aba878e6fa4ad037eeb79c8d1c1efc7a0c6a39c61d0a0' + '586cb55731714973d904e071be3a161d21d3e99a8a18f4f266068a511e739ef8' + 'b453a6e53f3c1f0d1fa1b30e1114303123ba6a2399eafd5e0d80da1eea859042' + '1948e440008606c888957a85511b53d88ea8f7a13860bf6bb8429f8362634730' + '8dd42da695f2e43be5c39a68ac9d2ef7af93604e23c9aaaf55514db546a57708' + 'acfdc04626e7abc18f0b1894a80dc0761c1a62d37652dcc848c6efe952126d50' + '0391bb4743bf857b0cfeeac44e3fd8aa4a776e5478ea7d770101857c2bc5c498' + 'ec9091d2e7bd09a6ca5697a5f443bbb1635d63b43711e08e1a9e3f76cd66df2d' + '96ec270e675c1b0bce7d34fe86b92cedbc55d646a83f09935753f9c9a7622f00' + '6231ae6c6b94609a03c8c1eed0ed447693f3fa97e9550cd5ac397ad4ced82c09' + '10a186d35345e5873de3f3d5e731f4947028fda015d074069873788d4bd8ecd1' + '64fa589875de2196724977007e3bff8f1c9d0511d1ec3f4b56b02c5deb5072ba' + '80d92890d9439b47e776025e6431f192d6f87957ff90e418317946d72ad35d6c' + 'be9c9a3f04d690547c9590263b946d2be1365beeb9d913b6c7c3394f996bbf1c' + '671d2bc567f0db768d9637df3500100274e82357469f955285ad0e0165142d92' + 'cb33fae278f56414e0f4596982fc587e3588c53c8ea63e9bfe31f0ede848f8f5' + 'f1c09484198dbea759f597308d7c546c3b282441f9e53e9bc69b15030c80694f' + 'fa3f0bbaeed5ad5a9a55cea1e18c68364588156f8181afe7eed4278adb87416a' + 'dc319c34eab5dcb0aaa226439fa9c9958c791aed2228d8711af71c9559654c95' + '40a306f53d80f2086652eb6f89675587fb91f807824a2a830f28dbd744081b68' + '5edf62f1a5058b116804d1d9a794d2773573c918d9f0bf5d8697554378c39979' + '273df9944f409f39d64401f4f69360a434d09e382bf4d86892861e2fa86b2fb6' + 'aa818920ce83da07cd1108815172984b883af39486e017be5fc3b7d08f5dd155' + '190056e7b1258e6ad8e04ebfcda863d6dc9e52449a874fa86629d0b3650d09c6' + 'ead7b75338b7ca9fbe76f00d861bfb6a7eed0269b6d514565564e82873cf29ef' + '40891b0fb8e73d197a5be3483009dae171f4014c6fff0b6d38260ec749868430' + '077e86394f2297498d0bb0e31ca182378eaaf6ec4699fe0825825714a169e486' + '16537dc7c2541e6630d3940fb1621a2fddac23c635432c100417b9cc017c1744' + '9ab5e7b9779c37d97d3fb8721d075ca7218e91d7f33614e2a6fc543cb2fccebe' + '8fffbcae11339fed8bc5db8461bf33d1a21731472307095d86ce89bb70efae39' + 'fb20135c52b2d31099413e4093aa0176eac5bb8f4aadae44da9953abf99f4808' + '60203aad4248ebca91082b2ab026255adfb91b3e97ae91517c987038463ab5b5' + '27667a57d9d92c9845d75336e7edb181b3259da5c35503ef4b318e6933662568' + '7c85cbde9d63d48f30411f8586f13e7193445fb7e23cd2a4e526a00f4036153d' + '6fcb445cfb69bf303cbf218540090cb5bfcb3912ed34c9da379e2c8ddd62d02a' + '67adb386399de2a6e1ba037b43bccc03525c34af0d2a108e062f33ee834d592b' + '4be9c3edd0c4ede5e987e7a0ecd9c0c5d9268f9e0a0218c48246c1c7b14bc92e' + '9bd54319dee4744f96dcd2af76293772a4c70c28fed217c704209f69d070647a' + 'c6bf66856da49ea29d8e3a6abb8a998a4281ecbf012e205f6d950dc50b417507' + '3db41a2f58ea08abfa56269c3385c4c88c28e7f5f3d8705cea1e23f2882ec84e' + 'd6146f24a1318b7a110d3670b425c44288cfb70ea9289eed991ca887afef8bd3' + '70ea4ad3da593ffe72365fdfeada65e93d1d4abb738513ecebd463a79ee5ddf7' + '83d522bd0cfd1b428f77d3ba9e3e96372c41c30ee6355630697cb97e17016cd5' + '026719b4a09d296a4fc6bfb46137674f10915cb331c38a2914344d549fdc9277' + '1e29a61bd6af94ede2f02aa9cd30f827b5323b13d47350d3d799b9af9acc49c5' + 'b5a9ed1d214ab2e60c7e8db29dedcf8a19a9aad3f333016478368fd8edd34f29' + '8006557662ded0093128676c00d79e77a91d383634a88d3fefeadaf9442001d2' + 'f0e2052e660c25997c096e4364d1c6f257d7f2dbd2631f18505d0a009535e92b' + '8ede2976cabf1f5bb0892b5682db4992c0551f44adc547261a4553b53169ed2c' + 'c1544e7891eade882aeeaa4086255b31a9026891d87868705f3713755c084eba' + 'ec48b3816cc73080859c2252f1ce6a6a9f15890b15e133d07a69191f7d68da33' + 'a300004ba6b22874997c93cbf6e1f9e8eb1b6b286c464bfac4d02f4974d1a5dd' + '7cd30e9a8877c03ddcbc306c444e3080b6f6fc1b4f8e037c0d9f61a322b77264' + '8a4b437f2d077a184743c2c628d92ac2d87cae3b16aaae73c0a5ca1aa5ecdaff' + 'c81ce6b1924df5cee69d02694abbf198e8050d803e5d009df16d557cb3607414' + '9bd3388aacac702ff3f73fb6d076ac91e5a4775e9317ac4d683100f38b9db62e' + '04318674b0493d8f844bd1792209615e661ad702f3aacb10f2210458c99e1cfd' + 'e77aab9e9bf6c070c9c51b85d20d2ab35e227fd9d214a928c70ea1bbc3a5c1d9' + 'b89e281b8ed5e036ed76b8fe1dc4cca27bc53181c1acb844a546fe33a862d782' + 'df7751b5e4d4973f6610dcf4b069395e0cc91c5f23842c54deb9ae31cf1220c9' + 'c190aad285352d3084052b1dee2dfc5637b4d3c2b9826cea0be59f92a23eda05' + 'ee691f942441376b359abe8ee42cf5c915a51c69b8b73a0a504dd978bdbb519e') From f1bb189278b236dd6d090d47a697aa6ef4352375 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Tue, 25 Jan 2022 14:42:10 +0530 Subject: [PATCH 100/226] python-greenlet: update to 1.1.2 --- mingw-w64-python-greenlet/PKGBUILD | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/mingw-w64-python-greenlet/PKGBUILD b/mingw-w64-python-greenlet/PKGBUILD index dff0bddef4..c10fa63b33 100644 --- a/mingw-w64-python-greenlet/PKGBUILD +++ b/mingw-w64-python-greenlet/PKGBUILD @@ -6,11 +6,11 @@ pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") provides=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") conflicts=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") replaces=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") -pkgver=1.0.0 -pkgrel=2 +pkgver=1.1.2 +pkgrel=1 pkgdesc="Lightweight in-process concurrent programming (mingw-w64)" arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') url="https://pypi.python.org/pypi/greenlet" license=('MIT') depends=("${MINGW_PACKAGE_PREFIX}-python") @@ -18,21 +18,20 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools" "${MINGW_PACKAGE_PREFIX}-cc") options=('staticlibs' 'strip' '!debug') source=("${_realname}-${pkgver}.tar.gz::https://files.pythonhosted.org/packages/source/g/greenlet/${_realname}-${pkgver}.tar.gz") -sha256sums=('719e169c79255816cdcf6dccd9ed2d089a72a9f6c42273aae12d55e8d35bdcf8') +sha256sums=('e30f5ea4ae2346e62cedde8794a56858a67b878dd79f7df76a0767e356b1744a') prepare() { - cd "${srcdir}" - rm -rf python-build-${CARCH} | true - cp -r "${_realname}-${pkgver}" "python-build-${CARCH}" + rm -rf "python-build-${MSYSTEM}" | true + cp -r "${_realname}-${pkgver}" "python-build-${MSYSTEM}" } build() { - cd "${srcdir}/python-build-${CARCH}" + cd "${srcdir}/python-build-${MSYSTEM}" ${MINGW_PREFIX}/bin/python setup.py build } package() { - cd "${srcdir}/python-build-${CARCH}" + cd "${srcdir}/python-build-${MSYSTEM}" MSYS2_ARG_CONV_EXCL="--prefix=;--install-scripts=;--install-platlib=" \ ${MINGW_PREFIX}/bin/python setup.py install --prefix=${MINGW_PREFIX} \ From 063c277da753875b033e417fe12cb75a818554a2 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Tue, 25 Jan 2022 14:45:45 +0530 Subject: [PATCH 101/226] python-monotonic: update to 1.6 Install license file. --- mingw-w64-python-monotonic/PKGBUILD | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/mingw-w64-python-monotonic/PKGBUILD b/mingw-w64-python-monotonic/PKGBUILD index c4154bed29..78146d92cd 100644 --- a/mingw-w64-python-monotonic/PKGBUILD +++ b/mingw-w64-python-monotonic/PKGBUILD @@ -6,42 +6,43 @@ pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") provides=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") conflicts=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") replaces=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") -pkgver=1.5 -pkgrel=2 -pkgdesc="An implementation of time.monotonic() for Python 2 & Python 3 (mingw-w64)" +pkgver=1.6 +pkgrel=1 +pkgdesc="An implementation of time.monotonic() for Python (mingw-w64)" arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') -url='https://github.com/atdt/monotonic' +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') +url='https://pypi.python.org/pypi/monotonic' license=('Apache') depends=("${MINGW_PACKAGE_PREFIX}-python") makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools") options=('staticlibs' 'strip' '!debug') source=("${_realname}-${pkgver}.tar.gz"::"https://github.com/atdt/monotonic/archive/${pkgver}.tar.gz") -sha256sums=('d58dc86a7b0d714702be02df906d2712901efef6a16b3aafc95aaa9174e27771') +sha256sums=('9609c249aed584fd714811014870650d08d6f6414402b5a190663c49bf83b221') prepare() { - cd "${srcdir}" - rm -rf python-build-${CARCH} | true - cp -r "${_realname}-${pkgver}" "python-build-${CARCH}" + rm -rf "python-build-${MSYSTEM}" | true + cp -r "${_realname}-${pkgver}" "python-build-${MSYSTEM}" # Set version for setuptools_scm export SETUPTOOLS_SCM_PRETEND_VERSION=${pkgver} } build() { - cd "${srcdir}/python-build-${CARCH}" + cd "${srcdir}/python-build-${MSYSTEM}" ${MINGW_PREFIX}/bin/python setup.py build } check() { - cd "${srcdir}/python-build-${CARCH}" + cd "${srcdir}/python-build-${MSYSTEM}" ${MINGW_PREFIX}/bin/python setup.py check } package() { - cd "${srcdir}/python-build-${CARCH}" + cd "${srcdir}/python-build-${MSYSTEM}" MSYS2_ARG_CONV_EXCL="--prefix=;--install-scripts=;--install-platlib=" \ ${MINGW_PREFIX}/bin/python setup.py install --prefix=${MINGW_PREFIX} \ --root="${pkgdir}" --optimize=1 --skip-build + + install -Dm644 LICENSE "${pkgdir}${MINGW_PREFIX}/share/licenses/python-${_realname}/LICENSE" } From 55734265d5ec8f74be4862699a99a1f9abf376e6 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Tue, 25 Jan 2022 14:49:56 +0530 Subject: [PATCH 102/226] python-msgpack: update to 1.0.3 Install license file. --- mingw-w64-python-msgpack/PKGBUILD | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/mingw-w64-python-msgpack/PKGBUILD b/mingw-w64-python-msgpack/PKGBUILD index 939905b482..d44c035b01 100644 --- a/mingw-w64-python-msgpack/PKGBUILD +++ b/mingw-w64-python-msgpack/PKGBUILD @@ -6,18 +6,20 @@ pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") provides=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") conflicts=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") replaces=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") -pkgver=1.0.2 -pkgrel=2 +pkgver=1.0.3 +pkgrel=1 pkgdesc="MessagePack serializer implementation for Python (mingw-w64)" arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') url='https://github.com/msgpack/msgpack-python' license=('Apache') depends=("${MINGW_PACKAGE_PREFIX}-python") -makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools") +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" + "${MINGW_PACKAGE_PREFIX}-cython" + "${MINGW_PACKAGE_PREFIX}-python-setuptools") options=('staticlibs' 'strip' '!debug') source=("${_realname}-python-$pkgver.tar.gz"::"https://github.com/msgpack/msgpack-python/archive/v${pkgver}.tar.gz") -sha256sums=('c3c347e0723fb5cedab6ff4919cf06098838d619438ce272a86f6734caae4d13') +sha256sums=('576a1835a8b48d5861c883a6e10fd374065c6ae56287b221d1a4791e9529c71c') # Helper macros to help make tasks easier # apply_patch_with_msg() { @@ -39,32 +41,33 @@ del_file_exists() { # =========================================== # prepare() { - cd "${srcdir}" - rm -rf python-build-${CARCH} | true - cp -r "msgpack-python-${pkgver}" "python-build-${CARCH}" + rm -rf "python-build-${MSYSTEM}" | true + cp -r "msgpack-python-${pkgver}" "python-build-${MSYSTEM}" # Set version for setuptools_scm export SETUPTOOLS_SCM_PRETEND_VERSION=${pkgver} } build() { - msg "Python build for ${CARCH}" - cd "${srcdir}/python-build-${CARCH}" + msg "Python build for ${MSYSTEM}" + cd "${srcdir}/python-build-${MSYSTEM}" ${MINGW_PREFIX}/bin/python setup.py build - find "${srcdir}/python-build-${CARCH}" -type f -exec \ + find "${srcdir}/python-build-${MSYSTEM}" -type f -exec \ sed -i '1s,^#! \?/usr/bin/\(env \|\)python$,#!/usr/bin/python3,' {} \; } check() { - msg "Python test for ${CARCH}" - cd "${srcdir}/python-build-${CARCH}" + msg "Python test for ${MSYSTEM}" + cd "${srcdir}/python-build-${MSYSTEM}" PYTHONPATH=$PWD ${MINGW_PREFIX}/bin/py.test test } package() { - cd "${srcdir}/python-build-${CARCH}" + cd "${srcdir}/python-build-${MSYSTEM}" MSYS2_ARG_CONV_EXCL="--prefix=;--install-scripts=;--install-platlib=" \ ${MINGW_PREFIX}/bin/python setup.py install --prefix=${MINGW_PREFIX} \ --root="${pkgdir}" --optimize=1 --skip-build + + install -Dm644 COPYING "${pkgdir}${MINGW_PREFIX}/share/licenses/python-${_realname}/COPYING" } From 7f3e34dd6fcfc29df639943daf71b7ef7b0328e4 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Tue, 25 Jan 2022 14:53:53 +0530 Subject: [PATCH 103/226] python-sqlalchemy: update to 1.4.30 Add python-greenlet dependency. --- mingw-w64-python-sqlalchemy/PKGBUILD | 30 ++++++++++++++-------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/mingw-w64-python-sqlalchemy/PKGBUILD b/mingw-w64-python-sqlalchemy/PKGBUILD index 8788d02b3e..d005b2e386 100644 --- a/mingw-w64-python-sqlalchemy/PKGBUILD +++ b/mingw-w64-python-sqlalchemy/PKGBUILD @@ -6,14 +6,15 @@ pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") provides=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") conflicts=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") replaces=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") -pkgver=1.3.16 -pkgrel=2 +pkgver=1.4.30 +pkgrel=1 pkgdesc="Python SQL toolkit and Object Relational Mapper (mingw-w64)" arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') url='https://www.sqlalchemy.org/' license=('MIT') -depends=("${MINGW_PACKAGE_PREFIX}-python") +depends=("${MINGW_PACKAGE_PREFIX}-python" + "${MINGW_PACKAGE_PREFIX}-python-greenlet") makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools" "${MINGW_PACKAGE_PREFIX}-cc") checkdepends=("${MINGW_PACKAGE_PREFIX}-python-pytest-runner" @@ -21,8 +22,8 @@ checkdepends=("${MINGW_PACKAGE_PREFIX}-python-pytest-runner" "${MINGW_PACKAGE_PREFIX}-python-mock") options=('staticlibs' 'strip' '!debug') source=("https://pypi.io/packages/source/S/SQLAlchemy/SQLAlchemy-${pkgver}.tar.gz"{,.asc}) -validpgpkeys=('83AF7ACE251C13E6BB7DEFBD330239C1C4DAFEE1') -sha512sums=('8eae306fc21f22da7411badd678f31129ecac18f9a4d8526101ecd0fa8c77e30a4b7a8e4361fff3fc08b031d90cd82343321c1ea9175ad187fe28a25ad9ea6d8' +validpgpkeys=('83AF7ACE251C13E6BB7DEFBD330239C1C4DAFEE1') # Michael Bayer +sha512sums=('13b80779b30a10af7f173ad162d54d38d807e7372d381f7b96adf2f728ccf20bb6a86d8f8b06ec828e71d0b4aa22d022686d290ea6b03629564f0fb2a80eca80' 'SKIP') # Helper macros to help make tasks easier # @@ -46,25 +47,24 @@ del_file_exists() { prepare() { - cd "${srcdir}" - rm -rf python-build-${CARCH} | true - cp -r "SQLAlchemy-${pkgver}" "python-build-${CARCH}" + rm -rf "python-build-${MSYSTEM}" | true + cp -r "SQLAlchemy-${pkgver}" "python-build-${MSYSTEM}" } build() { - msg "Python build for ${CARCH}" - cd "${srcdir}/python-build-${CARCH}" + msg "Python build for ${MSYSTEM}" + cd "${srcdir}/python-build-${MSYSTEM}" ${MINGW_PREFIX}/bin/python setup.py build } check() { - msg "Python test for ${CARCH}" - cd "${srcdir}/python-build-${CARCH}" - ${MINGW_PREFIX}/bin/python} setup.py pytest + msg "Python test for ${MSYSTEM}" + cd "${srcdir}/python-build-${MSYSTEM}" + ${MINGW_PREFIX}/bin/python setup.py pytest } package() { - cd "${srcdir}/python-build-${CARCH}" + cd "${srcdir}/python-build-${MSYSTEM}" MSYS2_ARG_CONV_EXCL="--prefix=;--install-scripts=;--install-platlib=" \ ${MINGW_PREFIX}/bin/python setup.py install --prefix=${MINGW_PREFIX} \ --root="${pkgdir}" --optimize=1 --skip-build From fc636ef2027cdf27d0934eaf0467799838975fd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milo=C5=A1=20Komar=C4=8Devi=C4=87?= <4973094+kmilos@users.noreply.github.com> Date: Tue, 25 Jan 2022 13:50:07 +0100 Subject: [PATCH 104/226] python-imageio: update to 2.14.1 --- mingw-w64-python-imageio/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mingw-w64-python-imageio/PKGBUILD b/mingw-w64-python-imageio/PKGBUILD index 4f2c839fae..81df483df4 100644 --- a/mingw-w64-python-imageio/PKGBUILD +++ b/mingw-w64-python-imageio/PKGBUILD @@ -4,7 +4,7 @@ _realname=imageio pkgbase=mingw-w64-python-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") -pkgver=2.13.5 +pkgver=2.14.1 pkgrel=1 pkgdesc="Python library for reading and writing a wide range of image, video, scientific, and volumetric data formats (mingw-w64)" arch=('any') @@ -18,7 +18,7 @@ optdepends=("${MINGW_PACKAGE_PREFIX}-freeimage" makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools") options=('staticlibs' 'strip' '!debug') source=("${_realname}-${pkgver}.tar.gz"::"${url}/archive/v${pkgver}.tar.gz") -sha256sums=('ac79da398f3eda2984ce41bf71467200d3ca1a75515efddae3b07d023a2bbee1') +sha256sums=('4bf7254792f764177eb7bee9fc10abf379dfb40fd55d66e543b72aeff1585c7b') prepare() { cd "${srcdir}" From c128843a46beaaad43da9feb4171ce79e31f41fd Mon Sep 17 00:00:00 2001 From: volkanorhan Date: Tue, 25 Jan 2022 15:56:24 +0300 Subject: [PATCH 105/226] libopenmpt: update to 0.6.0, enable portaudiocpp --- mingw-w64-libopenmpt/PKGBUILD | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/mingw-w64-libopenmpt/PKGBUILD b/mingw-w64-libopenmpt/PKGBUILD index 564827dc38..d90812cd05 100644 --- a/mingw-w64-libopenmpt/PKGBUILD +++ b/mingw-w64-libopenmpt/PKGBUILD @@ -3,7 +3,7 @@ _realname=libopenmpt pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}") -pkgver=0.4.27 +pkgver=0.6.0 pkgrel=1 pkgdesc="A cross-platform C++ and C library to decode tracked music files (modules) into a raw PCM audio stream (mingw-w64)" arch=('any') @@ -21,7 +21,7 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-autotools") options=('staticlibs' 'strip') source=("https://lib.openmpt.org/files/${_realname}/src/${_realname}-${pkgver}+release.autotools.tar.gz") -sha256sums=('a4c23aaf1914e78d082d71f96cc82d63b0ed30091ed8cf8e8cb6887d4cecfaab') +sha256sums=('a1fc61283864624d820836ce4d37af4907476cdcd31f6f09a23ba271500025ab') prepare() { cd "${srcdir}/${_realname}-${pkgver}+release.autotools" @@ -39,7 +39,6 @@ build() { --host=${MINGW_CHOST} \ --enable-shared \ --enable-static \ - --without-portaudiocpp \ --disable-examples make From d3e2606ae5b06dc2009814def54a2254418bf41f Mon Sep 17 00:00:00 2001 From: Mehdi Chinoune Date: Tue, 25 Jan 2022 17:25:37 +0100 Subject: [PATCH 106/226] cmake: update to 3.22.2 --- mingw-w64-cmake/0006-fix-clang32-crash.patch | 11 ----------- mingw-w64-cmake/PKGBUILD | 14 ++++---------- 2 files changed, 4 insertions(+), 21 deletions(-) delete mode 100644 mingw-w64-cmake/0006-fix-clang32-crash.patch diff --git a/mingw-w64-cmake/0006-fix-clang32-crash.patch b/mingw-w64-cmake/0006-fix-clang32-crash.patch deleted file mode 100644 index c9e106d8d4..0000000000 --- a/mingw-w64-cmake/0006-fix-clang32-crash.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- cmake-3.22.0/Source/cmTimestamp.cxx.orig 2021-11-21 19:49:45.959000000 +0100 -+++ cmake-3.22.0/Source/cmTimestamp.cxx 2021-11-21 19:49:59.378057000 +0100 -@@ -194,7 +194,7 @@ - - char buffer[16]; - --#ifdef __MINGW32__ -+#if defined(__MINGW32__) && !defined(_UCRT) - /* See a bug in MinGW: https://sourceforge.net/p/mingw-w64/bugs/793/. A work - * around is to try to use strftime() from ucrtbase.dll. */ - using T = size_t(WINAPI*)(char*, size_t, const char*, const struct tm*); diff --git a/mingw-w64-cmake/PKGBUILD b/mingw-w64-cmake/PKGBUILD index fcb0f18bd5..683fff63a1 100644 --- a/mingw-w64-cmake/PKGBUILD +++ b/mingw-w64-cmake/PKGBUILD @@ -4,7 +4,7 @@ _realname=cmake pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=3.22.1 +pkgver=3.22.2 pkgrel=1 pkgdesc="A cross-platform open-source make system (mingw-w64)" arch=('any') @@ -38,14 +38,12 @@ source=("https://github.com/Kitware/CMake/releases/download/v${pkgver}/${_realna "0001-Disable-response-files-for-MSYS-Generator.patch" "0002-Do-not-install-Qt-bundle-in-cmake-gui.patch" "0004-Output-line-numbers-in-callstacks.patch" - "0005-Default-to-ninja-generator.patch" - "0006-fix-clang32-crash.patch") -sha256sums=('0e998229549d7b3f368703d20e248e7ee1f853910d42704aa87918c213ea82c0' + "0005-Default-to-ninja-generator.patch") +sha256sums=('3c1c478b9650b107d452c5bd545c72e2fad4e37c09b89a1984b9a2f46df6aced' '25793edcbac05bb6d17fa9947b52ace4a6b5ccccf7758e22ae9ae022ed089061' 'f6cf6a6f2729db2b9427679acd09520af2cd79fc26900b19a49cead05a55cd1a' '15fdf3fb1a0f1c153c8cfbdd2b5c64035b7a04de618bfe61d7d74ced0d6a5c4b' - '426818278090704d2a12f62ef3dfd94c47b11fa2784bb842989b7f6a09ee7aa2' - '63ea33f98e93be1ffa4ef958a914f08651c5e59bc516ba0dd33f03ff345377c3') + '426818278090704d2a12f62ef3dfd94c47b11fa2784bb842989b7f6a09ee7aa2') # Helper macros to help make tasks easier # @@ -78,10 +76,6 @@ prepare() { # We want cmake to default to something useful and not MSVC apply_patch_with_msg \ 0005-Default-to-ninja-generator.patch - - # https://gitlab.kitware.com/cmake/cmake/-/issues/22939 - apply_patch_with_msg \ - 0006-fix-clang32-crash.patch } build() { From 56d2e6cafa9999a82a054ea9246dbbc1a3f6414d Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Tue, 25 Jan 2022 20:05:55 +0100 Subject: [PATCH 107/226] CI: remove code for detecting the added commits We want to move all this to Python in the long run, and this functionality isn't very usefull, so removing it makes porting easier. --- .ci/ci-build.sh | 3 +-- .ci/ci-library.sh | 31 ------------------------------- 2 files changed, 1 insertion(+), 33 deletions(-) diff --git a/.ci/ci-build.sh b/.ci/ci-build.sh index 14e210050f..84b9fea555 100644 --- a/.ci/ci-build.sh +++ b/.ci/ci-build.sh @@ -21,9 +21,8 @@ sed -i 's/^CheckSpace/#CheckSpace/g' /etc/pacman.conf pacman --noconfirm -Fy # Detect -list_commits || failure 'Could not detect added commits' list_packages || failure 'Could not detect changed files' -message 'Processing changes' "${commits[@]}" +message 'Processing changes' test -z "${packages}" && success 'No changes in package recipes' # Build diff --git a/.ci/ci-library.sh b/.ci/ci-library.sh index 5770351b40..18117da39e 100644 --- a/.ci/ci-library.sh +++ b/.ci/ci-library.sh @@ -24,32 +24,6 @@ _status() { printf "${items:+\t%s\n}" "${items:+${items[@]}}" } -# Convert lines to array -_as_list() { - local -n nameref_list="${1}" - local filter="${2}" - local strip="${3}" - local lines="${4}" - local result=1 - nameref_list=() - while IFS= read -r line; do - test -z "${line}" && continue - result=0 - [[ "${line}" = ${filter} ]] && nameref_list+=("${line/${strip}/}") - done <<< "${lines}" - return "${result}" -} - -# Changes since master or from head -_list_changes() { - local list_name="${1}" - local filter="${2}" - local strip="${3}" - local git_options=("${@:4}") - _as_list "${list_name}" "${filter}" "${strip}" "$(git log "${git_options[@]}" upstream/master.. | sort -u)" || - _as_list "${list_name}" "${filter}" "${strip}" "$(git log "${git_options[@]}" HEAD^.. | sort -u)" -} - # Git configuration git_config() { local name="${1}" @@ -73,11 +47,6 @@ execute(){ cd - > /dev/null } -# Added commits -list_commits() { - _list_changes commits '*' '#*::' --pretty=format:'%ai::[%h] %s' -} - # Get changed packages in correct build order list_packages() { # readarray doesn't work with a plain pipe From 1a171af246947cc5f51cd244b9128633f3da62bc Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Tue, 25 Jan 2022 20:20:20 +0100 Subject: [PATCH 108/226] CI: remove unnecessary git_config Likely added so that "git am" works, but that is handled in makepkg.conf now: https://github.com/msys2/MSYS2-packages/commit/97491f06184ab --- .ci/ci-build.sh | 2 -- .ci/ci-library.sh | 9 --------- 2 files changed, 11 deletions(-) diff --git a/.ci/ci-build.sh b/.ci/ci-build.sh index 84b9fea555..0a61b4e8d5 100644 --- a/.ci/ci-build.sh +++ b/.ci/ci-build.sh @@ -11,8 +11,6 @@ DIR="$( cd "$( dirname "$0" )" && pwd )" # Configure source "$DIR/ci-library.sh" mkdir artifacts -git_config user.email 'ci@msys2.org' -git_config user.name 'MSYS2 Continuous Integration' git remote add upstream 'https://github.com/MSYS2/MINGW-packages' git fetch --quiet upstream # reduce time required to install packages by disabling pacman's disk space checking diff --git a/.ci/ci-library.sh b/.ci/ci-library.sh index 18117da39e..cad2e1eb77 100644 --- a/.ci/ci-library.sh +++ b/.ci/ci-library.sh @@ -24,15 +24,6 @@ _status() { printf "${items:+\t%s\n}" "${items:+${items[@]}}" } -# Git configuration -git_config() { - local name="${1}" - local value="${2}" - test -n "$(git config ${name})" && return 0 - git config --global "${name}" "${value}" && return 0 - failure 'Could not configure Git for makepkg' -} - # Run command with status execute(){ local status="${1}" From 532118fdf62bd40aaae0bf4ea587618e10b9ada9 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Tue, 25 Jan 2022 21:10:15 +0100 Subject: [PATCH 109/226] Revert "CI: remove unnecessary git_config" This reverts commit 1a171af246947cc5f51cd244b9128633f3da62bc. --- .ci/ci-build.sh | 2 ++ .ci/ci-library.sh | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/.ci/ci-build.sh b/.ci/ci-build.sh index 0a61b4e8d5..84b9fea555 100644 --- a/.ci/ci-build.sh +++ b/.ci/ci-build.sh @@ -11,6 +11,8 @@ DIR="$( cd "$( dirname "$0" )" && pwd )" # Configure source "$DIR/ci-library.sh" mkdir artifacts +git_config user.email 'ci@msys2.org' +git_config user.name 'MSYS2 Continuous Integration' git remote add upstream 'https://github.com/MSYS2/MINGW-packages' git fetch --quiet upstream # reduce time required to install packages by disabling pacman's disk space checking diff --git a/.ci/ci-library.sh b/.ci/ci-library.sh index cad2e1eb77..18117da39e 100644 --- a/.ci/ci-library.sh +++ b/.ci/ci-library.sh @@ -24,6 +24,15 @@ _status() { printf "${items:+\t%s\n}" "${items:+${items[@]}}" } +# Git configuration +git_config() { + local name="${1}" + local value="${2}" + test -n "$(git config ${name})" && return 0 + git config --global "${name}" "${value}" && return 0 + failure 'Could not configure Git for makepkg' +} + # Run command with status execute(){ local status="${1}" From cfc3558eafad71aab2befd581d66c9e5375375cb Mon Sep 17 00:00:00 2001 From: Simon Sobisch Date: Tue, 25 Jan 2022 20:20:11 +0100 Subject: [PATCH 110/226] update GDB to 11.2 --- ...Fix-breakpoint-display-functionality.patch | 61 ------------------- mingw-w64-gdb/PKGBUILD | 11 +--- 2 files changed, 3 insertions(+), 69 deletions(-) delete mode 100644 mingw-w64-gdb/0001-gdb-tui-Fix-breakpoint-display-functionality.patch diff --git a/mingw-w64-gdb/0001-gdb-tui-Fix-breakpoint-display-functionality.patch b/mingw-w64-gdb/0001-gdb-tui-Fix-breakpoint-display-functionality.patch deleted file mode 100644 index 20226785ec..0000000000 --- a/mingw-w64-gdb/0001-gdb-tui-Fix-breakpoint-display-functionality.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 4f8042c7295f894124abed541abd0576f51c0e1b Mon Sep 17 00:00:00 2001 -From: Tom de Vries -Date: Fri, 22 Oct 2021 00:28:14 +0200 -Subject: [PATCH] [gdb/tui] Fix breakpoint display functionality - -In commit 81e6b8eb208 "Make tui-winsource not use breakpoint_chain", a loop -body was transformed into a lambda function body: -... -- for (bp = breakpoint_chain; -- bp != NULL; -- bp = bp->next) -+ iterate_over_breakpoints ([&] (breakpoint *bp) -> bool -... -and consequently: -- a continue was replaced by a return, and -- a final return was added. - -Then in commit 240edef62f0 "gdb: remove iterate_over_breakpoints function", we -transformed back to a loop body: -... -- iterate_over_breakpoints ([&] (breakpoint *bp) -> bool -+ for (breakpoint *bp : all_breakpoints ()) -... -but without reverting the changes that introduced the two returns. - -Consequently, breakpoints no longer show up in the tui source window. - -Fix this by reverting the changes that introduced the two returns. - -Build on x86_64-linux, tested with all .exp test-cases that contain -tuiterm_env. - -Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=28483 ---- - gdb/tui/tui-winsource.c | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/gdb/tui/tui-winsource.c b/gdb/tui/tui-winsource.c -index afd51e95980..955b68901fe 100644 ---- a/gdb/tui/tui-winsource.c -+++ b/gdb/tui/tui-winsource.c -@@ -460,7 +460,7 @@ tui_source_window_base::update_breakpoint_info - for (breakpoint *bp : all_breakpoints ()) - { - if (bp == being_deleted) -- return false; -+ continue; - - for (bp_location *loc : bp->locations ()) - { -@@ -478,7 +478,6 @@ tui_source_window_base::update_breakpoint_info - mode |= TUI_BP_HARDWARE; - } - } -- return false; - } - - if (line->break_mode != mode) --- -2.33.1.windows.1 - diff --git a/mingw-w64-gdb/PKGBUILD b/mingw-w64-gdb/PKGBUILD index 14ea248b60..d36357b76e 100644 --- a/mingw-w64-gdb/PKGBUILD +++ b/mingw-w64-gdb/PKGBUILD @@ -5,8 +5,8 @@ _realname=gdb pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}" "${MINGW_PACKAGE_PREFIX}-${_realname}-multiarch") -pkgver=11.1 -pkgrel=2 +pkgver=11.2 +pkgrel=1 pkgdesc="GNU Debugger (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') @@ -32,16 +32,14 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-gmp" "${MINGW_PACKAGE_PREFIX}-cc") options=('staticlibs' '!distcc' '!ccache') source=(https://ftp.gnu.org/gnu/gdb/${_realname}-${pkgver}.tar.xz{,.sig} - '0001-gdb-tui-Fix-breakpoint-display-functionality.patch' '0001-Workaround-performance-regression-in-info-func-var-t.patch' '0002-Fix-using-gnu-print.patch' '0003-configure-Disable-static-linking-with-standard-libs.patch' '0004-Python-Configure-path-fixes.patch' '0005-W32-Always-check-USERPROFILE-if-HOME-is-not-set.patch') validpgpkeys=('F40ADB902B24264AA42E50BF92EDB04BFF325CF3') -sha256sums=('cccfcc407b20d343fb320d4a9a2110776dd3165118ffd41f4b1b162340333f94' +sha256sums=('1497c36a71881b8671a9a84a0ee40faab788ca30d7ba19d8463c3cc787152e32' 'SKIP' - 'a8001dad47e4016dbd0843356f79ba562f152e68362e73a700f644166eccbba8' '428cda7dcc107c236225ae89704390b0f1e70c276b5ca6b1741988f384b21d62' 'c60e867fb74f7985b5ac5337a07cc697b4a4ffe19fb6e52f7c377e29c8413a4a' '0eb291cd81f7392610d16a83f436a30d3384a99661c6b6ffd1bfb243d5aee6dd' @@ -51,9 +49,6 @@ sha256sums=('cccfcc407b20d343fb320d4a9a2110776dd3165118ffd41f4b1b162340333f94' prepare() { cd ${srcdir}/${_realname}-${pkgver} - # https://sourceware.org/bugzilla/show_bug.cgi?id=28483 - patch -p1 -i ${srcdir}/0001-gdb-tui-Fix-breakpoint-display-functionality.patch - # https://sourceware.org/bugzilla/show_bug.cgi?id=15412 patch -p1 -i ${srcdir}/0001-Workaround-performance-regression-in-info-func-var-t.patch From 971147bcbe2f96b6cb5c4f5db1fc9ee95ecd6646 Mon Sep 17 00:00:00 2001 From: Konstantin Podsvirov Date: Wed, 26 Jan 2022 19:11:11 +0300 Subject: [PATCH 111/226] cmake-doc-qt: Update to 3.22.2 --- mingw-w64-cmake-doc-qt/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mingw-w64-cmake-doc-qt/PKGBUILD b/mingw-w64-cmake-doc-qt/PKGBUILD index 7d26dba098..25731e3383 100644 --- a/mingw-w64-cmake-doc-qt/PKGBUILD +++ b/mingw-w64-cmake-doc-qt/PKGBUILD @@ -3,7 +3,7 @@ _realname=cmake-doc-qt pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}") -pkgver=3.22.1 +pkgver=3.22.2 pkgrel=1 pkgdesc="CMake documentation in Qt Help format" arch=('any') @@ -13,7 +13,7 @@ url='https://www.cmake.org/documentation/' # rename to include version of each release # (prevents accidentally using the file of an older version) source=("CMake-${pkgver}.qch::https://www.cmake.org/cmake/help/v${pkgver%.*}/CMake.qch") -sha256sums=('97d7760618a71966797015340c8c52ee2fd96c1dd88a7f648dd4848f34a7fa70') +sha256sums=('521ea0973dbfe09ca973d843d0eb091090ffae012fb9eabaf5808d5182d6629c') package() { mkdir -p "${pkgdir}${MINGW_PREFIX}/share/qt5/doc" From 99d30fb218d9e603e71a411c31330603a1f51dd8 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Wed, 26 Jan 2022 23:34:19 +0530 Subject: [PATCH 112/226] python-gast: update to 0.5.3 --- mingw-w64-python-gast/PKGBUILD | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mingw-w64-python-gast/PKGBUILD b/mingw-w64-python-gast/PKGBUILD index 4b81c61b94..ebb019bbc1 100644 --- a/mingw-w64-python-gast/PKGBUILD +++ b/mingw-w64-python-gast/PKGBUILD @@ -3,17 +3,17 @@ _realname=gast pkgbase=mingw-w64-python-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") -pkgver=0.4.0 -pkgrel=2 +pkgver=0.5.3 +pkgrel=1 pkgdesc='AST that abstracts the underlying Python version (mingw-w64)' arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') url="https://github.com/serge-sans-paille/gast" license=('BSD') depends=("${MINGW_PACKAGE_PREFIX}-python") makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools") source=("https://pypi.io/packages/source/g/gast/gast-${pkgver}.tar.gz") -sha256sums=('40feb7b8b8434785585ab224d1568b857edb18297e5a3047f1ba012bc83b42c1') +sha256sums=('cfbea25820e653af9c7d1807f659ce0a0a9c64f2439421a7bba4f0983f532dea') prepare() { cd "$srcdir" From 2d91c63bac1791a3fe01cd500aa560b22e230ec4 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Wed, 26 Jan 2022 23:40:29 +0530 Subject: [PATCH 113/226] python-pyserial: update to 3.5 --- mingw-w64-python-pyserial/PKGBUILD | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/mingw-w64-python-pyserial/PKGBUILD b/mingw-w64-python-pyserial/PKGBUILD index 34cd84dcfd..25049d7109 100644 --- a/mingw-w64-python-pyserial/PKGBUILD +++ b/mingw-w64-python-pyserial/PKGBUILD @@ -6,18 +6,18 @@ pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") provides=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") conflicts=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") replaces=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") -pkgver=3.4 -pkgrel=4 +pkgver=3.5 +pkgrel=1 pkgdesc="Multiplatform Serial Port Module for Python (mingw-w64)" arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') url='https://github.com/pyserial/pyserial/' license=('custom:PYTHON') depends=("${MINGW_PACKAGE_PREFIX}-python") makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools") options=('staticlibs' 'strip' '!debug') source=("${_realname}-${pkgver}.tar.gz"::"https://github.com/pyserial/pyserial/archive/v${pkgver}.tar.gz") -sha512sums=('d144897b7b86a6af1f0961fc2b2e71c28419e9afba50245d85c2cb3f1697c2a9d1a4c08576ca8cfb22c5a0adf34e50a62e8c54f903758eece1926d1cb6e83949') +sha512sums=('c2a700f5e08905bdab070c95cec41d6d423c20d2a9648c8c2f048db86de72f39fe2b8df560172d5b9d480be44c35ff0799df8f1d684d3f41f8fc61174105256e') prepare() { rm -rf python-build-${CARCH} | true @@ -43,10 +43,8 @@ package() { install -Dm644 LICENSE.txt "${pkgdir}${MINGW_PREFIX}/share/licenses/python-${_realname}/LICENSE.txt" - local PREFIX_WIN=$(cygpath -wm ${MINGW_PREFIX}) - # fix python command in files - for _f in "${pkgdir}${MINGW_PREFIX}"/bin/*.py; do - sed -e "s|/usr/bin/env |${MINGW_PREFIX}|g" \ - -e "s|${PREFIX_WIN}|${MINGW_PREFIX}|g" -i ${_f} + for _f in "${pkgdir}${MINGW_PREFIX}"/bin/*-script.py; do + # Remove shebang line + sed -e '1 { s/^#!.*$// }' -i "${_f}" done } From 980ed7435a190561113d81f1b9ff51c9dbc99b8e Mon Sep 17 00:00:00 2001 From: pal1000 Date: Thu, 27 Jan 2022 02:46:06 +0200 Subject: [PATCH 114/226] mesa: Update to 21.3.5 --- mingw-w64-mesa/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mingw-w64-mesa/PKGBUILD b/mingw-w64-mesa/PKGBUILD index 750d6a03da..513c6c59f7 100644 --- a/mingw-w64-mesa/PKGBUILD +++ b/mingw-w64-mesa/PKGBUILD @@ -3,7 +3,7 @@ _realname=mesa pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=21.3.4 +pkgver=21.3.5 pkgrel=1 pkgdesc="Open-source implementation of the OpenGL specification (mingw-w64)" arch=('any') @@ -33,7 +33,7 @@ source=(https://mesa.freedesktop.org/archive/${_realname}-${pkgver}.tar.xz{,.sig 0005-win32-The-opengl-headers-should-install-to-mesa-GL-s.patch 0006-win32-Fixes-32-bits-visual-studio-module-definition-.patch 0007-win32-Do-not-use-BUILD_GL32-we-use-def-file-to-expor.patch) -sha256sums=('77104fd4a93bce69da3b0982f8ee88ba7c4fb98cfc491a669894339cdcd4a67d' +sha256sums=('d93b2a9d2464ee856d7637a07dff6b7cd950f295ad58518bb959f76882cf4a4c' 'SKIP' '69f21522f20c10f5699dfe3e128aa88d4fedde816f6e8df1506d7470c44bf3da' 'e5aa27b6aba3e75335bbd6d989c52dd42a8435ef87a1453267164e9612daee1a' From 5d12e511ab0792785d696e16d8762918fb896817 Mon Sep 17 00:00:00 2001 From: Rafal Date: Thu, 27 Jan 2022 08:48:57 +0100 Subject: [PATCH 115/226] Update PKGBUILD Update PKGBUILD Update PKGBUILD --- mingw-w64-opencl-headers/PKGBUILD | 15 ++++++++------- mingw-w64-opencl-icd/PKGBUILD | 4 ++-- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/mingw-w64-opencl-headers/PKGBUILD b/mingw-w64-opencl-headers/PKGBUILD index d6aeadb6c0..158fad8cb3 100644 --- a/mingw-w64-opencl-headers/PKGBUILD +++ b/mingw-w64-opencl-headers/PKGBUILD @@ -3,7 +3,7 @@ _realname=opencl-headers pkgbase=mingw-w64-${_realname} pkgname=${MINGW_PACKAGE_PREFIX}-${_realname} -pkgver=2021.06.30 +pkgver=2022.01.04 pkgrel=1 epoch=2 pkgdesc='OpenCL (Open Computing Language) header files' @@ -12,11 +12,12 @@ mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') url='https://www.khronos.org/registry/cl/' license=('Apache 2.0') makedepends=("${MINGW_PACKAGE_PREFIX}-cmake" - "${MINGW_PACKAGE_PREFIX}-ninja") + "${MINGW_PACKAGE_PREFIX}-ninja" + "${MINGW_PACKAGE_PREFIX}-cc") source=(OpenCL-Headers-${pkgver}.tar.gz::https://github.com/KhronosGroup/OpenCL-Headers/archive/refs/tags/v${pkgver}.tar.gz - OpenCL-CLHPP-2.0.15.tar.gz::https://github.com/KhronosGroup/OpenCL-CLHPP/archive/refs/tags/v2.0.15.tar.gz) -sha256sums=('6640d590c30d90f89351f5e3043ae6363feeb19ac5e64bc35f8cfa1a6cd5498e' - '0175806508abc699586fc9a9387e01eb37bf812ca534e3b493ff3091ec2a9246') + OpenCL-CLHPP-2.0.16.tar.gz::https://github.com/KhronosGroup/OpenCL-CLHPP/archive/refs/tags/v2.0.16.tar.gz) +sha256sums=('6E716E2B13FC8D363B40A165CA75021B102F9328E2B38F8054D7DB5884DE29C9' + '869456032E60787EED9FCEAEAF6C6CB4452BC0FF97E0F5A271510145A1C8F4D4') package() { cd "${srcdir}"/OpenCL-Headers-${pkgver} @@ -31,14 +32,14 @@ package() { DESTDIR=${pkgdir} cmake --install . - cd "${srcdir}"/OpenCL-CLHPP-2.0.15 + cd "${srcdir}"/OpenCL-CLHPP-2.0.16 MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \ ${MINGW_PREFIX}/bin/cmake \ -G'Ninja' \ -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \ "${extra_config[@]}" \ -DBUILD_TESTS=OFF \ - ../OpenCL-CLHPP-2.0.15 + ../OpenCL-CLHPP-2.0.16 DESTDIR=${pkgdir} cmake --install . diff --git a/mingw-w64-opencl-icd/PKGBUILD b/mingw-w64-opencl-icd/PKGBUILD index f86db787d7..5ab8438c70 100644 --- a/mingw-w64-opencl-icd/PKGBUILD +++ b/mingw-w64-opencl-icd/PKGBUILD @@ -4,7 +4,7 @@ _realname=opencl-icd pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" replaces=("${MINGW_PACKAGE_PREFIX}-${_realname}-git") -pkgver=2021.06.30 +pkgver=2022.01.04 pkgrel=1 pkgdesc="OpenCL ICD Loader (mingw-w64)" arch=('any') @@ -17,7 +17,7 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-ninja" "${MINGW_PACKAGE_PREFIX}-tools") source=("${_realname}-${pkgver}.tar.gz::https://github.com/KhronosGroup/OpenCL-ICD-Loader/archive/refs/tags/v${pkgver}.tar.gz") -sha256sums=('a50557ed6ff18c81aa1ed5e74700521e389c84ca5cd9188d35d368936e0a4972') +sha256sums=('9F21D958AF68C1B625A03C2BEFDDD79DA95D610614DDAB6C291F26F01A947DD8') build() { cd "${srcdir}"/OpenCL-ICD-Loader-${pkgver} From 450d160c0d4fa58bbf3767487fb75fff06936547 Mon Sep 17 00:00:00 2001 From: Rafal Date: Thu, 27 Jan 2022 11:37:34 +0100 Subject: [PATCH 116/226] Update mingw-w64-opencl-headers/PKGBUILD MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: مهدي شينون (Mehdi Chinoune) <79349457+MehdiChinoune@users.noreply.github.com> --- mingw-w64-opencl-headers/PKGBUILD | 1 + 1 file changed, 1 insertion(+) diff --git a/mingw-w64-opencl-headers/PKGBUILD b/mingw-w64-opencl-headers/PKGBUILD index 158fad8cb3..0c1263765c 100644 --- a/mingw-w64-opencl-headers/PKGBUILD +++ b/mingw-w64-opencl-headers/PKGBUILD @@ -4,6 +4,7 @@ _realname=opencl-headers pkgbase=mingw-w64-${_realname} pkgname=${MINGW_PACKAGE_PREFIX}-${_realname} pkgver=2022.01.04 +clhpp_ver=2.0.16 pkgrel=1 epoch=2 pkgdesc='OpenCL (Open Computing Language) header files' From 735db171a83e56929f49ec99559e436cc900493d Mon Sep 17 00:00:00 2001 From: Rafal Date: Thu, 27 Jan 2022 11:37:39 +0100 Subject: [PATCH 117/226] Update mingw-w64-opencl-headers/PKGBUILD MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: مهدي شينون (Mehdi Chinoune) <79349457+MehdiChinoune@users.noreply.github.com> --- mingw-w64-opencl-headers/PKGBUILD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mingw-w64-opencl-headers/PKGBUILD b/mingw-w64-opencl-headers/PKGBUILD index 0c1263765c..bd026b0d65 100644 --- a/mingw-w64-opencl-headers/PKGBUILD +++ b/mingw-w64-opencl-headers/PKGBUILD @@ -16,7 +16,7 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-cmake" "${MINGW_PACKAGE_PREFIX}-ninja" "${MINGW_PACKAGE_PREFIX}-cc") source=(OpenCL-Headers-${pkgver}.tar.gz::https://github.com/KhronosGroup/OpenCL-Headers/archive/refs/tags/v${pkgver}.tar.gz - OpenCL-CLHPP-2.0.16.tar.gz::https://github.com/KhronosGroup/OpenCL-CLHPP/archive/refs/tags/v2.0.16.tar.gz) + OpenCL-CLHPP-${clhpp_ver}.tar.gz::https://github.com/KhronosGroup/OpenCL-CLHPP/archive/refs/tags/v${clhpp_ver}.tar.gz) sha256sums=('6E716E2B13FC8D363B40A165CA75021B102F9328E2B38F8054D7DB5884DE29C9' '869456032E60787EED9FCEAEAF6C6CB4452BC0FF97E0F5A271510145A1C8F4D4') From 2f6e38663aa84d879f1f395fe931914989cb688b Mon Sep 17 00:00:00 2001 From: Rafal Date: Thu, 27 Jan 2022 11:37:43 +0100 Subject: [PATCH 118/226] Update mingw-w64-opencl-headers/PKGBUILD MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: مهدي شينون (Mehdi Chinoune) <79349457+MehdiChinoune@users.noreply.github.com> --- mingw-w64-opencl-headers/PKGBUILD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mingw-w64-opencl-headers/PKGBUILD b/mingw-w64-opencl-headers/PKGBUILD index bd026b0d65..069cfd4138 100644 --- a/mingw-w64-opencl-headers/PKGBUILD +++ b/mingw-w64-opencl-headers/PKGBUILD @@ -33,7 +33,7 @@ package() { DESTDIR=${pkgdir} cmake --install . - cd "${srcdir}"/OpenCL-CLHPP-2.0.16 + cd "${srcdir}"/OpenCL-CLHPP-${clhpp_ver} MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \ ${MINGW_PREFIX}/bin/cmake \ -G'Ninja' \ From 53396ae88ffb2a68a5e64a9c67cec86b16dfcb70 Mon Sep 17 00:00:00 2001 From: Rafal Date: Thu, 27 Jan 2022 11:37:48 +0100 Subject: [PATCH 119/226] Update mingw-w64-opencl-headers/PKGBUILD MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: مهدي شينون (Mehdi Chinoune) <79349457+MehdiChinoune@users.noreply.github.com> --- mingw-w64-opencl-headers/PKGBUILD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mingw-w64-opencl-headers/PKGBUILD b/mingw-w64-opencl-headers/PKGBUILD index 069cfd4138..52e4b9525b 100644 --- a/mingw-w64-opencl-headers/PKGBUILD +++ b/mingw-w64-opencl-headers/PKGBUILD @@ -40,7 +40,7 @@ package() { -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \ "${extra_config[@]}" \ -DBUILD_TESTS=OFF \ - ../OpenCL-CLHPP-2.0.16 + ../OpenCL-CLHPP-${clhpp_ver} DESTDIR=${pkgdir} cmake --install . From 9fab7fffab3e77f5e3d75c76eab02df9ff993bba Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Thu, 27 Jan 2022 20:26:31 +0530 Subject: [PATCH 120/226] amf-headers: Fix some redefinition errors --- .../0001-prevent-some-redefinition.patch | 26 +++++++++++++++++++ mingw-w64-amf-headers/PKGBUILD | 15 ++++++++--- 2 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 mingw-w64-amf-headers/0001-prevent-some-redefinition.patch diff --git a/mingw-w64-amf-headers/0001-prevent-some-redefinition.patch b/mingw-w64-amf-headers/0001-prevent-some-redefinition.patch new file mode 100644 index 0000000000..5839310c79 --- /dev/null +++ b/mingw-w64-amf-headers/0001-prevent-some-redefinition.patch @@ -0,0 +1,26 @@ +From d376bd3f4d1e6bd8b6c7d4151caa701b238235ac Mon Sep 17 00:00:00 2001 +From: Christopher Degawa +Date: Tue, 14 Dec 2021 12:58:39 -0600 +Subject: [PATCH] Platform.h: tie typedef for HRESULT to !windows + +The existence of `__clang__` there breaks clang on Windows compilation +due to conflicting LONG vs INT typedefs + +Signed-off-by: Christopher Degawa +--- + amf/public/include/core/Platform.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/amf/public/include/core/Platform.h b/amf/public/include/core/Platform.h +index 7fa61cc..a175e62 100644 +--- a/amf/public/include/core/Platform.h ++++ b/amf/public/include/core/Platform.h +@@ -72,7 +72,7 @@ + // #error Need to define AMF_ALIGN + #endif + +-#if defined(__linux) || (__clang__) ++#if !defined(_WIN32) + typedef signed int HRESULT; + #define SUCCEEDED(hr) (((HRESULT)(hr)) >= 0) + #define FAILED(hr) (((HRESULT)(hr)) < 0) diff --git a/mingw-w64-amf-headers/PKGBUILD b/mingw-w64-amf-headers/PKGBUILD index a09cfe7143..35c22669fa 100644 --- a/mingw-w64-amf-headers/PKGBUILD +++ b/mingw-w64-amf-headers/PKGBUILD @@ -4,14 +4,23 @@ _realname=amf-headers pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" pkgver=1.4.23 -pkgrel=1 +pkgrel=2 pkgdesc='Header files for AMD Advanced Media Framework' arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') url='https://github.com/GPUOpen-LibrariesAndSDKs/AMF/' license=('MIT') -source=("${_realname}-${pkgver}.tar.gz::https://github.com/GPUOpen-LibrariesAndSDKs/AMF/archive/v${pkgver}.tar.gz") -sha256sums=('7c8a5c91bca54e257258e4efcc61925921f2efe432efd34cf77dd9dc1803c38a') +source=("${_realname}-${pkgver}.tar.gz::https://github.com/GPUOpen-LibrariesAndSDKs/AMF/archive/v${pkgver}.tar.gz" + "0001-prevent-some-redefinition.patch") +sha256sums=('7c8a5c91bca54e257258e4efcc61925921f2efe432efd34cf77dd9dc1803c38a' + 'cb81680806a7049bff2b1ac70d46fe925fc91e5ab763db30f7f4f4a8b89daebc') + +prepare() { + cd "AMF-${pkgver}" + + # https://github.com/GPUOpen-LibrariesAndSDKs/AMF/pull/286 + patch -p1 -i "${srcdir}/0001-prevent-some-redefinition.patch" +} package() { mkdir -p "${pkgdir}${MINGW_PREFIX}"/include/AMF/ From a729fd7418057d89b2e62754fa9a7d019e3df0d3 Mon Sep 17 00:00:00 2001 From: Konstantin Podsvirov Date: Fri, 28 Jan 2022 12:37:37 +0300 Subject: [PATCH 121/226] wt: Update to 4.6.1 --- mingw-w64-wt/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mingw-w64-wt/PKGBUILD b/mingw-w64-wt/PKGBUILD index 3c21856dea..cbe2428980 100644 --- a/mingw-w64-wt/PKGBUILD +++ b/mingw-w64-wt/PKGBUILD @@ -3,7 +3,7 @@ _realname=wt pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=4.5.2 +pkgver=4.6.1 pkgrel=1 pkgdesc="A C++ library and application server for developing and deploying web applications (mingw-w64)" arch=('any') @@ -45,7 +45,7 @@ source=("${_realname}-${pkgver}.tar.gz::https://github.com/emweb/wt/archive/${pk '002-wt-4.4.0-skip-some-examples.patch' '003-wt-4.4.0-disable-win32-configdir.patch' '004-wt-4.4.0-disable-win32-examples-bat.patch') -sha512sums=('adfa21e387d8837b8f18191d8eda1784724e6abe6b40be0212f4378d09545a7058f5294f6de245b832d561f28c1db78a9fa941e90513bc26e0c9c6f7718ffae3' +sha512sums=('a4642878495a6046232d90a123c95e9143917603e086b817a92f7c945cc39c200df58ec524cf6cfc0be29be2986c36f63edca9af15bb9a9aff8bb1aa0345f778' 'a585ca7c80ec4b05e88622fe98f97c3ee249dbe8a93bca611656d6a07fb36734c27691ebf5578b8adfa71b128466efc7f43513e265feab2b1942e80185555deb' '1c03f218678286007b60b041381406187c81f6169e27777312ee92db5537847c975bec4739a01deffbdac7012e5fee764e3636a06fb68870aaa925849ea12568' '82a0129dc7dfb103e61ae268572f5e4630fd2469f6a40778290dee0f3db65e50887b91ed9d7db8a6e50d6e162b3ed7ee286492952cd54d2518d344267bddcce7' From 25a4a6948f611d41c21c5f5e265f52e5751bc408 Mon Sep 17 00:00:00 2001 From: volkanorhan Date: Fri, 28 Jan 2022 12:41:31 +0300 Subject: [PATCH 122/226] portaudio Pa_getVersionInfo fix --- .../0003-pa_getversioninfo-fix.patch | 42 +++++++++++++++++++ mingw-w64-portaudio/PKGBUILD | 5 ++- 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 mingw-w64-portaudio/0003-pa_getversioninfo-fix.patch diff --git a/mingw-w64-portaudio/0003-pa_getversioninfo-fix.patch b/mingw-w64-portaudio/0003-pa_getversioninfo-fix.patch new file mode 100644 index 0000000000..6692ad33c2 --- /dev/null +++ b/mingw-w64-portaudio/0003-pa_getversioninfo-fix.patch @@ -0,0 +1,42 @@ +From 15dfd46b33ae71bdbfa22dd71c37ee7a8e7c659c Mon Sep 17 00:00:00 2001 +From: Mirko Rajkovaca +Date: Thu, 27 May 2021 02:07:27 +0200 +Subject: [PATCH] Added Pa_GetVersionInfo to portaudio.def (#574) + +* - added Pa_GetVersionInfo to portaudio.def + +* - added Pa_GetVersionInfo to `cmake_support/template_portaudio.def` + +Co-authored-by: Mirko Rajkovaca +--- + build/msvc/portaudio.def | 1 + + cmake_support/template_portaudio.def | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/build/msvc/portaudio.def b/build/msvc/portaudio.def +index 6ecb142..8de8065 100644 +--- a/build/msvc/portaudio.def ++++ b/build/msvc/portaudio.def +@@ -35,6 +35,7 @@ Pa_GetStreamReadAvailable @31 + Pa_GetStreamWriteAvailable @32 + Pa_GetSampleSize @33 + Pa_Sleep @34 ++Pa_GetVersionInfo @35 + PaAsio_GetAvailableBufferSizes @50 + PaAsio_ShowControlPanel @51 + PaUtil_InitializeX86PlainConverters @52 +diff --git a/cmake_support/template_portaudio.def b/cmake_support/template_portaudio.def +index 9cf0dc3..b5d56f1 100644 +--- a/cmake_support/template_portaudio.def ++++ b/cmake_support/template_portaudio.def +@@ -38,6 +38,7 @@ Pa_GetStreamReadAvailable @31 + Pa_GetStreamWriteAvailable @32 + Pa_GetSampleSize @33 + Pa_Sleep @34 ++Pa_GetVersionInfo @35 + @DEF_EXCLUDE_ASIO_SYMBOLS@PaAsio_GetAvailableBufferSizes @50 + @DEF_EXCLUDE_ASIO_SYMBOLS@PaAsio_ShowControlPanel @51 + @DEF_EXCLUDE_X86_PLAIN_CONVERTERS@PaUtil_InitializeX86PlainConverters @52 +-- +2.32.0 (Apple Git-132) + diff --git a/mingw-w64-portaudio/PKGBUILD b/mingw-w64-portaudio/PKGBUILD index 3d1649be64..08924e6a28 100644 --- a/mingw-w64-portaudio/PKGBUILD +++ b/mingw-w64-portaudio/PKGBUILD @@ -6,7 +6,7 @@ pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" epoch=1 pkgver=19.7.0 _tarver=190700_20210406 -pkgrel=3 +pkgrel=4 pkgdesc="A free, cross-platform, open source, audio I/O library (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') @@ -23,11 +23,13 @@ options=(!libtool strip staticlibs) source=("http://files.portaudio.com/archives/pa_stable_v${_tarver}.tgz" 0001-clang-fix.patch 0002-cmake-add-cpp-binding.patch + 0003-pa_getversioninfo-fix.patch CMakeLists.txt portaudiocpp.pc.in) sha256sums=('47efbf42c77c19a05d22e627d42873e991ec0c1357219c0d74ce6a2948cb2def' '2c1ef1727d45f2140ef0a29ffa0553c7b9a1b59e1a223e8892a7792a860f2922' '22e485926fb875fba2a5c3011a1bbe5de99c1ef4560677105f767e66c8fb6324' + '8f12f41692880c9dffb4f8147af2394df2bd0b2b762ae3fc09e1555eb27b9acb' '6af7c2c023483af698edd5063a0dce7cebb65eb40a256e6269ffd6ad32895dd4' 'e48867fb8eb4ceda8e646879a03525b9bacbbaf154585c81478b06eef1c9d6a5') @@ -39,6 +41,7 @@ prepare() { patch -p1 -i "${srcdir}/0001-clang-fix.patch" patch -p1 -i "${srcdir}/0002-cmake-add-cpp-binding.patch" + patch -p1 -i "${srcdir}/0003-pa_getversioninfo-fix.patch" } build() { From bbe22200b4ce075c994539d81e4856fc69cc6340 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Bartoletti?= Date: Fri, 28 Jan 2022 14:02:39 +0100 Subject: [PATCH 123/226] new packages: sfcgal and pysfcgal (#10294) * add sfcgal and pysfcgal * Use Ninja instead of MSYS makefiles * Add python-cffi in depends * Update to 1.4.1 * try with ${MINGW_PACKAGE_PREFIX}-cc * Depend on ${MINGW_PACKAGE_PREFIX}-cc instead of ${MINGW_PACKAGE_PREFIX}-gcc Co-authored-by: Naveen M K * Use spdx: and fix license for SFCGAL * Use spdx: Co-authored-by: Naveen M K --- mingw-w64-python-pysfcgal/PKGBUILD | 43 ++++++++++++++++++++++++++ mingw-w64-sfcgal/PKGBUILD | 48 ++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 mingw-w64-python-pysfcgal/PKGBUILD create mode 100644 mingw-w64-sfcgal/PKGBUILD diff --git a/mingw-w64-python-pysfcgal/PKGBUILD b/mingw-w64-python-pysfcgal/PKGBUILD new file mode 100644 index 0000000000..dabf5212aa --- /dev/null +++ b/mingw-w64-python-pysfcgal/PKGBUILD @@ -0,0 +1,43 @@ +# Maintainer: Loïc Bartoletti + +_realname=pysfcgal +pkgbase=mingw-w64-python-${_realname} +pkgname=${MINGW_PACKAGE_PREFIX}-python-${_realname} +pkgver=1.4.1 +pkgrel=1 +pkgdesc='Python SFCGAL binding (mingw-w64)' +arch=('any') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') +license=('spdx:MIT') +url='https://gitlab.com/Oslandia/pysfcgal' +depends=( + ${MINGW_PACKAGE_PREFIX}-python + ${MINGW_PACKAGE_PREFIX}-sfcgal + ${MINGW_PACKAGE_PREFIX}-python-cffi +) +makedepends=(${MINGW_PACKAGE_PREFIX}-python-setuptools + ${MINGW_PACKAGE_PREFIX}-python-wheel + ${MINGW_PACKAGE_PREFIX}-python-cffi + ${MINGW_PACKAGE_PREFIX}-cc) +source=(https://gitlab.com/Oslandia/pysfcgal/-/archive/v${pkgver}/pysfcgal-v${pkgver}.tar.gz) +sha256sums=('a519cdb3a89dea11f92bee91f284cecd56dc88e4b0eda4f37d1c7268c0289980') + +prepare() { + rm -rf python-build-${MSYSTEM} | true + cp -r "${_realname}-v${pkgver}" "python-build-${MSYSTEM}" +} + +build() { + msg "Python build for ${MSYSTEM}" + cd "${srcdir}/python-build-${MSYSTEM}" + ${MINGW_PREFIX}/bin/python setup.py build +} + +package() { + cd "${srcdir}/python-build-${MSYSTEM}" + MSYS2_ARG_CONV_EXCL="--prefix=;--install-scripts=;--install-platlib=" \ + ${MINGW_PREFIX}/bin/python setup.py install --prefix=${MINGW_PREFIX} \ + --root="${pkgdir}" --optimize=1 --skip-build + + install -Dm644 LICENSE.txt "${pkgdir}${MINGW_PREFIX}/share/licenses/python-${_realname}/LICENSE" +} diff --git a/mingw-w64-sfcgal/PKGBUILD b/mingw-w64-sfcgal/PKGBUILD new file mode 100644 index 0000000000..4a927ab2be --- /dev/null +++ b/mingw-w64-sfcgal/PKGBUILD @@ -0,0 +1,48 @@ +# Maintainer: Loïc Bartoletti + +_realname=sfcgal +pkgbase=mingw-w64-${_realname} +pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" +pkgver=1.4.1 +pkgrel=1 +pkgdesc="Wrapper around CGAL that intents to implement 2D and 3D operations on OGC standards models (mingw-w64)" +arch=('any') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') +url="https://www.sfcgal.org/" +license=("spdx:LGPL-2.0-or-later") +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" + "${MINGW_PACKAGE_PREFIX}-cmake" + "${MINGW_PACKAGE_PREFIX}-ninja" + "${MINGW_PACKAGE_PREFIX}-cgal" + "${MINGW_PACKAGE_PREFIX}-pkg-config") +depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs" + "${MINGW_PACKAGE_PREFIX}-boost" + "${MINGW_PACKAGE_PREFIX}-gmp" + "${MINGW_PACKAGE_PREFIX}-mpfr" + "${MINGW_PACKAGE_PREFIX}-cgal") +source=(https://gitlab.com/Oslandia/SFCGAL/-/archive/v${pkgver}/SFCGAL-v${pkgver}.tar.gz) +sha256sums=('1800c8a26241588f11cddcf433049e9b9aea902e923414d2ecef33a3295626c3') + +prepare() { + plain 'No Step' +} + +build() { + [[ -d ${srcdir}/build-${MSYSTEM} ]] && rm -rf ${srcdir}/build-${MSYSTEM} + mkdir ${srcdir}/build-${MSYSTEM} + cd ${srcdir}/build-${MSYSTEM} + + MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \ + ${MINGW_PREFIX}/bin/cmake \ + -G"Ninja" \ + -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \ + -DCMAKE_BUILD_TYPE=Release \ + ../SFCGAL-v${pkgver} + + ${MINGW_PREFIX}/bin/cmake --build . +} + +package() { + cd "${srcdir}/build-${MSYSTEM}" + DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake --install . +} From 9650ddb9dd185755a0021a4f95b0a90740c86ecb Mon Sep 17 00:00:00 2001 From: Naveen M K Date: Sat, 29 Jan 2022 10:29:21 +0530 Subject: [PATCH 124/226] python3.10: update patches --- ...move-checks-for-ancient-gcc-binutils.patch | 262 ++++++++++++++++++ ...CC-env-var-before-passing-to-subproc.patch | 38 +++ ...9-_testconsole.c-Fix-casing-path-sep.patch | 35 +++ ...t-architecture-markers-for-python-on.patch | 70 +++++ .../0121-distutils-add-back-gcc_version.patch | 40 +++ ...ix-mingw-cross-compiling-in-setup.py.patch | 49 ++++ ...p-python-for-setting-up-correct-vers.patch | 40 +++ ...24-Fix-buffer-overflow-in-Py_GetSepW.patch | 66 +++++ ...ecessary-strlen-in-Py_NormalizeSepsW.patch | 43 +++ ...sesw-pkg-config-when-cross-compiling.patch | 65 +++++ .../0127-CI-add-cross-llvm-mingw-jobs.patch | 124 +++++++++ ...ixup-Define-PY3_DLLNAME-to-fix-build.patch | 26 ++ ...extensions-if-python-is-running-in-b.patch | 32 +++ ...mingw_smoketests-fix-_UCRT-condition.patch | 28 ++ ...pattern-for-python-config.py-shebang.patch | 28 ++ ...-Modify-sys.winver-to-match-upstream.patch | 74 +++++ ...-packages-path-to-include-the-enviro.patch | 155 +++++++++++ ...e-build-and-add-some-mingw-specific-.patch | 27 ++ mingw-w64-python3.10/PKGBUILD | 62 ++++- 19 files changed, 1260 insertions(+), 4 deletions(-) create mode 100644 mingw-w64-python3.10/0117-distutils-remove-checks-for-ancient-gcc-binutils.patch create mode 100644 mingw-w64-python3.10/0118-distutils-split-CC-env-var-before-passing-to-subproc.patch create mode 100644 mingw-w64-python3.10/0119-_testconsole.c-Fix-casing-path-sep.patch create mode 100644 mingw-w64-python3.10/0120-Return-consistent-architecture-markers-for-python-on.patch create mode 100644 mingw-w64-python3.10/0121-distutils-add-back-gcc_version.patch create mode 100644 mingw-w64-python3.10/0122-fix-mingw-cross-compiling-in-setup.py.patch create mode 100644 mingw-w64-python3.10/0123-Use-actions-setup-python-for-setting-up-correct-vers.patch create mode 100644 mingw-w64-python3.10/0124-Fix-buffer-overflow-in-Py_GetSepW.patch create mode 100644 mingw-w64-python3.10/0125-Remove-unnecessary-strlen-in-Py_NormalizeSepsW.patch create mode 100644 mingw-w64-python3.10/0126-handle-ncursesw-pkg-config-when-cross-compiling.patch create mode 100644 mingw-w64-python3.10/0127-CI-add-cross-llvm-mingw-jobs.patch create mode 100644 mingw-w64-python3.10/0128-fixup-Define-PY3_DLLNAME-to-fix-build.patch create mode 100644 mingw-w64-python3.10/0129-Skip-building-c-extensions-if-python-is-running-in-b.patch create mode 100644 mingw-w64-python3.10/0130-mingw_smoketests-fix-_UCRT-condition.patch create mode 100644 mingw-w64-python3.10/0131-CI-fix-sed-pattern-for-python-config.py-shebang.patch create mode 100644 mingw-w64-python3.10/0132-Modify-sys.winver-to-match-upstream.patch create mode 100644 mingw-w64-python3.10/0133-Change-user-site-packages-path-to-include-the-enviro.patch create mode 100644 mingw-w64-python3.10/0134-fixup-CI-test-the-build-and-add-some-mingw-specific-.patch diff --git a/mingw-w64-python3.10/0117-distutils-remove-checks-for-ancient-gcc-binutils.patch b/mingw-w64-python3.10/0117-distutils-remove-checks-for-ancient-gcc-binutils.patch new file mode 100644 index 0000000000..1bacc9a0bc --- /dev/null +++ b/mingw-w64-python3.10/0117-distutils-remove-checks-for-ancient-gcc-binutils.patch @@ -0,0 +1,262 @@ +From d25b39355a23aff90bab87dca2b1ecec9838795f Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Sun, 7 Nov 2021 23:06:13 +0100 +Subject: [PATCH 117/N] distutils: remove checks for ancient gcc/binutils + +The versions checked here are 20 years old. Also dllwrap +has started to emit a deprecation warning in the latest release +spamming the build logs. + +Fixes #54 + +Signed-off-by: Naveen M K +--- + Lib/distutils/cygwinccompiler.py | 123 +++----------------- + Lib/distutils/tests/test_cygwinccompiler.py | 36 +----- + 2 files changed, 15 insertions(+), 144 deletions(-) + +diff --git a/Lib/distutils/cygwinccompiler.py b/Lib/distutils/cygwinccompiler.py +index 6a40e80..2804f69 100644 +--- a/Lib/distutils/cygwinccompiler.py ++++ b/Lib/distutils/cygwinccompiler.py +@@ -50,15 +50,13 @@ cygwin in no-cygwin mode). + import os + import sys + import copy +-import re + + from distutils.unixccompiler import UnixCCompiler + from distutils.file_util import write_file + from distutils.errors import (DistutilsExecError, CCompilerError, + CompileError, UnknownFileError) +-from distutils.version import LooseVersion + from distutils.spawn import find_executable +-from subprocess import Popen, PIPE, check_output ++from subprocess import Popen, check_output + + def get_msvcr(): + """Include the appropriate MSVC runtime library if Python was built +@@ -115,33 +113,8 @@ class CygwinCCompiler(UnixCCompiler): + self.cc = os.environ.get('CC', 'gcc') + self.cxx = os.environ.get('CXX', 'g++') + +- if ('gcc' in self.cc): # Start gcc workaround +- self.gcc_version, self.ld_version, self.dllwrap_version = \ +- get_versions() +- self.debug_print(self.compiler_type + ": gcc %s, ld %s, dllwrap %s\n" % +- (self.gcc_version, +- self.ld_version, +- self.dllwrap_version) ) +- +- # ld_version >= "2.10.90" and < "2.13" should also be able to use +- # gcc -mdll instead of dllwrap +- # Older dllwraps had own version numbers, newer ones use the +- # same as the rest of binutils ( also ld ) +- # dllwrap 2.10.90 is buggy +- if self.ld_version >= "2.10.90": +- self.linker_dll = self.cc +- else: +- self.linker_dll = "dllwrap" +- +- # ld_version >= "2.13" support -shared so use it instead of +- # -mdll -static +- if self.ld_version >= "2.13": +- shared_option = "-shared" +- else: +- shared_option = "-mdll -static" +- else: # Assume linker is up to date +- self.linker_dll = self.cc +- shared_option = "-shared" ++ self.linker_dll = self.cc ++ shared_option = "-shared" + + self.set_executables(compiler='%s -mcygwin -O -Wall' % self.cc, + compiler_so='%s -mcygwin -mdll -O -Wall' % self.cc, +@@ -150,17 +123,9 @@ class CygwinCCompiler(UnixCCompiler): + linker_so=('%s -mcygwin %s' % + (self.linker_dll, shared_option))) + +- # cygwin and mingw32 need different sets of libraries +- if ('gcc' in self.cc and self.gcc_version == "2.91.57"): +- # cygwin shouldn't need msvcrt, but without the dlls will crash +- # (gcc version 2.91.57) -- perhaps something about initialization +- self.dll_libraries=["msvcrt"] +- self.warn( +- "Consider upgrading to a newer version of gcc") +- else: +- # Include the appropriate MSVC runtime library if Python was built +- # with MSVC 7.0 or later. +- self.dll_libraries = get_msvcr() ++ # Include the appropriate MSVC runtime library if Python was built ++ # with MSVC 7.0 or later. ++ self.dll_libraries = get_msvcr() + + def _compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts): + """Compiles the source by spawning GCC and windres if needed.""" +@@ -244,24 +209,17 @@ class CygwinCCompiler(UnixCCompiler): + + # next add options for def-file and to creating import libraries + +- # dllwrap uses different options than gcc/ld +- if self.linker_dll == "dllwrap": +- extra_preargs.extend(["--output-lib", lib_file]) +- # for dllwrap we have to use a special option +- extra_preargs.extend(["--def", def_file]) +- # we use gcc/ld here and can be sure ld is >= 2.9.10 +- else: +- # doesn't work: bfd_close build\...\libfoo.a: Invalid operation +- #extra_preargs.extend(["-Wl,--out-implib,%s" % lib_file]) +- # for gcc/ld the def-file is specified as any object files +- objects.append(def_file) ++ # doesn't work: bfd_close build\...\libfoo.a: Invalid operation ++ #extra_preargs.extend(["-Wl,--out-implib,%s" % lib_file]) ++ # for gcc/ld the def-file is specified as any object files ++ objects.append(def_file) + + #end: if ((export_symbols is not None) and + # (target_desc != self.EXECUTABLE or self.linker_dll == "gcc")): + + # who wants symbols and a many times larger output file + # should explicitly switch the debug mode on +- # otherwise we let dllwrap/ld strip the output file ++ # otherwise we let ld strip the output file + # (On my machine: 10KiB < stripped_file < ??100KiB + # unstripped_file = stripped_file + XXX KiB + # ( XXX=254 for a typical python extension)) +@@ -314,19 +272,7 @@ class Mingw32CCompiler(CygwinCCompiler): + + CygwinCCompiler.__init__ (self, verbose, dry_run, force) + +- # ld_version >= "2.13" support -shared so use it instead of +- # -mdll -static +- if ('gcc' in self.cc and self.ld_version < "2.13"): +- shared_option = "-mdll -static" +- else: +- shared_option = "-shared" +- +- # A real mingw32 doesn't need to specify a different entry point, +- # but cygwin 2.91.57 in no-cygwin-mode needs it. +- if ('gcc' in self.cc and self.gcc_version <= "2.91.57"): +- entry_point = '--entry _DllMain@12' +- else: +- entry_point = '' ++ shared_option = "-shared" + + if is_cygwincc(self.cc): + raise CCompilerError( +@@ -336,9 +282,8 @@ class Mingw32CCompiler(CygwinCCompiler): + compiler_so='%s -mdll -O2 -Wall' % self.cc, + compiler_cxx='%s -O2 -Wall' % self.cxx, + linker_exe='%s' % self.cc, +- linker_so='%s %s %s' +- % (self.linker_dll, shared_option, +- entry_point)) ++ linker_so='%s %s' ++ % (self.linker_dll, shared_option)) + # Maybe we should also append -mthreads, but then the finished + # dlls need another dll (mingwm10.dll see Mingw32 docs) + # (-mthreads: Support thread-safe exception handling on `Mingw32') +@@ -405,46 +350,6 @@ def check_config_h(): + return (CONFIG_H_UNCERTAIN, + "couldn't read '%s': %s" % (fn, exc.strerror)) + +-RE_VERSION = re.compile(br'[\D\s]*(\d+\.\d+(\.\d+)*)[\D\s]*') +- +-def _find_exe_version(cmd): +- """Find the version of an executable by running `cmd` in the shell. +- +- If the command is not found, or the output does not match +- `RE_VERSION`, returns None. +- """ +- executable = cmd.split()[0] +- if find_executable(executable) is None: +- return None +- from subprocess import Popen, PIPE +- out = Popen(cmd, shell=True, stdout=PIPE).stdout +- try: +- out_string = out.read() +- finally: +- out.close() +- result = RE_VERSION.search(out_string) +- if result is None: +- return None +- # LooseVersion works with strings +- # so we need to decode our bytes +- return LooseVersion(result.group(1).decode()) +- +-def get_versions(): +- """ Try to find out the versions of gcc, ld and dllwrap. +- +- If not possible it returns None for it. +- """ +- gcc = os.environ.get('CC') or 'gcc' +- ld = 'ld' +- out = Popen(gcc+' --print-prog-name ld', shell=True, stdout=PIPE).stdout +- try: +- ld = test=str(out.read(),encoding='utf-8').strip() +- finally: +- out.close() +- dllwrap = os.environ.get('DLLWRAP') or 'dllwrap' +- # MinGW64 doesn't have i686-w64-mingw32-ld, so instead we ask gcc. +- commands = [gcc+' -dumpversion', ld+' -v', dllwrap+' --version'] +- return tuple([_find_exe_version(cmd) for cmd in commands]) + + def is_cygwincc(cc): + '''Try to determine if the compiler that would be used is from cygwin.''' +diff --git a/Lib/distutils/tests/test_cygwinccompiler.py b/Lib/distutils/tests/test_cygwinccompiler.py +index 9dc869d..f525ab4 100644 +--- a/Lib/distutils/tests/test_cygwinccompiler.py ++++ b/Lib/distutils/tests/test_cygwinccompiler.py +@@ -8,7 +8,7 @@ from test.support import run_unittest + from distutils import cygwinccompiler + from distutils.cygwinccompiler import (check_config_h, + CONFIG_H_OK, CONFIG_H_NOTOK, +- CONFIG_H_UNCERTAIN, get_versions, ++ CONFIG_H_UNCERTAIN, + get_msvcr) + from distutils.tests import support + +@@ -81,40 +81,6 @@ class CygwinCCompilerTestCase(support.TempdirManager, + self.write_file(self.python_h, 'xxx __GNUC__ xxx') + self.assertEqual(check_config_h()[0], CONFIG_H_OK) + +- def test_get_versions(self): +- +- # get_versions calls distutils.spawn.find_executable on +- # 'gcc', 'ld' and 'dllwrap' +- self.assertEqual(get_versions(), (None, None, None)) +- +- # Let's fake we have 'gcc' and it returns '3.4.5' +- self._exes['gcc'] = b'gcc (GCC) 3.4.5 (mingw special)\nFSF' +- res = get_versions() +- self.assertEqual(str(res[0]), '3.4.5') +- +- # and let's see what happens when the version +- # doesn't match the regular expression +- # (\d+\.\d+(\.\d+)*) +- self._exes['gcc'] = b'very strange output' +- res = get_versions() +- self.assertEqual(res[0], None) +- +- # same thing for ld +- self._exes['ld'] = b'GNU ld version 2.17.50 20060824' +- res = get_versions() +- self.assertEqual(str(res[1]), '2.17.50') +- self._exes['ld'] = b'@(#)PROGRAM:ld PROJECT:ld64-77' +- res = get_versions() +- self.assertEqual(res[1], None) +- +- # and dllwrap +- self._exes['dllwrap'] = b'GNU dllwrap 2.17.50 20060824\nFSF' +- res = get_versions() +- self.assertEqual(str(res[2]), '2.17.50') +- self._exes['dllwrap'] = b'Cheese Wrap' +- res = get_versions() +- self.assertEqual(res[2], None) +- + def test_get_msvcr(self): + + # none +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0118-distutils-split-CC-env-var-before-passing-to-subproc.patch b/mingw-w64-python3.10/0118-distutils-split-CC-env-var-before-passing-to-subproc.patch new file mode 100644 index 0000000000..5b5f19b008 --- /dev/null +++ b/mingw-w64-python3.10/0118-distutils-split-CC-env-var-before-passing-to-subproc.patch @@ -0,0 +1,38 @@ +From 8dde5997e697370d1b9e7febd79eb1b40930b8c2 Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Sun, 7 Nov 2021 23:12:10 +0100 +Subject: [PATCH 118/N] distutils: split CC env var before passing to + subprocess + +In case CC="ccache gcc" then subprocess would interpret it as one command +and fail to find it. Instead split the command line into separate arguments. + +Fixes #53 + +Signed-off-by: Naveen M K +--- + Lib/distutils/cygwinccompiler.py | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/Lib/distutils/cygwinccompiler.py b/Lib/distutils/cygwinccompiler.py +index 2804f69..6e22555 100644 +--- a/Lib/distutils/cygwinccompiler.py ++++ b/Lib/distutils/cygwinccompiler.py +@@ -50,6 +50,7 @@ cygwin in no-cygwin mode). + import os + import sys + import copy ++import shlex + + from distutils.unixccompiler import UnixCCompiler + from distutils.file_util import write_file +@@ -353,5 +354,5 @@ def check_config_h(): + + def is_cygwincc(cc): + '''Try to determine if the compiler that would be used is from cygwin.''' +- out_string = check_output([cc, '-dumpmachine']) ++ out_string = check_output(shlex.split(cc) + ['-dumpmachine']) + return out_string.strip().endswith(b'cygwin') +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0119-_testconsole.c-Fix-casing-path-sep.patch b/mingw-w64-python3.10/0119-_testconsole.c-Fix-casing-path-sep.patch new file mode 100644 index 0000000000..9c74965c3c --- /dev/null +++ b/mingw-w64-python3.10/0119-_testconsole.c-Fix-casing-path-sep.patch @@ -0,0 +1,35 @@ +From b2ff1b79447c6b6cc7008dc5ee013e272ea791b8 Mon Sep 17 00:00:00 2001 +From: Long Nguyen +Date: Sun, 14 Nov 2021 14:55:35 +0700 +Subject: [PATCH 119/N] _testconsole.c: Fix casing & path sep + +Signed-off-by: Naveen M K +--- + PC/_testconsole.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/PC/_testconsole.c b/PC/_testconsole.c +index db84f73..eecf2f9 100644 +--- a/PC/_testconsole.c ++++ b/PC/_testconsole.c +@@ -6,7 +6,7 @@ + + #ifdef MS_WINDOWS + +-#include "..\modules\_io\_iomodule.h" ++#include "../Modules/_io/_iomodule.h" + + #define WIN32_LEAN_AND_MEAN + #include +@@ -104,7 +104,7 @@ _testconsole_read_output_impl(PyObject *module, PyObject *file) + Py_RETURN_NONE; + } + +-#include "clinic\_testconsole.c.h" ++#include "clinic/_testconsole.c.h" + + PyMethodDef testconsole_methods[] = { + _TESTCONSOLE_WRITE_INPUT_METHODDEF +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0120-Return-consistent-architecture-markers-for-python-on.patch b/mingw-w64-python3.10/0120-Return-consistent-architecture-markers-for-python-on.patch new file mode 100644 index 0000000000..e1f41d6e34 --- /dev/null +++ b/mingw-w64-python3.10/0120-Return-consistent-architecture-markers-for-python-on.patch @@ -0,0 +1,70 @@ +From a3fb8f22fa722dfcefb8602f7bb2758afc2398d7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Martin=20Storsj=C3=B6?= +Date: Fri, 19 Nov 2021 12:18:06 +0200 +Subject: [PATCH 120/N] Return consistent architecture markers for python on + mingw/armv7 + +Signed-off-by: Naveen M K +--- + Lib/distutils/util.py | 2 ++ + Lib/sysconfig.py | 2 ++ + Python/getcompiler.c | 2 ++ + configure.ac | 3 +++ + 4 files changed, 9 insertions(+) + +diff --git a/Lib/distutils/util.py b/Lib/distutils/util.py +index 28e623b..81626b3 100644 +--- a/Lib/distutils/util.py ++++ b/Lib/distutils/util.py +@@ -47,6 +47,8 @@ def get_host_platform(): + return 'mingw_x86_64_clang' + if 'arm64' in sys.version.lower(): + return 'mingw_aarch64' ++ if 'arm' in sys.version.lower(): ++ return 'mingw_armv7' + return 'mingw_i686_clang' + if 'amd64' in sys.version.lower(): + return 'mingw_x86_64' +diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py +index 6b2ab19..03939d8 100644 +--- a/Lib/sysconfig.py ++++ b/Lib/sysconfig.py +@@ -731,6 +731,8 @@ def get_platform(): + return 'mingw_x86_64_clang' + if 'arm64' in sys.version.lower(): + return 'mingw_aarch64' ++ if 'arm' in sys.version.lower(): ++ return 'mingw_armv7' + return 'mingw_i686_clang' + if 'amd64' in sys.version.lower(): + return 'mingw_x86_64' +diff --git a/Python/getcompiler.c b/Python/getcompiler.c +index 275f799..4b0b9b3 100644 +--- a/Python/getcompiler.c ++++ b/Python/getcompiler.c +@@ -20,6 +20,8 @@ + #define ARCH_SUFFIX " 64 bit (AMD64)" + #elif defined(__aarch64__) + #define ARCH_SUFFIX " 64 bit (ARM64)" ++#elif defined(__arm__) ++#define ARCH_SUFFIX " 32 bit (ARM)" + #else + #define ARCH_SUFFIX " 32 bit" + #endif +diff --git a/configure.ac b/configure.ac +index 9538ba6..79e5793 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -5195,6 +5195,9 @@ case $host_os in + aarch64-*-mingw*) + PYD_PLATFORM_TAG+="mingw_aarch64" + ;; ++ armv7-*-mingw*) ++ PYD_PLATFORM_TAG+="mingw_armv7" ++ ;; + esac + AC_MSG_RESULT($PYD_PLATFORM_TAG) + esac +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0121-distutils-add-back-gcc_version.patch b/mingw-w64-python3.10/0121-distutils-add-back-gcc_version.patch new file mode 100644 index 0000000000..1ff1e475f3 --- /dev/null +++ b/mingw-w64-python3.10/0121-distutils-add-back-gcc_version.patch @@ -0,0 +1,40 @@ +From cd29814a5a3be1967f514fc79262297e960d1498 Mon Sep 17 00:00:00 2001 +From: Christoph Reiter +Date: Sun, 21 Nov 2021 14:00:06 +0100 +Subject: [PATCH 121/N] distutils: add back gcc_version + +older numpy depends on it and there are users building it directly via pip + +Signed-off-by: Naveen M K +--- + Lib/distutils/cygwinccompiler.py | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/Lib/distutils/cygwinccompiler.py b/Lib/distutils/cygwinccompiler.py +index 6e22555..d8c8428 100644 +--- a/Lib/distutils/cygwinccompiler.py ++++ b/Lib/distutils/cygwinccompiler.py +@@ -56,6 +56,7 @@ from distutils.unixccompiler import UnixCCompiler + from distutils.file_util import write_file + from distutils.errors import (DistutilsExecError, CCompilerError, + CompileError, UnknownFileError) ++from distutils.version import LooseVersion + from distutils.spawn import find_executable + from subprocess import Popen, check_output + +@@ -114,6 +115,12 @@ class CygwinCCompiler(UnixCCompiler): + self.cc = os.environ.get('CC', 'gcc') + self.cxx = os.environ.get('CXX', 'g++') + ++ # Older numpy dependend on this existing to check for ancient ++ # gcc versions. This doesn't make much sense with clang etc so ++ # just hardcode to something recent. ++ # https://github.com/numpy/numpy/pull/20333 ++ self.gcc_version = LooseVersion("11.2.0") ++ + self.linker_dll = self.cc + shared_option = "-shared" + +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0122-fix-mingw-cross-compiling-in-setup.py.patch b/mingw-w64-python3.10/0122-fix-mingw-cross-compiling-in-setup.py.patch new file mode 100644 index 0000000000..2e8fa310b1 --- /dev/null +++ b/mingw-w64-python3.10/0122-fix-mingw-cross-compiling-in-setup.py.patch @@ -0,0 +1,49 @@ +From e4efd6db37806087bfbf60193aee824695fec60c Mon Sep 17 00:00:00 2001 +From: jeremyd2019 +Date: Mon, 22 Nov 2021 13:15:12 -0800 +Subject: [PATCH 122/N] fix mingw cross compiling in setup.py + +gcc outputs with `;` path delimiter on mingw, so use `os.pathsep` instead of `:` (assuming this is a host rather than target decision) + +clang does not output `LIBRARY_PATH` with `-E -v`, so add an extra call to `-print-search-dirs` to find its library path. + +Signed-off-by: Naveen M K +--- + setup.py | 15 +++++++++++++-- + 1 file changed, 13 insertions(+), 2 deletions(-) + +diff --git a/setup.py b/setup.py +index 67e290a..6285996 100644 +--- a/setup.py ++++ b/setup.py +@@ -786,14 +786,25 @@ class PyBuildExt(build_ext): + elif line.startswith("End of search list"): + in_incdirs = False + elif (is_gcc or is_clang) and line.startswith("LIBRARY_PATH"): +- for d in line.strip().split("=")[1].split(":"): ++ for d in line.strip().split("=")[1].split(os.pathsep): + d = os.path.normpath(d) +- if '/gcc/' not in d: ++ if '/gcc/' not in d and '/clang/' not in d: + add_dir_to_list(self.compiler.library_dirs, + d) + elif (is_gcc or is_clang) and in_incdirs and '/gcc/' not in line and '/clang/' not in line: + add_dir_to_list(self.compiler.include_dirs, + line.strip()) ++ if is_clang: ++ ret = run_command('%s -print-search-dirs >%s' % (cc, tmpfile)) ++ if ret == 0: ++ with open(tmpfile) as fp: ++ for line in fp.readlines(): ++ if line.startswith("libraries:"): ++ for d in line.strip().split("=")[1].split(os.pathsep): ++ d = os.path.normpath(d) ++ if '/gcc/' not in d and '/clang/' not in d: ++ add_dir_to_list(self.compiler.library_dirs, ++ d) + finally: + os.unlink(tmpfile) + +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0123-Use-actions-setup-python-for-setting-up-correct-vers.patch b/mingw-w64-python3.10/0123-Use-actions-setup-python-for-setting-up-correct-vers.patch new file mode 100644 index 0000000000..2ad24b548c --- /dev/null +++ b/mingw-w64-python3.10/0123-Use-actions-setup-python-for-setting-up-correct-vers.patch @@ -0,0 +1,40 @@ +From 11d06c3d15613963b6a057393a316794b228438b Mon Sep 17 00:00:00 2001 +From: Naveen M K +Date: Fri, 21 Jan 2022 19:25:44 +0530 +Subject: [PATCH 123/N] Use actions/setup-python for setting up correct + version in cross build + +Fixes https://github.com/msys2-contrib/cpython-mingw/issues/67 + +(Updated for python 3.10) + +Signed-off-by: Naveen M K +--- + .github/workflows/mingw.yml | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +diff --git a/.github/workflows/mingw.yml b/.github/workflows/mingw.yml +index eb27adc..781b933 100644 +--- a/.github/workflows/mingw.yml ++++ b/.github/workflows/mingw.yml +@@ -162,7 +162,16 @@ jobs: + - name: Install deps + run: | + pacman --noconfirm -Suuy +- pacman --needed --noconfirm -S mingw-w64-gcc autoconf-archive autoconf automake python zip ++ pacman --needed --noconfirm -S mingw-w64-gcc autoconf-archive autoconf automake zip ++ ++ - uses: actions/setup-python@v2 ++ with: ++ python-version: '3.10' ++ ++ - name: Check Python Version ++ run: | ++ which python ++ python --version + + - name: Build + run: | +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0124-Fix-buffer-overflow-in-Py_GetSepW.patch b/mingw-w64-python3.10/0124-Fix-buffer-overflow-in-Py_GetSepW.patch new file mode 100644 index 0000000000..0842fb5491 --- /dev/null +++ b/mingw-w64-python3.10/0124-Fix-buffer-overflow-in-Py_GetSepW.patch @@ -0,0 +1,66 @@ +From 8301f689091bc330afa5aed5825a6dd58f919449 Mon Sep 17 00:00:00 2001 +From: cat +Date: Sat, 11 Dec 2021 14:21:07 +0500 +Subject: [PATCH 124/N] Fix buffer overflow in Py_GetSepW(). + +Signed-off-by: Naveen M K +--- + Python/pathconfig.c | 28 ++++++++++++++++++++++++++-- + 1 file changed, 26 insertions(+), 2 deletions(-) + +diff --git a/Python/pathconfig.c b/Python/pathconfig.c +index 3e7a1c5..15ffaa2 100644 +--- a/Python/pathconfig.c ++++ b/Python/pathconfig.c +@@ -20,6 +20,30 @@ extern "C" { + #include + #endif + ++static int ++Py_StartsWithA(const char * str, const char * prefix) ++{ ++ while(*prefix) ++ { ++ if(*prefix++ != *str++) ++ return 0; ++ } ++ ++ return 1; ++} ++ ++static int ++Py_StartsWithW(const wchar_t * str, const wchar_t * prefix) ++{ ++ while(*prefix) ++ { ++ if(*prefix++ != *str++) ++ return 0; ++ } ++ ++ return 1; ++} ++ + char + Py_GetSepA(const char *name) + { +@@ -30,7 +54,7 @@ Py_GetSepA(const char *name) + * The "\\?\" prefix .. indicate that the path should be passed to the system with minimal + * modification, which means that you cannot use forward slashes to represent path separators + */ +- if (name != NULL && memcmp(name, "\\\\?\\", sizeof("\\\\?\\") - sizeof(char)) == 0) ++ if (name != NULL && Py_StartsWithA(name, "\\\\?\\") != 0) + { + return '\\'; + } +@@ -82,7 +106,7 @@ Py_GetSepW(const wchar_t *name) + * The "\\?\" prefix .. indicate that the path should be passed to the system with minimal + * modification, which means that you cannot use forward slashes to represent path separators + */ +- if (name != NULL && memcmp(name, L"\\\\?\\", sizeof(L"\\\\?\\") - sizeof(wchar_t)) == 0) ++ if (name != NULL && Py_StartsWithW(name, L"\\\\?\\") != 0) + { + return L'\\'; + } +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0125-Remove-unnecessary-strlen-in-Py_NormalizeSepsW.patch b/mingw-w64-python3.10/0125-Remove-unnecessary-strlen-in-Py_NormalizeSepsW.patch new file mode 100644 index 0000000000..6702fef603 --- /dev/null +++ b/mingw-w64-python3.10/0125-Remove-unnecessary-strlen-in-Py_NormalizeSepsW.patch @@ -0,0 +1,43 @@ +From b21ef8bae4ed5026d0497e67ba90c958946bfc35 Mon Sep 17 00:00:00 2001 +From: cat +Date: Sat, 11 Dec 2021 14:23:29 +0500 +Subject: [PATCH 125/N] Remove unnecessary strlen() in Py_NormalizeSepsW(). + +Signed-off-by: Naveen M K +--- + Python/pathconfig.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/Python/pathconfig.c b/Python/pathconfig.c +index 15ffaa2..bb8d33d 100644 +--- a/Python/pathconfig.c ++++ b/Python/pathconfig.c +@@ -83,10 +83,11 @@ Py_GetAltSepA(const char *name) + void + Py_NormalizeSepsA(char *name) + { ++ assert(name != NULL); + char sep = Py_GetSepA(name); + char altsep = Py_GetAltSepA(name); + char* seps; +- if (strlen(name) > 1 && name[1] == ':') { ++ if (name[0] != '\0' && name[1] == ':') { + name[0] = toupper(name[0]); + } + seps = strchr(name, altsep); +@@ -135,10 +136,11 @@ Py_GetAltSepW(const wchar_t *name) + void + Py_NormalizeSepsW(wchar_t *name) + { ++ assert(name != NULL); + wchar_t sep = Py_GetSepW(name); + wchar_t altsep = Py_GetAltSepW(name); + wchar_t* seps; +- if (wcslen(name) > 1 && name[1] == L':') { ++ if (name[0] != L'\0' && name[1] == L':') { + name[0] = towupper(name[0]); + } + seps = wcschr(name, altsep); +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0126-handle-ncursesw-pkg-config-when-cross-compiling.patch b/mingw-w64-python3.10/0126-handle-ncursesw-pkg-config-when-cross-compiling.patch new file mode 100644 index 0000000000..cb9cb87165 --- /dev/null +++ b/mingw-w64-python3.10/0126-handle-ncursesw-pkg-config-when-cross-compiling.patch @@ -0,0 +1,65 @@ +From 911ee4af060e06aca27f603034fe55bc593610dd Mon Sep 17 00:00:00 2001 +From: jeremyd2019 +Date: Mon, 22 Nov 2021 16:04:41 -0800 +Subject: [PATCH 126/N] handle ncursesw pkg-config when cross-compiling + +strip extra args from pkg-config --cflags-only-I, setup.py is only expecting a single path. + +Use pkg-config ncursesw include dir even if cross-compiling (PKG_CONFIG_PATH should be set in that case). + +Signed-off-by: Naveen M K +--- + configure.ac | 8 +++----- + setup.py | 3 +-- + 2 files changed, 4 insertions(+), 7 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 79e5793..f442420 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3379,7 +3379,7 @@ else + fi + + if test "$with_system_ffi" = "yes" && test -n "$PKG_CONFIG"; then +- LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`" ++ LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ .*$//'`" + else + LIBFFI_INCLUDEDIR="" + fi +@@ -5631,7 +5631,7 @@ then + fi + + if test -n "$PKG_CONFIG"; then +- NCURSESW_INCLUDEDIR="`"$PKG_CONFIG" ncursesw --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`" ++ NCURSESW_INCLUDEDIR="`"$PKG_CONFIG" ncursesw --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ .*$//'`" + else + NCURSESW_INCLUDEDIR="" + fi +@@ -5639,9 +5639,7 @@ AC_SUBST(NCURSESW_INCLUDEDIR) + + # first curses header check + ac_save_cppflags="$CPPFLAGS" +-if test "$cross_compiling" = no; then +- CPPFLAGS="$CPPFLAGS -I$NCURSESW_INCLUDEDIR" +-fi ++CPPFLAGS="$CPPFLAGS -I$NCURSESW_INCLUDEDIR" + + AC_CHECK_HEADERS(curses.h ncurses.h) + +diff --git a/setup.py b/setup.py +index 6285996..f19c4e3 100644 +--- a/setup.py ++++ b/setup.py +@@ -1202,8 +1202,7 @@ class PyBuildExt(build_ext): + panel_library = 'panel' + if curses_library == 'ncursesw': + curses_defines.append(('HAVE_NCURSESW', '1')) +- if not CROSS_COMPILING: +- curses_includes.append(sysconfig.get_config_var("NCURSESW_INCLUDEDIR")) ++ curses_includes.append(sysconfig.get_config_var("NCURSESW_INCLUDEDIR")) + # Bug 1464056: If _curses.so links with ncursesw, + # _curses_panel.so must link with panelw. + panel_library = 'panelw' +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0127-CI-add-cross-llvm-mingw-jobs.patch b/mingw-w64-python3.10/0127-CI-add-cross-llvm-mingw-jobs.patch new file mode 100644 index 0000000000..a90de3e798 --- /dev/null +++ b/mingw-w64-python3.10/0127-CI-add-cross-llvm-mingw-jobs.patch @@ -0,0 +1,124 @@ +From c331b79b64c9953f26f5863e547f32c3804539d1 Mon Sep 17 00:00:00 2001 +From: Jeremy Drake +Date: Fri, 21 Jan 2022 17:47:04 -0800 +Subject: [PATCH 127/N] CI: add cross llvm-mingw jobs + +Signed-off-by: Naveen M K +--- + .github/workflows/mingw.yml | 85 ++++++++++++++++++++++++++++++++++--- + 1 file changed, 80 insertions(+), 5 deletions(-) + +diff --git a/.github/workflows/mingw.yml b/.github/workflows/mingw.yml +index 781b933..4c45aeb 100644 +--- a/.github/workflows/mingw.yml ++++ b/.github/workflows/mingw.yml +@@ -153,7 +153,7 @@ jobs: + name: build-${{ matrix.msystem }} + path: _build/python.tar.gz + +- cross: ++ cross-gcc-x86_64: + runs-on: ubuntu-latest + container: + image: archlinux:base-devel +@@ -201,18 +201,93 @@ jobs: + - name: Upload + uses: actions/upload-artifact@v2 + with: +- name: build-cross ++ name: build-cross-gcc-x86_64 + path: install.zip + +- cross-test: +- needs: [cross] ++ cross-gcc-x86_64-test: ++ needs: [cross-gcc-x86_64] + runs-on: windows-latest + steps: + - uses: actions/download-artifact@v2 + with: +- name: build-cross ++ name: build-cross-gcc-x86_64 + + - name: 'Run tests' + run: | + 7z x install.zip + ./_build/install/usr/local/bin/python3.exe -c "import sysconfig, pprint; pprint.pprint(sysconfig.get_config_vars())" ++ ++ ++ cross-llvm-mingw: ++ runs-on: ubuntu-18.04 ++ container: ++ image: mstorsjo/llvm-mingw:latest ++ strategy: ++ matrix: ++ arch: ['x86_64', 'i686', 'aarch64', 'armv7'] ++ steps: ++ - uses: actions/checkout@v2 ++ - name: Install deps ++ run: | ++ apt-get update -qq ++ apt-get install -qqy autoconf-archive ++ ++ - uses: actions/setup-python@v2 ++ with: ++ python-version: '3.10' ++ ++ - name: Check Python Version ++ run: | ++ which python ++ python --version ++ ++ - name: Build ++ run: | ++ autoreconf -vfi ++ ++ mkdir _build && cd _build ++ ++ export CC=${{ matrix.arch }}-w64-mingw32-clang ++ export CXX=${CC}++ ++ ../configure \ ++ --host=${{ matrix.arch }}-w64-mingw32 \ ++ --build=x86_64-pc-linux-gnu \ ++ --enable-shared \ ++ --with-system-expat \ ++ --with-system-ffi \ ++ --with-system-libmpdec \ ++ --without-ensurepip \ ++ --without-c-locale-coercion \ ++ --enable-loadable-sqlite-extensions ++ ++ make -j8 ++ ++ make install DESTDIR="$(pwd)/install" ++ ++ - name: 'Zip files' ++ run: | ++ zip -r install.zip _build/install ++ ++ - name: Upload ++ uses: actions/upload-artifact@v2 ++ with: ++ name: build-cross-llvm-mingw-${{ matrix.arch }} ++ path: install.zip ++ ++ cross-llvm-mingw-test: ++ needs: [cross-llvm-mingw] ++ runs-on: windows-latest ++ strategy: ++ matrix: ++ arch: ['x86_64', 'i686'] ++ steps: ++ - uses: actions/download-artifact@v2 ++ with: ++ name: build-cross-llvm-mingw-${{ matrix.arch }} ++ ++ - name: 'Run tests' ++ run: | ++ 7z x install.zip ++ ./_build/install/usr/local/bin/python3.exe -c "import sysconfig, pprint; pprint.pprint(sysconfig.get_config_vars())" ++ ++ +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0128-fixup-Define-PY3_DLLNAME-to-fix-build.patch b/mingw-w64-python3.10/0128-fixup-Define-PY3_DLLNAME-to-fix-build.patch new file mode 100644 index 0000000000..e0c328a0db --- /dev/null +++ b/mingw-w64-python3.10/0128-fixup-Define-PY3_DLLNAME-to-fix-build.patch @@ -0,0 +1,26 @@ +From 931aa351e8f35c19635dabdfdc8660d9963635da Mon Sep 17 00:00:00 2001 +From: Jeremy Drake +Date: Fri, 21 Jan 2022 22:52:36 -0800 +Subject: [PATCH 128/N] fixup! Define PY3_DLLNAME to fix build + +Signed-off-by: Naveen M K +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index f442420..3a69478 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3961,7 +3961,7 @@ then + *-*-mingw*) + DYNLOADFILE="dynload_win.o" + extra_machdep_objs="$extra_machdep_objs PC/dl_nt.o" +- CFLAGS_NODIST="$CFLAGS_NODIST -DMS_DLL_ID='\"$VERSION\"' -DPY3_DLLNAME='\"libpython3.dll\"'" ++ CFLAGS_NODIST="$CFLAGS_NODIST -DMS_DLL_ID='\"$VERSION\"' -DPY3_DLLNAME='L\"$DLLLIBRARY\"'" + ;; + esac + fi +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0129-Skip-building-c-extensions-if-python-is-running-in-b.patch b/mingw-w64-python3.10/0129-Skip-building-c-extensions-if-python-is-running-in-b.patch new file mode 100644 index 0000000000..99037c62bb --- /dev/null +++ b/mingw-w64-python3.10/0129-Skip-building-c-extensions-if-python-is-running-in-b.patch @@ -0,0 +1,32 @@ +From 2f3cb98e435e6bf104d86d78d045bb66f07b50c9 Mon Sep 17 00:00:00 2001 +From: Naveen M K +Date: Fri, 21 Jan 2022 20:50:25 +0530 +Subject: [PATCH 129/N] Skip building c-extensions if python is running in + build tree + +Signed-off-by: Naveen M K +--- + mingw_smoketests.py | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/mingw_smoketests.py b/mingw_smoketests.py +index 527aafb..2c5e2a0 100644 +--- a/mingw_smoketests.py ++++ b/mingw_smoketests.py +@@ -226,6 +226,13 @@ class Tests(unittest.TestCase): + import textwrap + from pathlib import Path + ++ if sysconfig.is_python_build(): ++ # we are running this test without installing and is known ++ # to cause errors with building c-extensions ++ # so we are skipping this test ++ raise unittest.SkipTest("Skipping test as building c-extension isn't supported \ ++ without installing python") ++ + with tempfile.TemporaryDirectory() as tmppro: + subprocess.check_call([sys.executable, "-m", "ensurepip", "--user"]) + with Path(tmppro, "setup.py").open("w") as f: +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0130-mingw_smoketests-fix-_UCRT-condition.patch b/mingw-w64-python3.10/0130-mingw_smoketests-fix-_UCRT-condition.patch new file mode 100644 index 0000000000..c741d1bc0c --- /dev/null +++ b/mingw-w64-python3.10/0130-mingw_smoketests-fix-_UCRT-condition.patch @@ -0,0 +1,28 @@ +From ecb8ff960cb41e55ed298749016415665f4f08d5 Mon Sep 17 00:00:00 2001 +From: jeremyd2019 +Date: Sat, 22 Jan 2022 11:33:00 -0800 +Subject: [PATCH 130/N] mingw_smoketests: fix _UCRT condition + +The prior detection missed ARM (32 and 64) being UCRT. Since there are fewer non-UCRT platforms, list those two instead of trying to extend the list of UCRT. + +Signed-off-by: Naveen M K +--- + mingw_smoketests.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/mingw_smoketests.py b/mingw_smoketests.py +index 2c5e2a0..15356fd 100644 +--- a/mingw_smoketests.py ++++ b/mingw_smoketests.py +@@ -34,7 +34,7 @@ if "MSYSTEM" in os.environ: + else: + SEP = "\\" + +-_UCRT = "clang" in sysconfig.get_platform() or "ucrt" in sysconfig.get_platform() ++_UCRT = sysconfig.get_platform() not in ('mingw_x86_64', 'mingw_i686') + + + class Tests(unittest.TestCase): +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0131-CI-fix-sed-pattern-for-python-config.py-shebang.patch b/mingw-w64-python3.10/0131-CI-fix-sed-pattern-for-python-config.py-shebang.patch new file mode 100644 index 0000000000..08d1324d24 --- /dev/null +++ b/mingw-w64-python3.10/0131-CI-fix-sed-pattern-for-python-config.py-shebang.patch @@ -0,0 +1,28 @@ +From dd4c87371da2f4f93f2203fb9d2e0ab2d429559b Mon Sep 17 00:00:00 2001 +From: jeremyd2019 +Date: Sat, 22 Jan 2022 12:08:33 -0800 +Subject: [PATCH 131/N] CI: fix sed pattern for python-config.py shebang + +The shebang (`#!`) does not include `${pkgdir}` so this sed did nothing + +Signed-off-by: Naveen M K +--- + .github/workflows/mingw.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/.github/workflows/mingw.yml b/.github/workflows/mingw.yml +index 4c45aeb..2ba48e7 100644 +--- a/.github/workflows/mingw.yml ++++ b/.github/workflows/mingw.yml +@@ -120,7 +120,7 @@ jobs: + 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 +- sed -i "s|#!${pkgdir}${MINGW_PREFIX}/bin/python${_pybasever}.exe|#!/usr/bin/env python${_pybasever}.exe|" "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/config-${_pybasever}/python-config.py ++ sed -i "s|#!${MINGW_PREFIX}/bin/python${_pybasever}.exe|#!/usr/bin/env python${_pybasever}.exe|" "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/config-${_pybasever}/python-config.py + + # Create version-less aliases + cp "${pkgdir}${MINGW_PREFIX}"/bin/python3.exe "${pkgdir}${MINGW_PREFIX}"/bin/python.exe +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0132-Modify-sys.winver-to-match-upstream.patch b/mingw-w64-python3.10/0132-Modify-sys.winver-to-match-upstream.patch new file mode 100644 index 0000000000..897a14d936 --- /dev/null +++ b/mingw-w64-python3.10/0132-Modify-sys.winver-to-match-upstream.patch @@ -0,0 +1,74 @@ +From 70b6164a3432fe464db7f4dd9823a9e7017b7c41 Mon Sep 17 00:00:00 2001 +From: Naveen M K +Date: Wed, 19 Jan 2022 19:39:20 +0530 +Subject: [PATCH 132/N] Modify `sys.winver` to match upstream + +With this change `sys.winver` will add the Arch for which +python was compiled on, for example in 32-bits, `sys.winver` +will be `3.10-32`, for arm32 it would be `3.10-arm32` and +so on. + +See https://github.com/msys2-contrib/cpython-mingw/issues/40 + +Signed-off-by: Naveen M K +--- + configure.ac | 22 ++++++++++++++++++---- + mingw_smoketests.py | 9 ++++++++- + 2 files changed, 26 insertions(+), 5 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 3a69478..05992b3 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3959,10 +3959,24 @@ then + esac + case $host in + *-*-mingw*) +- DYNLOADFILE="dynload_win.o" +- extra_machdep_objs="$extra_machdep_objs PC/dl_nt.o" +- CFLAGS_NODIST="$CFLAGS_NODIST -DMS_DLL_ID='\"$VERSION\"' -DPY3_DLLNAME='L\"$DLLLIBRARY\"'" +- ;; ++ DYNLOADFILE="dynload_win.o" ++ extra_machdep_objs="$extra_machdep_objs PC/dl_nt.o" ++ CFLAGS_NODIST="$CFLAGS_NODIST -DPY3_DLLNAME='L\"$DLLLIBRARY\"'" ++ case $host in ++ i686*) ++ CFLAGS_NODIST="$CFLAGS_NODIST -DMS_DLL_ID='\"${VERSION}-32\"'" ++ ;; ++ armv7*) ++ CFLAGS_NODIST="$CFLAGS_NODIST -DMS_DLL_ID='\"${VERSION}-arm32\"'" ++ ;; ++ aarch64*) ++ CFLAGS_NODIST="$CFLAGS_NODIST -DMS_DLL_ID='\"${VERSION}-arm64\"'" ++ ;; ++ *) ++ CFLAGS_NODIST="$CFLAGS_NODIST -DMS_DLL_ID='\"$VERSION\"'" ++ ;; ++ esac ++ ;; + esac + fi + AC_MSG_RESULT($DYNLOADFILE) +diff --git a/mingw_smoketests.py b/mingw_smoketests.py +index 15356fd..8e4bd50 100644 +--- a/mingw_smoketests.py ++++ b/mingw_smoketests.py +@@ -214,7 +214,14 @@ class Tests(unittest.TestCase): + ext_suffixes = importlib.machinery.EXTENSION_SUFFIXES + self.assertTrue(ext_suffix in ext_suffixes) + self.assertTrue(".pyd" in ext_suffixes) +- self.assertEqual(sys.winver, ".".join(map(str, sys.version_info[:2]))) ++ if sysconfig.get_platform().startswith('mingw_i686'): ++ self.assertEqual(sys.winver, ".".join(map(str, sys.version_info[:2])) + '-32') ++ elif sysconfig.get_platform().startswith('mingw_aarch64'): ++ self.assertEqual(sys.winver, ".".join(map(str, sys.version_info[:2])) + '-arm64') ++ elif sysconfig.get_platform().startswith('mingw_armv7'): ++ self.assertEqual(sys.winver, ".".join(map(str, sys.version_info[:2])) + '-arm32') ++ else: ++ self.assertEqual(sys.winver, ".".join(map(str, sys.version_info[:2]))) + self.assertEqual(platform.python_implementation(), "CPython") + self.assertEqual(platform.system(), "Windows") + self.assertTrue(isinstance(sys.api_version, int) and sys.api_version > 0) +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0133-Change-user-site-packages-path-to-include-the-enviro.patch b/mingw-w64-python3.10/0133-Change-user-site-packages-path-to-include-the-enviro.patch new file mode 100644 index 0000000000..5076adf76c --- /dev/null +++ b/mingw-w64-python3.10/0133-Change-user-site-packages-path-to-include-the-enviro.patch @@ -0,0 +1,155 @@ +From aef3887718ed1ab80610ee6ddf007925e4687ed6 Mon Sep 17 00:00:00 2001 +From: Naveen M K +Date: Wed, 19 Jan 2022 20:01:45 +0530 +Subject: [PATCH 133/N] Change user site-packages path to include the + environment info + +This should avoid mixing of user site-packages between python +from various environments. Previously, the user site-packages +should be located at `~/.local/lib/python3.10` for all environment +including 32-bits variants which caused problems with 64-bit trying to +load 32-bit extensions. Now this path will be changed to +`~/.local/lib/python3.10-`, for example, in +CLANG64 this would be `~/.local/lib/python3.10-mingw_x86_64_clang`. + +Fixes https://github.com/msys2-contrib/cpython-mingw/issues/40 + +Signed-off-by: Naveen M K +--- + Lib/distutils/command/install.py | 5 +++-- + Lib/site.py | 28 +++++++++++++++++++++++++--- + Lib/sysconfig.py | 26 +++++++++++++++----------- + 3 files changed, 43 insertions(+), 16 deletions(-) + +diff --git a/Lib/distutils/command/install.py b/Lib/distutils/command/install.py +index d5e340a..1132ef5 100644 +--- a/Lib/distutils/command/install.py ++++ b/Lib/distutils/command/install.py +@@ -72,7 +72,7 @@ if HAS_USER_SITE: + INSTALL_SCHEMES['nt_user'] = { + 'purelib': '$usersite', + 'platlib': '$usersite', +- 'headers': '$userbase/include/python$py_version_short$abiflags/$dist_name', ++ 'headers': '$userbase/include/python$py_version_short_plat$abiflags/$dist_name', + 'scripts': '$userbase/bin', + 'data' : '$userbase', + } +@@ -81,7 +81,7 @@ if HAS_USER_SITE: + 'purelib': '$usersite', + 'platlib': '$usersite', + 'headers': +- '$userbase/include/python$py_version_short$abiflags/$dist_name', ++ '$userbase/include/python$py_version_short_plat$abiflags/$dist_name', + 'scripts': '$userbase/bin', + 'data' : '$userbase', + } +@@ -311,6 +311,7 @@ class install(Command): + 'py_version': py_version, + 'py_version_short': '%d.%d' % sys.version_info[:2], + 'py_version_nodot': '%d%d' % sys.version_info[:2], ++ 'py_version_short_plat': f'{sys.version_info[0]}.{sys.version_info[1]}-{get_platform()}' if os.name == 'nt' and 'gcc' in sys.version.lower() else f'{sys.version_info[0]}.{sys.version_info[1]}', + 'sys_prefix': prefix, + 'prefix': prefix, + 'sys_exec_prefix': exec_prefix, +diff --git a/Lib/site.py b/Lib/site.py +index 49c6ce0..877167b 100644 +--- a/Lib/site.py ++++ b/Lib/site.py +@@ -289,14 +289,36 @@ def _getuserbase(): + + return joinuser("~", ".local") + ++# Copy of sysconfig.get_platform() but only for MinGW ++def _get_platform(): ++ if os.name == 'nt': ++ if 'gcc' in sys.version.lower(): ++ if 'ucrt' in sys.version.lower(): ++ if 'amd64' in sys.version.lower(): ++ return 'mingw_x86_64_ucrt' ++ return 'mingw_i686_ucrt' ++ if 'clang' in sys.version.lower(): ++ if 'amd64' in sys.version.lower(): ++ return 'mingw_x86_64_clang' ++ if 'arm64' in sys.version.lower(): ++ return 'mingw_aarch64' ++ if 'arm' in sys.version.lower(): ++ return 'mingw_armv7' ++ return 'mingw_i686_clang' ++ if 'amd64' in sys.version.lower(): ++ return 'mingw_x86_64' ++ return 'mingw_i686' ++ return sys.platform + + # Same to sysconfig.get_path('purelib', os.name+'_user') + def _get_path(userbase): + version = sys.version_info + +- if os.name == 'nt' and not _POSIX_BUILD: +- ver_nodot = sys.winver.replace('.', '') +- return f'{userbase}\\Python{ver_nodot}\\site-packages' ++ if os.name == 'nt': ++ if not _POSIX_BUILD: ++ ver_nodot = sys.winver.replace('.', '') ++ return f'{userbase}\\Python{ver_nodot}\\site-packages' ++ return f'{userbase}/lib/python{version[0]}.{version[1]}-{_get_platform()}/site-packages' + + if sys.platform == 'darwin' and sys._framework: + return f'{userbase}/lib/python/site-packages' +diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py +index 03939d8..ce8bf46 100644 +--- a/Lib/sysconfig.py ++++ b/Lib/sysconfig.py +@@ -95,20 +95,20 @@ if _HAS_USER_BASE: + _INSTALL_SCHEMES |= { + # NOTE: When modifying "purelib" scheme, update site._get_path() too. + 'nt_user': { +- 'stdlib': '{userbase}/lib/python{py_version_short}', +- 'platstdlib': '{userbase}/lib/python{py_version_short}', +- 'purelib': '{userbase}/lib/python{py_version_short}/site-packages', +- 'platlib': '{userbase}/lib/python{py_version_short}/site-packages', +- 'include': '{userbase}/include/python{py_version_short}', ++ 'stdlib': '{userbase}/lib/python{py_version_short_plat}', ++ 'platstdlib': '{userbase}/lib/python{py_version_short_plat}', ++ 'purelib': '{userbase}/lib/python{py_version_short_plat}/site-packages', ++ 'platlib': '{userbase}/lib/python{py_version_short_plat}/site-packages', ++ 'include': '{userbase}/include/python{py_version_short_plat}', + 'scripts': '{userbase}/bin', + 'data': '{userbase}', + }, + 'posix_user': { +- 'stdlib': '{userbase}/{platlibdir}/python{py_version_short}', +- 'platstdlib': '{userbase}/{platlibdir}/python{py_version_short}', +- 'purelib': '{userbase}/lib/python{py_version_short}/site-packages', +- 'platlib': '{userbase}/lib/python{py_version_short}/site-packages', +- 'include': '{userbase}/include/python{py_version_short}', ++ 'stdlib': '{userbase}/{platlibdir}/python{py_version_short_plat}', ++ 'platstdlib': '{userbase}/{platlibdir}/python{py_version_short_plat}', ++ 'purelib': '{userbase}/lib/python{py_version_short_plat}/site-packages', ++ 'platlib': '{userbase}/lib/python{py_version_short_plat}/site-packages', ++ 'include': '{userbase}/include/python{py_version_short_plat}', + 'scripts': '{userbase}/bin', + 'data': '{userbase}', + }, +@@ -640,6 +640,10 @@ def get_config_vars(*args): + _CONFIG_VARS['py_version_nodot_plat'] = sys.winver.replace('.', '') + except AttributeError: + _CONFIG_VARS['py_version_nodot_plat'] = '' ++ if os.name == 'nt' and _POSIX_BUILD: ++ _CONFIG_VARS['py_version_short_plat'] = f'{_PY_VERSION_SHORT}-{get_platform()}' ++ else: ++ _CONFIG_VARS['py_version_short_plat'] = _PY_VERSION_SHORT + + if os.name == 'nt' and not _POSIX_BUILD: + _init_non_posix(_CONFIG_VARS) +@@ -698,7 +702,7 @@ def get_config_var(name): + warnings.warn('SO is deprecated, use EXT_SUFFIX', DeprecationWarning, 2) + return get_config_vars().get(name) + +- ++# make sure to change site._get_platform() while changing this function + def get_platform(): + """Return a string that identifies the current platform. + +-- +2.34.1 + diff --git a/mingw-w64-python3.10/0134-fixup-CI-test-the-build-and-add-some-mingw-specific-.patch b/mingw-w64-python3.10/0134-fixup-CI-test-the-build-and-add-some-mingw-specific-.patch new file mode 100644 index 0000000000..6e06751a86 --- /dev/null +++ b/mingw-w64-python3.10/0134-fixup-CI-test-the-build-and-add-some-mingw-specific-.patch @@ -0,0 +1,27 @@ +From 905ce648188ca2f95ba2bc6381c82d98a4ddd315 Mon Sep 17 00:00:00 2001 +From: Naveen M K +Date: Sun, 23 Jan 2022 12:55:45 +0530 +Subject: [PATCH 134/N] fixup! CI: test the build and add some mingw specific + tests + +Signed-off-by: Naveen M K +--- + .github/workflows/mingw.yml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/.github/workflows/mingw.yml b/.github/workflows/mingw.yml +index 2ba48e7..999ccf9 100644 +--- a/.github/workflows/mingw.yml ++++ b/.github/workflows/mingw.yml +@@ -116,7 +116,7 @@ jobs: + make -j1 install DESTDIR="${pkgdir}" + + # Fix shebangs +- _pybasever=$(./python.exe -c "import sys; print(sys.winver);") ++ _pybasever=$(./python.exe -c "import sys; print(f'{sys.version_info[0]}.{sys.version_info[1]}');") + 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 +-- +2.34.1 + diff --git a/mingw-w64-python3.10/PKGBUILD b/mingw-w64-python3.10/PKGBUILD index 63a2216317..93267579b2 100644 --- a/mingw-w64-python3.10/PKGBUILD +++ b/mingw-w64-python3.10/PKGBUILD @@ -22,7 +22,7 @@ else pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}${_pybasever}") fi pkgver=${_pybasever}.0 -pkgrel=1 +pkgrel=2 pkgdesc="A high-level scripting language (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') @@ -163,7 +163,25 @@ source=("https://www.python.org/ftp/python/${pkgver%rc?}/Python-${pkgver}.tar.xz 0113-smoketests-test-that-_decimal-exists.patch 0114-Prefer-sysconfig.python_build.patch 0115-Define-PY3_DLLNAME-to-fix-build.patch - 0116-Commit-regenerated-importlib.patch) + 0116-Commit-regenerated-importlib.patch + 0117-distutils-remove-checks-for-ancient-gcc-binutils.patch + 0118-distutils-split-CC-env-var-before-passing-to-subproc.patch + 0119-_testconsole.c-Fix-casing-path-sep.patch + 0120-Return-consistent-architecture-markers-for-python-on.patch + 0121-distutils-add-back-gcc_version.patch + 0122-fix-mingw-cross-compiling-in-setup.py.patch + 0123-Use-actions-setup-python-for-setting-up-correct-vers.patch + 0124-Fix-buffer-overflow-in-Py_GetSepW.patch + 0125-Remove-unnecessary-strlen-in-Py_NormalizeSepsW.patch + 0126-handle-ncursesw-pkg-config-when-cross-compiling.patch + 0127-CI-add-cross-llvm-mingw-jobs.patch + 0128-fixup-Define-PY3_DLLNAME-to-fix-build.patch + 0129-Skip-building-c-extensions-if-python-is-running-in-b.patch + 0130-mingw_smoketests-fix-_UCRT-condition.patch + 0131-CI-fix-sed-pattern-for-python-config.py-shebang.patch + 0132-Modify-sys.winver-to-match-upstream.patch + 0133-Change-user-site-packages-path-to-include-the-enviro.patch + 0134-fixup-CI-test-the-build-and-add-some-mingw-specific-.patch) # Helper macros to help make tasks easier # apply_patch_with_msg() { @@ -292,7 +310,25 @@ prepare() { 0113-smoketests-test-that-_decimal-exists.patch \ 0114-Prefer-sysconfig.python_build.patch \ 0115-Define-PY3_DLLNAME-to-fix-build.patch \ - 0116-Commit-regenerated-importlib.patch + 0116-Commit-regenerated-importlib.patch \ + 0117-distutils-remove-checks-for-ancient-gcc-binutils.patch \ + 0118-distutils-split-CC-env-var-before-passing-to-subproc.patch \ + 0119-_testconsole.c-Fix-casing-path-sep.patch \ + 0120-Return-consistent-architecture-markers-for-python-on.patch \ + 0121-distutils-add-back-gcc_version.patch \ + 0122-fix-mingw-cross-compiling-in-setup.py.patch \ + 0123-Use-actions-setup-python-for-setting-up-correct-vers.patch \ + 0124-Fix-buffer-overflow-in-Py_GetSepW.patch \ + 0125-Remove-unnecessary-strlen-in-Py_NormalizeSepsW.patch \ + 0126-handle-ncursesw-pkg-config-when-cross-compiling.patch \ + 0127-CI-add-cross-llvm-mingw-jobs.patch \ + 0128-fixup-Define-PY3_DLLNAME-to-fix-build.patch \ + 0129-Skip-building-c-extensions-if-python-is-running-in-b.patch \ + 0130-mingw_smoketests-fix-_UCRT-condition.patch \ + 0131-CI-fix-sed-pattern-for-python-config.py-shebang.patch \ + 0132-Modify-sys.winver-to-match-upstream.patch \ + 0133-Change-user-site-packages-path-to-include-the-enviro.patch \ + 0134-fixup-CI-test-the-build-and-add-some-mingw-specific-.patch autoreconf -vfi } @@ -504,4 +540,22 @@ sha256sums=('5a99f8e7a6a11a7b98b4e75e0d1303d3832cada5534068f69c7b6222a7b1b002' '47565e5857c73fe34c2b4f5ff924a07ce730dabeeb1fb3f02e8503360652be4d' '2552ec78fd9b8ffd9e6e298fffb904c651d9a97be2de021700205957e9d99b40' '903c4acdc79668da068b11b8462b639995b00af9763d3eaedcf4161ee3856f6c' - '0df47db20b0ced0edc478f3bc310aa97d0508c51908548ec8d4e8a13e0868da2') + '0df47db20b0ced0edc478f3bc310aa97d0508c51908548ec8d4e8a13e0868da2' + '6089c20e220678b78c77846691fdde1a47fa564fa72c1a0798d5a47b6ba3ac1d' + '6260210b104b496f789d2be8d6b91da97bcdd3ad3593282730bc64847ff6347c' + '46aaf9522409d61e065e19f84ea11b4de2d12a0d6bc992568881ed2af1dafc20' + 'd38c3d668a19ebc7ea9c35cec4e3a7323f2d2dd2041f5ec779ae20d0cec390f4' + '6f10f1d075d280c1144b5befab807369d293e3c0f40267801f820cf571ad9e20' + '14bd4f030f4524aef2f4c59f515483430de2d635b81037f5a30200238a232c64' + '1f523c358949daf9cdce4cafa93c785dde082fd3892c4bdf47b7a2a9b8bd8933' + '7a7c2f1879671d894c597be96d185438317897b5281658a73a464ddb153cc0ea' + '653df26a0662eeff7cde8aca1bb30caf911a66695dca92e9b5425f50d8058a8c' + '4883bf83e1dd318d82a404b10188a38229a9b9ebddfc2274501d8e15ae0c9903' + 'd20ad39ad797b81593ca94de2620943d517ddb2d21566d8f689fe7a31e1b7df6' + '8a53abcb152f4c991eb50ec529218fcc09203cd5f785e6f465978a6a39536bab' + 'a2097d570436a3bd887eeb52d294ffd4da1c6de2d35af0eedd067cf900ff6910' + 'cc33b9ddbc5d325274230a005d817eccd0a39c070a07b53616bcb2e2369d19df' + '5183825bac10240c4beafbd1df20238157be20749a5829d8fea8784ae5964beb' + '3f93aa4eab792fab655112c95d2ddd5b8f15fde31774fd2b948742b95827a24b' + 'c4b4cd406df030366bc534c7f35f45ab0d51e870d57c7f1d0490a55e5a11cfc6' + '78112bcc410b135494c64ec158ea6207ca5b490c52bb1758c19b404e0b323035') From b558d2f1c998b6c1db7345095ebf1c0f07dabbdc Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sat, 29 Jan 2022 18:05:06 +0100 Subject: [PATCH 125/226] prefix clhpp_ver --- mingw-w64-opencl-headers/PKGBUILD | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mingw-w64-opencl-headers/PKGBUILD b/mingw-w64-opencl-headers/PKGBUILD index 52e4b9525b..deb10d5dee 100644 --- a/mingw-w64-opencl-headers/PKGBUILD +++ b/mingw-w64-opencl-headers/PKGBUILD @@ -4,7 +4,7 @@ _realname=opencl-headers pkgbase=mingw-w64-${_realname} pkgname=${MINGW_PACKAGE_PREFIX}-${_realname} pkgver=2022.01.04 -clhpp_ver=2.0.16 +_clhpp_ver=2.0.16 pkgrel=1 epoch=2 pkgdesc='OpenCL (Open Computing Language) header files' @@ -16,7 +16,7 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-cmake" "${MINGW_PACKAGE_PREFIX}-ninja" "${MINGW_PACKAGE_PREFIX}-cc") source=(OpenCL-Headers-${pkgver}.tar.gz::https://github.com/KhronosGroup/OpenCL-Headers/archive/refs/tags/v${pkgver}.tar.gz - OpenCL-CLHPP-${clhpp_ver}.tar.gz::https://github.com/KhronosGroup/OpenCL-CLHPP/archive/refs/tags/v${clhpp_ver}.tar.gz) + OpenCL-CLHPP-${_clhpp_ver}.tar.gz::https://github.com/KhronosGroup/OpenCL-CLHPP/archive/refs/tags/v${_clhpp_ver}.tar.gz) sha256sums=('6E716E2B13FC8D363B40A165CA75021B102F9328E2B38F8054D7DB5884DE29C9' '869456032E60787EED9FCEAEAF6C6CB4452BC0FF97E0F5A271510145A1C8F4D4') @@ -33,14 +33,14 @@ package() { DESTDIR=${pkgdir} cmake --install . - cd "${srcdir}"/OpenCL-CLHPP-${clhpp_ver} + cd "${srcdir}"/OpenCL-CLHPP-${_clhpp_ver} MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \ ${MINGW_PREFIX}/bin/cmake \ -G'Ninja' \ -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \ "${extra_config[@]}" \ -DBUILD_TESTS=OFF \ - ../OpenCL-CLHPP-${clhpp_ver} + ../OpenCL-CLHPP-${_clhpp_ver} DESTDIR=${pkgdir} cmake --install . From 114e065a7b9fe0602f5fe9910bf734b340b6be67 Mon Sep 17 00:00:00 2001 From: Christopher Degawa Date: Sat, 29 Jan 2022 19:28:25 -0600 Subject: [PATCH 126/226] expat: update to 2.4.4 Signed-off-by: Christopher Degawa --- mingw-w64-expat/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mingw-w64-expat/PKGBUILD b/mingw-w64-expat/PKGBUILD index faa91e8d9c..b89511fe05 100644 --- a/mingw-w64-expat/PKGBUILD +++ b/mingw-w64-expat/PKGBUILD @@ -4,7 +4,7 @@ _realname=expat pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=2.4.3 +pkgver=2.4.4 pkgrel=1 pkgdesc="An XML parser library (mingw-w64)" arch=('any') @@ -14,7 +14,7 @@ license=('spdx:MIT') makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-autotools") options=('strip' 'staticlibs') source=("https://github.com/libexpat/libexpat/releases/download/R_${pkgver//./_}/expat-${pkgver}.tar.xz"{,.asc}) -sha256sums=('b1f9f1b1a5ebb0acaa88c9ff79bfa4e145823b78aa5185e5c5d85f060824778a' +sha256sums=('b5d25d6e373351c2ed19b562b4732d01d2589ac8c8e9e7962d8df1207cc311b8' 'SKIP') validpgpkeys=('3176EF7DB2367F1FCA4F306B1F9B0E909AF37285') # Sebastian Pipping From 8deda23607a698e27628cbbcc2232267f78b8606 Mon Sep 17 00:00:00 2001 From: Rafal Date: Sun, 30 Jan 2022 09:03:49 +0100 Subject: [PATCH 127/226] Update PKGBUILD --- mingw-w64-seacas/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mingw-w64-seacas/PKGBUILD b/mingw-w64-seacas/PKGBUILD index f9cb2a7af1..46ad2c4a50 100644 --- a/mingw-w64-seacas/PKGBUILD +++ b/mingw-w64-seacas/PKGBUILD @@ -1,7 +1,7 @@ # Maintainer: Rafał Brzegowy _realname=seacas -_releases=2021-10-11 +_releases=2022-01-27 pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}") pkgver=${_releases//-/.} @@ -22,7 +22,7 @@ url="https://gsjaardema.github.io/seacas/" license=('BSD') source=("https://github.com/gsjaardema/seacas/archive/refs/tags/v${_releases}.zip" "0001-cmake-add-libs.patch") -sha256sums=('5c04d252e1c4a10b037aa352b89487e581ec6b52bdb46e9e85f101bbdcd9c388' +sha256sums=('D21C14B9B30F773CEF8E2029773F3CC35DA021EEBE9060298231F95021EB814F' 'a3561756bfdeb942fc62add0aefa542b0e689b76a7f0d2d357e299465ee344d2') noextract=("v${_releases}.zip") # bsdtar could not unpack this archive From 73f80678a9a3080bcd6e8a1d12133e2fb01510fa Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sun, 30 Jan 2022 13:49:11 +0530 Subject: [PATCH 128/226] libgpg-error: update to 1.44 Remove 01-mingw32-fix-potomo.mingw.patch file --- .../01-mingw32-fix-potomo.mingw.patch | 11 ----------- mingw-w64-libgpg-error/PKGBUILD | 7 ++----- 2 files changed, 2 insertions(+), 16 deletions(-) delete mode 100644 mingw-w64-libgpg-error/01-mingw32-fix-potomo.mingw.patch diff --git a/mingw-w64-libgpg-error/01-mingw32-fix-potomo.mingw.patch b/mingw-w64-libgpg-error/01-mingw32-fix-potomo.mingw.patch deleted file mode 100644 index c5233bf974..0000000000 --- a/mingw-w64-libgpg-error/01-mingw32-fix-potomo.mingw.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- libgpg-error-1.10/potomo 2010-10-20 18:27:58 +0400 -+++ libgpg-error-1.10/potomo 2011-04-03 15:05:06 +0400 -@@ -57,7 +57,7 @@ - ;; - *) - echo "potomo: '$infile' converting from $fromset to utf-8" >&2 -- iconv --silent --from-code=$fromset --to-code=utf-8 < "$infile" |\ -+ iconv -s --from-code=$fromset --to-code=utf-8 < "$infile" |\ - sed "/^\"Content-Type:/ s/charset=[a-zA-Z0-9_-]*/charset=utf-8/"|\ - msgfmt --output-file="$outfile" - - ;; diff --git a/mingw-w64-libgpg-error/PKGBUILD b/mingw-w64-libgpg-error/PKGBUILD index 88f4e0c252..10d16c26ea 100644 --- a/mingw-w64-libgpg-error/PKGBUILD +++ b/mingw-w64-libgpg-error/PKGBUILD @@ -3,7 +3,7 @@ _realname=libgpg-error pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=1.43 +pkgver=1.44 pkgrel=1 pkgdesc="Support library for libgcrypt (mingw-w64)" arch=('any') @@ -14,7 +14,6 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-autotools") depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs" "${MINGW_PACKAGE_PREFIX}-gettext") options=('staticlibs' 'strip') source=("https://gnupg.org/ftp/gcrypt/libgpg-error/${_realname}-${pkgver}.tar.bz2"{,.sig} - 01-mingw32-fix-potomo.mingw.patch 02-fix-symbollist-on.mingw.patch 05-w32-gen.all.patch 07-windows-build.patch @@ -24,9 +23,8 @@ validpgpkeys=('5B80C5754298F0CB55D8ED6ABCEF7E294B092E28' # Andre Heinecke (Rele '6DAA6E64A76D2840571B4902528897B826403ADA' # Werner Koch (dist signing 2020) 'AC8E115BF73E2D8D47FA9908E98E9B2D19C6C8BD' # Niibe Yutaka (GnuPG Release Key) '02F38DFF731FF97CB039A1DA549E695E905BA208') # GnuPG.com (Release Signing Key 2021) -sha256sums=('a9ab83ca7acc442a5bd846a75b920285ff79bdb4e3d34aa382be88ed2c3aebaf' +sha256sums=('8e3d2da7a8b9a104dd8e9212ebe8e0daf86aa838cc1314ba6bc4de8f2d8a1ff9' 'SKIP' - '252349e58d418adfec5621af1e09753db52b1bf39983aa3bc398d636afb9b495' '364da17febff3f6eeffee5a5f1e3ed1b644adeb5ca48a972c5c4675c10238a91' '9ccdc567810d58526888fd11c5f7d01101627011840b7b75a91e96aa9e71f49d' 'ab1d5e1a10d3803b2ae514aacba184c0bba019417bf9f7615243505455ffabb8' @@ -34,7 +32,6 @@ sha256sums=('a9ab83ca7acc442a5bd846a75b920285ff79bdb4e3d34aa382be88ed2c3aebaf' prepare() { cd "${srcdir}/${_realname}-${pkgver}" - patch -p1 -i ${srcdir}/01-mingw32-fix-potomo.mingw.patch patch -p1 -i ${srcdir}/02-fix-symbollist-on.mingw.patch patch -p1 -i ${srcdir}/05-w32-gen.all.patch patch -p1 -i ${srcdir}/07-windows-build.patch From c13cd8f706143b81db6d6bda9afca2de5aa63b78 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sun, 30 Jan 2022 13:51:34 +0530 Subject: [PATCH 129/226] python-pandocfilters: update to 1.5.0 Install license file. --- mingw-w64-python-pandocfilters/PKGBUILD | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/mingw-w64-python-pandocfilters/PKGBUILD b/mingw-w64-python-pandocfilters/PKGBUILD index 92cb9b38c3..1497635966 100644 --- a/mingw-w64-python-pandocfilters/PKGBUILD +++ b/mingw-w64-python-pandocfilters/PKGBUILD @@ -6,32 +6,34 @@ pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") provides=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") conflicts=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") replaces=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") -pkgver=1.4.3 -pkgrel=2 +pkgver=1.5.0 +pkgrel=1 pkgdesc="A python module for writing pandoc filters (mingw-w64)" arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') -url='https://pypi.python.org/pypi/pandocfilters' +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') +url='https://pypi.org/project/pandocfilters/' license=('BSD') depends=("${MINGW_PACKAGE_PREFIX}-python") makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools") source=("${_realname}-${pkgver}.tar.gz::https://pypi.io/packages/source/p/pandocfilters/pandocfilters-${pkgver}.tar.gz") -sha256sums=('bc63fbb50534b4b1f8ebe1860889289e8af94a23bff7445259592df25a3906eb') +sha256sums=('0b679503337d233b4339a817bfc8c50064e2eff681314376a47cb582305a7a38') prepare() { - rm -rf python-build-${CARCH} | true - cp -r "${_realname}-${pkgver}" "python-build-${CARCH}" + rm -rf "python-build-${MSYSTEM}" | true + cp -r "${_realname}-${pkgver}" "python-build-${MSYSTEM}" } build() { - cd "${srcdir}/python-build-${CARCH}" + cd "${srcdir}/python-build-${MSYSTEM}" ${MINGW_PREFIX}/bin/python setup.py build } package() { - cd "${srcdir}/python-build-${CARCH}" + cd "${srcdir}/python-build-${MSYSTEM}" MSYS2_ARG_CONV_EXCL="--prefix=;--install-scripts=;--install-platlib=" \ ${MINGW_PREFIX}/bin/python setup.py install --prefix=${MINGW_PREFIX} \ --root="${pkgdir}" --optimize=1 --skip-build + + install -Dm644 LICENSE "${pkgdir}${MINGW_PREFIX}/share/licenses/python-${_realname}/LICENSE" } From 64cb765b5636eea8b119aaf5a413423ce73d054a Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sun, 30 Jan 2022 13:54:59 +0530 Subject: [PATCH 130/226] recode: update to 3.7.11 --- mingw-w64-recode/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mingw-w64-recode/PKGBUILD b/mingw-w64-recode/PKGBUILD index f8324acd6a..2f76e99bfc 100644 --- a/mingw-w64-recode/PKGBUILD +++ b/mingw-w64-recode/PKGBUILD @@ -3,7 +3,7 @@ _realname=recode pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}") -pkgver=3.7.10 +pkgver=3.7.11 pkgrel=1 pkgdesc="Converts files between various character sets and usages (mingw-w64)" arch=('any') @@ -17,7 +17,7 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-python" "${MINGW_PACKAGE_PREFIX}-cc") source=("https://github.com/rrthomas/recode/releases/download/v${pkgver}/${_realname}-${pkgver}.tar.gz" "01-no-undefined.patch") -sha256sums=('4a4b00a6080f8ef77956a18040454785d35b66ab7d8105ffd971798aa4a8f186' +sha256sums=('97267a0e6ee3d859b7f4d1593282900dbc798151b70a6d1f73718880563b485e' '40c88d6d70c91f2ab2919b77e2d6577cdcc55ec368f8c873cc1a1f1e1b6dc52b') prepare() { From 9b6853e72e64bc46ccbdd5745b0fd1d3fc3fc854 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sun, 30 Jan 2022 14:01:31 +0530 Subject: [PATCH 131/226] rubberband: update to 2.0.2 Install license file. --- mingw-w64-rubberband/PKGBUILD | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mingw-w64-rubberband/PKGBUILD b/mingw-w64-rubberband/PKGBUILD index 8ba92e68ea..153d0665cd 100644 --- a/mingw-w64-rubberband/PKGBUILD +++ b/mingw-w64-rubberband/PKGBUILD @@ -3,7 +3,7 @@ _realname=rubberband pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=2.0.1 +pkgver=2.0.2 pkgrel=1 pkgdesc="High quality software library for audio time-stretching and pitch-shifting. (mingw-w64)" arch=('any') @@ -20,7 +20,7 @@ depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs" "${MINGW_PACKAGE_PREFIX}-ladspa-sdk" "${MINGW_PACKAGE_PREFIX}-vamp-plugin-sdk") source=("https://breakfastquay.com/files/releases/${_realname}-${pkgver}.tar.bz2") -sha256sums=('dc1b8b775f1717b21e35a11842b00d63beaaf9255b304dee7bb0413568ad80e8') +sha256sums=('b9eac027e797789ae99611c9eaeaf1c3a44cc804f9c8a0441a0d1d26f3d6bdf9') prepare() { cd ${srcdir}/${_realname}-${pkgver} @@ -55,4 +55,5 @@ build() { package() { cd "${srcdir}/build-${MSYSTEM}" DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/meson.exe install + install -Dm644 "${srcdir}/${_realname}-${pkgver}/COPYING" "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/COPYING" } From 1e3d591cbb80e77f3f1d4bc3fa86cde55cd8a82d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milo=C5=A1=20Komar=C4=8Devi=C4=87?= Date: Sun, 30 Jan 2022 21:25:21 +0100 Subject: [PATCH 132/226] lcms2: update to 2.13 --- mingw-w64-lcms2/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mingw-w64-lcms2/PKGBUILD b/mingw-w64-lcms2/PKGBUILD index ea4c379ff7..e838e37d8d 100644 --- a/mingw-w64-lcms2/PKGBUILD +++ b/mingw-w64-lcms2/PKGBUILD @@ -4,7 +4,7 @@ _realname=lcms2 pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}") -pkgver=2.12 +pkgver=2.13 pkgrel=1 pkgdesc="Small-footprint color management engine, version 2 (mingw-w64)" arch=('any') @@ -17,7 +17,7 @@ depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs" "${MINGW_PACKAGE_PREFIX}-libtiff") options=('staticlibs' 'strip') source=("https://downloads.sourceforge.net/sourceforge/lcms/${_realname}-${pkgver}.tar.gz") -sha256sums=('18663985e864100455ac3e507625c438c3710354d85e5cbb7cd4043e11fe10f5') +sha256sums=('0c67a5cc144029cfa34647a52809ec399aae488db4258a6a66fba318474a070f') prepare() { cd "${srcdir}"/${_realname}-${pkgver} From 11044f5a0355eea69f4a587158b14679d9dff2a3 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Mon, 31 Jan 2022 11:01:10 +0530 Subject: [PATCH 133/226] librqm: update to 0.9.0 --- mingw-w64-libraqm/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mingw-w64-libraqm/PKGBUILD b/mingw-w64-libraqm/PKGBUILD index bc98da199e..40e6442741 100644 --- a/mingw-w64-libraqm/PKGBUILD +++ b/mingw-w64-libraqm/PKGBUILD @@ -3,7 +3,7 @@ _realname=libraqm pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}") -pkgver=0.8.0 +pkgver=0.9.0 pkgrel=1 pkgdesc="A library that encapsulates the logic for complex text layout (mingw-w64)" arch=('any') @@ -19,7 +19,7 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-gtk-doc" "${MINGW_PACKAGE_PREFIX}-cc") license=('MIT') source=("${_realname}-$pkgver".tar.gz::"https://github.com/HOST-Oman/libraqm/archive/v${pkgver}.tar.gz") -sha256sums=('6429e35f69f5e7d514877624fb73ae6d07a7e9ac746ae6a1cf2bf1277bb5b68d') +sha256sums=('826e43bc638b53ec720e93a26f4ead494c6a28006d280609dac6aef09b39283e') prepare() { cd ${srcdir}/${_realname}-${pkgver} From b33f70a0e864bf6cea778399bcf25b3c7277a890 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Mon, 31 Jan 2022 11:04:22 +0530 Subject: [PATCH 134/226] openh264: update to 2.2.0 * Install h264dec, h264enc and license files. * Add gcc-libs dependency. --- mingw-w64-openh264/PKGBUILD | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/mingw-w64-openh264/PKGBUILD b/mingw-w64-openh264/PKGBUILD index fe4fa581e8..0f64abe41b 100644 --- a/mingw-w64-openh264/PKGBUILD +++ b/mingw-w64-openh264/PKGBUILD @@ -3,7 +3,7 @@ _realname=openh264 pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=2.1.1 +pkgver=2.2.0 pkgrel=1 pkgdesc="Library for encoding/decoding H264/AVC video streams (mingw-w64)" arch=('any') @@ -13,10 +13,10 @@ license=("BSD") makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-pkg-config" "${MINGW_PACKAGE_PREFIX}-nasm") -depends=() +depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs") options=('strip' 'staticlibs') source=("${_realname}-${pkgver}.tar.gz"::"https://github.com/cisco/openh264/archive/v${pkgver}.tar.gz") -sha256sums=('af173e90fce65f80722fa894e1af0d6b07572292e76de7b65273df4c0a8be678') +sha256sums=('e4e5c8ba48e64ba6ce61e8b6e2b76b2d870c74c270147649082feabb40f25905') build() { [[ -d "${srcdir}/build-${MINGW_CHOST}" ]] && rm -rf "${srcdir}/build-${MINGW_CHOST}" @@ -33,4 +33,8 @@ build() { package() { cd "${srcdir}/build-${MINGW_CHOST}" make DESTDIR="${pkgdir}" PREFIX=${MINGW_PREFIX} install + install -Dm755 h264dec.exe "${pkgdir}${MINGW_PREFIX}"/bin/h264dec.exe + install -Dm755 h264enc.exe "${pkgdir}${MINGW_PREFIX}"/bin/h264enc.exe + + install -Dm644 LICENSE "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE" } From 2b89ca78a31b7a98aa004e6b7b09450c8589d05e Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Mon, 31 Jan 2022 11:07:24 +0530 Subject: [PATCH 135/226] python-breathe: update to 4.32.0 * Add python-docutils dependency. * Add check function. * Remove shebang line. --- mingw-w64-python-breathe/PKGBUILD | 34 ++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/mingw-w64-python-breathe/PKGBUILD b/mingw-w64-python-breathe/PKGBUILD index f7d643063d..4125eedc07 100644 --- a/mingw-w64-python-breathe/PKGBUILD +++ b/mingw-w64-python-breathe/PKGBUILD @@ -6,20 +6,24 @@ pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") provides=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") conflicts=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") replaces=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") -pkgver=4.30.0 -pkgrel=2 +pkgver=4.32.0 +pkgrel=1 pkgdesc="An extension to reStructuredText and Sphinx to be able to read and render Doxygen xml output (mingw-w64)" arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') url="https://breathe.readthedocs.org/en/latest/" license=('BSD') depends=("${MINGW_PACKAGE_PREFIX}-python" - "${MINGW_PACKAGE_PREFIX}-python-sphinx") -makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools" - "${MINGW_PACKAGE_PREFIX}-python-six") + "${MINGW_PACKAGE_PREFIX}-python-sphinx" + "${MINGW_PACKAGE_PREFIX}-python-docutils") +makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools") +checkdepends=("${MINGW_PACKAGE_PREFIX}-python-pytest") options=('staticlibs' 'strip' '!debug') -source=("${_realname}-${pkgver}.tar.gz"::"https://github.com/michaeljones/breathe/archive/v${pkgver}.tar.gz") -sha256sums=('540ca6d694aa2e194ba33265f58e0070465799f6feabb726d198cb039972a5a3') +source=("${_realname}-${pkgver}.tar.gz"::"https://github.com/michaeljones/breathe/archive/v${pkgver}.tar.gz" + "${_realname}-${pkgver}.tar.gz.sig"::"https://github.com/michaeljones/breathe/releases/download/v${pkgver}/breathe-${pkgver}.tar.gz.sig") +sha256sums=('61f73dde091ecd6316ad7317d39f82d35a3128b9c13d1e566b6d835412776ca9' + 'SKIP') +validpgpkeys=('8AED58021FEACDD5F27BA0E6A72F627716EA9D96') # Melvin Vermeeren prepare() { cd "${srcdir}" @@ -33,15 +37,21 @@ build() { ${MINGW_PREFIX}/bin/python setup.py build } +check() { + cd "${srcdir}/python-build-${CARCH}" + PYTHONPATH="$PWD" make test || true +} + package() { cd "${srcdir}/python-build-${CARCH}" MSYS2_ARG_CONV_EXCL="--prefix=;--install-scripts=;--install-platlib=" \ ${MINGW_PREFIX}/bin/python setup.py install --prefix=${MINGW_PREFIX} \ --root="${pkgdir}" --optimize=1 --skip-build - local PREFIX_WIN=$(cygpath -wm ${MINGW_PREFIX}) - # fix python command in files - for _ff in ${pkgdir}${MINGW_PREFIX}/bin/*.py; do - sed -e "s|${PREFIX_WIN}|${MINGW_PREFIX}|g" -i ${_ff} + install -Dm644 LICENSE "${pkgdir}${MINGW_PREFIX}/share/licenses/python-${_realname}/LICENSE" + + for _f in "${pkgdir}${MINGW_PREFIX}"/bin/*-script.py; do + # Remove shebang line + sed -e '1 { s/^#!.*$// }' -i "${_f}" done } From 0530d58b0f891fb36b100efa323c8914b21ada4f Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Mon, 31 Jan 2022 11:10:58 +0530 Subject: [PATCH 136/226] python-pywavelets: update to 1.2.0 --- mingw-w64-python-pywavelets/PKGBUILD | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mingw-w64-python-pywavelets/PKGBUILD b/mingw-w64-python-pywavelets/PKGBUILD index 5739494fde..c15d847213 100644 --- a/mingw-w64-python-pywavelets/PKGBUILD +++ b/mingw-w64-python-pywavelets/PKGBUILD @@ -7,8 +7,8 @@ pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") provides=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") conflicts=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") replaces=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") -pkgver=1.1.1 -pkgrel=3 +pkgver=1.2.0 +pkgrel=1 pkgdesc="Discrete Wavelet Transforms in Python (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') @@ -20,7 +20,7 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools" "${MINGW_PACKAGE_PREFIX}-cython" "${MINGW_PACKAGE_PREFIX}-cc") source=("${_realname}-${pkgver}.tar.gz"::"https://github.com/PyWavelets/${_pyname}/archive/v${pkgver}.tar.gz") -sha256sums=('50fe2aae1b6d2462cf9e9b0dcc18dbcbd0b5ed65225abb4a272ed188dbcbceb0') +sha256sums=('ad88e5745eeaccaf759287f11b63539353df31324fe7498d9f8121e01e4106ed') prepare() { rm -rf python-build-${CARCH} From 3f1ebe1042b350342b8916ef3e78b8d912c3fc6d Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Mon, 31 Jan 2022 11:14:08 +0530 Subject: [PATCH 137/226] python-typed_ast: update to 1.5.2 --- mingw-w64-python-typed_ast/PKGBUILD | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mingw-w64-python-typed_ast/PKGBUILD b/mingw-w64-python-typed_ast/PKGBUILD index 93c372d2d3..89d79d3a5c 100644 --- a/mingw-w64-python-typed_ast/PKGBUILD +++ b/mingw-w64-python-typed_ast/PKGBUILD @@ -6,8 +6,8 @@ pkgname="${MINGW_PACKAGE_PREFIX}-python-${_realname}" provides=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") conflicts=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") replaces=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") -pkgver=1.4.2 -pkgrel=2 +pkgver=1.5.2 +pkgrel=1 pkgdesc="Modified fork of CPython's ast module that parses `# type:` comments (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') @@ -18,7 +18,7 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools" "${MINGW_PACKAGE_PREFIX}-cc") options=('staticlibs' 'strip' '!debug') source=("${_realname}-${pkgver}.tar.gz"::"https://github.com/python/typed_ast/archive/${pkgver}.tar.gz") -sha256sums=('be4b75ea880768489e30818267cf920027ed99014001ac428aedd0b31bbfc899') +sha256sums=('b8475b94bf77991d2db0bcce3dc14421b8518139f2994dafcd6a7fb2e8f5e261') # Helper macros to help make tasks easier # apply_patch_with_msg() { From 9dbafe1c4ceb0cd0e9713b9eed27e8ee06e56d2c Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Mon, 31 Jan 2022 09:12:05 +0100 Subject: [PATCH 138/226] gtk3: Update See #10622 --- mingw-w64-gtk3/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mingw-w64-gtk3/PKGBUILD b/mingw-w64-gtk3/PKGBUILD index 6da36f06d8..35aec4d6e2 100644 --- a/mingw-w64-gtk3/PKGBUILD +++ b/mingw-w64-gtk3/PKGBUILD @@ -3,9 +3,9 @@ _realname=gtk3 pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}" "${MINGW_PACKAGE_PREFIX}-gtk-update-icon-cache") -pkgver=3.24.31+56+g7e9935e381 +pkgver=3.24.31+76+g3dc44becf0 pkgrel=1 -_commit=7e9935e38140a5a04e9679b0c399e6f4627956c3 +_commit=3dc44becf080731771fc995aa6f185706f9d7cda pkgdesc="GObject-based multi-platform GUI toolkit (v3) (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') From 82007a5cf17148a4de3dab31b0a9f32e406829e6 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Mon, 31 Jan 2022 19:55:48 +0530 Subject: [PATCH 139/226] libadwaita: update to 1.0.1 Install license file. --- mingw-w64-libadwaita/PKGBUILD | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mingw-w64-libadwaita/PKGBUILD b/mingw-w64-libadwaita/PKGBUILD index 9954b36599..bd24c3dd36 100644 --- a/mingw-w64-libadwaita/PKGBUILD +++ b/mingw-w64-libadwaita/PKGBUILD @@ -3,7 +3,7 @@ _realname=libadwaita pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=1.0.0 +pkgver=1.0.1 pkgrel=1 pkgdesc="Building blocks for modern GNOME applications (mingw-w64)" url="https://gitlab.gnome.org/GNOME/libadwaita" @@ -14,7 +14,6 @@ depends=("${MINGW_PACKAGE_PREFIX}-glib2" "${MINGW_PACKAGE_PREFIX}-gtk4") makedepends=("${MINGW_PACKAGE_PREFIX}-glade" "${MINGW_PACKAGE_PREFIX}-meson" - "${MINGW_PACKAGE_PREFIX}-ninja" "${MINGW_PACKAGE_PREFIX}-pkg-config" "${MINGW_PACKAGE_PREFIX}-vala" "${MINGW_PACKAGE_PREFIX}-sassc" @@ -22,7 +21,7 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-glade" "${MINGW_PACKAGE_PREFIX}-gobject-introspection") options=('strip' 'staticlibs' '!debug') source=("https://download.gnome.org/sources/libadwaita/${pkgver:0:3}/libadwaita-${pkgver}.tar.xz") -sha256sums=('722d316492f7d80b66cbc97e95ce07c0ef2bfd6500a8ffe44b89070b06eefba3') +sha256sums=('bb49cf5a09d2e8bc144946c2c3272aecd611667fd027f3808b95d7101ed473d6') prepare() { cd "${srcdir}/${_realname}-${pkgver}" @@ -48,4 +47,5 @@ build() { package() { cd "${srcdir}"/build-${CARCH} DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/ninja install + install -Dm644 "${srcdir}/${_realname}-${pkgver}/COPYING" "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/COPYING" } From fa2d35ccfa5709d6b2782bf52eee4a127c8dd70a Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Mon, 31 Jan 2022 17:06:27 +0100 Subject: [PATCH 140/226] Remove libswift There are no reverse dependencies and upstream is gone. See https://github.com/msys2/MINGW-packages/commit/d8546d72ed50267623af1945b269a5c6979fcf4c#commitcomment-65687349 --- mingw-w64-libswift/PKGBUILD | 51 ------------------------------------- 1 file changed, 51 deletions(-) delete mode 100644 mingw-w64-libswift/PKGBUILD diff --git a/mingw-w64-libswift/PKGBUILD b/mingw-w64-libswift/PKGBUILD deleted file mode 100644 index 37f1870755..0000000000 --- a/mingw-w64-libswift/PKGBUILD +++ /dev/null @@ -1,51 +0,0 @@ -# Maintainer: Andrew Wheeler - -_realname=libswift -pkgbase=mingw-w64-${_realname} -pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=1.0.0 -pkgrel=2 -pkgdesc="a library that attempts to satisfy the most fundamental needs of -C programmers by providing Data structures, Networking, IO, Threading, and so -forth. libswift was originally created by S.J.R. van Schaik and is currently -being managed by Andrew Wheeler" -arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64') -url="https://ascendingcreations.com" -license=("LGPL") -makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-autotools") -depends=(${MINGW_PACKAGE_PREFIX}-gcc-libs - ${MINGW_PACKAGE_PREFIX}-bzip2 - ${MINGW_PACKAGE_PREFIX}-libiconv - ${MINGW_PACKAGE_PREFIX}-libpng - ${MINGW_PACKAGE_PREFIX}-freetype - ${MINGW_PACKAGE_PREFIX}-glfw - ${MINGW_PACKAGE_PREFIX}-zlib) -options=('!libtool' 'strip') -source=("https://ascendingcreations.com/packages/${_realname}-${pkgver}.tar.gz") -sha256sums=('611ffd5dfb8f98a85752cc7f87a2cb469f5ff11663f067b31c579ad3f9b010c9') - -prepare() { - cd "${srcdir}/${_realname}-${pkgver}" - sh autogen.sh -} - -build() { - [[ -d "${srcdir}/build-${MINGW_CHOST}" ]] && rm -rf "${srcdir}/build-${MINGW_CHOST}" - mkdir "${srcdir}/build-${MINGW_CHOST}" - cd "${srcdir}/build-${MINGW_CHOST}" - ../${_realname}-${pkgver}/configure \ - --build=${MINGW_CHOST} \ - --host=${MINGW_CHOST} \ - --target=${MINGW_CHOST} \ - --prefix=${MINGW_PREFIX} \ - --enable-shared \ - --enable-static - - make -} - -package() { - cd "${srcdir}/build-${MINGW_CHOST}" - make DESTDIR="${pkgdir}" install -} From fa140455cd20a092ba870019876f14d208f79cbf Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Tue, 1 Feb 2022 01:50:52 +0530 Subject: [PATCH 141/226] python-cloup: update to 0.12.1 --- mingw-w64-python-cloup/PKGBUILD | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/mingw-w64-python-cloup/PKGBUILD b/mingw-w64-python-cloup/PKGBUILD index a699a86af4..992a4b8a9d 100644 --- a/mingw-w64-python-cloup/PKGBUILD +++ b/mingw-w64-python-cloup/PKGBUILD @@ -4,11 +4,11 @@ _pyname=cloup _realname=cloup pkgbase=mingw-w64-python-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") -pkgver=0.7.1 -pkgrel=2 +pkgver=0.12.1 +pkgrel=1 pkgdesc='Option groups and subcommand help sections for pallets/click (mingw-w64)' arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') url="https://github.com/janLuke/cloup" license=('MIT') depends=( @@ -16,24 +16,23 @@ depends=( "${MINGW_PACKAGE_PREFIX}-python-click" ) makedepends=( - "${MINGW_PACKAGE_PREFIX}-python-setuptools" - "${MINGW_PACKAGE_PREFIX}-python-setuptools-scm" + "${MINGW_PACKAGE_PREFIX}-python-setuptools" + "${MINGW_PACKAGE_PREFIX}-python-setuptools-scm" ) checkdepends=( "${MINGW_PACKAGE_PREFIX}-python-pytest" ) source=("${_pyname}-${pkgver}.tar.gz::https://pypi.org/packages/source/${_pyname::1}/${_pyname}/${_pyname}-${pkgver}.tar.gz") -sha256sums=('f26cc500dda4e4c9444ac1008b82376df8d72ecfa43a6310a9b3d54ef98add7b') +sha256sums=('c7e3988b61601121382cce0aad3ff5aaae04d379d589ec528aeb8c2906749e5e') -prepare() { - cd "$srcdir" +prepare() { rm -rf python-build-${CARCH} | true cp -r "${_pyname//_/-}-$pkgver" "python-build-${CARCH}" export SETUPTOOLS_SCM_PRETEND_VERSION=${pkgver} } build() { - msg "Python build for ${CARCH}" + msg "Python build for ${CARCH}" cd "${srcdir}/python-build-${CARCH}" ${MINGW_PREFIX}/bin/python setup.py build } From aadff014df88fc4e347b8ea084fb6547a96c22ce Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Tue, 1 Feb 2022 01:54:10 +0530 Subject: [PATCH 142/226] python-lark-parser: update to 0.12.0 --- mingw-w64-python-lark-parser/PKGBUILD | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/mingw-w64-python-lark-parser/PKGBUILD b/mingw-w64-python-lark-parser/PKGBUILD index fd549f8434..8ac6327435 100644 --- a/mingw-w64-python-lark-parser/PKGBUILD +++ b/mingw-w64-python-lark-parser/PKGBUILD @@ -4,20 +4,19 @@ _realname=lark-parser _pyname=lark pkgbase=mingw-w64-python-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") -pkgver=0.11.1 -pkgrel=2 +pkgver=0.12.0 +pkgrel=1 pkgdesc="A modern parsing library. (mingw-w64)" arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') url='https://github.com/erezsh/lark' license=('MIT') depends=("${MINGW_PACKAGE_PREFIX}-python") makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools") source=("${_realname}-${pkgver}.tar.gz"::"https://github.com/lark-parser/lark/archive/${pkgver}.tar.gz") -sha512sums=('3C1A6E3E3742BF26EB824EF19079B5151D91B0066EF184A0387BD065C3F444ADBAB3F5EC9C4E618D863FCD49E10F0333FEE4EEAF3100FBC362F142BBCAE8BD76') +sha512sums=('d9d0e2531c139d8c75d47c21af996cc5f13588231e0082e2c698f1e295aebc0323297f75fe737b8854836c5a1556f7eb699d02554e218916e691e730ed68e538') prepare() { - cd "${srcdir}" rm -rf python-build-${CARCH} | true cp -r "${_pyname}-${pkgver}" "python-build-${CARCH}" export SETUPTOOLS_SCM_PRETEND_VERSION=${pkgver} From 889d9a92c29d2706a77835c4af2148697d6d0d09 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Tue, 1 Feb 2022 01:57:37 +0530 Subject: [PATCH 143/226] python-platformdirs: update to 2.4.1 --- mingw-w64-python-platformdirs/PKGBUILD | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mingw-w64-python-platformdirs/PKGBUILD b/mingw-w64-python-platformdirs/PKGBUILD index f8561bf02f..29e8f8c17b 100644 --- a/mingw-w64-python-platformdirs/PKGBUILD +++ b/mingw-w64-python-platformdirs/PKGBUILD @@ -3,11 +3,11 @@ _realname=platformdirs pkgbase=mingw-w64-python-${_realname} pkgname=${MINGW_PACKAGE_PREFIX}-python-${_realname} -pkgver=2.4.0 -pkgrel=3 +pkgver=2.4.1 +pkgrel=1 pkgdesc='A small Python module for determining appropriate platform-specific dirs (mingw-w64)' arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') license=('MIT') url='https://github.com/platformdirs/platformdirs' depends=("${MINGW_PACKAGE_PREFIX}-python") @@ -16,7 +16,7 @@ makedepends=( "${MINGW_PACKAGE_PREFIX}-python-setuptools-scm" ) source=("https://github.com/platformdirs/${_realname}/archive/${pkgver}.tar.gz") -sha256sums=('b4488174a1695029088c34268c51d5115b468c4d08d8787bc48f712852837512') +sha256sums=('a6f1a26be14bdb008adfb0f1f827e738659202f35351fa8368482e4bcdfb3389') prepare() { cd "${srcdir}" From cab56cd4304658ccc484bb5f9d97d2e1851c16c4 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Tue, 1 Feb 2022 02:01:08 +0530 Subject: [PATCH 144/226] python-tomlkit: update to 0.8.0 --- mingw-w64-python-tomlkit/PKGBUILD | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/mingw-w64-python-tomlkit/PKGBUILD b/mingw-w64-python-tomlkit/PKGBUILD index 63e5147102..3eabff7fda 100644 --- a/mingw-w64-python-tomlkit/PKGBUILD +++ b/mingw-w64-python-tomlkit/PKGBUILD @@ -3,20 +3,19 @@ _realname=tomlkit pkgbase=mingw-w64-python-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") -pkgver=0.7.0 -pkgrel=2 +pkgver=0.8.0 +pkgrel=1 pkgdesc="Style preserving TOML library. (mingw-w64)" arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') url='https://github.com/sdispater/tomlkit' license=('MIT') depends=("${MINGW_PACKAGE_PREFIX}-python") makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools") source=("${_realname}-${pkgver}.tar.gz"::"https://files.pythonhosted.org/packages/source/${_realname:0:1}/${_realname}/${_realname}-${pkgver}.tar.gz") -sha512sums=('1483DBC3A8CF87257D592B5AF97A66449133337B5A6F709D997054861615527510338FA27F048B27A69611782BD35A126C750EEE465301D92E83CD2A8E45C5A5') +sha512sums=('77b267201021e740d8134d0d5edfbef2cf077adac0b320d80887fdedda3f63f74df1957e8230976f16c80fcc58fd4cfabb195cccf0eda7d6cd29f5f65d362147') prepare() { - cd "${srcdir}" rm -rf python-build-${CARCH} | true cp -r "${_realname}-${pkgver}" "python-build-${CARCH}" export SETUPTOOLS_SCM_PRETEND_VERSION=${pkgver} From 0f9aac19c83ec9500d31d3f5056a25bdad21ed77 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Tue, 1 Feb 2022 02:04:59 +0530 Subject: [PATCH 145/226] python-ujson: update to 5.1.0 --- mingw-w64-python-ujson/PKGBUILD | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/mingw-w64-python-ujson/PKGBUILD b/mingw-w64-python-ujson/PKGBUILD index 31c345e783..7fbbd9ed37 100644 --- a/mingw-w64-python-ujson/PKGBUILD +++ b/mingw-w64-python-ujson/PKGBUILD @@ -3,7 +3,7 @@ _realname=ujson pkgbase=mingw-w64-python-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") -pkgver=4.3.0 +pkgver=5.1.0 pkgrel=1 pkgdesc="Ultra fast JSON encoder and decoder for Python (mingw-w64)" arch=('any') @@ -17,19 +17,21 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools-scm" checkdepends=("${MINGW_PACKAGE_PREFIX}-python-six" "${MINGW_PACKAGE_PREFIX}-python-pytest") source=("ultrajson-${pkgver}.tar.gz"::"${url}/archive/${pkgver}.tar.gz") -sha256sums=('12c623b1aa885fa9a6ca45dd64aa6abcdd999197463ef9029fb8cbf2f03bd606') +sha256sums=('23d52510debd4fab749053f16c95bbe33bf31b9d3a5842723572959db22b425e') prepare() { - cd "${srcdir}" rm -rf "python-build-${MSYSTEM}" | true cp -r "ultrajson-${pkgver}" "python-build-${MSYSTEM}" + + # Set version for setuptools_scm + export SETUPTOOLS_SCM_PRETEND_VERSION=${pkgver} } build() { msg "Python build for ${MSYSTEM}" cd "${srcdir}/python-build-${MSYSTEM}" - SETUPTOOLS_SCM_PRETEND_VERSION=$pkgver \ - ${MINGW_PREFIX}/bin/python setup.py build + + ${MINGW_PREFIX}/bin/python setup.py build } check() { @@ -41,10 +43,8 @@ check() { package() { cd "${srcdir}/python-build-${MSYSTEM}" MSYS2_ARG_CONV_EXCL="--prefix=;--install-scripts=;--install-platlib=" \ - SETUPTOOLS_SCM_PRETEND_VERSION=$pkgver \ ${MINGW_PREFIX}/bin/python setup.py install --prefix=${MINGW_PREFIX} --root="${pkgdir}" -O1 --skip-build + install -Dm644 LICENSE.txt "${pkgdir}${MINGW_PREFIX}/share/licenses/python-${_realname}/LICENSE" install -Dm644 README.md "${pkgdir}${MINGW_PREFIX}/share/doc/python-${_realname}.md" } - -# vim: ts=2 sw=2 et: From e783be18b6e61b0097afa38012d5f2cae5276bda Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Tue, 1 Feb 2022 02:10:08 +0530 Subject: [PATCH 146/226] python-markdown-math: update to 0.8 Remove upstream patch file --- mingw-w64-python-markdown-math/PKGBUILD | 38 +++----------- .../fix-markdown-3.x.patch | 50 ------------------- 2 files changed, 6 insertions(+), 82 deletions(-) delete mode 100644 mingw-w64-python-markdown-math/fix-markdown-3.x.patch diff --git a/mingw-w64-python-markdown-math/PKGBUILD b/mingw-w64-python-markdown-math/PKGBUILD index 6a6a3db9c8..2e012d8b79 100644 --- a/mingw-w64-python-markdown-math/PKGBUILD +++ b/mingw-w64-python-markdown-math/PKGBUILD @@ -6,49 +6,23 @@ pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") provides=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") conflicts=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") replaces=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") -pkgver=0.6 -pkgrel=2 +pkgver=0.8 +pkgrel=1 pkgdesc="Math extension for Python-Markdown (mingw-w64)" arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') url='https://github.com/mitya57/python-markdown-math' license=('BSD') depends=("${MINGW_PACKAGE_PREFIX}-python" "${MINGW_PACKAGE_PREFIX}-python-markdown") makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools") options=('staticlibs' 'strip' '!debug') -source=("https://files.pythonhosted.org/packages/source/p/python-${_realname}/python-${_realname}-${pkgver}.tar.gz"{,.asc} - "fix-markdown-3.x.patch") -sha256sums=('c68d8cb9695cb7b435484403dc18941d1bad0ff148e4166d9417046a0d5d3022' - 'SKIP' - '06ba6b40175a410534d14fe5482d773c1d49d684c0ac74c4795f187c10890c5f') +source=("https://files.pythonhosted.org/packages/source/p/python-${_realname}/python-${_realname}-${pkgver}.tar.gz"{,.asc}) +sha256sums=('8564212af679fc18d53f38681f16080fcd3d186073f23825c7ce86fadd3e3635' + 'SKIP') validpgpkeys=('F24299FF1BBC9018B906A4CB6026936D2F1C8AE0') # Dmitry Shachnev -# 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-${_realname}-${pkgver}" - - apply_patch_with_msg fix-markdown-3.x.patch - - cd "${srcdir}" rm -rf "python-build-${CARCH}" | true cp -r "python-${_realname}-${pkgver}" "python-build-${CARCH}" diff --git a/mingw-w64-python-markdown-math/fix-markdown-3.x.patch b/mingw-w64-python-markdown-math/fix-markdown-3.x.patch deleted file mode 100644 index 36cd84ca3d..0000000000 --- a/mingw-w64-python-markdown-math/fix-markdown-3.x.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 7c2a82327dc6aabca25cd42bf9cce4f0c237fd80 Mon Sep 17 00:00:00 2001 -From: Dmitry Shachnev -Date: Sat, 3 Nov 2018 10:29:43 +0300 -Subject: [PATCH] Fix deprecation warnings with Python-Markdown 3.x - -Fixes #21. ---- - mdx_math.py | 7 ++++--- - setup.py | 1 + - 2 files changed, 5 insertions(+), 3 deletions(-) - -diff --git a/mdx_math.py b/mdx_math.py -index 342117b..1c1df52 100644 ---- a/mdx_math.py -+++ b/mdx_math.py -@@ -31,7 +31,7 @@ def _get_content_type(self): - return 'math/asciimath' - return 'math/tex' - -- def extendMarkdown(self, md, md_globals): -+ def extendMarkdown(self, md): - def _wrap_node(node, preview_text, wrapper_tag): - if not self.getConfig('add_preview'): - return node -@@ -72,10 +72,11 @@ def handle_match(m): - mathpatterns = mathpatterns[:-1] # \begin...\end is TeX only - for i, pattern in enumerate(mathpatterns): - pattern.handleMatch = handle_match -- md.inlinePatterns.add('math-%d' % i, pattern, '=3.0'], - entry_points={ - 'markdown.extensions': [ - 'mdx_math = mdx_math:MathExtension', From 653774b4169cb3093be823bfdf19d7c3e24ce554 Mon Sep 17 00:00:00 2001 From: Horimoto Yasuhiro Date: Tue, 1 Feb 2022 10:30:14 +0900 Subject: [PATCH 147/226] groonga: Update to 11.1.3 --- mingw-w64-groonga/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mingw-w64-groonga/PKGBUILD b/mingw-w64-groonga/PKGBUILD index 360163aa8f..5c95363c3a 100644 --- a/mingw-w64-groonga/PKGBUILD +++ b/mingw-w64-groonga/PKGBUILD @@ -3,7 +3,7 @@ _realname=groonga pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=11.1.1 +pkgver=11.1.3 pkgrel=1 pkgdesc="An opensource fulltext search engine (mingw-w64)" arch=('any') @@ -27,7 +27,7 @@ makedepends=("git" "${MINGW_PACKAGE_PREFIX}-ruby" "${MINGW_PACKAGE_PREFIX}-ninja" "${MINGW_PACKAGE_PREFIX}-cc") -sha256sums=('f1633b31e9ba74ee7879e2e57ba15cb9c0c26dd5430d3748cec22a7bb1669c0d' +sha256sums=('ace25b3294b480a1b7806eccdc5749dfd49e233366c15883629ac4a395428ecd' 'SKIP') validpgpkeys=('2701F317CFCCCB975CADE9C2624CF77434839225') # Groonga Key From 8ab1042b8d72c6d6b077a2ffffdaade23c8965f3 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Tue, 1 Feb 2022 05:49:35 +0100 Subject: [PATCH 148/226] greenlet: don't build for arm64 It's in theory supported upstream master, but there wasn't a release yet: https://github.com/python-greenlet/greenlet/pull/271 (also the upstream patch likely needs some defined(__MINGW64__)) --- mingw-w64-python-greenlet/PKGBUILD | 2 +- mingw-w64-python-sqlalchemy/PKGBUILD | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mingw-w64-python-greenlet/PKGBUILD b/mingw-w64-python-greenlet/PKGBUILD index c10fa63b33..3e5a551b1c 100644 --- a/mingw-w64-python-greenlet/PKGBUILD +++ b/mingw-w64-python-greenlet/PKGBUILD @@ -10,7 +10,7 @@ pkgver=1.1.2 pkgrel=1 pkgdesc="Lightweight in-process concurrent programming (mingw-w64)" arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') url="https://pypi.python.org/pypi/greenlet" license=('MIT') depends=("${MINGW_PACKAGE_PREFIX}-python") diff --git a/mingw-w64-python-sqlalchemy/PKGBUILD b/mingw-w64-python-sqlalchemy/PKGBUILD index d005b2e386..b94175b9ab 100644 --- a/mingw-w64-python-sqlalchemy/PKGBUILD +++ b/mingw-w64-python-sqlalchemy/PKGBUILD @@ -10,7 +10,7 @@ pkgver=1.4.30 pkgrel=1 pkgdesc="Python SQL toolkit and Object Relational Mapper (mingw-w64)" arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') url='https://www.sqlalchemy.org/' license=('MIT') depends=("${MINGW_PACKAGE_PREFIX}-python" From 32c8cad529df096bb4bfba182a3225486c4b9241 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Tue, 1 Feb 2022 06:50:18 +0100 Subject: [PATCH 149/226] Drop gimp-ufraw and gtkimageview Both unmaintained for years and no longer build. --- .../01-mingw-getopt-long.patch | 15 -- mingw-w64-gimp-ufraw/02-mingw-w64-fixes.patch | 29 ---- mingw-w64-gimp-ufraw/03-fix-abs-gcc-7.patch | 30 ---- mingw-w64-gimp-ufraw/04-gcc-9-openmp.patch | 97 ----------- mingw-w64-gimp-ufraw/05-exiv2-0.27.patch | 36 ---- mingw-w64-gimp-ufraw/PKGBUILD | 71 -------- mingw-w64-gtkimageview/01-resource.patch | 158 ------------------ .../02-g_mem_set_vtable.patch | 15 -- ...e-obsolete-gnome-common-and-automake.patch | 44 ----- .../04-gcc9-identation-error.patch | 14 -- mingw-w64-gtkimageview/PKGBUILD | 57 ------- .../gtkimageview-1.6.4.tar.gz | Bin 1158138 -> 0 bytes mingw-w64-gtkimageview/resources.tar.bz2 | Bin 480 -> 0 bytes 13 files changed, 566 deletions(-) delete mode 100644 mingw-w64-gimp-ufraw/01-mingw-getopt-long.patch delete mode 100644 mingw-w64-gimp-ufraw/02-mingw-w64-fixes.patch delete mode 100644 mingw-w64-gimp-ufraw/03-fix-abs-gcc-7.patch delete mode 100644 mingw-w64-gimp-ufraw/04-gcc-9-openmp.patch delete mode 100644 mingw-w64-gimp-ufraw/05-exiv2-0.27.patch delete mode 100644 mingw-w64-gimp-ufraw/PKGBUILD delete mode 100644 mingw-w64-gtkimageview/01-resource.patch delete mode 100644 mingw-w64-gtkimageview/02-g_mem_set_vtable.patch delete mode 100644 mingw-w64-gtkimageview/03-update-obsolete-gnome-common-and-automake.patch delete mode 100644 mingw-w64-gtkimageview/04-gcc9-identation-error.patch delete mode 100644 mingw-w64-gtkimageview/PKGBUILD delete mode 100644 mingw-w64-gtkimageview/gtkimageview-1.6.4.tar.gz delete mode 100644 mingw-w64-gtkimageview/resources.tar.bz2 diff --git a/mingw-w64-gimp-ufraw/01-mingw-getopt-long.patch b/mingw-w64-gimp-ufraw/01-mingw-getopt-long.patch deleted file mode 100644 index f560b27c8e..0000000000 --- a/mingw-w64-gimp-ufraw/01-mingw-getopt-long.patch +++ /dev/null @@ -1,15 +0,0 @@ ---- ufraw-0.19.2/configure.ac.orig 2014-02-27 09:46:30.949200000 +0400 -+++ ufraw-0.19.2/configure.ac 2014-02-27 09:46:52.898400000 +0400 -@@ -210,10 +210,12 @@ - echo cannot execute: pod2man], $PATH) - AC_FUNC_FSEEKO - -+if test $ufraw_win32 = no; then - # Ensure that getopt_long is available. It is included in GNU libc and - # in at least most BSD libcs. If not found, search for it in libgnugetopt. - AC_SEARCH_LIBS(getopt_long, gnugetopt, , - AC_MSG_ERROR(can not build UFRaw without getopt_long)) -+fi - - # Make sure that pow is available, trying libm if necessary. - AC_SEARCH_LIBS(pow, m) diff --git a/mingw-w64-gimp-ufraw/02-mingw-w64-fixes.patch b/mingw-w64-gimp-ufraw/02-mingw-w64-fixes.patch deleted file mode 100644 index 634143492f..0000000000 --- a/mingw-w64-gimp-ufraw/02-mingw-w64-fixes.patch +++ /dev/null @@ -1,29 +0,0 @@ ---- ufraw-0.22/dcraw.cc.orig 2014-02-27 09:46:30.949200000 +0400 -+++ ufraw-0.22/dcraw.cc 2014-02-27 09:46:52.898400000 +0400 -@@ -446,7 +446,7 @@ - { - if (fread (pixel, 2, count, ifp) < count) derror(); - if ((order == 0x4949) == (ntohs(0x1234) == 0x1234)) --#if defined(__MINGW64_VERSION_MAJOR) && __MINGW64_VERSION_MAJOR < 4 -+#if defined(__MINGW64_VERSION_MAJOR) - swab ((char *) pixel, (char *) pixel, count*2); - #else - swab ((const char *) pixel, (char *) pixel, count*2); -@@ -2397,7 +2397,7 @@ - DCRaw *d = (DCRaw*)cinfo->client_data; - - nbytes = fread (jpeg_buffer, 1, 4096, d->ifp); --#if defined(__MINGW64_VERSION_MAJOR) && __MINGW64_VERSION_MAJOR < 4 -+#if defined(__MINGW64_VERSION_MAJOR) - swab ((char *) jpeg_buffer, (char *) jpeg_buffer, nbytes); - #else - swab ((const char *) jpeg_buffer, (char *) jpeg_buffer, nbytes); -@@ -10196,7 +10196,7 @@ - FORCC ppm [col*colors+c] = curve[image[soff][c]] >> 8; - else FORCC ppm2[col*colors+c] = curve[image[soff][c]]; - if (output_bps == 16 && !output_tiff && htons(0x55aa) != 0x55aa) --#if defined(__MINGW64_VERSION_MAJOR) && __MINGW64_VERSION_MAJOR < 4 -+#if defined(__MINGW64_VERSION_MAJOR) - swab ((char *) ppm2, (char *) ppm2, width*colors*2); - #else - swab ((const char *) ppm2, (char *) ppm2, width*colors*2); diff --git a/mingw-w64-gimp-ufraw/03-fix-abs-gcc-7.patch b/mingw-w64-gimp-ufraw/03-fix-abs-gcc-7.patch deleted file mode 100644 index e27b5dedaa..0000000000 --- a/mingw-w64-gimp-ufraw/03-fix-abs-gcc-7.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 31c400d67c83ad8c9bb222f71c0250dbf600df64 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?S=C3=A9rgio=20M=2E=20Basto?= -Date: Wed, 30 Jan 2019 18:19:43 +0000 -Subject: [PATCH] 04_fix-abs-gcc-7.patch from Debian - -Description: fix compilation in GCC 7 - change some variables to int instead of unsigned so that calls to abs are no - longer ambiguous under GCC7 -Author: Ken Moffat -Origin: https://sourceforge.net/p/ufraw/mailman/message/35843737/ -Bug-Debian: https://bugs.debian.org/853692 ---- - dcraw.cc | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/dcraw.cc b/dcraw.cc -index e5fba53..9014b73 100644 ---- a/dcraw.cc -+++ b/dcraw.cc -@@ -8866,8 +8866,8 @@ void CLASS identify() - "Nikon", "Nokia", "Olympus", "Ricoh", "Pentax", "Phase One", - "Samsung", "Sigma", "Sinar", "Sony" }; - char head[32], *cp; -- unsigned fsize, i, c; -- int hlen, flen, zero_fsize=1; -+ unsigned fsize; -+ int hlen, flen, zero_fsize=1, i, c; - struct jhead jh; - - tiff_flip = flip = filters = UINT_MAX; /* unknown */ diff --git a/mingw-w64-gimp-ufraw/04-gcc-9-openmp.patch b/mingw-w64-gimp-ufraw/04-gcc-9-openmp.patch deleted file mode 100644 index 09a40fbfe4..0000000000 --- a/mingw-w64-gimp-ufraw/04-gcc-9-openmp.patch +++ /dev/null @@ -1,97 +0,0 @@ -From ac8c74699cba65d65f918b3f4cba2de64e039ada Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?S=C3=A9rgio=20M=2E=20Basto?= -Date: Thu, 14 Feb 2019 03:26:02 +0000 -Subject: [PATCH] Fix GCC 9 OpenMP issues by drop default(none) - ---- - dcraw_api.cc | 4 ++-- - dcraw_indi.c | 4 ---- - ufraw_ufraw.c | 6 +++--- - 3 files changed, 5 insertions(+), 9 deletions(-) - -diff --git a/dcraw_api.cc b/dcraw_api.cc -index 796e4a4..d33f030 100644 ---- a/dcraw_api.cc -+++ b/dcraw_api.cc -@@ -900,7 +900,7 @@ extern "C" { - rgbWB[3] = rgbWB[1]; - if (dark) { - #ifdef _OPENMP -- #pragma omp parallel for schedule(static) default(none) \ -+ #pragma omp parallel for schedule(static) \ - shared(h,dark,rgbWB) - #endif - for (int i = 0; i < pixels; i++) { -@@ -913,7 +913,7 @@ extern "C" { - } - } else { - #ifdef _OPENMP -- #pragma omp parallel for schedule(static) default(none) \ -+ #pragma omp parallel for schedule(static) \ - shared(h,dark,rgbWB) - #endif - for (int i = 0; i < pixels; i++) { -diff --git a/dcraw_indi.c b/dcraw_indi.c -index 9131eb9..a6e2a94 100644 ---- a/dcraw_indi.c -+++ b/dcraw_indi.c -@@ -137,12 +137,10 @@ void CLASS wavelet_denoise_INDI(ushort(*image)[4], const int black, - #ifdef _OPENMP - #if defined(__sun) && !defined(__GNUC__) /* Fix bug #3205673 - NKBJ */ - #pragma omp parallel for \ -- default(none) \ - shared(nc,image,size,noise) \ - private(c,i,hpass,lev,lpass,row,col,thold,fimg,temp) - #else - #pragma omp parallel for \ -- default(none) \ - shared(nc,image,size) \ - private(c,i,hpass,lev,lpass,row,col,thold,fimg,temp) - #endif -@@ -413,7 +411,6 @@ void CLASS vng_interpolate_INDI(ushort(*image)[4], const unsigned filters, - progress(PROGRESS_INTERPOLATE, -height); - #ifdef _OPENMP - #pragma omp parallel \ -- default(none) \ - shared(image,code,prow,pcol,h) \ - private(row,col,g,brow,rowtmp,pix,ip,gval,diff,gmin,gmax,thold,sum,color,num,c,t) - #endif -@@ -496,7 +493,6 @@ void CLASS ppg_interpolate_INDI(ushort(*image)[4], const unsigned filters, - - #ifdef _OPENMP - #pragma omp parallel \ -- default(none) \ - shared(image,dir,diff) \ - private(row,col,i,d,c,pix,guess) - #endif -diff --git a/ufraw_ufraw.c b/ufraw_ufraw.c -index eee681c..516b4c7 100644 ---- a/ufraw_ufraw.c -+++ b/ufraw_ufraw.c -@@ -1044,7 +1044,7 @@ static void ufraw_shave_hotpixels(ufraw_data *uf, dcraw_image_type *img, - delta = rgbMax / (uf->conf->hotpixel + 1.0); - count = 0; - #ifdef _OPENMP -- #pragma omp parallel for schedule(static) default(none) \ -+ #pragma omp parallel for schedule(static) \ - shared(uf,img,width,height,colors,rgbMax,delta) \ - reduction(+:count) \ - private(h,p,w,c,t,v,hi,i) -@@ -1366,7 +1366,7 @@ static void ufraw_convert_reverse_wb(ufraw_data *uf, UFRawPhase phase) - mul[i] = (guint64)0x10000 * 0x10000 / uf->developer->rgbWB[i]; - size = img->height * img->width; - #ifdef _OPENMP -- #pragma omp parallel for schedule(static) default(none) \ -+ #pragma omp parallel for schedule(static) \ - shared(uf,phase,img,mul,size) \ - private(i,p16,c,px) - #endif -@@ -1391,7 +1391,7 @@ static void ufraw_convert_image_tca(ufraw_data *uf, ufraw_image_data *img, - return; - int y; - #ifdef _OPENMP -- #pragma omp parallel for schedule(static) default(none) \ -+ #pragma omp parallel for schedule(static) \ - shared(uf,img,outimg,area) - #endif - for (y = area->y; y < area->y + area->height; y++) { diff --git a/mingw-w64-gimp-ufraw/05-exiv2-0.27.patch b/mingw-w64-gimp-ufraw/05-exiv2-0.27.patch deleted file mode 100644 index 746aee5deb..0000000000 --- a/mingw-w64-gimp-ufraw/05-exiv2-0.27.patch +++ /dev/null @@ -1,36 +0,0 @@ -From a13c0f7385ff873bd7cf8fc8aae8657c75fb20c8 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?S=C3=A9rgio=20M=2E=20Basto?= -Date: Thu, 14 Feb 2019 01:56:49 +0000 -Subject: [PATCH] From Gentoo ufraw-0.22-exiv2-0.27.patch - ---- - ufraw_exiv2.cc | 8 +++++--- - 1 file changed, 5 insertions(+), 3 deletions(-) - -diff --git a/ufraw_exiv2.cc b/ufraw_exiv2.cc -index cba4c05..b0971b0 100644 ---- a/ufraw_exiv2.cc -+++ b/ufraw_exiv2.cc -@@ -15,9 +15,7 @@ - #include "ufraw.h" - - #ifdef HAVE_EXIV2 --#include --#include --#include -+#include - #include - #include - -@@ -67,7 +65,11 @@ extern "C" int ufraw_exif_read_input(ufraw_data *uf) - if (exifData.empty()) { - std::string error(uf->filename); - error += ": No Exif data found in the file"; -+#if EXIV2_TEST_VERSION(0,27,0) -+ throw Exiv2::Error(Exiv2::kerErrorMessage, error); -+#else - throw Exiv2::Error(1, error); -+#endif - } - - /* List of tag names taken from exiv2's printSummary() in actions.cpp */ diff --git a/mingw-w64-gimp-ufraw/PKGBUILD b/mingw-w64-gimp-ufraw/PKGBUILD deleted file mode 100644 index 67a7167385..0000000000 --- a/mingw-w64-gimp-ufraw/PKGBUILD +++ /dev/null @@ -1,71 +0,0 @@ -# Maintainer: Alexey Pavlov - -_realname=ufraw -pkgbase=mingw-w64-gimp-${_realname} -pkgname="${MINGW_PACKAGE_PREFIX}-gimp-${_realname}" -groups=("${MINGW_PACKAGE_PREFIX}-gimp-plugins") -pkgver=0.22 -pkgrel=2 -pkgdesc="Converter for raw files; utility and GIMP plugin (mingw-w64)" -arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64') -url="https://ufraw.sourceforge.io/" -license=("GPL") -options=('strip' 'staticlibs') -depends=("${MINGW_PACKAGE_PREFIX}-bzip2" - "${MINGW_PACKAGE_PREFIX}-cfitsio" - "${MINGW_PACKAGE_PREFIX}-exiv2" - "${MINGW_PACKAGE_PREFIX}-gtkimageview" - "${MINGW_PACKAGE_PREFIX}-lcms" - "${MINGW_PACKAGE_PREFIX}-lensfun") -makedepends=("${MINGW_PACKAGE_PREFIX}-cc" - "${MINGW_PACKAGE_PREFIX}-gimp" - "${MINGW_PACKAGE_PREFIX}-autotools") -optdepends=("${MINGW_PACKAGE_PREFIX}-gimp: to use the gimp import plugin for raw images") -source=("https://downloads.sourceforge.net/${_realname}/${_realname}-${pkgver}.tar.gz" - 01-mingw-getopt-long.patch - 02-mingw-w64-fixes.patch - 03-fix-abs-gcc-7.patch - 04-gcc-9-openmp.patch - 05-exiv2-0.27.patch) -sha256sums=('f7abd28ce587db2a74b4c54149bd8a2523a7ddc09bedf4f923246ff0ae09a25e' - '41c7c530b6c8992653166ba2adb155c3ae137eb12ed7bc8675d623fd58a6bb13' - '9bbb7748bdb3bb9e085600b827a061d91e938852aae80e51da082f030901cd25' - '1cac31243d5a4e647a8263785b653cf33efb6ebccb660a22a8170a22fe0a09ff' - '1edce8bea1bd3bbf46a0d8f3eb172fdf3c646e215f829bd8a6e1fdc560646c28' - 'fd9f9dab2c96c0da5c4c0be83d53672a46f3fe4d3f84b4dc635037f971c6743e') - -prepare() { - cd "${srcdir}/${_realname}-${pkgver}" - patch -p1 -i ${srcdir}/01-mingw-getopt-long.patch - patch -p1 -i ${srcdir}/02-mingw-w64-fixes.patch - patch -p1 -i ${srcdir}/03-fix-abs-gcc-7.patch - patch -p1 -i ${srcdir}/04-gcc-9-openmp.patch - patch -p1 -i ${srcdir}/05-exiv2-0.27.patch - ./autogen.sh -} - -build() { - [[ -d build-${MINGW_CHOST} ]] && rm -rf build-${MINGW_CHOST} - mkdir -p build-${MINGW_CHOST} && cd build-${MINGW_CHOST} - MSYS2_ARG_CONV_EXCL="GIMP_LIBDIR" \ - ../${_realname}-${pkgver}/configure \ - --prefix=${MINGW_PREFIX} \ - --build=${MINGW_CHOST} \ - --host=${MINGW_CHOST} \ - --enable-extras \ - --enable-mime \ - --with-gimp \ - --enable-openmp \ - --enable-contrast - - local wgimp_pref=$(cygpath -wm ${MINGW_PREFIX}) - sed -e "s|${wgimp_pref}|${MINGW_PREFIX}|g" -i Makefile - sed -e "s|-ffast-math -fomit-frame-pointer -W -Wall -O3|${CFLAGS}|" -i Makefile - make VERBOSE=1 -} - -package() { - cd "${srcdir}/build-${MINGW_CHOST}" - make -j1 DESTDIR="${pkgdir}" install -} diff --git a/mingw-w64-gtkimageview/01-resource.patch b/mingw-w64-gtkimageview/01-resource.patch deleted file mode 100644 index 5ed872323f..0000000000 --- a/mingw-w64-gtkimageview/01-resource.patch +++ /dev/null @@ -1,158 +0,0 @@ -Origin: Jeffrey Ratcliffe -Bug-Debian: https://bugs.debian.org/789101 -Last-Update: 2016-02-24 ---- a/src/Makefile.am -+++ b/src/Makefile.am -@@ -87,6 +87,12 @@ - --vtail " { 0, NULL, NULL }\n };\n etype = g_@type@_register_static (g_intern_static_string (\"@EnumName@\"), values);\n }\n return etype;\n}\n" \ - gtk*.h gdk*.h > $@ - --EXTRA_DIST = gtkimageview-marshal.list wscript_build -+# Generate the GResource source file for icon files: -+resource_file = $(srcdir)/gtkimageview.gresource.xml -+BUILT_SOURCES += gtkimageview-resources.c -+gtkimageview-resources.c: $(resource_file) $(shell $(GLIB_COMPILE_RESOURCES) --generate-dependencies $(resource_file)) -+ $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --generate-source $(resource_file) -+ -+EXTRA_DIST = gtkimageview-marshal.list wscript_build $(resource_file) - - CLEANFILES = $(BUILT_SOURCES) ---- a/src/gtkimageview.gresource.xml -+++ b/src/gtkimageview.gresource.xml -@@ -0,0 +1,7 @@ -+ -+ -+ -+ gtkimageview-nav_button.png -+ gtkimageview-nav_button_hc.png -+ -+ ---- a/configure.in -+++ b/configure.in -@@ -29,6 +29,14 @@ - # Check for glib utils - AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal) - AC_PATH_PROG(GLIB_MKENUMS, glib-mkenums) -+AC_PATH_PROG(GLIB_COMPILE_RESOURCES,[glib-compile-resources],no) -+AC_MSG_CHECKING([glib-compile-resources]) -+if test "x$GLIB_COMPILE_RESOURCES" = xno ; then -+ GLIB_COMPILE_RESOURCES="" -+ AC_MSG_RESULT([cannot be found in PATH.]) -+else -+ AC_MSG_RESULT([usable.]) -+fi - - # 1.8 introduced the --rebuild-sections and --rebuild-types options to - # 1.gtkdoc-scan that we need. ---- a/src/gtkimagescrollwin.c -+++ b/src/gtkimagescrollwin.c -@@ -44,97 +44,6 @@ - /*************************************************************/ - /***** PRIVATE DATA ******************************************/ - /*************************************************************/ --#ifdef __GNUC__ --static const guint8 nav_button[] __attribute__ ((__aligned__ (4))) = --#else --static const guint8 nav_button[] = --#endif --{ -- "" -- /* Pixbuf magic (0x47646b50) */ -- "GdkP" -- /* length: header (24) + pixel_data (784) */ -- "\0\0\3(" -- /* pixdata_type (0x1010002) */ -- "\1\1\0\2" -- /* rowstride (56) */ -- "\0\0\0""8" -- /* width (14) */ -- "\0\0\0\16" -- /* height (14) */ -- "\0\0\0\16" -- /* pixel_data: */ -- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\0\0\0\377" -- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -- "\0\0\0\0\0\0\0\0\0\0\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\0" -- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -- "\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\0\0\0" -- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -- "\0\0\0\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -- "\0\0\0\0\0\0\0\0\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\0\0\0\377" -- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -- "\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\0\0\0\377\0\0\0\0\0\0\0" -- "\0\0\0\0\0\0\0\0\377\0\0\0\377\0\0\0\0\0\0\0\377\0\0\0\377\0\0\0\377" -- "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" -- "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" -- "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377" -- "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\0\0\0\0\377\0\0\0\377" -- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0" -- "\0\0\0\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\0\0\0\0\0\0\0" -- "\0\0\0\0\0\0\0\0\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\0\0" -- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -- "\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0" -- "\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -- "\0\0\0\0\0\0\0\0\0\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\0\0" -- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -- "\0\0\0\0\0\0\0\0\377\0\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -- "\0\0\0\0\0" --}; -- --#ifdef __GNUC__ --static const guint8 nav_button_hc[] __attribute__ ((__aligned__ (4))) = --#else --static const guint8 nav_button_hc[] = --#endif --{ -- "" -- /* Pixbuf magic (0x47646b50) */ -- "GdkP" -- /* length: header (24) + pixel_data (784) */ -- "\0\0\3(" -- /* pixdata_type (0x1010002) */ -- "\1\1\0\2" -- /* rowstride (56) */ -- "\0\0\0""8" -- /* width (14) */ -- "\0\0\0\16" -- /* height (14) */ -- "\0\0\0\16" -- /* pixel_data: */ -- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0>>>\377>>>\377\0\0\0" -- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -- "\0\0\0\0\0\0\0>>>\377>>>\377>>>\377>>>\377\0\0\0\0\0\0\0\0\0\0\0\0\0" -- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0>>>\377>>>\377>>>\377>" -- ">>\377>>>\377>>>\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0>>>\377>>>\377\0\0\0\0\0\0\0\0\0\0\0" -- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0>>>\377\0\0\0\0\0\0\0\0\0\0" -- "\0\0>>>\377>>>\377\0\0\0\0\0\0\0\0\0\0\0\0>>>\377\0\0\0\0\0\0\0\0\0\0" -- "\0\0>>>\377>>>\377\0\0\0\0\0\0\0\0\0\0\0\0>>>\377>>>\377\0\0\0\0\0\0" -- "\0\0\0\0\0\0>>>\377>>>\377\0\0\0\0>>>\377>>>\377>>>\377>>>\377>>>\377" -- ">>>\377>>>\377>>>\377>>>\377>>>\377>>>\377>>>\377>>>\377>>>\377>>>\377" -- ">>>\377>>>\377>>>\377>>>\377>>>\377>>>\377>>>\377>>>\377>>>\377>>>\377" -- ">>>\377>>>\377>>>\377\0\0\0\0>>>\377>>>\377\0\0\0\0\0\0\0\0\0\0\0\0>" -- ">>\377>>>\377\0\0\0\0\0\0\0\0\0\0\0\0>>>\377>>>\377\0\0\0\0\0\0\0\0\0" -- "\0\0\0>>>\377\0\0\0\0\0\0\0\0\0\0\0\0>>>\377>>>\377\0\0\0\0\0\0\0\0\0" -- "\0\0\0>>>\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -- "\0\0\0\0>>>\377>>>\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0>>>\377>>>\377>>>\377>>>\377>>>\377" -- ">>>\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -- "\0\0\0\0\0>>>\377>>>\377>>>\377>>>\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0>>>\377>>>" -- "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" --}; - - G_DEFINE_TYPE(GtkImageScrollWin, gtk_image_scroll_win, GTK_TYPE_TABLE); - -@@ -294,9 +203,9 @@ - - // Setup the navigator button. - window->nav_button = -- gdk_pixbuf_new_from_inline (-1, nav_button, FALSE, NULL); -+ gdk_pixbuf_new_from_resource ("gtkimageview-nav_button.png", NULL); - window->nav_button_hc = -- gdk_pixbuf_new_from_inline (-1, nav_button_hc, FALSE, NULL); -+ gdk_pixbuf_new_from_resource ("gtkimageview-nav_button_hc.png", NULL); - window->nav_image = gtk_image_new_from_pixbuf (window->nav_button); - - window->nav_box = gtk_event_box_new (); diff --git a/mingw-w64-gtkimageview/02-g_mem_set_vtable.patch b/mingw-w64-gtkimageview/02-g_mem_set_vtable.patch deleted file mode 100644 index 36c7db5d1a..0000000000 --- a/mingw-w64-gtkimageview/02-g_mem_set_vtable.patch +++ /dev/null @@ -1,15 +0,0 @@ -Origin: Jeffrey Ratcliffe -Last-Update: 2016-02-24 -Index: gtkimageview-1.6.4+dfsg/tests/test-memory.c -=================================================================== ---- gtkimageview-1.6.4+dfsg.orig/tests/test-memory.c -+++ gtkimageview-1.6.4+dfsg/tests/test-memory.c -@@ -251,7 +251,7 @@ test_offset_setting () - int - main (int argc, char *argv[]) - { -- g_mem_set_vtable (glib_mem_profiler_table); -+ // g_mem_set_vtable (glib_mem_profiler_table); - gtk_init (&argc, &argv); - test_unreffing (); - test_unrefing_the_pixbuf (); diff --git a/mingw-w64-gtkimageview/03-update-obsolete-gnome-common-and-automake.patch b/mingw-w64-gtkimageview/03-update-obsolete-gnome-common-and-automake.patch deleted file mode 100644 index c581aefdc0..0000000000 --- a/mingw-w64-gtkimageview/03-update-obsolete-gnome-common-and-automake.patch +++ /dev/null @@ -1,44 +0,0 @@ -diff -Naur gtkimageview-1.6.4-orig/configure.in gtkimageview-1.6.4/configure.in ---- gtkimageview-1.6.4-orig/configure.in 2019-05-29 10:11:23.407610600 +0300 -+++ gtkimageview-1.6.4/configure.in 2019-05-29 10:16:24.349032000 +0300 -@@ -17,9 +17,7 @@ - AC_PROG_INSTALL - AM_PROG_LIBTOOL - --# Initialize GNOME environment --GNOME_COMMON_INIT --GNOME_COMPILE_WARNINGS(error) -+AX_COMPILER_FLAGS([WARN_CFLAGS],[WARN_LDFLAGS]) - DEPRECATED_FLAGS="-DG_DISABLE_DEPRECATED -DGDK_DISABLE_DEPRECATED -DGDK_PIXBUF_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED" - AC_SUBST(DEPRECATED_FLAGS) - -diff -Naur gtkimageview-1.6.4-orig/src/Makefile.am gtkimageview-1.6.4/src/Makefile.am ---- gtkimageview-1.6.4-orig/src/Makefile.am 2019-05-29 10:11:23.397610600 +0300 -+++ gtkimageview-1.6.4/src/Makefile.am 2019-05-29 10:15:01.867916500 +0300 -@@ -1,4 +1,4 @@ --INCLUDES = $(DEP_CFLAGS) -+AM_CPPFLAGS = $(DEP_CFLAGS) - - BUILT_SOURCES = \ - gtkimageview-marshal.c \ -diff -Naur gtkimageview-1.6.4-orig/tests/Makefile.am gtkimageview-1.6.4/tests/Makefile.am ---- gtkimageview-1.6.4-orig/tests/Makefile.am 2009-04-05 03:25:14.000000000 +0400 -+++ gtkimageview-1.6.4/tests/Makefile.am 2019-05-29 10:15:38.568967900 +0300 -@@ -4,7 +4,7 @@ - $(top_builddir)/src/libgtkimageview.la \ - $(DEP_LIBS) \ - ./testlib/libtest.la --INCLUDES = $(DEP_CFLAGS) -I$(top_srcdir) -I. -+AM_CPPFLAGS = $(DEP_CFLAGS) -I$(top_srcdir) -I. - - noinst_PROGRAMS = \ - ex-abssize \ -diff -Naur gtkimageview-1.6.4-orig/tests/testlib/Makefile.am gtkimageview-1.6.4/tests/testlib/Makefile.am ---- gtkimageview-1.6.4-orig/tests/testlib/Makefile.am 2009-04-05 03:25:14.000000000 +0400 -+++ gtkimageview-1.6.4/tests/testlib/Makefile.am 2019-05-29 10:15:48.208981400 +0300 -@@ -1,4 +1,4 @@ --INCLUDES = $(DEP_CFLAGS) -+AM_CPPFLAGS = $(DEP_CFLAGS) - - noinst_LTLIBRARIES = libtest.la - noinst_HEADERS = testlib.h diff --git a/mingw-w64-gtkimageview/04-gcc9-identation-error.patch b/mingw-w64-gtkimageview/04-gcc9-identation-error.patch deleted file mode 100644 index d42ba99852..0000000000 --- a/mingw-w64-gtkimageview/04-gcc9-identation-error.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- gtkimageview-1.6.4/src/gtkimagenav.c.orig 2019-05-29 10:25:30.343100700 +0300 -+++ gtkimageview-1.6.4/src/gtkimagenav.c 2019-05-29 10:26:01.383144100 +0300 -@@ -71,8 +71,9 @@ - gtk_image_nav_get_preview_size (GtkImageNav *nav) - { - GdkPixbuf *pixbuf = gtk_image_view_get_pixbuf (nav->view); -- if (!pixbuf) -- return (Size){GTK_IMAGE_NAV_MAX_WIDTH, GTK_IMAGE_NAV_MAX_HEIGHT}; -+ if (!pixbuf) { -+ return (Size){GTK_IMAGE_NAV_MAX_WIDTH, GTK_IMAGE_NAV_MAX_HEIGHT}; -+ } - int img_width = gdk_pixbuf_get_width (pixbuf); - int img_height = gdk_pixbuf_get_height (pixbuf); - diff --git a/mingw-w64-gtkimageview/PKGBUILD b/mingw-w64-gtkimageview/PKGBUILD deleted file mode 100644 index 7dee7fddf3..0000000000 --- a/mingw-w64-gtkimageview/PKGBUILD +++ /dev/null @@ -1,57 +0,0 @@ -# Maintainer: Alexey Pavlov - -_realname=gtkimageview -pkgbase=mingw-w64-${_realname} -pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=1.6.4 -pkgrel=4 -pkgdesc="Simple image viewer widget for GTK2 (mingw-w64)" -arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64') -url="https://projects-old.gnome.org/gtkimageview/" -license=("LGPL2.1") -makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-autotools") -depends=("${MINGW_PACKAGE_PREFIX}-gtk2") -options=('strip' 'staticlibs') -source=("${_realname}-${pkgver}.tar.gz" - "resources.tar.bz2" - 01-resource.patch - 02-g_mem_set_vtable.patch - 03-update-obsolete-gnome-common-and-automake.patch - 04-gcc9-identation-error.patch) -sha256sums=('4c681d38d127ee3950a29bce9aa7aa8a2abe3b4d915f7a0c88e526999c1a46f2' - 'bb255c8786e2039168801a9f49eb0f1fe38321842cd4967ec67f698883a90d86' - '438c3c45f24cb367a9ba8567d9aa85775be9b1edda03a7101d6023a4dd04942c' - 'f2ba3dd4b6d1ad8f81953e2d51e43396df6606dab84211aec1095329514ebd5e' - '89a214a265c2dfd7a555cc17640e5e73f397fd043ffbbbf22e395c5a6afb27dd' - 'fd0437cbce60004ed58c287c359ecebc6fa693ec75d88a906a7c4c01eccd8d0a') - -prepare() { - mv -f *.png ${_realname}-${pkgver}/src/ - cd "${srcdir}/${_realname}-${pkgver}" - patch -p1 -i ${srcdir}/01-resource.patch - patch -p1 -i ${srcdir}/02-g_mem_set_vtable.patch - patch -p1 -i ${srcdir}/03-update-obsolete-gnome-common-and-automake.patch - patch -p1 -i ${srcdir}/04-gcc9-identation-error.patch - - autoreconf -fiv -} - -build() { - export lt_cv_deplibs_check_method='pass_all' - rm -rf "${srcdir}/build-${MINGW_CHOST}" - mkdir "${srcdir}/build-${MINGW_CHOST}" - cd "${srcdir}/build-${MINGW_CHOST}" - ../${_realname}-${pkgver}/configure \ - --prefix=${MINGW_PREFIX} \ - --build=${MINGW_CHOST} \ - --host=${MINGW_CHOST} \ - --target=${MINGW_CHOST} - - make -} - -package() { - cd "${srcdir}/build-${MINGW_CHOST}" - make DESTDIR="${pkgdir}" install -} diff --git a/mingw-w64-gtkimageview/gtkimageview-1.6.4.tar.gz b/mingw-w64-gtkimageview/gtkimageview-1.6.4.tar.gz deleted file mode 100644 index 4eda1aaaf04e480fcd2c1404dad631ad015b3426..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1158138 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

6MEX1WF*!u)7dJ1LqfjCoj!lWT; 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

wIhW2_a#6zj;>KUk6Y0$X`Sm#LJ0b-s6)nG`; zfJEZxfdhDT7nG2ts3;(?2(gM5Y+6)ka~7q50uAMgxp@JDL0n3l^mO+rPn|1m{XCrD1kgVsnv47^IZHveps0reL<4A_Mw0#)(w!qFy{C(hN~1+sPv&#w79 z4p`LxZv7TcPy?6+g^mi)D);Y9QpPSV*rJ~e7*G>pq@%CR7+H*dnvVww;hDZFSCQK(EN71ojKCE+_L!#6U^q zS@gKDX3&YbPs3Vews{NzcI{=)5$<7Vua;$vWF3s6qGF35CIR{ss<|)wUN6)LUr27> zi<&?F?c7o9vEjk6NGBd~@`WzZd*BHK3}Y_|qG3OwRJ2ncKc7@E7@Aa2sTi0Mh9?@7ac>*gord zgMSxm8gK*&%})XE7(f#P9w`_Mcvbuq%_=S}z0iDKg`sbD1E&}h3-lA~XaRQSjVXkH zlT203&_-|w;z^?K|K@*fk5(0+fE`O#!kj@)1c`Y{7F}DIx zOf+f25kO1{v9VY4F5^MG7khE^Z5sN<@;^tYt2fNzvF19Ds|IKzNG-*g!}+hGFOGgj zCbIv$;QvIq3%il+VhtKP;YmBD30h$x(0Oe7s9>W;3;O`zfRXbAO)M39}aGo zS@m}ZHVq&2WtOd70P#c$0^BOBNu^u@4S53qxyoBSJan1B2Qm;hgFNrNjz+*gl%%NFa_-Gp(!d+*!jH# z9e4rH2h#7{fSV2Ai)wfe$l#2qC}e5?2e5w(!!9Q!L=Vb{NQg>FprHrKXh#LXp#&Os z0l0Q>7Z}tx(I2HEfSKrlM*)4Dz~lI|ckWP-;Q`cMa78fmBOC|qPlKm)J<;$BP~hc# zJLvs9QKYD@o|-AhKwy#oIr|^9v&#Pi8xx>Cj6(+x{>=U-WG(}?|8Zcygd}MH^T0s~ zaRln%f9-$#e_;RRUmUIfAKQNsKO`jy+kZWHNJ{E}Bmfte0*AqW?Z5nA_`9mFtG*Vw z9i$g)H8oTX5D1Q!!2iybD*(u<E2m}hD32>givHi_{x9xF(Vnc&6S>%=)`PFasi!8ah|J+J* zqgb0W98njg#h0x6Wy_yfRkvTy3f|XCQ4ZVQu97dZz5L+2^{Blo&a8gHu}V~9%?h{m z_V>2k-gf(0a_!@cCdIQalV83JBIUe%lJ|J(Gi6jxZfxx2p#N8F5jL4*H6v%_-d1n& zE-FY&K%n|#(Cqk*{1H-;*4%KzXzJC(D&>G~!CC=Q%hgP)qNt4cH zQ=dDUEw*pv^5CED_S(vG?YWc5h6{Gb>}pL_RUJBB%i`~5q#aMq3wTW|AZ+a(?0L1L zvVa@WmJmF%LToMKTOHpr<%_&3=YNe2DP1!9>5$vIT*o+~AW1^;e(m<(yX-d^ zauI1J>hU{l&r?c;Z{KyjY2=QC3FG3~jb#>oZ_`YHf6qSK^=+9H^9z5bJUerCddmjO zx`USwKOe+2t?(smrX!U3R60}(;zn_Z(!4=%~#4w1IF`|K$nidI7Q~^*^*Sc<* z&BgOo)<=^w^nx)J(legEgJM0%F@z1|@fH$7R!IlzH1Kiiv;S&8Z8 ziXR!QuGP!bnNFD|eId$JC67@$?Tj+`GH2o_*5j8?4jmdamzkuF1nT!^S9r_TV>8kK z>`hJ`?N2HaZvI+5Gh7;8bUo2>F8VGxRZ@5B5&yxkcc=NBGjFJv{<3l3b@>xpiw
@&~7~N8a-0{Y%4JE>MEU%WK}< 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 _@LKCD?IW5*{?jQvxk+bl5+-q? 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
kykrbsk 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

~HY%v9 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 z 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%0D(V4%gEXN)LzFn(yq zdANm6Oxf>Q*dInHHLRkGIW}mkko`R8Fd=Q&JbFZc;)$@}2f5fnr#$E$d=4AN{5oGJ z`&67ZeqZ+z4;=rHbeOjmlz3<&yfcGZ^;ZI)I#Qz8M|RjPn|!N6j_ENOlCE7=)!8Xl z&6jKXXxugdD9vO6b*t)&y`H(GD5OY*=0hTl@MI$S5euu{5`6WI(SBnLGpEZ3{AU*$ zS@@23BB!nS{G$N_2Pg~~k;`e+OeRe6WNC zr7^@+IWYQ{jI)nBfu|dfSnEJmiY}>Gcs4z|yR?>UEX4-`*87Wq6IFI|Bl=MmF^cOd z?6^&nefXho=5xC;okBEnRKo^z14y`fkv1tJkpoDOhs;-<0Ekv!BOK?D=E0P+lS1S$ z_Gbf3X$;x4_&vh9GPQbDY^-`JFa^CXB74OsFF-+E8`n!(a*1WAlM}_IVmvd&@sSP#wsZfv->bkL9@R7zcnbv?ESfjJfL3d zj_zmu9j|nYzi+(Hw$F#FH!gBLeV}>TKNI#n(;vGizjxRm@i3Mrm9^X+J?oql;#*6~yNmNl?h6D z9-v@J$Oe{cw!e_~9|Bc+IDq zNQd*a2_?TE?1O$n^#|;D(6MUQ6QEXw&WNDM9n-Lq@|j5614aD!+D>vC$==uoav4

E>4RU@_0?&qO8uTiiUvj6_1YN7=wD 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

QX|;d-%&6ZtqF7s{K9x7t5NIpzcO8 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 Tx&Qy${pX+O*0zp8Lze*nQc+ua diff --git a/mingw-w64-gtkimageview/resources.tar.bz2 b/mingw-w64-gtkimageview/resources.tar.bz2 deleted file mode 100644 index 1c60dde01a7ea145b6f1b3a3ea73e3b412858ab2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 480 zcmV<60U!QCT4*^jL0KkKS<>5qtN;MW|Nr-MSrYTh|EfOW{m=gI-^>*BGWMwDc=TUV zd_tOXz(cSBS(L!lP-FlA0MHEp05kvq8UWA$05A<6qd)-Bp@Iaen1+bZ$ambevxFvGYQ_n0QVDv=kLAKouY=b|O2ja^g#El%1+1zM*hrXa2G(fr_Z(fkhtO zvjpC>7Nq1{A|R5oBec6;vW}DM%#Fp7e?~L+NVmVm=S~}V{VaSh& z0%LKrh3p6>DW#_nXg@<(ghQoXKO5VZ>IC7i+ypAXJ0Kgz7kVv0gw&=idlnEdfn#Hc zwPDJrpybN=DMSTnx}u`26GaOAQ=UOJN|=4$1<64yxZbpK&qrh$oZO?zOwxi$=c-51 WB$9J4X+<~!V7rnj!i0vF+znvvAI>uX From 7b265868a43e61a766d1263836a50cfdfc143d1b Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Tue, 1 Feb 2022 08:32:18 +0100 Subject: [PATCH 150/226] Add geoipupdate package Se we can drop the unsupported geoip2-database --- mingw-w64-geoipupdate/001-relocate.patch | 21 ++++++++++ mingw-w64-geoipupdate/PKGBUILD | 51 ++++++++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 mingw-w64-geoipupdate/001-relocate.patch create mode 100644 mingw-w64-geoipupdate/PKGBUILD diff --git a/mingw-w64-geoipupdate/001-relocate.patch b/mingw-w64-geoipupdate/001-relocate.patch new file mode 100644 index 0000000000..2436f1b128 --- /dev/null +++ b/mingw-w64-geoipupdate/001-relocate.patch @@ -0,0 +1,21 @@ +--- geoipupdate-4.8.0/cmd/geoipupdate/main.go.orig 2022-02-01 08:23:33.340000000 +0100 ++++ geoipupdate-4.8.0/cmd/geoipupdate/main.go 2022-02-01 08:08:48.823592300 +0100 +@@ -21,11 +21,16 @@ + func main() { + log.SetFlags(0) + ++ ex, err := os.Executable() ++ if err != nil { ++ panic(err) ++ } ++ + if defaultConfigFile == "" { +- defaultConfigFile = geoipupdate.DefaultConfigFile ++ defaultConfigFile = filepath.Join(filepath.Dir(ex), "..", "etc", "GeoIP.conf") + } + if defaultDatabaseDirectory == "" { +- defaultDatabaseDirectory = geoipupdate.DefaultDatabaseDirectory ++ defaultDatabaseDirectory = filepath.Join(filepath.Dir(ex), "..", "var", "lib", "GeoIP") + } + + args := getArgs() diff --git a/mingw-w64-geoipupdate/PKGBUILD b/mingw-w64-geoipupdate/PKGBUILD new file mode 100644 index 0000000000..9dc0c68688 --- /dev/null +++ b/mingw-w64-geoipupdate/PKGBUILD @@ -0,0 +1,51 @@ +# Maintainer: Christoph Reiter + +_realname=geoipupdate +pkgbase=mingw-w64-${_realname} +pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}") +pkgver=4.8.0 +pkgrel=1 +pkgdesc='Update GeoIP2 and GeoIP Legacy binary databases from MaxMind (mingw-w64)' +arch=('any') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64') +url="https://dev.maxmind.com/geoip/geoipupdate" +license=('spdx:Apache-2.0 OR MIT') +makedepends=("${MINGW_PACKAGE_PREFIX}-go") +backup=("${MINGW_PREFIX:1}/etc/GeoIP.conf") +options=('!strip') +source=("https://github.com/maxmind/geoipupdate/archive/v$pkgver/$_realname-$pkgver.tar.gz" + "001-relocate.patch") +sha256sums=('ca718c3ffcc595ef441363699888d20150f1d3a6583ac2d60bcbd34f052db09f' + '13a011e60eb044281c41420723f3854b8870c174a7876c3ecd7ccc22393c909f') + +prepare() { + cd "$srcdir/$_realname-$pkgver" + + sed -i 's/EditionIDs .*/EditionIDs GeoLite2-ASN GeoLite2-City GeoLite2-Country/' conf/GeoIP.conf.default + + patch -Nbp1 -i "${srcdir}/001-relocate.patch" +} + +build() { + cd "$srcdir/$_realname-$pkgver" + + export GOROOT=${MINGW_PREFIX}/lib/go + + cd cmd/geoipupdate + mkdir -p "$srcdir/build" + go build -o "$srcdir/build/geoipupdate.exe" -ldflags "-X main.version=$pkgver" +} + +package() { + cd "$srcdir/$_realname-$pkgver" + + install -dm755 "${pkgdir}${MINGW_PREFIX}/var/lib/GeoIP" + install -Dm600 conf/GeoIP.conf.default "${pkgdir}${MINGW_PREFIX}/etc/GeoIP.conf" + + cd "$srcdir/build" + install -Dm755 geoipupdate.exe "${pkgdir}${MINGW_PREFIX}/bin/geoipupdate.exe" + + cd "$srcdir/$_realname-$pkgver" + install -Dm644 LICENSE-APACHE "${pkgdir}${MINGW_PREFIX}/usr/share/licenses/$_realname/LICENSE-APACHE" + install -Dm644 LICENSE-MIT "${pkgdir}${MINGW_PREFIX}/usr/share/licenses/$_realname/LICENSE-MIT" +} From 2e93cbfbe18408b88d3b47d04d5e875883dc34d4 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Tue, 1 Feb 2022 08:39:52 +0100 Subject: [PATCH 151/226] Remove geoip2-database Upstream is gone. Use geoipupdate instead. --- mingw-w64-geoip/PKGBUILD | 5 +-- mingw-w64-geoip2-database/PKGBUILD | 41 ------------------- .../check-last-modified.sh | 23 ----------- mingw-w64-libmaxminddb/PKGBUILD | 4 +- 4 files changed, 4 insertions(+), 69 deletions(-) delete mode 100644 mingw-w64-geoip2-database/PKGBUILD delete mode 100644 mingw-w64-geoip2-database/check-last-modified.sh diff --git a/mingw-w64-geoip/PKGBUILD b/mingw-w64-geoip/PKGBUILD index dbea65c74e..88967b7997 100644 --- a/mingw-w64-geoip/PKGBUILD +++ b/mingw-w64-geoip/PKGBUILD @@ -6,14 +6,13 @@ _pkgname=geoip-api-c pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}") pkgver=1.6.12 -pkgrel=1 +pkgrel=2 pkgdesc="Non-DNS IP-to-country resolver C library & utils (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64') url="https://www.maxmind.com/app/c" license=('LGPL') -depends=("${MINGW_PACKAGE_PREFIX}-geoip2-database" - "${MINGW_PACKAGE_PREFIX}-zlib") +depends=("${MINGW_PACKAGE_PREFIX}-zlib") makedepends=("${MINGW_PACKAGE_PREFIX}-autotools" "${MINGW_PACKAGE_PREFIX}-cc") options=('!emptydirs') diff --git a/mingw-w64-geoip2-database/PKGBUILD b/mingw-w64-geoip2-database/PKGBUILD deleted file mode 100644 index 98849a12ab..0000000000 --- a/mingw-w64-geoip2-database/PKGBUILD +++ /dev/null @@ -1,41 +0,0 @@ -# Maintainer: Alexey Pavlov - -_realname=geoip2-database -pkgbase=mingw-w64-${_realname} -pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=20190624 -pkgrel=1 -pkgdesc="GeoLite country geolocation database compiled by MaxMind (mingw-w64)" -arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64') -url="https://dev.maxmind.com/geoip/geoip2/geolite2/" -license=('custom:Creative Commons Attribution-ShareAlike 3.0 Unported') -source=(GeoLite2-City-${pkgver}.tar.gz::https://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz - GeoLite2-Country-${pkgver}.tar.gz::https://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.tar.gz - GeoLite2-ASN-${pkgver}.tar.gz::https://geolite.maxmind.com/download/geoip/database/GeoLite2-ASN.tar.gz) -noextract=(GeoLite2-City-${pkgver}.tar.gz - GeoLite2-Country-${pkgver}.tar.gz - GeoLite2-ASN-${pkgver}.tar.gz) -sha256sums=('491367661ccfda918c606a140154aa10ded8c62eeb64c947dd037efdaba08d94' - 'cd8640a40a8423464e7f9cad3c814bbe073c72646abb4f98b768be55f2096182' - '0fa431a8663984d87f44dbc9ceaa2602abf5a3254ac52bfde27a6f517c4ee018') - -prepare() { - cd "${srcdir}" - - for _db in GeoLite2-{City,Country,ASN}; do - tar --strip-components=1 -xf ${_db}-${pkgver}.tar.gz --wildcards "*/${_db}.mmdb" - done - - tar --strip-components=1 -xf GeoLite2-ASN-${pkgver}.tar.gz --wildcards "*/COPYRIGHT.txt" "*/LICENSE.txt" -} - -package() { - cd "${srcdir}" - - install -d "${pkgdir}${MINGW_PREFIX}/share/GeoIP" - install -m644 -t "${pkgdir}${MINGW_PREFIX}/share/GeoIP" GeoLite2-{City,Country,ASN}.mmdb - - install -Dm644 COPYRIGHT.txt "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/COPYRIGHT.txt" - install -Dm644 LICENSE.txt "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE.txt" -} diff --git a/mingw-w64-geoip2-database/check-last-modified.sh b/mingw-w64-geoip2-database/check-last-modified.sh deleted file mode 100644 index 0787b46cf3..0000000000 --- a/mingw-w64-geoip2-database/check-last-modified.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -e - -# Unicode characters taken from pactree.c -UNICODE_IS_FUN="\u2514\u2500" - -verbose=0 -if [[ $1 == -v ]]; then - verbose=1 -fi - -URLS=(https://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz - https://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.tar.gz - https://geolite.maxmind.com/download/geoip/database/GeoLite2-ASN.tar.gz) - -for url in ${URLS[@]}; do - last_mod=$(curl -sI $url | grep -i ^Last-Modified: | cut -d' ' -f2- | tr -d '\r') - echo "$last_mod (${url##*/})" - - if ((verbose)); then - build_id=$(curl -s $url | gzip -cd | grep -aoE '[0-9]{8} Build [0-9]*') - echo -e "${UNICODE_IS_FUN}$build_id" - fi -done diff --git a/mingw-w64-libmaxminddb/PKGBUILD b/mingw-w64-libmaxminddb/PKGBUILD index 459bf70d3c..265f081dab 100644 --- a/mingw-w64-libmaxminddb/PKGBUILD +++ b/mingw-w64-libmaxminddb/PKGBUILD @@ -4,13 +4,13 @@ _realname=libmaxminddb pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" pkgver=1.3.2 -pkgrel=2 +pkgrel=3 pkgdesc="C library for reading MaxMind DB files, including the GeoIP2 databases from MaxMind (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64') url="https://dev.maxmind.com/geoip/" license=('Apache-2.0') -depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs" "${MINGW_PACKAGE_PREFIX}-geoip2-database") +depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs") makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-autotools" "git" From f0fa8d1d769841976ca08fee69d3885ed0d7b120 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A1s=20Svraka?= Date: Tue, 1 Feb 2022 14:17:32 +0100 Subject: [PATCH 152/226] emacs-pdf-tools-server: update to 0.91 --- mingw-w64-emacs-pdf-tools-server/PKGBUILD | 29 ++++++++++++----------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/mingw-w64-emacs-pdf-tools-server/PKGBUILD b/mingw-w64-emacs-pdf-tools-server/PKGBUILD index 339b725648..360d3f142e 100644 --- a/mingw-w64-emacs-pdf-tools-server/PKGBUILD +++ b/mingw-w64-emacs-pdf-tools-server/PKGBUILD @@ -3,12 +3,12 @@ _realname=emacs-pdf-tools-server pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=0.80.r235.ga8847b7 -pkgrel=2 +pkgver=0.91 +pkgrel=1 pkgdesc="Emacs support library for PDF files" -_commit="a8847b75d3487d60e27762816bdbdd23b6dc1c11" -source=("${_realname}::git+https://github.com/vedang/pdf-tools.git#commit=${_commit}") -sha256sums=("SKIP") +source=("${_realname}-${pkgver}.tar.gz::https://github.com/vedang/pdf-tools/archive/refs/tags/v${pkgver}.tar.gz") +noextract=(${_realname}-${pkgver}.tar.gz) +sha256sums=("93f88d27e7910b76ffe2c506670d685b41c0b2cd3086543971d0c700c9eadee3") arch=("any") url="https://github.com/vedang/pdf-tools" license=("GPL3") @@ -22,23 +22,24 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-emacs" "${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-autotools") -pkgver() { - cd "${srcdir}/${_realname}" - - git describe --long "${_commit}" | sed 's/\([^-]*-g\)/r\1/;s/-/./g;s/^v//g' -} - prepare() { - cd "${srcdir}/${_realname}/server" + # Workaround for symlinks in tarball and the different package and git repo + # names. + mkdir -p "${srcdir}/${_realname}-${pkgver}" + tar xzf "${srcdir}/${_realname}-${pkgver}.tar.gz" \ + -C "${srcdir}/${_realname}-${pkgver}" \ + --strip-components=1 \ + --exclude "README*" + + cd "${srcdir}/${_realname}-${pkgver}/server" autoreconf -fvi } build() { - cd "${srcdir}/${_realname}" mkdir -p "${srcdir}/build-${MSYSTEM}" && cd "${srcdir}/build-${MSYSTEM}" - ../"${_realname}"/server/configure \ + ../"${_realname}-${pkgver}"/server/configure \ --prefix="${MINGW_PREFIX}" \ --build="${MINGW_CHOST}" \ --host="${MINGW_CHOST}" \ From 3bfb46f77aa0d73ff144112d9e11b5b17e0d253d Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Wed, 2 Feb 2022 01:34:45 +0530 Subject: [PATCH 153/226] libxlsxwriter: update to 1.1.4 * Use ninja instead of make. * Install license file. --- mingw-w64-libxlsxwriter/PKGBUILD | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/mingw-w64-libxlsxwriter/PKGBUILD b/mingw-w64-libxlsxwriter/PKGBUILD index 094594c22c..a809cc6f1d 100644 --- a/mingw-w64-libxlsxwriter/PKGBUILD +++ b/mingw-w64-libxlsxwriter/PKGBUILD @@ -4,22 +4,22 @@ _realname=libxlsxwriter pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=1.0.0 -pkgrel=2 +pkgver=1.1.4 +pkgrel=1 pkgdesc="A C library for creating Excel XLSX files (mingw-w64)" arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') url="https://github.com/jmcnamara/libxlsxwriter" license=("custom") -makedepends=("${MINGW_PACKAGE_PREFIX}-cc" +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-cmake" - "${MINGW_PACKAGE_PREFIX}-zlib") + "${MINGW_PACKAGE_PREFIX}-ninja") depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs" #"${MINGW_PACKAGE_PREFIX}-minizip" "${MINGW_PACKAGE_PREFIX}-zlib") options=('staticlibs' 'strip') source=("${_realname}-${pkgver}.tar.gz"::"https://github.com/jmcnamara/libxlsxwriter/archive/RELEASE_${pkgver}.tar.gz") -sha256sums=('8b353379333c323d14a9d265cd2491d3a6c0032c8d6ec2141f10b82ab66a087c') +sha256sums=('b379eb35fdd9c653ebe72485b9c992f612c7ea66f732784457997d6e782f619b') prepare() { cd "${srcdir}/${_realname}-RELEASE_${pkgver}" @@ -31,7 +31,7 @@ build() { MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \ ${MINGW_PREFIX}/bin/cmake.exe -Wno-dev \ - -G"MSYS Makefiles" \ + -G"Ninja" \ -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \ -DBUILD_SHARED_LIBS=ON \ -DBUILD_TESTS=ON \ @@ -39,15 +39,18 @@ build() { -DUSE_SYSTEM_MINIZIP=OFF \ -DCMAKE_BUILD_TYPE=Release \ ../${_realname}-RELEASE_${pkgver} - make + + ${MINGW_PREFIX}/bin/cmake.exe --build ./ } check(){ cd ${srcdir}/build-${MINGW_CHOST} - make test + ${MINGW_PREFIX}/bin/ctest.exe || true } package() { cd "${srcdir}/build-${MINGW_CHOST}" - make DESTDIR="${pkgdir}" install + DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake.exe --install ./ + + install -Dm644 "${srcdir}/${_realname}-RELEASE_${pkgver}/LICENSE.txt" "${pkgdir}/${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE.txt" } From 98a11d8334d6a93371f687b37ed578fdcdee1a26 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Wed, 2 Feb 2022 01:38:36 +0530 Subject: [PATCH 154/226] python-certifi: update to 2021.10.8 --- mingw-w64-python-certifi/PKGBUILD | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/mingw-w64-python-certifi/PKGBUILD b/mingw-w64-python-certifi/PKGBUILD index 3f29bc64d6..e64fd12bfe 100644 --- a/mingw-w64-python-certifi/PKGBUILD +++ b/mingw-w64-python-certifi/PKGBUILD @@ -6,8 +6,8 @@ pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") provides=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") conflicts=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") replaces=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") -pkgver=2021.5.30 -pkgrel=2 +pkgver=2021.10.8 +pkgrel=1 pkgdesc="Python package for providing Mozilla's CA Bundle (mingw-w64)" url='https://pypi.python.org/pypi/certifi' license=('GPL') @@ -16,11 +16,9 @@ mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') depends=("${MINGW_PACKAGE_PREFIX}-python") makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools") source=("https://pypi.io/packages/source/${_realname:0:1}/${_realname}/${_realname}-${pkgver}.tar.gz") -sha256sums=('2bbf76fd432960138b3ef6dda3dde0544f27cbf8546c458e60baf371917ba9ee') +sha256sums=('78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872') prepare() { - cd ${srcdir} - rm -rf python-build-${CARCH} | true cp -r "${_realname}-${pkgver}" "python-build-${CARCH}" From b40e0e8bfa5f05474ff8e1802a5f14656cee9357 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Wed, 2 Feb 2022 01:41:28 +0530 Subject: [PATCH 155/226] python-httplib2: update to 0.20.3 --- mingw-w64-python-httplib2/PKGBUILD | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mingw-w64-python-httplib2/PKGBUILD b/mingw-w64-python-httplib2/PKGBUILD index 9b8ea1f8ee..5c0651c193 100644 --- a/mingw-w64-python-httplib2/PKGBUILD +++ b/mingw-w64-python-httplib2/PKGBUILD @@ -7,11 +7,11 @@ pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") provides=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") conflicts=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") replaces=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") -pkgver=0.19.1 -pkgrel=2 +pkgver=0.20.3 +pkgrel=1 pkgdesc="Comprehensive HTTP client library, supporting many features (mingw-w64)" arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') license=('MIT') url="https://github.com/httplib2/httplib2" depends=("${MINGW_PACKAGE_PREFIX}-python" @@ -21,7 +21,7 @@ depends=("${MINGW_PACKAGE_PREFIX}-python" makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools") source=(${_realname}-${pkgver}.tar.gz::https://github.com/httplib2/httplib2/archive/v${pkgver}.tar.gz cert.patch) -sha256sums=('26702e32b4e6a88e0230d3d51b4d07b68cda8d25cef7205cbf32e5313cdef274' +sha256sums=('5eb7c82d2ec284b21a4939a763d2dc81ed9f2639ee92c5f66163ed86214a5ab1' '3503625ade773c17c9c44f4017aec634ff03db0073eb3ec11e6882a466d7aae6') prepare() { From 76c7e7115d76db079f5bf393335bbaa633089812 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Wed, 2 Feb 2022 01:44:44 +0530 Subject: [PATCH 156/226] python-idna: update to 3.3 --- mingw-w64-python-idna/PKGBUILD | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/mingw-w64-python-idna/PKGBUILD b/mingw-w64-python-idna/PKGBUILD index a600e4d2bb..6f70f906de 100644 --- a/mingw-w64-python-idna/PKGBUILD +++ b/mingw-w64-python-idna/PKGBUILD @@ -6,8 +6,8 @@ pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") provides=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") conflicts=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") replaces=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") -pkgver=3.2 -pkgrel=2 +pkgver=3.3 +pkgrel=1 pkgdesc='Internationalized Domain Names in Applications (mingw-w64)' url='https://github.com/kjd/idna' license=('BSD-like') @@ -17,10 +17,9 @@ depends=("${MINGW_PACKAGE_PREFIX}-python") makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools") _dtoken="d8/82/28a51052215014efc07feac7330ed758702fc0581347098a81699b5281cb" source=("https://pypi.io/packages/source/${_realname::1}/${_realname}/${_realname}-${pkgver}.tar.gz") -sha256sums=('467fbad99067910785144ce333826c71fb0e63a425657295239737f7ecd125f3') +sha256sums=('9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d') prepare() { - cd ${srcdir} rm -rf python-build-${CARCH} cp -r ${_realname}-${pkgver} python-build-${CARCH} } From ef18fbc249401b21a326e7b2e53e85494979ae6b Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Wed, 2 Feb 2022 01:49:20 +0530 Subject: [PATCH 157/226] python-urllib3: update to 1.26.8 --- mingw-w64-python-urllib3/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mingw-w64-python-urllib3/PKGBUILD b/mingw-w64-python-urllib3/PKGBUILD index 2a65e41485..006c02de13 100644 --- a/mingw-w64-python-urllib3/PKGBUILD +++ b/mingw-w64-python-urllib3/PKGBUILD @@ -6,7 +6,7 @@ pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") provides=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") conflicts=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") replaces=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") -pkgver=1.26.7 +pkgver=1.26.8 pkgrel=1 pkgdesc="HTTP library with thread-safe connection pooling and file post support (mingw-w64)" url='https://github.com/urllib3/urllib3' @@ -27,7 +27,7 @@ checkdepends=("${MINGW_PACKAGE_PREFIX}-python-nose" "${MINGW_PACKAGE_PREFIX}-python-coverage" "${MINGW_PACKAGE_PREFIX}-python-psutil") source=("${_realname}-${pkgver}.tar.gz::https://github.com/urllib3/urllib3/archive/${pkgver}.tar.gz") -sha256sums=('87f1b873ec9f7e0dc6e5bc2f9aa69279c73295a007fbd1ac421954a4679d7923') +sha256sums=('a5cbb5e4e995ea09c72404442ad4364d12751fa58b29dd2286fb124dd7d58bd4') prepare() { cd ${srcdir} From f9aaa36bdb933bb2f6a078bb89ceac7cf87df5e7 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Wed, 2 Feb 2022 01:53:54 +0530 Subject: [PATCH 158/226] re2: update to 2022-02-01 --- mingw-w64-re2/PKGBUILD | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mingw-w64-re2/PKGBUILD b/mingw-w64-re2/PKGBUILD index 0366ea011f..ebbc36aed1 100644 --- a/mingw-w64-re2/PKGBUILD +++ b/mingw-w64-re2/PKGBUILD @@ -3,12 +3,12 @@ _realname=re2 pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -_pkgver=2021-11-01 +_pkgver=2022-02-01 pkgver=${_pkgver//-/} pkgrel=1 pkgdesc="Fast, safe, thread-friendly regular expression engine (mingw-w64)." arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') url="https://github.com/google/re2" license=('custom') depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs") @@ -16,7 +16,7 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-cmake" "${MINGW_PACKAGE_PREFIX}-ninja" "${MINGW_PACKAGE_PREFIX}-cc") source=(${_realname}-${_pkgver}.tar.gz::https://github.com/google/re2/archive/${_pkgver}.tar.gz) -sha256sums=('8c45f7fba029ab41f2a7e6545058d9eec94eef97ce70df58e92d85cfc08b4669') +sha256sums=('9c1e6acfd0fed71f40b025a7a1dabaf3ee2ebb74d64ced1f9ee1b0b01d22fd27') build() { declare -a _extra_config From d9e41496fbda016b35b60cb27b34225032434b10 Mon Sep 17 00:00:00 2001 From: Ryan Date: Wed, 2 Feb 2022 14:59:03 +1100 Subject: [PATCH 159/226] libusb: update to 1.0.25 --- mingw-w64-libusb/PKGBUILD | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mingw-w64-libusb/PKGBUILD b/mingw-w64-libusb/PKGBUILD index ed1cbda4e6..59739beba7 100644 --- a/mingw-w64-libusb/PKGBUILD +++ b/mingw-w64-libusb/PKGBUILD @@ -3,8 +3,8 @@ _realname=libusb pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}") -pkgver=1.0.24 -pkgrel=5 +pkgver=1.0.25 +pkgrel=1 pkgdesc="Library that provides generic access to USB devices (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') @@ -15,7 +15,7 @@ options=('staticlibs' 'strip') source=("https://github.com/libusb/libusb/releases/download/v${pkgver}/${_realname}-${pkgver}.tar.bz2" "fix-dll-exports.patch" "010-cdecl.patch") -sha256sums=('7efd2685f7b327326dcfb85cee426d9b871fd70e22caa15bb68d595ce2a2b12a' +sha256sums=('8a28ef197a797ebac2702f095e81975e2b02b2eeff2774fa909c78a74ef50849' 'e25a317610623df4c020ff904661f52b1de6c9f95f3966aef52cf34886c768b3' '89f47f73705c231eb766ae2ba7357c7569b8b6ff5881e274a4c0ed02c877833b') From 3d9cd3fb293ced842e2d0f05389dae14c6768925 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Wed, 2 Feb 2022 09:38:30 +0100 Subject: [PATCH 160/226] glib: Update to 2.70.3 --- mingw-w64-glib2/PKGBUILD | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mingw-w64-glib2/PKGBUILD b/mingw-w64-glib2/PKGBUILD index 447a49310d..8cc99c314c 100644 --- a/mingw-w64-glib2/PKGBUILD +++ b/mingw-w64-glib2/PKGBUILD @@ -6,8 +6,8 @@ _realname=glib2 pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=2.70.2 -pkgrel=2 +pkgver=2.70.3 +pkgrel=1 url="https://gitlab.gnome.org/GNOME/glib" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') @@ -35,7 +35,7 @@ source=("https://download.gnome.org/sources/glib/${pkgver%.*}/glib-${pkgver}.tar gio-querymodules.hook.in 0002-disable_glib_compile_schemas_warning.patch pyscript2exe.py) -sha256sums=('0551459c85cd3da3d58ddc9016fd28be5af503f5e1615a71ba5b512ac945806f' +sha256sums=('233fa4841c1e19e396db7607d58f6b75ba3313c50bf0fce07b2e3532d5eb7d46' '92bf41b13b18314b35204a1f384fe41a6e606350cec9afcd3aee8265172edc41' '51d02360a1ee978fd45e77b84bca9cfbcf080d91986b5c0efe0732779c6a54ec' '5b238550c8826b0c0695b16b2689ae2c2144e8f488137b7e867b6c651f125a10' From eafb6bb6cdaf461c3f41cfc8d0d496f25e87c3e2 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Wed, 2 Feb 2022 14:14:02 +0530 Subject: [PATCH 161/226] ffmpeg: Add svt-av1 for x86_64 --- mingw-w64-ffmpeg/PKGBUILD | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/mingw-w64-ffmpeg/PKGBUILD b/mingw-w64-ffmpeg/PKGBUILD index 328ec5a5aa..e3a4dcaf4f 100644 --- a/mingw-w64-ffmpeg/PKGBUILD +++ b/mingw-w64-ffmpeg/PKGBUILD @@ -7,7 +7,7 @@ _realname=ffmpeg pkgbase="mingw-w64-${_realname}" pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" pkgver=4.4.1 -pkgrel=2 +pkgrel=3 pkgdesc="Complete and free Internet live audio and video broadcasting solution (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') @@ -43,6 +43,7 @@ depends=("${MINGW_PACKAGE_PREFIX}-aom" "${MINGW_PACKAGE_PREFIX}-SDL2" "${MINGW_PACKAGE_PREFIX}-speex" "${MINGW_PACKAGE_PREFIX}-srt" + $([[ "${CARCH}" != "x86_64" ]] || echo "${MINGW_PACKAGE_PREFIX}-svt-av1") "${MINGW_PACKAGE_PREFIX}-vulkan" "${MINGW_PACKAGE_PREFIX}-x264" "${MINGW_PACKAGE_PREFIX}-x265" @@ -141,6 +142,12 @@ build() { ) fi + if [[ "${CARCH}" == "x86_64" ]]; then + common_config+=( + --enable-libsvtav1 + ) + fi + for _variant in -static -shared; do [[ -d "${srcdir}/build-${MINGW_CHOST}${_variant}" ]] && rm -rf "${srcdir}/build-${MINGW_CHOST}${_variant}" mkdir -p "${srcdir}/build-${MINGW_CHOST}${_variant}" && cd "${srcdir}/build-${MINGW_CHOST}${_variant}" From 21ee54d5e2b55d155d8e1632deef214464b660df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=BCtzel?= Date: Wed, 2 Feb 2022 19:22:47 +0100 Subject: [PATCH 162/226] f2cblaslapack: Install shared libraries. --- mingw-w64-f2cblaslapack/PKGBUILD | 60 +- mingw-w64-f2cblaslapack/libf2cblas-i686.def | 160 ++ mingw-w64-f2cblaslapack/libf2cblas-x86_64.def | 159 ++ mingw-w64-f2cblaslapack/libf2clapack-i686.def | 1556 +++++++++++++++++ .../libf2clapack-x86_64.def | 1555 ++++++++++++++++ 5 files changed, 3483 insertions(+), 7 deletions(-) create mode 100644 mingw-w64-f2cblaslapack/libf2cblas-i686.def create mode 100644 mingw-w64-f2cblaslapack/libf2cblas-x86_64.def create mode 100644 mingw-w64-f2cblaslapack/libf2clapack-i686.def create mode 100644 mingw-w64-f2cblaslapack/libf2clapack-x86_64.def diff --git a/mingw-w64-f2cblaslapack/PKGBUILD b/mingw-w64-f2cblaslapack/PKGBUILD index c12ce1c1d5..3903c695bf 100644 --- a/mingw-w64-f2cblaslapack/PKGBUILD +++ b/mingw-w64-f2cblaslapack/PKGBUILD @@ -4,21 +4,45 @@ _realname=f2cblaslapack pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}") pkgver=3.4.2.q4 -pkgrel=1 +pkgrel=2 pkgdesc="f2c BLAS/LAPACK (mingw-w64)" -provides=("${MINGW_PACKAGE_PREFIX}-lapack") +provides=($([[ ${MINGW_PACKAGE_PREFIX} == *-clang-* ]] && echo "${MINGW_PACKAGE_PREFIX}-lapack")) arch=('any') mingw_arch=('clang64' 'clang32') url='https://www.petsc.org/' # Part of petsc -license=('2-clause BSD') +license=('spdx:BSD-2-Clause') source=("http://ftp.mcs.anl.gov/pub/petsc/externalpackages/${_realname}-${pkgver}.tar.gz" - 001-no-petsc-conf.patch) + 001-no-petsc-conf.patch + libf2cblas-i686.def + libf2cblas-x86_64.def + libf2clapack-i686.def + libf2clapack-x86_64.def) sha256sums=('41a43c6f2514ab34bf55aca5474b875882c7d4cd70c76bf4bc7ac433e6c2003e' - '7a77aa2621945d2103bb85735b0e9d08526e1943b7f055c1ee7680fd401064f1') + '7a77aa2621945d2103bb85735b0e9d08526e1943b7f055c1ee7680fd401064f1' + '75612d7dc28d0e061fb249012678e1773cae26c8f043c529a9f559eba8cdce71' + '8e3dfdb8372c22a817fbacba2279e70d7e7dd74ae72bdf43d91ac05e26b27395' + 'e33ae1f3db1a8d8859b010b5cf889bf0227dcd3b458dcd3430b2f5a96fd06171' + '16718ef5fc6c7166c32984e8efe630bbda972bc81e8768c36ed0289c2118321a') +makedepends=("make" + "${MINGW_PACKAGE_PREFIX}-cc") prepare() { cd "${srcdir}"/${_realname}-${pkgver} patch -p1 -i "${srcdir}"/001-no-petsc-conf.patch + + # The following .def files were created in the MINGW32 or MINGW64 + # environments, respectively. They have been slightly adapted for line + # endings and formatting. + # Commands used after the static libraries have been built: + # dlltool --export-all-symbols -z blas/libf2cblas.def libf2cblas.a + # dlltool --export-all-symbols -z lapack/libf2clapack.def libf2clapack.a + if [[ "${CARCH}" == "i686" ]]; then + cp "${srcdir}"/libf2cblas-i686.def "${srcdir}"/${_realname}-${pkgver}/blas/libf2cblas.def + cp "${srcdir}"/libf2clapack-i686.def "${srcdir}"/${_realname}-${pkgver}/lapack/libf2clapack.def + else + cp "${srcdir}"/libf2cblas-x86_64.def "${srcdir}"/${_realname}-${pkgver}/blas/libf2cblas.def + cp "${srcdir}"/libf2clapack-x86_64.def "${srcdir}"/${_realname}-${pkgver}/lapack/libf2clapack.def + fi } build() { @@ -26,10 +50,32 @@ build() { cp -r "${srcdir}"/${_realname}-${pkgver} "${srcdir}"/build-${MSYSTEM} && cd "${srcdir}"/build-${MSYSTEM} make + + # link shared libraries + ${CC} -shared \ + -Wl,--export-all-symbols -Wl,--whole-archive libf2cblas.a -Wl,--no-whole-archive -Wl,blas/libf2cblas.def \ + -o libf2cblas.dll -Wl,--enable-auto-image-base -Xlinker --out-implib -Xlinker libf2cblas.dll.a + ${CC} -shared \ + -Wl,--export-all-symbols -Wl,--whole-archive libf2clapack.a -Wl,--no-whole-archive -Wl,lapack/libf2clapack.def -L. -lf2cblas \ + -o libf2clapack.dll -Wl,--enable-auto-image-base -Xlinker --out-implib -Xlinker libf2clapack.dll.a } package() { cd "${srcdir}"/build-${MSYSTEM} - install -Dm644 libf2cblas.a "${pkgdir}"${MINGW_PREFIX}/lib/libblas.a - install -Dm644 libf2clapack.a "${pkgdir}"${MINGW_PREFIX}/lib/liblapack.a + install -Dm644 libf2cblas.a "${pkgdir}"${MINGW_PREFIX}/lib/libf2cblas.a + install -Dm644 libf2clapack.a "${pkgdir}"${MINGW_PREFIX}/lib/libf2clapack.a + install -Dm644 libf2cblas.dll.a "${pkgdir}"${MINGW_PREFIX}/lib/libf2cblas.dll.a + install -Dm644 libf2clapack.dll.a "${pkgdir}"${MINGW_PREFIX}/lib/libf2clapack.dll.a + install -Dm644 libf2cblas.dll "${pkgdir}"${MINGW_PREFIX}/bin/libf2cblas.dll + install -Dm644 libf2clapack.dll "${pkgdir}"${MINGW_PREFIX}/bin/libf2clapack.dll + + if [[ ${MINGW_PACKAGE_PREFIX} == *-clang-* ]]; then + # "pretend" to be reference BLAS/LAPACK + install -Dm644 libf2cblas.a "${pkgdir}"${MINGW_PREFIX}/lib/libblas.a + install -Dm644 libf2clapack.a "${pkgdir}"${MINGW_PREFIX}/lib/liblapack.a + install -Dm644 libf2cblas.dll.a "${pkgdir}"${MINGW_PREFIX}/lib/libblas.dll.a + install -Dm644 libf2clapack.dll.a "${pkgdir}"${MINGW_PREFIX}/lib/liblapack.dll.a + install -Dm644 libf2cblas.dll "${pkgdir}"${MINGW_PREFIX}/bin/libblas.dll + install -Dm644 libf2clapack.dll "${pkgdir}"${MINGW_PREFIX}/bin/liblapack.dll + fi } diff --git a/mingw-w64-f2cblaslapack/libf2cblas-i686.def b/mingw-w64-f2cblaslapack/libf2cblas-i686.def new file mode 100644 index 0000000000..b6414cd20b --- /dev/null +++ b/mingw-w64-f2cblaslapack/libf2cblas-i686.def @@ -0,0 +1,160 @@ +; C:\msys64\mingw32\bin\dlltool.exe --export-all-symbols -z blas/libf2cblas.def libf2cblas.a +EXPORTS + caxpy_ @ 1 + ccopy_ @ 2 + cdotc_ @ 3 + cdotu_ @ 4 + cgbmv_ @ 5 + cgemm_ @ 6 + cgemv_ @ 7 + cgerc_ @ 8 + cgeru_ @ 9 + chbmv_ @ 10 + chemm_ @ 11 + chemv_ @ 12 + cher2_ @ 13 + cher2k_ @ 14 + cher_ @ 15 + cherk_ @ 16 + chpmv_ @ 17 + chpr2_ @ 18 + chpr_ @ 19 + crotg_ @ 20 + cscal_ @ 21 + csrot_ @ 22 + csscal_ @ 23 + cswap_ @ 24 + csymm_ @ 25 + csyr2k_ @ 26 + csyrk_ @ 27 + ctbmv_ @ 28 + ctbsv_ @ 29 + ctpmv_ @ 30 + ctpsv_ @ 31 + ctrmm_ @ 32 + ctrmv_ @ 33 + ctrsm_ @ 34 + ctrsv_ @ 35 + dasum_ @ 36 + daxpy_ @ 37 + dcabs1_ @ 38 + dcopy_ @ 39 + ddot_ @ 40 + df__cabs @ 41 + dgbmv_ @ 42 + dgemm_ @ 43 + dgemv_ @ 44 + dger_ @ 45 + dmaxloc_ @ 46 + dnrm2_ @ 47 + dpow_ui @ 48 + drot_ @ 49 + drotg_ @ 50 + drotm_ @ 51 + drotmg_ @ 52 + dsbmv_ @ 53 + dscal_ @ 54 + dsdot_ @ 55 + dspmv_ @ 56 + dspr2_ @ 57 + dspr_ @ 58 + dswap_ @ 59 + dsymm_ @ 60 + dsymv_ @ 61 + dsyr2_ @ 62 + dsyr2k_ @ 63 + dsyr_ @ 64 + dsyrk_ @ 65 + dtbmv_ @ 66 + dtbsv_ @ 67 + dtpmv_ @ 68 + dtpsv_ @ 69 + dtrmm_ @ 70 + dtrmv_ @ 71 + dtrsm_ @ 72 + dtrsv_ @ 73 + dzasum_ @ 74 + dznrm2_ @ 75 + icamax_ @ 76 + idamax_ @ 77 + isamax_ @ 78 + izamax_ @ 79 + lsame_ @ 80 + pow_ii @ 81 + sasum_ @ 82 + saxpy_ @ 83 + scabs1_ @ 84 + scasum_ @ 85 + scnrm2_ @ 86 + scopy_ @ 87 + sdot_ @ 88 + sdsdot_ @ 89 + sf__cabs @ 90 + sgbmv_ @ 91 + sgemm_ @ 92 + sgemv_ @ 93 + sger_ @ 94 + smaxloc_ @ 95 + snrm2_ @ 96 + spow_ui @ 97 + srot_ @ 98 + srotg_ @ 99 + srotm_ @ 100 + srotmg_ @ 101 + ssbmv_ @ 102 + sscal_ @ 103 + sspmv_ @ 104 + sspr2_ @ 105 + sspr_ @ 106 + sswap_ @ 107 + ssymm_ @ 108 + ssymv_ @ 109 + ssyr2_ @ 110 + ssyr2k_ @ 111 + ssyr_ @ 112 + ssyrk_ @ 113 + stbmv_ @ 114 + stbsv_ @ 115 + stpmv_ @ 116 + stpsv_ @ 117 + strmm_ @ 118 + strmv_ @ 119 + strsm_ @ 120 + strsv_ @ 121 + xerbla_ @ 122 + xerbla_array_ @ 123 + zaxpy_ @ 124 + zcopy_ @ 125 + zdotc_ @ 126 + zdotu_ @ 127 + zdrot_ @ 128 + zdscal_ @ 129 + zgbmv_ @ 130 + zgemm_ @ 131 + zgemv_ @ 132 + zgerc_ @ 133 + zgeru_ @ 134 + zhbmv_ @ 135 + zhemm_ @ 136 + zhemv_ @ 137 + zher2_ @ 138 + zher2k_ @ 139 + zher_ @ 140 + zherk_ @ 141 + zhpmv_ @ 142 + zhpr2_ @ 143 + zhpr_ @ 144 + zrotg_ @ 145 + zscal_ @ 146 + zswap_ @ 147 + zsymm_ @ 148 + zsyr2k_ @ 149 + zsyrk_ @ 150 + ztbmv_ @ 151 + ztbsv_ @ 152 + ztpmv_ @ 153 + ztpsv_ @ 154 + ztrmm_ @ 155 + ztrmv_ @ 156 + ztrsm_ @ 157 + ztrsv_ @ 158 diff --git a/mingw-w64-f2cblaslapack/libf2cblas-x86_64.def b/mingw-w64-f2cblaslapack/libf2cblas-x86_64.def new file mode 100644 index 0000000000..6ed040a903 --- /dev/null +++ b/mingw-w64-f2cblaslapack/libf2cblas-x86_64.def @@ -0,0 +1,159 @@ +EXPORTS +caxpy_ +ccopy_ +cdotc_ +cdotu_ +cgbmv_ +cgemm_ +cgemv_ +cgerc_ +cgeru_ +chbmv_ +chemm_ +chemv_ +cher2_ +cher2k_ +cher_ +cherk_ +chpmv_ +chpr2_ +chpr_ +crotg_ +cscal_ +csrot_ +csscal_ +cswap_ +csymm_ +csyr2k_ +csyrk_ +ctbmv_ +ctbsv_ +ctpmv_ +ctpsv_ +ctrmm_ +ctrmv_ +ctrsm_ +ctrsv_ +icamax_ +isamax_ +sasum_ +saxpy_ +scabs1_ +scasum_ +scnrm2_ +scopy_ +sdot_ +sgbmv_ +sgemm_ +sgemv_ +sger_ +snrm2_ +srot_ +srotg_ +srotm_ +srotmg_ +ssbmv_ +sscal_ +sspmv_ +sspr2_ +sspr_ +sswap_ +ssymm_ +ssymv_ +ssyr2_ +ssyr2k_ +ssyr_ +ssyrk_ +stbmv_ +stbsv_ +stpmv_ +stpsv_ +strmm_ +strmv_ +strsm_ +strsv_ +dasum_ +daxpy_ +dcabs1_ +dcopy_ +ddot_ +dgbmv_ +dgemm_ +dgemv_ +dger_ +dnrm2_ +drot_ +drotg_ +drotm_ +drotmg_ +dsbmv_ +dscal_ +dsdot_ +dspmv_ +dspr2_ +dspr_ +dswap_ +dsymm_ +dsymv_ +dsyr2_ +dsyr2k_ +dsyr_ +dsyrk_ +dtbmv_ +dtbsv_ +dtpmv_ +dtpsv_ +dtrmm_ +dtrmv_ +dtrsm_ +dtrsv_ +dzasum_ +dznrm2_ +idamax_ +izamax_ +sdsdot_ +zaxpy_ +zcopy_ +zdotc_ +zdotu_ +zdrot_ +zdscal_ +zgbmv_ +zgemm_ +zgemv_ +zgerc_ +zgeru_ +zhbmv_ +zhemm_ +zhemv_ +zher2_ +zher2k_ +zher_ +zherk_ +zhpmv_ +zhpr2_ +zhpr_ +zrotg_ +zscal_ +zswap_ +zsymm_ +zsyr2k_ +zsyrk_ +ztbmv_ +ztbsv_ +ztpmv_ +ztpsv_ +ztrmm_ +ztrmv_ +ztrsm_ +ztrsv_ +pow_ii +spow_ui +smaxloc_ +sf__cabs +dpow_ui +dmaxloc_ +df__cabs +lsame_ +xerbla_array_ +xerbla_ diff --git a/mingw-w64-f2cblaslapack/libf2clapack-i686.def b/mingw-w64-f2cblaslapack/libf2clapack-i686.def new file mode 100644 index 0000000000..02dadd6e79 --- /dev/null +++ b/mingw-w64-f2cblaslapack/libf2clapack-i686.def @@ -0,0 +1,1556 @@ +; C:\msys64\mingw32\bin\dlltool.exe --export-all-symbols -z lapack/libf2clapack.def libf2clapack.a +EXPORTS + cbbcsd_ @ 1 + cbdsqr_ @ 2 + cgbbrd_ @ 3 + cgbcon_ @ 4 + cgbequ_ @ 5 + cgbequb_ @ 6 + cgbrfs_ @ 7 + cgbsv_ @ 8 + cgbsvx_ @ 9 + cgbtf2_ @ 10 + cgbtrf_ @ 11 + cgbtrs_ @ 12 + cgebak_ @ 13 + cgebal_ @ 14 + cgebd2_ @ 15 + cgebrd_ @ 16 + cgecon_ @ 17 + cgeequ_ @ 18 + cgeequb_ @ 19 + cgees_ @ 20 + cgeesx_ @ 21 + cgeev_ @ 22 + cgeevx_ @ 23 + cgegs_ @ 24 + cgegv_ @ 25 + cgehd2_ @ 26 + cgehrd_ @ 27 + cgelq2_ @ 28 + cgelqf_ @ 29 + cgels_ @ 30 + cgelsd_ @ 31 + cgelss_ @ 32 + cgelsx_ @ 33 + cgelsy_ @ 34 + cgemqrt_ @ 35 + cgeql2_ @ 36 + cgeqlf_ @ 37 + cgeqp3_ @ 38 + cgeqpf_ @ 39 + cgeqr2_ @ 40 + cgeqr2p_ @ 41 + cgeqrf_ @ 42 + cgeqrfp_ @ 43 + cgeqrt2_ @ 44 + cgeqrt3_ @ 45 + cgeqrt_ @ 46 + cgerfs_ @ 47 + cgerq2_ @ 48 + cgerqf_ @ 49 + cgesc2_ @ 50 + cgesdd_ @ 51 + cgesv_ @ 52 + cgesvd_ @ 53 + cgesvx_ @ 54 + cgetc2_ @ 55 + cgetf2_ @ 56 + cgetrf_ @ 57 + cgetri_ @ 58 + cgetrs_ @ 59 + cggbak_ @ 60 + cggbal_ @ 61 + cgges_ @ 62 + cggesx_ @ 63 + cggev_ @ 64 + cggevx_ @ 65 + cggglm_ @ 66 + cgghrd_ @ 67 + cgglse_ @ 68 + cggqrf_ @ 69 + cggrqf_ @ 70 + cggsvd_ @ 71 + cggsvp_ @ 72 + cgtcon_ @ 73 + cgtrfs_ @ 74 + cgtsv_ @ 75 + cgtsvx_ @ 76 + cgttrf_ @ 77 + cgttrs_ @ 78 + cgtts2_ @ 79 + chbev_ @ 80 + chbevd_ @ 81 + chbevx_ @ 82 + chbgst_ @ 83 + chbgv_ @ 84 + chbgvd_ @ 85 + chbgvx_ @ 86 + chbtrd_ @ 87 + checon_ @ 88 + cheequb_ @ 89 + cheev_ @ 90 + cheevd_ @ 91 + cheevr_ @ 92 + cheevx_ @ 93 + chegs2_ @ 94 + chegst_ @ 95 + chegv_ @ 96 + chegvd_ @ 97 + chegvx_ @ 98 + cherfs_ @ 99 + chesv_ @ 100 + chesvx_ @ 101 + cheswapr_ @ 102 + chetd2_ @ 103 + chetf2_ @ 104 + chetrd_ @ 105 + chetrf_ @ 106 + chetri2_ @ 107 + chetri2x_ @ 108 + chetri_ @ 109 + chetrs2_ @ 110 + chetrs_ @ 111 + chfrk_ @ 112 + chgeqz_ @ 113 + chla_transtype__ @ 114 + chpcon_ @ 115 + chpev_ @ 116 + chpevd_ @ 117 + chpevx_ @ 118 + chpgst_ @ 119 + chpgv_ @ 120 + chpgvd_ @ 121 + chpgvx_ @ 122 + chprfs_ @ 123 + chpsv_ @ 124 + chpsvx_ @ 125 + chptrd_ @ 126 + chptrf_ @ 127 + chptri_ @ 128 + chptrs_ @ 129 + chsein_ @ 130 + chseqr_ @ 131 + cla_gerpvgrw__ @ 132 + clabrd_ @ 133 + clacgv_ @ 134 + clacn2_ @ 135 + clacon_ @ 136 + clacp2_ @ 137 + clacpy_ @ 138 + clacrm_ @ 139 + clacrt_ @ 140 + cladiv_ @ 141 + claed0_ @ 142 + claed7_ @ 143 + claed8_ @ 144 + claein_ @ 145 + claesy_ @ 146 + claev2_ @ 147 + clag2z_ @ 148 + clags2_ @ 149 + clagtm_ @ 150 + clahef_ @ 151 + clahqr_ @ 152 + clahr2_ @ 153 + clahrd_ @ 154 + claic1_ @ 155 + clals0_ @ 156 + clalsa_ @ 157 + clalsd_ @ 158 + clangb_ @ 159 + clange_ @ 160 + clangt_ @ 161 + clanhb_ @ 162 + clanhe_ @ 163 + clanhf_ @ 164 + clanhp_ @ 165 + clanhs_ @ 166 + clanht_ @ 167 + clansb_ @ 168 + clansp_ @ 169 + clansy_ @ 170 + clantb_ @ 171 + clantp_ @ 172 + clantr_ @ 173 + clapll_ @ 174 + clapmr_ @ 175 + clapmt_ @ 176 + claqgb_ @ 177 + claqge_ @ 178 + claqhb_ @ 179 + claqhe_ @ 180 + claqhp_ @ 181 + claqp2_ @ 182 + claqps_ @ 183 + claqr0_ @ 184 + claqr1_ @ 185 + claqr2_ @ 186 + claqr3_ @ 187 + claqr4_ @ 188 + claqr5_ @ 189 + claqsb_ @ 190 + claqsp_ @ 191 + claqsy_ @ 192 + clar1v_ @ 193 + clar2v_ @ 194 + clarcm_ @ 195 + clarf_ @ 196 + clarfb_ @ 197 + clarfg_ @ 198 + clarfgp_ @ 199 + clarft_ @ 200 + clarfx_ @ 201 + clargv_ @ 202 + clarnv_ @ 203 + clarrv_ @ 204 + clartg_ @ 205 + clartv_ @ 206 + clarz_ @ 207 + clarzb_ @ 208 + clarzt_ @ 209 + clascl_ @ 210 + claset_ @ 211 + clasr_ @ 212 + classq_ @ 213 + claswp_ @ 214 + clasyf_ @ 215 + clatbs_ @ 216 + clatdf_ @ 217 + clatps_ @ 218 + clatrd_ @ 219 + clatrs_ @ 220 + clatrz_ @ 221 + clatzm_ @ 222 + clauu2_ @ 223 + clauum_ @ 224 + cpbcon_ @ 225 + cpbequ_ @ 226 + cpbrfs_ @ 227 + cpbstf_ @ 228 + cpbsv_ @ 229 + cpbsvx_ @ 230 + cpbtf2_ @ 231 + cpbtrf_ @ 232 + cpbtrs_ @ 233 + cpftrf_ @ 234 + cpftri_ @ 235 + cpftrs_ @ 236 + cpocon_ @ 237 + cpoequ_ @ 238 + cpoequb_ @ 239 + cporfs_ @ 240 + cposv_ @ 241 + cposvx_ @ 242 + cpotf2_ @ 243 + cpotrf_ @ 244 + cpotri_ @ 245 + cpotrs_ @ 246 + cppcon_ @ 247 + cppequ_ @ 248 + cpprfs_ @ 249 + cppsv_ @ 250 + cppsvx_ @ 251 + cpptrf_ @ 252 + cpptri_ @ 253 + cpptrs_ @ 254 + cpstf2_ @ 255 + cpstrf_ @ 256 + cptcon_ @ 257 + cpteqr_ @ 258 + cptrfs_ @ 259 + cptsv_ @ 260 + cptsvx_ @ 261 + cpttrf_ @ 262 + cpttrs_ @ 263 + cptts2_ @ 264 + crot_ @ 265 + cspcon_ @ 266 + cspmv_ @ 267 + cspr_ @ 268 + csprfs_ @ 269 + cspsv_ @ 270 + cspsvx_ @ 271 + csptrf_ @ 272 + csptri_ @ 273 + csptrs_ @ 274 + csrscl_ @ 275 + cstedc_ @ 276 + cstegr_ @ 277 + cstein_ @ 278 + cstemr_ @ 279 + csteqr_ @ 280 + csycon_ @ 281 + csyconv_ @ 282 + csyequb_ @ 283 + csymv_ @ 284 + csyr_ @ 285 + csyrfs_ @ 286 + csysv_ @ 287 + csysvx_ @ 288 + csyswapr_ @ 289 + csytf2_ @ 290 + csytrf_ @ 291 + csytri2_ @ 292 + csytri2x_ @ 293 + csytri_ @ 294 + csytrs2_ @ 295 + csytrs_ @ 296 + ctbcon_ @ 297 + ctbrfs_ @ 298 + ctbtrs_ @ 299 + ctfsm_ @ 300 + ctftri_ @ 301 + ctfttp_ @ 302 + ctfttr_ @ 303 + ctgevc_ @ 304 + ctgex2_ @ 305 + ctgexc_ @ 306 + ctgsen_ @ 307 + ctgsja_ @ 308 + ctgsna_ @ 309 + ctgsy2_ @ 310 + ctgsyl_ @ 311 + ctpcon_ @ 312 + ctpmqrt_ @ 313 + ctpqrt2_ @ 314 + ctpqrt_ @ 315 + ctprfb_ @ 316 + ctprfs_ @ 317 + ctptri_ @ 318 + ctptrs_ @ 319 + ctpttf_ @ 320 + ctpttr_ @ 321 + ctrcon_ @ 322 + ctrevc_ @ 323 + ctrexc_ @ 324 + ctrrfs_ @ 325 + ctrsen_ @ 326 + ctrsna_ @ 327 + ctrsyl_ @ 328 + ctrti2_ @ 329 + ctrtri_ @ 330 + ctrtrs_ @ 331 + ctrttf_ @ 332 + ctrttp_ @ 333 + ctzrqf_ @ 334 + ctzrzf_ @ 335 + cunbdb_ @ 336 + cuncsd_ @ 337 + cung2l_ @ 338 + cung2r_ @ 339 + cungbr_ @ 340 + cunghr_ @ 341 + cungl2_ @ 342 + cunglq_ @ 343 + cungql_ @ 344 + cungqr_ @ 345 + cungr2_ @ 346 + cungrq_ @ 347 + cungtr_ @ 348 + cunm2l_ @ 349 + cunm2r_ @ 350 + cunmbr_ @ 351 + cunmhr_ @ 352 + cunml2_ @ 353 + cunmlq_ @ 354 + cunmql_ @ 355 + cunmqr_ @ 356 + cunmr2_ @ 357 + cunmr3_ @ 358 + cunmrq_ @ 359 + cunmrz_ @ 360 + cunmtr_ @ 361 + cupgtr_ @ 362 + cupmtr_ @ 363 + dbbcsd_ @ 364 + dbdsdc_ @ 365 + dbdsqr_ @ 366 + ddisna_ @ 367 + dgbbrd_ @ 368 + dgbcon_ @ 369 + dgbequ_ @ 370 + dgbequb_ @ 371 + dgbrfs_ @ 372 + dgbsv_ @ 373 + dgbsvx_ @ 374 + dgbtf2_ @ 375 + dgbtrf_ @ 376 + dgbtrs_ @ 377 + dgebak_ @ 378 + dgebal_ @ 379 + dgebd2_ @ 380 + dgebrd_ @ 381 + dgecon_ @ 382 + dgeequ_ @ 383 + dgeequb_ @ 384 + dgees_ @ 385 + dgeesx_ @ 386 + dgeev_ @ 387 + dgeevx_ @ 388 + dgegs_ @ 389 + dgegv_ @ 390 + dgehd2_ @ 391 + dgehrd_ @ 392 + dgejsv_ @ 393 + dgelq2_ @ 394 + dgelqf_ @ 395 + dgels_ @ 396 + dgelsd_ @ 397 + dgelss_ @ 398 + dgelsx_ @ 399 + dgelsy_ @ 400 + dgemqrt_ @ 401 + dgeql2_ @ 402 + dgeqlf_ @ 403 + dgeqp3_ @ 404 + dgeqpf_ @ 405 + dgeqr2_ @ 406 + dgeqr2p_ @ 407 + dgeqrf_ @ 408 + dgeqrfp_ @ 409 + dgeqrt2_ @ 410 + dgeqrt3_ @ 411 + dgeqrt_ @ 412 + dgerfs_ @ 413 + dgerq2_ @ 414 + dgerqf_ @ 415 + dgesc2_ @ 416 + dgesdd_ @ 417 + dgesv_ @ 418 + dgesvd_ @ 419 + dgesvj_ @ 420 + dgesvx_ @ 421 + dgetc2_ @ 422 + dgetf2_ @ 423 + dgetrf_ @ 424 + dgetri_ @ 425 + dgetrs_ @ 426 + dggbak_ @ 427 + dggbal_ @ 428 + dgges_ @ 429 + dggesx_ @ 430 + dggev_ @ 431 + dggevx_ @ 432 + dggglm_ @ 433 + dgghrd_ @ 434 + dgglse_ @ 435 + dggqrf_ @ 436 + dggrqf_ @ 437 + dggsvd_ @ 438 + dggsvp_ @ 439 + dgsvj0_ @ 440 + dgsvj1_ @ 441 + dgtcon_ @ 442 + dgtrfs_ @ 443 + dgtsv_ @ 444 + dgtsvx_ @ 445 + dgttrf_ @ 446 + dgttrs_ @ 447 + dgtts2_ @ 448 + dhgeqz_ @ 449 + dhsein_ @ 450 + dhseqr_ @ 451 + disnan_ @ 452 + dla_gerpvgrw__ @ 453 + dlabad_ @ 454 + dlabrd_ @ 455 + dlacn2_ @ 456 + dlacon_ @ 457 + dlacpy_ @ 458 + dladiv_ @ 459 + dlae2_ @ 460 + dlaebz_ @ 461 + dlaed0_ @ 462 + dlaed1_ @ 463 + dlaed2_ @ 464 + dlaed3_ @ 465 + dlaed4_ @ 466 + dlaed5_ @ 467 + dlaed6_ @ 468 + dlaed7_ @ 469 + dlaed8_ @ 470 + dlaed9_ @ 471 + dlaeda_ @ 472 + dlaein_ @ 473 + dlaev2_ @ 474 + dlaexc_ @ 475 + dlag2_ @ 476 + dlag2s_ @ 477 + dlags2_ @ 478 + dlagtf_ @ 479 + dlagtm_ @ 480 + dlagts_ @ 481 + dlagv2_ @ 482 + dlahqr_ @ 483 + dlahr2_ @ 484 + dlahrd_ @ 485 + dlaic1_ @ 486 + dlaisnan_ @ 487 + dlaln2_ @ 488 + dlals0_ @ 489 + dlalsa_ @ 490 + dlalsd_ @ 491 + dlamc1_ @ 492 + dlamc2_ @ 493 + dlamc3_ @ 494 + dlamc4_ @ 495 + dlamc5_ @ 496 + dlamch_ @ 497 + dlamrg_ @ 498 + dlaneg_ @ 499 + dlangb_ @ 500 + dlange_ @ 501 + dlangt_ @ 502 + dlanhs_ @ 503 + dlansb_ @ 504 + dlansf_ @ 505 + dlansp_ @ 506 + dlanst_ @ 507 + dlansy_ @ 508 + dlantb_ @ 509 + dlantp_ @ 510 + dlantr_ @ 511 + dlanv2_ @ 512 + dlapll_ @ 513 + dlapmr_ @ 514 + dlapmt_ @ 515 + dlapy2_ @ 516 + dlapy3_ @ 517 + dlaqgb_ @ 518 + dlaqge_ @ 519 + dlaqp2_ @ 520 + dlaqps_ @ 521 + dlaqr0_ @ 522 + dlaqr1_ @ 523 + dlaqr2_ @ 524 + dlaqr3_ @ 525 + dlaqr4_ @ 526 + dlaqr5_ @ 527 + dlaqsb_ @ 528 + dlaqsp_ @ 529 + dlaqsy_ @ 530 + dlaqtr_ @ 531 + dlar1v_ @ 532 + dlar2v_ @ 533 + dlarf_ @ 534 + dlarfb_ @ 535 + dlarfg_ @ 536 + dlarfgp_ @ 537 + dlarft_ @ 538 + dlarfx_ @ 539 + dlargv_ @ 540 + dlarnv_ @ 541 + dlarra_ @ 542 + dlarrb_ @ 543 + dlarrc_ @ 544 + dlarrd_ @ 545 + dlarre_ @ 546 + dlarrf_ @ 547 + dlarrj_ @ 548 + dlarrk_ @ 549 + dlarrr_ @ 550 + dlarrv_ @ 551 + dlartg_ @ 552 + dlartgp_ @ 553 + dlartgs_ @ 554 + dlartv_ @ 555 + dlaruv_ @ 556 + dlarz_ @ 557 + dlarzb_ @ 558 + dlarzt_ @ 559 + dlas2_ @ 560 + dlascl_ @ 561 + dlasd0_ @ 562 + dlasd1_ @ 563 + dlasd2_ @ 564 + dlasd3_ @ 565 + dlasd4_ @ 566 + dlasd5_ @ 567 + dlasd6_ @ 568 + dlasd7_ @ 569 + dlasd8_ @ 570 + dlasda_ @ 571 + dlasdq_ @ 572 + dlasdt_ @ 573 + dlaset_ @ 574 + dlasq1_ @ 575 + dlasq2_ @ 576 + dlasq3_ @ 577 + dlasq4_ @ 578 + dlasq5_ @ 579 + dlasq6_ @ 580 + dlasr_ @ 581 + dlasrt_ @ 582 + dlassq_ @ 583 + dlasv2_ @ 584 + dlaswp_ @ 585 + dlasy2_ @ 586 + dlasyf_ @ 587 + dlat2s_ @ 588 + dlatbs_ @ 589 + dlatdf_ @ 590 + dlatps_ @ 591 + dlatrd_ @ 592 + dlatrs_ @ 593 + dlatrz_ @ 594 + dlatzm_ @ 595 + dlauu2_ @ 596 + dlauum_ @ 597 + dopgtr_ @ 598 + dopmtr_ @ 599 + dorbdb_ @ 600 + dorcsd_ @ 601 + dorg2l_ @ 602 + dorg2r_ @ 603 + dorgbr_ @ 604 + dorghr_ @ 605 + dorgl2_ @ 606 + dorglq_ @ 607 + dorgql_ @ 608 + dorgqr_ @ 609 + dorgr2_ @ 610 + dorgrq_ @ 611 + dorgtr_ @ 612 + dorm2l_ @ 613 + dorm2r_ @ 614 + dormbr_ @ 615 + dormhr_ @ 616 + dorml2_ @ 617 + dormlq_ @ 618 + dormql_ @ 619 + dormqr_ @ 620 + dormr2_ @ 621 + dormr3_ @ 622 + dormrq_ @ 623 + dormrz_ @ 624 + dormtr_ @ 625 + dpbcon_ @ 626 + dpbequ_ @ 627 + dpbrfs_ @ 628 + dpbstf_ @ 629 + dpbsv_ @ 630 + dpbsvx_ @ 631 + dpbtf2_ @ 632 + dpbtrf_ @ 633 + dpbtrs_ @ 634 + dpftrf_ @ 635 + dpftri_ @ 636 + dpftrs_ @ 637 + dpocon_ @ 638 + dpoequ_ @ 639 + dpoequb_ @ 640 + dporfs_ @ 641 + dposv_ @ 642 + dposvx_ @ 643 + dpotf2_ @ 644 + dpotrf_ @ 645 + dpotri_ @ 646 + dpotrs_ @ 647 + dppcon_ @ 648 + dppequ_ @ 649 + dpprfs_ @ 650 + dppsv_ @ 651 + dppsvx_ @ 652 + dpptrf_ @ 653 + dpptri_ @ 654 + dpptrs_ @ 655 + dpstf2_ @ 656 + dpstrf_ @ 657 + dptcon_ @ 658 + dpteqr_ @ 659 + dptrfs_ @ 660 + dptsv_ @ 661 + dptsvx_ @ 662 + dpttrf_ @ 663 + dpttrs_ @ 664 + dptts2_ @ 665 + drscl_ @ 666 + dsbev_ @ 667 + dsbevd_ @ 668 + dsbevx_ @ 669 + dsbgst_ @ 670 + dsbgv_ @ 671 + dsbgvd_ @ 672 + dsbgvx_ @ 673 + dsbtrd_ @ 674 + dsfrk_ @ 675 + dsgesv_ @ 676 + dspcon_ @ 677 + dspev_ @ 678 + dspevd_ @ 679 + dspevx_ @ 680 + dspgst_ @ 681 + dspgv_ @ 682 + dspgvd_ @ 683 + dspgvx_ @ 684 + dsposv_ @ 685 + dsprfs_ @ 686 + dspsv_ @ 687 + dspsvx_ @ 688 + dsptrd_ @ 689 + dsptrf_ @ 690 + dsptri_ @ 691 + dsptrs_ @ 692 + dstebz_ @ 693 + dstedc_ @ 694 + dstegr_ @ 695 + dstein_ @ 696 + dstemr_ @ 697 + dsteqr_ @ 698 + dsterf_ @ 699 + dstev_ @ 700 + dstevd_ @ 701 + dstevr_ @ 702 + dstevx_ @ 703 + dsycon_ @ 704 + dsyconv_ @ 705 + dsyequb_ @ 706 + dsyev_ @ 707 + dsyevd_ @ 708 + dsyevr_ @ 709 + dsyevx_ @ 710 + dsygs2_ @ 711 + dsygst_ @ 712 + dsygv_ @ 713 + dsygvd_ @ 714 + dsygvx_ @ 715 + dsyrfs_ @ 716 + dsysv_ @ 717 + dsysvx_ @ 718 + dsyswapr_ @ 719 + dsytd2_ @ 720 + dsytf2_ @ 721 + dsytrd_ @ 722 + dsytrf_ @ 723 + dsytri2_ @ 724 + dsytri2x_ @ 725 + dsytri_ @ 726 + dsytrs2_ @ 727 + dsytrs_ @ 728 + dtbcon_ @ 729 + dtbrfs_ @ 730 + dtbtrs_ @ 731 + dtfsm_ @ 732 + dtftri_ @ 733 + dtfttp_ @ 734 + dtfttr_ @ 735 + dtgevc_ @ 736 + dtgex2_ @ 737 + dtgexc_ @ 738 + dtgsen_ @ 739 + dtgsja_ @ 740 + dtgsna_ @ 741 + dtgsy2_ @ 742 + dtgsyl_ @ 743 + dtpcon_ @ 744 + dtpmqrt_ @ 745 + dtpqrt2_ @ 746 + dtpqrt_ @ 747 + dtprfb_ @ 748 + dtprfs_ @ 749 + dtptri_ @ 750 + dtptrs_ @ 751 + dtpttf_ @ 752 + dtpttr_ @ 753 + dtrcon_ @ 754 + dtrevc_ @ 755 + dtrexc_ @ 756 + dtrrfs_ @ 757 + dtrsen_ @ 758 + dtrsna_ @ 759 + dtrsyl_ @ 760 + dtrti2_ @ 761 + dtrtri_ @ 762 + dtrtrs_ @ 763 + dtrttf_ @ 764 + dtrttp_ @ 765 + dtzrqf_ @ 766 + dtzrzf_ @ 767 + dzsum1_ @ 768 + icmax1_ @ 769 + ieeeck_ @ 770 + ilaclc_ @ 771 + ilaclr_ @ 772 + iladiag_ @ 773 + iladlc_ @ 774 + iladlr_ @ 775 + ilaenv_ @ 776 + ilaprec_ @ 777 + ilaslc_ @ 778 + ilaslr_ @ 779 + ilatrans_ @ 780 + ilauplo_ @ 781 + ilaver_ @ 782 + ilazlc_ @ 783 + ilazlr_ @ 784 + iparmq_ @ 785 + izmax1_ @ 786 + lsamen_ @ 787 + sbbcsd_ @ 788 + sbdsdc_ @ 789 + sbdsqr_ @ 790 + scsum1_ @ 791 + sdisna_ @ 792 + sgbbrd_ @ 793 + sgbcon_ @ 794 + sgbequ_ @ 795 + sgbequb_ @ 796 + sgbrfs_ @ 797 + sgbsv_ @ 798 + sgbsvx_ @ 799 + sgbtf2_ @ 800 + sgbtrf_ @ 801 + sgbtrs_ @ 802 + sgebak_ @ 803 + sgebal_ @ 804 + sgebd2_ @ 805 + sgebrd_ @ 806 + sgecon_ @ 807 + sgeequ_ @ 808 + sgeequb_ @ 809 + sgees_ @ 810 + sgeesx_ @ 811 + sgeev_ @ 812 + sgeevx_ @ 813 + sgegs_ @ 814 + sgegv_ @ 815 + sgehd2_ @ 816 + sgehrd_ @ 817 + sgejsv_ @ 818 + sgelq2_ @ 819 + sgelqf_ @ 820 + sgels_ @ 821 + sgelsd_ @ 822 + sgelss_ @ 823 + sgelsx_ @ 824 + sgelsy_ @ 825 + sgemqrt_ @ 826 + sgeql2_ @ 827 + sgeqlf_ @ 828 + sgeqp3_ @ 829 + sgeqpf_ @ 830 + sgeqr2_ @ 831 + sgeqr2p_ @ 832 + sgeqrf_ @ 833 + sgeqrfp_ @ 834 + sgeqrt2_ @ 835 + sgeqrt3_ @ 836 + sgeqrt_ @ 837 + sgerfs_ @ 838 + sgerq2_ @ 839 + sgerqf_ @ 840 + sgesc2_ @ 841 + sgesdd_ @ 842 + sgesv_ @ 843 + sgesvd_ @ 844 + sgesvj_ @ 845 + sgesvx_ @ 846 + sgetc2_ @ 847 + sgetf2_ @ 848 + sgetrf_ @ 849 + sgetri_ @ 850 + sgetrs_ @ 851 + sggbak_ @ 852 + sggbal_ @ 853 + sgges_ @ 854 + sggesx_ @ 855 + sggev_ @ 856 + sggevx_ @ 857 + sggglm_ @ 858 + sgghrd_ @ 859 + sgglse_ @ 860 + sggqrf_ @ 861 + sggrqf_ @ 862 + sggsvd_ @ 863 + sggsvp_ @ 864 + sgsvj0_ @ 865 + sgsvj1_ @ 866 + sgtcon_ @ 867 + sgtrfs_ @ 868 + sgtsv_ @ 869 + sgtsvx_ @ 870 + sgttrf_ @ 871 + sgttrs_ @ 872 + sgtts2_ @ 873 + shgeqz_ @ 874 + shsein_ @ 875 + shseqr_ @ 876 + sisnan_ @ 877 + sla_gerpvgrw__ @ 878 + slabad_ @ 879 + slabrd_ @ 880 + slacn2_ @ 881 + slacon_ @ 882 + slacpy_ @ 883 + sladiv_ @ 884 + slae2_ @ 885 + slaebz_ @ 886 + slaed0_ @ 887 + slaed1_ @ 888 + slaed2_ @ 889 + slaed3_ @ 890 + slaed4_ @ 891 + slaed5_ @ 892 + slaed6_ @ 893 + slaed7_ @ 894 + slaed8_ @ 895 + slaed9_ @ 896 + slaeda_ @ 897 + slaein_ @ 898 + slaev2_ @ 899 + slaexc_ @ 900 + slag2_ @ 901 + slag2d_ @ 902 + slags2_ @ 903 + slagtf_ @ 904 + slagtm_ @ 905 + slagts_ @ 906 + slagv2_ @ 907 + slahqr_ @ 908 + slahr2_ @ 909 + slahrd_ @ 910 + slaic1_ @ 911 + slaisnan_ @ 912 + slaln2_ @ 913 + slals0_ @ 914 + slalsa_ @ 915 + slalsd_ @ 916 + slamc1_ @ 917 + slamc2_ @ 918 + slamc3_ @ 919 + slamc4_ @ 920 + slamc5_ @ 921 + slamch_ @ 922 + slamrg_ @ 923 + slaneg_ @ 924 + slangb_ @ 925 + slange_ @ 926 + slangt_ @ 927 + slanhs_ @ 928 + slansb_ @ 929 + slansf_ @ 930 + slansp_ @ 931 + slanst_ @ 932 + slansy_ @ 933 + slantb_ @ 934 + slantp_ @ 935 + slantr_ @ 936 + slanv2_ @ 937 + slapll_ @ 938 + slapmr_ @ 939 + slapmt_ @ 940 + slapy2_ @ 941 + slapy3_ @ 942 + slaqgb_ @ 943 + slaqge_ @ 944 + slaqp2_ @ 945 + slaqps_ @ 946 + slaqr0_ @ 947 + slaqr1_ @ 948 + slaqr2_ @ 949 + slaqr3_ @ 950 + slaqr4_ @ 951 + slaqr5_ @ 952 + slaqsb_ @ 953 + slaqsp_ @ 954 + slaqsy_ @ 955 + slaqtr_ @ 956 + slar1v_ @ 957 + slar2v_ @ 958 + slarf_ @ 959 + slarfb_ @ 960 + slarfg_ @ 961 + slarfgp_ @ 962 + slarft_ @ 963 + slarfx_ @ 964 + slargv_ @ 965 + slarnv_ @ 966 + slarra_ @ 967 + slarrb_ @ 968 + slarrc_ @ 969 + slarrd_ @ 970 + slarre_ @ 971 + slarrf_ @ 972 + slarrj_ @ 973 + slarrk_ @ 974 + slarrr_ @ 975 + slarrv_ @ 976 + slartg_ @ 977 + slartgp_ @ 978 + slartgs_ @ 979 + slartv_ @ 980 + slaruv_ @ 981 + slarz_ @ 982 + slarzb_ @ 983 + slarzt_ @ 984 + slas2_ @ 985 + slascl_ @ 986 + slasd0_ @ 987 + slasd1_ @ 988 + slasd2_ @ 989 + slasd3_ @ 990 + slasd4_ @ 991 + slasd5_ @ 992 + slasd6_ @ 993 + slasd7_ @ 994 + slasd8_ @ 995 + slasda_ @ 996 + slasdq_ @ 997 + slasdt_ @ 998 + slaset_ @ 999 + slasq1_ @ 1000 + slasq2_ @ 1001 + slasq3_ @ 1002 + slasq4_ @ 1003 + slasq5_ @ 1004 + slasq6_ @ 1005 + slasr_ @ 1006 + slasrt_ @ 1007 + slassq_ @ 1008 + slasv2_ @ 1009 + slaswp_ @ 1010 + slasy2_ @ 1011 + slasyf_ @ 1012 + slatbs_ @ 1013 + slatdf_ @ 1014 + slatps_ @ 1015 + slatrd_ @ 1016 + slatrs_ @ 1017 + slatrz_ @ 1018 + slatzm_ @ 1019 + slauu2_ @ 1020 + slauum_ @ 1021 + sopgtr_ @ 1022 + sopmtr_ @ 1023 + sorbdb_ @ 1024 + sorcsd_ @ 1025 + sorg2l_ @ 1026 + sorg2r_ @ 1027 + sorgbr_ @ 1028 + sorghr_ @ 1029 + sorgl2_ @ 1030 + sorglq_ @ 1031 + sorgql_ @ 1032 + sorgqr_ @ 1033 + sorgr2_ @ 1034 + sorgrq_ @ 1035 + sorgtr_ @ 1036 + sorm2l_ @ 1037 + sorm2r_ @ 1038 + sormbr_ @ 1039 + sormhr_ @ 1040 + sorml2_ @ 1041 + sormlq_ @ 1042 + sormql_ @ 1043 + sormqr_ @ 1044 + sormr2_ @ 1045 + sormr3_ @ 1046 + sormrq_ @ 1047 + sormrz_ @ 1048 + sormtr_ @ 1049 + spbcon_ @ 1050 + spbequ_ @ 1051 + spbrfs_ @ 1052 + spbstf_ @ 1053 + spbsv_ @ 1054 + spbsvx_ @ 1055 + spbtf2_ @ 1056 + spbtrf_ @ 1057 + spbtrs_ @ 1058 + spftrf_ @ 1059 + spftri_ @ 1060 + spftrs_ @ 1061 + spocon_ @ 1062 + spoequ_ @ 1063 + spoequb_ @ 1064 + sporfs_ @ 1065 + sposv_ @ 1066 + sposvx_ @ 1067 + spotf2_ @ 1068 + spotrf_ @ 1069 + spotri_ @ 1070 + spotrs_ @ 1071 + sppcon_ @ 1072 + sppequ_ @ 1073 + spprfs_ @ 1074 + sppsv_ @ 1075 + sppsvx_ @ 1076 + spptrf_ @ 1077 + spptri_ @ 1078 + spptrs_ @ 1079 + spstf2_ @ 1080 + spstrf_ @ 1081 + sptcon_ @ 1082 + spteqr_ @ 1083 + sptrfs_ @ 1084 + sptsv_ @ 1085 + sptsvx_ @ 1086 + spttrf_ @ 1087 + spttrs_ @ 1088 + sptts2_ @ 1089 + srscl_ @ 1090 + ssbev_ @ 1091 + ssbevd_ @ 1092 + ssbevx_ @ 1093 + ssbgst_ @ 1094 + ssbgv_ @ 1095 + ssbgvd_ @ 1096 + ssbgvx_ @ 1097 + ssbtrd_ @ 1098 + ssfrk_ @ 1099 + sspcon_ @ 1100 + sspev_ @ 1101 + sspevd_ @ 1102 + sspevx_ @ 1103 + sspgst_ @ 1104 + sspgv_ @ 1105 + sspgvd_ @ 1106 + sspgvx_ @ 1107 + ssprfs_ @ 1108 + sspsv_ @ 1109 + sspsvx_ @ 1110 + ssptrd_ @ 1111 + ssptrf_ @ 1112 + ssptri_ @ 1113 + ssptrs_ @ 1114 + sstebz_ @ 1115 + sstedc_ @ 1116 + sstegr_ @ 1117 + sstein_ @ 1118 + sstemr_ @ 1119 + ssteqr_ @ 1120 + ssterf_ @ 1121 + sstev_ @ 1122 + sstevd_ @ 1123 + sstevr_ @ 1124 + sstevx_ @ 1125 + ssycon_ @ 1126 + ssyconv_ @ 1127 + ssyequb_ @ 1128 + ssyev_ @ 1129 + ssyevd_ @ 1130 + ssyevr_ @ 1131 + ssyevx_ @ 1132 + ssygs2_ @ 1133 + ssygst_ @ 1134 + ssygv_ @ 1135 + ssygvd_ @ 1136 + ssygvx_ @ 1137 + ssyrfs_ @ 1138 + ssysv_ @ 1139 + ssysvx_ @ 1140 + ssyswapr_ @ 1141 + ssytd2_ @ 1142 + ssytf2_ @ 1143 + ssytrd_ @ 1144 + ssytrf_ @ 1145 + ssytri2_ @ 1146 + ssytri2x_ @ 1147 + ssytri_ @ 1148 + ssytrs2_ @ 1149 + ssytrs_ @ 1150 + stbcon_ @ 1151 + stbrfs_ @ 1152 + stbtrs_ @ 1153 + stfsm_ @ 1154 + stftri_ @ 1155 + stfttp_ @ 1156 + stfttr_ @ 1157 + stgevc_ @ 1158 + stgex2_ @ 1159 + stgexc_ @ 1160 + stgsen_ @ 1161 + stgsja_ @ 1162 + stgsna_ @ 1163 + stgsy2_ @ 1164 + stgsyl_ @ 1165 + stpcon_ @ 1166 + stpmqrt_ @ 1167 + stpqrt2_ @ 1168 + stpqrt_ @ 1169 + stprfb_ @ 1170 + stprfs_ @ 1171 + stptri_ @ 1172 + stptrs_ @ 1173 + stpttf_ @ 1174 + stpttr_ @ 1175 + strcon_ @ 1176 + strevc_ @ 1177 + strexc_ @ 1178 + strrfs_ @ 1179 + strsen_ @ 1180 + strsna_ @ 1181 + strsyl_ @ 1182 + strti2_ @ 1183 + strtri_ @ 1184 + strtrs_ @ 1185 + strttf_ @ 1186 + strttp_ @ 1187 + stzrqf_ @ 1188 + stzrzf_ @ 1189 + zbbcsd_ @ 1190 + zbdsqr_ @ 1191 + zcgesv_ @ 1192 + zcposv_ @ 1193 + zdrscl_ @ 1194 + zgbbrd_ @ 1195 + zgbcon_ @ 1196 + zgbequ_ @ 1197 + zgbequb_ @ 1198 + zgbrfs_ @ 1199 + zgbsv_ @ 1200 + zgbsvx_ @ 1201 + zgbtf2_ @ 1202 + zgbtrf_ @ 1203 + zgbtrs_ @ 1204 + zgebak_ @ 1205 + zgebal_ @ 1206 + zgebd2_ @ 1207 + zgebrd_ @ 1208 + zgecon_ @ 1209 + zgeequ_ @ 1210 + zgeequb_ @ 1211 + zgees_ @ 1212 + zgeesx_ @ 1213 + zgeev_ @ 1214 + zgeevx_ @ 1215 + zgegs_ @ 1216 + zgegv_ @ 1217 + zgehd2_ @ 1218 + zgehrd_ @ 1219 + zgelq2_ @ 1220 + zgelqf_ @ 1221 + zgels_ @ 1222 + zgelsd_ @ 1223 + zgelss_ @ 1224 + zgelsx_ @ 1225 + zgelsy_ @ 1226 + zgemqrt_ @ 1227 + zgeql2_ @ 1228 + zgeqlf_ @ 1229 + zgeqp3_ @ 1230 + zgeqpf_ @ 1231 + zgeqr2_ @ 1232 + zgeqr2p_ @ 1233 + zgeqrf_ @ 1234 + zgeqrfp_ @ 1235 + zgeqrt2_ @ 1236 + zgeqrt3_ @ 1237 + zgeqrt_ @ 1238 + zgerfs_ @ 1239 + zgerq2_ @ 1240 + zgerqf_ @ 1241 + zgesc2_ @ 1242 + zgesdd_ @ 1243 + zgesv_ @ 1244 + zgesvd_ @ 1245 + zgesvx_ @ 1246 + zgetc2_ @ 1247 + zgetf2_ @ 1248 + zgetrf_ @ 1249 + zgetri_ @ 1250 + zgetrs_ @ 1251 + zggbak_ @ 1252 + zggbal_ @ 1253 + zgges_ @ 1254 + zggesx_ @ 1255 + zggev_ @ 1256 + zggevx_ @ 1257 + zggglm_ @ 1258 + zgghrd_ @ 1259 + zgglse_ @ 1260 + zggqrf_ @ 1261 + zggrqf_ @ 1262 + zggsvd_ @ 1263 + zggsvp_ @ 1264 + zgtcon_ @ 1265 + zgtrfs_ @ 1266 + zgtsv_ @ 1267 + zgtsvx_ @ 1268 + zgttrf_ @ 1269 + zgttrs_ @ 1270 + zgtts2_ @ 1271 + zhbev_ @ 1272 + zhbevd_ @ 1273 + zhbevx_ @ 1274 + zhbgst_ @ 1275 + zhbgv_ @ 1276 + zhbgvd_ @ 1277 + zhbgvx_ @ 1278 + zhbtrd_ @ 1279 + zhecon_ @ 1280 + zheequb_ @ 1281 + zheev_ @ 1282 + zheevd_ @ 1283 + zheevr_ @ 1284 + zheevx_ @ 1285 + zhegs2_ @ 1286 + zhegst_ @ 1287 + zhegv_ @ 1288 + zhegvd_ @ 1289 + zhegvx_ @ 1290 + zherfs_ @ 1291 + zhesv_ @ 1292 + zhesvx_ @ 1293 + zheswapr_ @ 1294 + zhetd2_ @ 1295 + zhetf2_ @ 1296 + zhetrd_ @ 1297 + zhetrf_ @ 1298 + zhetri2_ @ 1299 + zhetri2x_ @ 1300 + zhetri_ @ 1301 + zhetrs2_ @ 1302 + zhetrs_ @ 1303 + zhfrk_ @ 1304 + zhgeqz_ @ 1305 + zhpcon_ @ 1306 + zhpev_ @ 1307 + zhpevd_ @ 1308 + zhpevx_ @ 1309 + zhpgst_ @ 1310 + zhpgv_ @ 1311 + zhpgvd_ @ 1312 + zhpgvx_ @ 1313 + zhprfs_ @ 1314 + zhpsv_ @ 1315 + zhpsvx_ @ 1316 + zhptrd_ @ 1317 + zhptrf_ @ 1318 + zhptri_ @ 1319 + zhptrs_ @ 1320 + zhsein_ @ 1321 + zhseqr_ @ 1322 + zla_gerpvgrw__ @ 1323 + zlabrd_ @ 1324 + zlacgv_ @ 1325 + zlacn2_ @ 1326 + zlacon_ @ 1327 + zlacp2_ @ 1328 + zlacpy_ @ 1329 + zlacrm_ @ 1330 + zlacrt_ @ 1331 + zladiv_ @ 1332 + zlaed0_ @ 1333 + zlaed7_ @ 1334 + zlaed8_ @ 1335 + zlaein_ @ 1336 + zlaesy_ @ 1337 + zlaev2_ @ 1338 + zlag2c_ @ 1339 + zlags2_ @ 1340 + zlagtm_ @ 1341 + zlahef_ @ 1342 + zlahqr_ @ 1343 + zlahr2_ @ 1344 + zlahrd_ @ 1345 + zlaic1_ @ 1346 + zlals0_ @ 1347 + zlalsa_ @ 1348 + zlalsd_ @ 1349 + zlangb_ @ 1350 + zlange_ @ 1351 + zlangt_ @ 1352 + zlanhb_ @ 1353 + zlanhe_ @ 1354 + zlanhf_ @ 1355 + zlanhp_ @ 1356 + zlanhs_ @ 1357 + zlanht_ @ 1358 + zlansb_ @ 1359 + zlansp_ @ 1360 + zlansy_ @ 1361 + zlantb_ @ 1362 + zlantp_ @ 1363 + zlantr_ @ 1364 + zlapll_ @ 1365 + zlapmr_ @ 1366 + zlapmt_ @ 1367 + zlaqgb_ @ 1368 + zlaqge_ @ 1369 + zlaqhb_ @ 1370 + zlaqhe_ @ 1371 + zlaqhp_ @ 1372 + zlaqp2_ @ 1373 + zlaqps_ @ 1374 + zlaqr0_ @ 1375 + zlaqr1_ @ 1376 + zlaqr2_ @ 1377 + zlaqr3_ @ 1378 + zlaqr4_ @ 1379 + zlaqr5_ @ 1380 + zlaqsb_ @ 1381 + zlaqsp_ @ 1382 + zlaqsy_ @ 1383 + zlar1v_ @ 1384 + zlar2v_ @ 1385 + zlarcm_ @ 1386 + zlarf_ @ 1387 + zlarfb_ @ 1388 + zlarfg_ @ 1389 + zlarfgp_ @ 1390 + zlarft_ @ 1391 + zlarfx_ @ 1392 + zlargv_ @ 1393 + zlarnv_ @ 1394 + zlarrv_ @ 1395 + zlartg_ @ 1396 + zlartv_ @ 1397 + zlarz_ @ 1398 + zlarzb_ @ 1399 + zlarzt_ @ 1400 + zlascl_ @ 1401 + zlaset_ @ 1402 + zlasr_ @ 1403 + zlassq_ @ 1404 + zlaswp_ @ 1405 + zlasyf_ @ 1406 + zlat2c_ @ 1407 + zlatbs_ @ 1408 + zlatdf_ @ 1409 + zlatps_ @ 1410 + zlatrd_ @ 1411 + zlatrs_ @ 1412 + zlatrz_ @ 1413 + zlatzm_ @ 1414 + zlauu2_ @ 1415 + zlauum_ @ 1416 + zpbcon_ @ 1417 + zpbequ_ @ 1418 + zpbrfs_ @ 1419 + zpbstf_ @ 1420 + zpbsv_ @ 1421 + zpbsvx_ @ 1422 + zpbtf2_ @ 1423 + zpbtrf_ @ 1424 + zpbtrs_ @ 1425 + zpftrf_ @ 1426 + zpftri_ @ 1427 + zpftrs_ @ 1428 + zpocon_ @ 1429 + zpoequ_ @ 1430 + zpoequb_ @ 1431 + zporfs_ @ 1432 + zposv_ @ 1433 + zposvx_ @ 1434 + zpotf2_ @ 1435 + zpotrf_ @ 1436 + zpotri_ @ 1437 + zpotrs_ @ 1438 + zppcon_ @ 1439 + zppequ_ @ 1440 + zpprfs_ @ 1441 + zppsv_ @ 1442 + zppsvx_ @ 1443 + zpptrf_ @ 1444 + zpptri_ @ 1445 + zpptrs_ @ 1446 + zpstf2_ @ 1447 + zpstrf_ @ 1448 + zptcon_ @ 1449 + zpteqr_ @ 1450 + zptrfs_ @ 1451 + zptsv_ @ 1452 + zptsvx_ @ 1453 + zpttrf_ @ 1454 + zpttrs_ @ 1455 + zptts2_ @ 1456 + zrot_ @ 1457 + zspcon_ @ 1458 + zspmv_ @ 1459 + zspr_ @ 1460 + zsprfs_ @ 1461 + zspsv_ @ 1462 + zspsvx_ @ 1463 + zsptrf_ @ 1464 + zsptri_ @ 1465 + zsptrs_ @ 1466 + zstedc_ @ 1467 + zstegr_ @ 1468 + zstein_ @ 1469 + zstemr_ @ 1470 + zsteqr_ @ 1471 + zsycon_ @ 1472 + zsyconv_ @ 1473 + zsyequb_ @ 1474 + zsymv_ @ 1475 + zsyr_ @ 1476 + zsyrfs_ @ 1477 + zsysv_ @ 1478 + zsysvx_ @ 1479 + zsyswapr_ @ 1480 + zsytf2_ @ 1481 + zsytrf_ @ 1482 + zsytri2_ @ 1483 + zsytri2x_ @ 1484 + zsytri_ @ 1485 + zsytrs2_ @ 1486 + zsytrs_ @ 1487 + ztbcon_ @ 1488 + ztbrfs_ @ 1489 + ztbtrs_ @ 1490 + ztfsm_ @ 1491 + ztftri_ @ 1492 + ztfttp_ @ 1493 + ztfttr_ @ 1494 + ztgevc_ @ 1495 + ztgex2_ @ 1496 + ztgexc_ @ 1497 + ztgsen_ @ 1498 + ztgsja_ @ 1499 + ztgsna_ @ 1500 + ztgsy2_ @ 1501 + ztgsyl_ @ 1502 + ztpcon_ @ 1503 + ztpmqrt_ @ 1504 + ztpqrt2_ @ 1505 + ztpqrt_ @ 1506 + ztprfb_ @ 1507 + ztprfs_ @ 1508 + ztptri_ @ 1509 + ztptrs_ @ 1510 + ztpttf_ @ 1511 + ztpttr_ @ 1512 + ztrcon_ @ 1513 + ztrevc_ @ 1514 + ztrexc_ @ 1515 + ztrrfs_ @ 1516 + ztrsen_ @ 1517 + ztrsna_ @ 1518 + ztrsyl_ @ 1519 + ztrti2_ @ 1520 + ztrtri_ @ 1521 + ztrtrs_ @ 1522 + ztrttf_ @ 1523 + ztrttp_ @ 1524 + ztzrqf_ @ 1525 + ztzrzf_ @ 1526 + zunbdb_ @ 1527 + zuncsd_ @ 1528 + zung2l_ @ 1529 + zung2r_ @ 1530 + zungbr_ @ 1531 + zunghr_ @ 1532 + zungl2_ @ 1533 + zunglq_ @ 1534 + zungql_ @ 1535 + zungqr_ @ 1536 + zungr2_ @ 1537 + zungrq_ @ 1538 + zungtr_ @ 1539 + zunm2l_ @ 1540 + zunm2r_ @ 1541 + zunmbr_ @ 1542 + zunmhr_ @ 1543 + zunml2_ @ 1544 + zunmlq_ @ 1545 + zunmql_ @ 1546 + zunmqr_ @ 1547 + zunmr2_ @ 1548 + zunmr3_ @ 1549 + zunmrq_ @ 1550 + zunmrz_ @ 1551 + zunmtr_ @ 1552 + zupgtr_ @ 1553 + zupmtr_ @ 1554 diff --git a/mingw-w64-f2cblaslapack/libf2clapack-x86_64.def b/mingw-w64-f2cblaslapack/libf2clapack-x86_64.def new file mode 100644 index 0000000000..314583a846 --- /dev/null +++ b/mingw-w64-f2cblaslapack/libf2clapack-x86_64.def @@ -0,0 +1,1555 @@ +EXPORTS +slamc1_ +slamc2_ +slamc3_ +slamc4_ +slamc5_ +slamch_ +cbbcsd_ +cbdsqr_ +cgbbrd_ +cgbcon_ +cgbequb_ +cgbequ_ +cgbrfs_ +cgbsv_ +cgbsvx_ +cgbtf2_ +cgbtrf_ +cgbtrs_ +cgebak_ +cgebal_ +cgebd2_ +cgebrd_ +cgecon_ +cgeequb_ +cgeequ_ +cgees_ +cgeesx_ +cgeev_ +cgeevx_ +cgegs_ +cgegv_ +cgehd2_ +cgehrd_ +cgelq2_ +cgelqf_ +cgelsd_ +cgels_ +cgelss_ +cgelsx_ +cgelsy_ +cgemqrt_ +cgeql2_ +cgeqlf_ +cgeqp3_ +cgeqpf_ +cgeqr2_ +cgeqr2p_ +cgeqrf_ +cgeqrfp_ +cgeqrt2_ +cgeqrt3_ +cgeqrt_ +cgerfs_ +cgerq2_ +cgerqf_ +cgesc2_ +cgesdd_ +cgesvd_ +cgesv_ +cgesvx_ +cgetc2_ +cgetf2_ +cgetrf_ +cgetri_ +cgetrs_ +cggbak_ +cggbal_ +cgges_ +cggesx_ +cggev_ +cggevx_ +cggglm_ +cgghrd_ +cgglse_ +cggqrf_ +cggrqf_ +cggsvd_ +cggsvp_ +cgtcon_ +cgtrfs_ +cgtsv_ +cgtsvx_ +cgttrf_ +cgttrs_ +cgtts2_ +chbevd_ +chbev_ +chbevx_ +chbgst_ +chbgvd_ +chbgv_ +chbgvx_ +chbtrd_ +checon_ +cheequb_ +cheevd_ +cheev_ +cheevr_ +cheevx_ +chegs2_ +chegst_ +chegvd_ +chegv_ +chegvx_ +cherfs_ +chesv_ +chesvx_ +cheswapr_ +chetd2_ +chetf2_ +chetrd_ +chetrf_ +chetri2_ +chetri2x_ +chetri_ +chetrs2_ +chetrs_ +chfrk_ +chgeqz_ +chpcon_ +chpevd_ +chpev_ +chpevx_ +chpgst_ +chpgvd_ +chpgv_ +chpgvx_ +chprfs_ +chpsv_ +chpsvx_ +chptrd_ +chptrf_ +chptri_ +chptrs_ +chsein_ +chseqr_ +clabrd_ +clacgv_ +clacn2_ +clacon_ +clacp2_ +clacpy_ +clacrm_ +clacrt_ +cladiv_ +claed0_ +claed7_ +claed8_ +claein_ +claesy_ +claev2_ +clag2z_ +cla_gerpvgrw__ +clags2_ +clagtm_ +clahef_ +clahqr_ +clahr2_ +clahrd_ +claic1_ +clals0_ +clalsa_ +clalsd_ +clangb_ +clange_ +clangt_ +clanhb_ +clanhe_ +clanhf_ +clanhp_ +clanhs_ +clanht_ +clansb_ +clansp_ +clansy_ +clantb_ +clantp_ +clantr_ +clapll_ +clapmr_ +clapmt_ +claqgb_ +claqge_ +claqhb_ +claqhe_ +claqhp_ +claqp2_ +claqps_ +claqr0_ +claqr1_ +claqr2_ +claqr3_ +claqr4_ +claqr5_ +claqsb_ +claqsp_ +claqsy_ +clar1v_ +clar2v_ +clarcm_ +clarfb_ +clarf_ +clarfg_ +clarfgp_ +clarft_ +clarfx_ +clargv_ +clarnv_ +clarrv_ +clartg_ +clartv_ +clarzb_ +clarz_ +clarzt_ +clascl_ +claset_ +clasr_ +classq_ +claswp_ +clasyf_ +clatbs_ +clatdf_ +clatps_ +clatrd_ +clatrs_ +clatrz_ +clatzm_ +clauu2_ +clauum_ +cpbcon_ +cpbequ_ +cpbrfs_ +cpbstf_ +cpbsv_ +cpbsvx_ +cpbtf2_ +cpbtrf_ +cpbtrs_ +cpftrf_ +cpftri_ +cpftrs_ +cpocon_ +cpoequb_ +cpoequ_ +cporfs_ +cposv_ +cposvx_ +cpotf2_ +cpotrf_ +cpotri_ +cpotrs_ +cppcon_ +cppequ_ +cpprfs_ +cppsv_ +cppsvx_ +cpptrf_ +cpptri_ +cpptrs_ +cpstf2_ +cpstrf_ +cptcon_ +cpteqr_ +cptrfs_ +cptsv_ +cptsvx_ +cpttrf_ +cpttrs_ +cptts2_ +crot_ +cspcon_ +cspmv_ +cspr_ +csprfs_ +cspsv_ +cspsvx_ +csptrf_ +csptri_ +csptrs_ +csrscl_ +cstedc_ +cstegr_ +cstein_ +cstemr_ +csteqr_ +csycon_ +csyconv_ +csyequb_ +csymv_ +csyr_ +csyrfs_ +csysv_ +csysvx_ +csyswapr_ +csytf2_ +csytrf_ +csytri2_ +csytri2x_ +csytri_ +csytrs2_ +csytrs_ +ctbcon_ +ctbrfs_ +ctbtrs_ +ctfsm_ +ctftri_ +ctfttp_ +ctfttr_ +ctgevc_ +ctgex2_ +ctgexc_ +ctgsen_ +ctgsja_ +ctgsna_ +ctgsy2_ +ctgsyl_ +ctpcon_ +ctpmqrt_ +ctpqrt2_ +ctpqrt_ +ctprfb_ +ctprfs_ +ctptri_ +ctptrs_ +ctpttf_ +ctpttr_ +ctrcon_ +ctrevc_ +ctrexc_ +ctrrfs_ +ctrsen_ +ctrsna_ +ctrsyl_ +ctrti2_ +ctrtri_ +ctrtrs_ +ctrttf_ +ctrttp_ +ctzrqf_ +ctzrzf_ +cunbdb_ +cuncsd_ +cung2l_ +cung2r_ +cungbr_ +cunghr_ +cungl2_ +cunglq_ +cungql_ +cungqr_ +cungr2_ +cungrq_ +cungtr_ +cunm2l_ +cunm2r_ +cunmbr_ +cunmhr_ +cunml2_ +cunmlq_ +cunmql_ +cunmqr_ +cunmr2_ +cunmr3_ +cunmrq_ +cunmrz_ +cunmtr_ +cupgtr_ +cupmtr_ +icmax1_ +ilaclc_ +ilaclr_ +ilaslc_ +ilaslr_ +sbbcsd_ +sbdsdc_ +sbdsqr_ +scsum1_ +sdisna_ +sgbbrd_ +sgbcon_ +sgbequb_ +sgbequ_ +sgbrfs_ +sgbsv_ +sgbsvx_ +sgbtf2_ +sgbtrf_ +sgbtrs_ +sgebak_ +sgebal_ +sgebd2_ +sgebrd_ +sgecon_ +sgeequb_ +sgeequ_ +sgees_ +sgeesx_ +sgeev_ +sgeevx_ +sgegs_ +sgegv_ +sgehd2_ +sgehrd_ +sgejsv_ +sgelq2_ +sgelqf_ +sgelsd_ +sgels_ +sgelss_ +sgelsx_ +sgelsy_ +sgemqrt_ +sgeql2_ +sgeqlf_ +sgeqp3_ +sgeqpf_ +sgeqr2_ +sgeqr2p_ +sgeqrf_ +sgeqrfp_ +sgeqrt2_ +sgeqrt3_ +sgeqrt_ +sgerfs_ +sgerq2_ +sgerqf_ +sgesc2_ +sgesdd_ +sgesvd_ +sgesv_ +sgesvj_ +sgesvx_ +sgetc2_ +sgetf2_ +sgetrf_ +sgetri_ +sgetrs_ +sggbak_ +sggbal_ +sgges_ +sggesx_ +sggev_ +sggevx_ +sggglm_ +sgghrd_ +sgglse_ +sggqrf_ +sggrqf_ +sggsvd_ +sggsvp_ +sgsvj0_ +sgsvj1_ +sgtcon_ +sgtrfs_ +sgtsv_ +sgtsvx_ +sgttrf_ +sgttrs_ +sgtts2_ +shgeqz_ +shsein_ +shseqr_ +sisnan_ +slabad_ +slabrd_ +slacn2_ +slacon_ +slacpy_ +sladiv_ +slae2_ +slaebz_ +slaed0_ +slaed1_ +slaed2_ +slaed3_ +slaed4_ +slaed5_ +slaed6_ +slaed7_ +slaed8_ +slaed9_ +slaeda_ +slaein_ +slaev2_ +slaexc_ +slag2d_ +slag2_ +sla_gerpvgrw__ +slags2_ +slagtf_ +slagtm_ +slagts_ +slagv2_ +slahqr_ +slahr2_ +slahrd_ +slaic1_ +slaisnan_ +slaln2_ +slals0_ +slalsa_ +slalsd_ +slamrg_ +slaneg_ +slangb_ +slange_ +slangt_ +slanhs_ +slansb_ +slansf_ +slansp_ +slanst_ +slansy_ +slantb_ +slantp_ +slantr_ +slanv2_ +slapll_ +slapmr_ +slapmt_ +slapy2_ +slapy3_ +slaqgb_ +slaqge_ +slaqp2_ +slaqps_ +slaqr0_ +slaqr1_ +slaqr2_ +slaqr3_ +slaqr4_ +slaqr5_ +slaqsb_ +slaqsp_ +slaqsy_ +slaqtr_ +slar1v_ +slar2v_ +slarfb_ +slarf_ +slarfg_ +slarfgp_ +slarft_ +slarfx_ +slargv_ +slarnv_ +slarra_ +slarrb_ +slarrc_ +slarrd_ +slarre_ +slarrf_ +slarrj_ +slarrk_ +slarrr_ +slarrv_ +slartg_ +slartgp_ +slartgs_ +slartv_ +slaruv_ +slarzb_ +slarz_ +slarzt_ +slas2_ +slascl_ +slasd0_ +slasd1_ +slasd2_ +slasd3_ +slasd4_ +slasd5_ +slasd6_ +slasd7_ +slasd8_ +slasda_ +slasdq_ +slasdt_ +slaset_ +slasq1_ +slasq2_ +slasq3_ +slasq4_ +slasq5_ +slasq6_ +slasr_ +slasrt_ +slassq_ +slasv2_ +slaswp_ +slasy2_ +slasyf_ +slatbs_ +slatdf_ +slatps_ +slatrd_ +slatrs_ +slatrz_ +slatzm_ +slauu2_ +slauum_ +sopgtr_ +sopmtr_ +sorbdb_ +sorcsd_ +sorg2l_ +sorg2r_ +sorgbr_ +sorghr_ +sorgl2_ +sorglq_ +sorgql_ +sorgqr_ +sorgr2_ +sorgrq_ +sorgtr_ +sorm2l_ +sorm2r_ +sormbr_ +sormhr_ +sorml2_ +sormlq_ +sormql_ +sormqr_ +sormr2_ +sormr3_ +sormrq_ +sormrz_ +sormtr_ +spbcon_ +spbequ_ +spbrfs_ +spbstf_ +spbsv_ +spbsvx_ +spbtf2_ +spbtrf_ +spbtrs_ +spftrf_ +spftri_ +spftrs_ +spocon_ +spoequb_ +spoequ_ +sporfs_ +sposv_ +sposvx_ +spotf2_ +spotrf_ +spotri_ +spotrs_ +sppcon_ +sppequ_ +spprfs_ +sppsv_ +sppsvx_ +spptrf_ +spptri_ +spptrs_ +spstf2_ +spstrf_ +sptcon_ +spteqr_ +sptrfs_ +sptsv_ +sptsvx_ +spttrf_ +spttrs_ +sptts2_ +srscl_ +ssbevd_ +ssbev_ +ssbevx_ +ssbgst_ +ssbgvd_ +ssbgv_ +ssbgvx_ +ssbtrd_ +ssfrk_ +sspcon_ +sspevd_ +sspev_ +sspevx_ +sspgst_ +sspgvd_ +sspgv_ +sspgvx_ +ssprfs_ +sspsv_ +sspsvx_ +ssptrd_ +ssptrf_ +ssptri_ +ssptrs_ +sstebz_ +sstedc_ +sstegr_ +sstein_ +sstemr_ +ssteqr_ +ssterf_ +sstevd_ +sstev_ +sstevr_ +sstevx_ +ssycon_ +ssyconv_ +ssyequb_ +ssyevd_ +ssyev_ +ssyevr_ +ssyevx_ +ssygs2_ +ssygst_ +ssygvd_ +ssygv_ +ssygvx_ +ssyrfs_ +ssysv_ +ssysvx_ +ssyswapr_ +ssytd2_ +ssytf2_ +ssytrd_ +ssytrf_ +ssytri2_ +ssytri2x_ +ssytri_ +ssytrs2_ +ssytrs_ +stbcon_ +stbrfs_ +stbtrs_ +stfsm_ +stftri_ +stfttp_ +stfttr_ +stgevc_ +stgex2_ +stgexc_ +stgsen_ +stgsja_ +stgsna_ +stgsy2_ +stgsyl_ +stpcon_ +stpmqrt_ +stpqrt2_ +stpqrt_ +stprfb_ +stprfs_ +stptri_ +stptrs_ +stpttf_ +stpttr_ +strcon_ +strevc_ +strexc_ +strrfs_ +strsen_ +strsna_ +strsyl_ +strti2_ +strtri_ +strtrs_ +strttf_ +strttp_ +stzrqf_ +stzrzf_ +dlamc1_ +dlamc2_ +dlamc3_ +dlamc4_ +dlamc5_ +dlamch_ +dbbcsd_ +dbdsdc_ +dbdsqr_ +ddisna_ +dgbbrd_ +dgbcon_ +dgbequb_ +dgbequ_ +dgbrfs_ +dgbsv_ +dgbsvx_ +dgbtf2_ +dgbtrf_ +dgbtrs_ +dgebak_ +dgebal_ +dgebd2_ +dgebrd_ +dgecon_ +dgeequb_ +dgeequ_ +dgees_ +dgeesx_ +dgeev_ +dgeevx_ +dgegs_ +dgegv_ +dgehd2_ +dgehrd_ +dgejsv_ +dgelq2_ +dgelqf_ +dgelsd_ +dgels_ +dgelss_ +dgelsx_ +dgelsy_ +dgemqrt_ +dgeql2_ +dgeqlf_ +dgeqp3_ +dgeqpf_ +dgeqr2_ +dgeqr2p_ +dgeqrf_ +dgeqrfp_ +dgeqrt2_ +dgeqrt3_ +dgeqrt_ +dgerfs_ +dgerq2_ +dgerqf_ +dgesc2_ +dgesdd_ +dgesvd_ +dgesv_ +dgesvj_ +dgesvx_ +dgetc2_ +dgetf2_ +dgetrf_ +dgetri_ +dgetrs_ +dggbak_ +dggbal_ +dgges_ +dggesx_ +dggev_ +dggevx_ +dggglm_ +dgghrd_ +dgglse_ +dggqrf_ +dggrqf_ +dggsvd_ +dggsvp_ +dgsvj0_ +dgsvj1_ +dgtcon_ +dgtrfs_ +dgtsv_ +dgtsvx_ +dgttrf_ +dgttrs_ +dgtts2_ +dhgeqz_ +dhsein_ +dhseqr_ +disnan_ +dlabad_ +dlabrd_ +dlacn2_ +dlacon_ +dlacpy_ +dladiv_ +dlae2_ +dlaebz_ +dlaed0_ +dlaed1_ +dlaed2_ +dlaed3_ +dlaed4_ +dlaed5_ +dlaed6_ +dlaed7_ +dlaed8_ +dlaed9_ +dlaeda_ +dlaein_ +dlaev2_ +dlaexc_ +dlag2_ +dlag2s_ +dla_gerpvgrw__ +dlags2_ +dlagtf_ +dlagtm_ +dlagts_ +dlagv2_ +dlahqr_ +dlahr2_ +dlahrd_ +dlaic1_ +dlaisnan_ +dlaln2_ +dlals0_ +dlalsa_ +dlalsd_ +dlamrg_ +dlaneg_ +dlangb_ +dlange_ +dlangt_ +dlanhs_ +dlansb_ +dlansf_ +dlansp_ +dlanst_ +dlansy_ +dlantb_ +dlantp_ +dlantr_ +dlanv2_ +dlapll_ +dlapmr_ +dlapmt_ +dlapy2_ +dlapy3_ +dlaqgb_ +dlaqge_ +dlaqp2_ +dlaqps_ +dlaqr0_ +dlaqr1_ +dlaqr2_ +dlaqr3_ +dlaqr4_ +dlaqr5_ +dlaqsb_ +dlaqsp_ +dlaqsy_ +dlaqtr_ +dlar1v_ +dlar2v_ +dlarfb_ +dlarf_ +dlarfg_ +dlarfgp_ +dlarft_ +dlarfx_ +dlargv_ +dlarnv_ +dlarra_ +dlarrb_ +dlarrc_ +dlarrd_ +dlarre_ +dlarrf_ +dlarrj_ +dlarrk_ +dlarrr_ +dlarrv_ +dlartg_ +dlartgp_ +dlartgs_ +dlartv_ +dlaruv_ +dlarzb_ +dlarz_ +dlarzt_ +dlas2_ +dlascl_ +dlasd0_ +dlasd1_ +dlasd2_ +dlasd3_ +dlasd4_ +dlasd5_ +dlasd6_ +dlasd7_ +dlasd8_ +dlasda_ +dlasdq_ +dlasdt_ +dlaset_ +dlasq1_ +dlasq2_ +dlasq3_ +dlasq4_ +dlasq5_ +dlasq6_ +dlasr_ +dlasrt_ +dlassq_ +dlasv2_ +dlaswp_ +dlasy2_ +dlasyf_ +dlat2s_ +dlatbs_ +dlatdf_ +dlatps_ +dlatrd_ +dlatrs_ +dlatrz_ +dlatzm_ +dlauu2_ +dlauum_ +dopgtr_ +dopmtr_ +dorbdb_ +dorcsd_ +dorg2l_ +dorg2r_ +dorgbr_ +dorghr_ +dorgl2_ +dorglq_ +dorgql_ +dorgqr_ +dorgr2_ +dorgrq_ +dorgtr_ +dorm2l_ +dorm2r_ +dormbr_ +dormhr_ +dorml2_ +dormlq_ +dormql_ +dormqr_ +dormr2_ +dormr3_ +dormrq_ +dormrz_ +dormtr_ +dpbcon_ +dpbequ_ +dpbrfs_ +dpbstf_ +dpbsv_ +dpbsvx_ +dpbtf2_ +dpbtrf_ +dpbtrs_ +dpftrf_ +dpftri_ +dpftrs_ +dpocon_ +dpoequb_ +dpoequ_ +dporfs_ +dposv_ +dposvx_ +dpotf2_ +dpotrf_ +dpotri_ +dpotrs_ +dppcon_ +dppequ_ +dpprfs_ +dppsv_ +dppsvx_ +dpptrf_ +dpptri_ +dpptrs_ +dpstf2_ +dpstrf_ +dptcon_ +dpteqr_ +dptrfs_ +dptsv_ +dptsvx_ +dpttrf_ +dpttrs_ +dptts2_ +drscl_ +dsbevd_ +dsbev_ +dsbevx_ +dsbgst_ +dsbgvd_ +dsbgv_ +dsbgvx_ +dsbtrd_ +dsfrk_ +dsgesv_ +dspcon_ +dspevd_ +dspev_ +dspevx_ +dspgst_ +dspgvd_ +dspgv_ +dspgvx_ +dsposv_ +dsprfs_ +dspsv_ +dspsvx_ +dsptrd_ +dsptrf_ +dsptri_ +dsptrs_ +dstebz_ +dstedc_ +dstegr_ +dstein_ +dstemr_ +dsteqr_ +dsterf_ +dstevd_ +dstev_ +dstevr_ +dstevx_ +dsycon_ +dsyconv_ +dsyequb_ +dsyevd_ +dsyev_ +dsyevr_ +dsyevx_ +dsygs2_ +dsygst_ +dsygvd_ +dsygv_ +dsygvx_ +dsyrfs_ +dsysv_ +dsysvx_ +dsyswapr_ +dsytd2_ +dsytf2_ +dsytrd_ +dsytrf_ +dsytri2_ +dsytri2x_ +dsytri_ +dsytrs2_ +dsytrs_ +dtbcon_ +dtbrfs_ +dtbtrs_ +dtfsm_ +dtftri_ +dtfttp_ +dtfttr_ +dtgevc_ +dtgex2_ +dtgexc_ +dtgsen_ +dtgsja_ +dtgsna_ +dtgsy2_ +dtgsyl_ +dtpcon_ +dtpmqrt_ +dtpqrt2_ +dtpqrt_ +dtprfb_ +dtprfs_ +dtptri_ +dtptrs_ +dtpttf_ +dtpttr_ +dtrcon_ +dtrevc_ +dtrexc_ +dtrrfs_ +dtrsen_ +dtrsna_ +dtrsyl_ +dtrti2_ +dtrtri_ +dtrtrs_ +dtrttf_ +dtrttp_ +dtzrqf_ +dtzrzf_ +dzsum1_ +iladlc_ +iladlr_ +ilazlc_ +ilazlr_ +izmax1_ +zbbcsd_ +zbdsqr_ +zcgesv_ +zcposv_ +zdrscl_ +zgbbrd_ +zgbcon_ +zgbequb_ +zgbequ_ +zgbrfs_ +zgbsv_ +zgbsvx_ +zgbtf2_ +zgbtrf_ +zgbtrs_ +zgebak_ +zgebal_ +zgebd2_ +zgebrd_ +zgecon_ +zgeequb_ +zgeequ_ +zgees_ +zgeesx_ +zgeev_ +zgeevx_ +zgegs_ +zgegv_ +zgehd2_ +zgehrd_ +zgelq2_ +zgelqf_ +zgelsd_ +zgels_ +zgelss_ +zgelsx_ +zgelsy_ +zgemqrt_ +zgeql2_ +zgeqlf_ +zgeqp3_ +zgeqpf_ +zgeqr2_ +zgeqr2p_ +zgeqrf_ +zgeqrfp_ +zgeqrt2_ +zgeqrt3_ +zgeqrt_ +zgerfs_ +zgerq2_ +zgerqf_ +zgesc2_ +zgesdd_ +zgesvd_ +zgesv_ +zgesvx_ +zgetc2_ +zgetf2_ +zgetrf_ +zgetri_ +zgetrs_ +zggbak_ +zggbal_ +zgges_ +zggesx_ +zggev_ +zggevx_ +zggglm_ +zgghrd_ +zgglse_ +zggqrf_ +zggrqf_ +zggsvd_ +zggsvp_ +zgtcon_ +zgtrfs_ +zgtsv_ +zgtsvx_ +zgttrf_ +zgttrs_ +zgtts2_ +zhbevd_ +zhbev_ +zhbevx_ +zhbgst_ +zhbgvd_ +zhbgv_ +zhbgvx_ +zhbtrd_ +zhecon_ +zheequb_ +zheevd_ +zheev_ +zheevr_ +zheevx_ +zhegs2_ +zhegst_ +zhegvd_ +zhegv_ +zhegvx_ +zherfs_ +zhesv_ +zhesvx_ +zheswapr_ +zhetd2_ +zhetf2_ +zhetrd_ +zhetrf_ +zhetri2_ +zhetri2x_ +zhetri_ +zhetrs2_ +zhetrs_ +zhfrk_ +zhgeqz_ +zhpcon_ +zhpevd_ +zhpev_ +zhpevx_ +zhpgst_ +zhpgvd_ +zhpgv_ +zhpgvx_ +zhprfs_ +zhpsv_ +zhpsvx_ +zhptrd_ +zhptrf_ +zhptri_ +zhptrs_ +zhsein_ +zhseqr_ +zlabrd_ +zlacgv_ +zlacn2_ +zlacon_ +zlacp2_ +zlacpy_ +zlacrm_ +zlacrt_ +zladiv_ +zlaed0_ +zlaed7_ +zlaed8_ +zlaein_ +zlaesy_ +zlaev2_ +zlag2c_ +zla_gerpvgrw__ +zlags2_ +zlagtm_ +zlahef_ +zlahqr_ +zlahr2_ +zlahrd_ +zlaic1_ +zlals0_ +zlalsa_ +zlalsd_ +zlangb_ +zlange_ +zlangt_ +zlanhb_ +zlanhe_ +zlanhf_ +zlanhp_ +zlanhs_ +zlanht_ +zlansb_ +zlansp_ +zlansy_ +zlantb_ +zlantp_ +zlantr_ +zlapll_ +zlapmr_ +zlapmt_ +zlaqgb_ +zlaqge_ +zlaqhb_ +zlaqhe_ +zlaqhp_ +zlaqp2_ +zlaqps_ +zlaqr0_ +zlaqr1_ +zlaqr2_ +zlaqr3_ +zlaqr4_ +zlaqr5_ +zlaqsb_ +zlaqsp_ +zlaqsy_ +zlar1v_ +zlar2v_ +zlarcm_ +zlarfb_ +zlarf_ +zlarfg_ +zlarfgp_ +zlarft_ +zlarfx_ +zlargv_ +zlarnv_ +zlarrv_ +zlartg_ +zlartv_ +zlarzb_ +zlarz_ +zlarzt_ +zlascl_ +zlaset_ +zlasr_ +zlassq_ +zlaswp_ +zlasyf_ +zlat2c_ +zlatbs_ +zlatdf_ +zlatps_ +zlatrd_ +zlatrs_ +zlatrz_ +zlatzm_ +zlauu2_ +zlauum_ +zpbcon_ +zpbequ_ +zpbrfs_ +zpbstf_ +zpbsv_ +zpbsvx_ +zpbtf2_ +zpbtrf_ +zpbtrs_ +zpftrf_ +zpftri_ +zpftrs_ +zpocon_ +zpoequb_ +zpoequ_ +zporfs_ +zposv_ +zposvx_ +zpotf2_ +zpotrf_ +zpotri_ +zpotrs_ +zppcon_ +zppequ_ +zpprfs_ +zppsv_ +zppsvx_ +zpptrf_ +zpptri_ +zpptrs_ +zpstf2_ +zpstrf_ +zptcon_ +zpteqr_ +zptrfs_ +zptsv_ +zptsvx_ +zpttrf_ +zpttrs_ +zptts2_ +zrot_ +zspcon_ +zspmv_ +zspr_ +zsprfs_ +zspsv_ +zspsvx_ +zsptrf_ +zsptri_ +zsptrs_ +zstedc_ +zstegr_ +zstein_ +zstemr_ +zsteqr_ +zsycon_ +zsyconv_ +zsyequb_ +zsymv_ +zsyr_ +zsyrfs_ +zsysv_ +zsysvx_ +zsyswapr_ +zsytf2_ +zsytrf_ +zsytri2_ +zsytri2x_ +zsytri_ +zsytrs2_ +zsytrs_ +ztbcon_ +ztbrfs_ +ztbtrs_ +ztfsm_ +ztftri_ +ztfttp_ +ztfttr_ +ztgevc_ +ztgex2_ +ztgexc_ +ztgsen_ +ztgsja_ +ztgsna_ +ztgsy2_ +ztgsyl_ +ztpcon_ +ztpmqrt_ +ztpqrt2_ +ztpqrt_ +ztprfb_ +ztprfs_ +ztptri_ +ztptrs_ +ztpttf_ +ztpttr_ +ztrcon_ +ztrevc_ +ztrexc_ +ztrrfs_ +ztrsen_ +ztrsna_ +ztrsyl_ +ztrti2_ +ztrtri_ +ztrtrs_ +ztrttf_ +ztrttp_ +ztzrqf_ +ztzrzf_ +zunbdb_ +zuncsd_ +zung2l_ +zung2r_ +zungbr_ +zunghr_ +zungl2_ +zunglq_ +zungql_ +zungqr_ +zungr2_ +zungrq_ +zungtr_ +zunm2l_ +zunm2r_ +zunmbr_ +zunmhr_ +zunml2_ +zunmlq_ +zunmql_ +zunmqr_ +zunmr2_ +zunmr3_ +zunmrq_ +zunmrz_ +zunmtr_ +zupgtr_ +zupmtr_ +chla_transtype__ +ieeeck_ +iladiag_ +ilaenv_ +ilaprec_ +ilatrans_ +ilauplo_ +ilaver_ +iparmq_ +lsamen_ From e0bf3a334ce4adab982c2d056a8b74298c2377c8 Mon Sep 17 00:00:00 2001 From: Andrew Sun Date: Wed, 2 Feb 2022 14:09:16 -0500 Subject: [PATCH 163/226] libgcrypt: update to 1.10.0 --- mingw-w64-libgcrypt/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mingw-w64-libgcrypt/PKGBUILD b/mingw-w64-libgcrypt/PKGBUILD index c7a6e5b6c0..15cdada34c 100644 --- a/mingw-w64-libgcrypt/PKGBUILD +++ b/mingw-w64-libgcrypt/PKGBUILD @@ -4,7 +4,7 @@ _realname=libgcrypt pkgbase="mingw-w64-${_realname}" pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=1.9.4 +pkgver=1.10.0 pkgrel=1 pkgdesc="General purpose cryptographic library based on the code from GnuPG (mingw-w64)" arch=('any') @@ -23,7 +23,7 @@ validpgpkeys=('D8692123C4065DEA5E0F3AB5249B39D24F25E3B6' '031EC2536E580D8EA286A9F22071B08A33BD3F06' '5B80C5754298F0CB55D8ED6ABCEF7E294B092E28' '6DAA6E64A76D2840571B4902528897B826403ADA') -sha256sums=('ea849c83a72454e3ed4267697e8ca03390aee972ab421e7df69dfe42b65caaf7' +sha256sums=('6a00f5c05caa4c4acc120c46b63857da0d4ff61dc4b4b03933fa8d46013fae81' 'SKIP' '55cf915badebb4b3cfa671eea725aebb77be791aa39a19caef090ded4f38d8eb' 'd6855fc9b7a3a7fa440be1d9ae3477f8c08524d1aab1a8c7bb26d62b55382f72') From ee4c9ea90198b93e92a8c81a95627e69ff08ba6d Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Wed, 2 Feb 2022 19:52:34 +0100 Subject: [PATCH 164/226] Add python-installer package --- mingw-w64-python-installer/PKGBUILD | 85 +++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 mingw-w64-python-installer/PKGBUILD diff --git a/mingw-w64-python-installer/PKGBUILD b/mingw-w64-python-installer/PKGBUILD new file mode 100644 index 0000000000..f4a4d7e896 --- /dev/null +++ b/mingw-w64-python-installer/PKGBUILD @@ -0,0 +1,85 @@ +# Maintainer: Christoph Reiter + +_realname=installer +pkgbase=mingw-w64-python-${_realname} +pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") +pkgver=0.4.0 +pkgrel=1 +pkgdesc="A low-level library for installing from a Python wheel distribution (mingw-w64)" +arch=('any') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') +url='https://github.com/pradyunsg/installer' +license=('spdx:MIT') +depends=("${MINGW_PACKAGE_PREFIX}-python") +makedepends=( + "${MINGW_PACKAGE_PREFIX}-python-flit" + "${MINGW_PACKAGE_PREFIX}-cc" + "unzip" +) +_commit="32836e96e14d85db1f864ab5ff46ceb84b4a7673" +_launcher_commit="8c455825fc1308d34a1a47238a9eb6d56f732142" +source=("${_realname}-$pkgver"::"git+https://github.com/pradyunsg/installer.git#commit=${_commit}" + "simple_launcher"::"git+https://bitbucket.org/vinay.sajip/simple_launcher.git#commit=${_launcher_commit}") +sha256sums=('SKIP' + 'SKIP') + +prepare() { + cd "${srcdir}/${_realname}-${pkgver}" + +} + +build() { + cd "${srcdir}/simple_launcher" + windres --input launcher.rc --output resources.res --output-format=coff + + local _gui_cflags="$CFLAGS -mwindows" + local _cli_cflags="$CFLAGS" + local _gui_lflags="-lshlwapi" + local _cli_lflags="-lshlwapi" + case "$MSYSTEM" in + MINGW*) + _gui_cflags+=" -mcrtdll=msvcr120" + _cli_cflags+=" -mcrtdll=msvcr120" + ;; + esac + + case "${MINGW_CHOST}" in + i686-w64-mingw32) + cc $_cli_cflags -o t32.exe launcher.c resources.res $_cli_lflags + cc $_gui_cflags -o w32.exe launcher.c resources.res $_gui_lflags + ;; + x86_64-w64-mingw32) + cc $_cli_cflags -o t64.exe launcher.c resources.res $_cli_lflags + cc $_gui_cflags -o w64.exe launcher.c resources.res $_gui_lflags + ;; + aarch64-w64-mingw32) + cc $_cli_cflags -o t64-arm.exe launcher.c resources.res $_cli_lflags + cc $_gui_cflags -o w64-arm.exe launcher.c resources.res $_gui_lflags + ;; + *) + echo "Unsupported CHOST ${MINGW_CHOST}" && false + ;; + esac + + cd "${srcdir}/${_realname}-${pkgver}" + + flit build --no-setup-py +} + +package() { + cd "${srcdir}/${_realname}-${pkgver}" + + local site_packages="$(python3 -c "import sysconfig; print(sysconfig.get_path('purelib', 'posix_prefix', {'base': ''}), end='')")" + local target="${pkgdir}${MINGW_PREFIX}${site_packages}" + mkdir -p "${target}" + unzip -q "dist/"*.whl -d "${target}" + + # Replace launchers + rm "${target}"/installer/_scripts/*.exe + cd "${srcdir}/simple_launcher" + cp *.exe "${target}"/installer/_scripts/ + + # compile Python bytecode + ${MINGW_PREFIX}/bin/python -m compileall -d / "${target}" + ${MINGW_PREFIX}/bin/python -O -m compileall -d / "${target}" +} From 3c8232068deba87f74e65ae5f420f3ce7e3b12e5 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Thu, 3 Feb 2022 09:59:21 +0530 Subject: [PATCH 165/226] python-black: update to 22.1.0 Fix dependencies. --- mingw-w64-python-black/PKGBUILD | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/mingw-w64-python-black/PKGBUILD b/mingw-w64-python-black/PKGBUILD index 05c7823309..065f5afa5a 100644 --- a/mingw-w64-python-black/PKGBUILD +++ b/mingw-w64-python-black/PKGBUILD @@ -3,30 +3,27 @@ _realname=black pkgbase=mingw-w64-python-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") -pkgver=21.6b0 -pkgrel=2 +pkgver=22.1.0 +pkgrel=1 pkgdesc='Uncompromising Python code formatter (mingw-w64)' arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') url="https://github.com/psf/black" license=('MIT') -depends=("${MINGW_PACKAGE_PREFIX}-python-appdirs" - "${MINGW_PACKAGE_PREFIX}-python-click" +depends=("${MINGW_PACKAGE_PREFIX}-python-click" "${MINGW_PACKAGE_PREFIX}-python-mypy_extensions" "${MINGW_PACKAGE_PREFIX}-python-pathspec" - "${MINGW_PACKAGE_PREFIX}-python-regex" - "${MINGW_PACKAGE_PREFIX}-python-toml" - "${MINGW_PACKAGE_PREFIX}-python-typed_ast" + "${MINGW_PACKAGE_PREFIX}-python-platformdirs" + "${MINGW_PACKAGE_PREFIX}-python-tomli" "${MINGW_PACKAGE_PREFIX}-python-typing_extensions") makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools" "${MINGW_PACKAGE_PREFIX}-python-setuptools-scm") checkdepends=("${MINGW_PACKAGE_PREFIX}-python-aiohttp-cors") options=('!emptydirs') source=("https://files.pythonhosted.org/packages/source/${_realname:0:1}/${_realname}/${_realname}-${pkgver}.tar.gz") -sha256sums=('dc132348a88d103016726fe360cb9ede02cecf99b76e3660ce6c596be132ce04') +sha256sums=('a7c0192d35635f6fc1174be575cb7915e92e5dd629ee79fdaf0dcfa41a80afb5') prepare() { - cd "$srcdir" rm -rf python-build-${CARCH} | true cp -r "${_realname}-$pkgver" "python-build-${CARCH}" } From 30fec26197e1d7a867ab38e6ae0e33d1a08ca252 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Thu, 3 Feb 2022 10:03:37 +0530 Subject: [PATCH 166/226] python-bleach: update to 4.1.0 Install license file. --- mingw-w64-python-bleach/PKGBUILD | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/mingw-w64-python-bleach/PKGBUILD b/mingw-w64-python-bleach/PKGBUILD index dc92574426..3ddbdf0582 100644 --- a/mingw-w64-python-bleach/PKGBUILD +++ b/mingw-w64-python-bleach/PKGBUILD @@ -6,19 +6,19 @@ pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") provides=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") conflicts=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") replaces=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") -pkgver=3.3.0 -pkgrel=2 +pkgver=4.1.0 +pkgrel=1 pkgdesc="An easy whitelist-based HTML-sanitizing tool (mingw-w64)" url="https://pypi.python.org/pypi/bleach" arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') license=('Apache') depends=("${MINGW_PACKAGE_PREFIX}-python" "${MINGW_PACKAGE_PREFIX}-python-html5lib" "${MINGW_PACKAGE_PREFIX}-python-packaging") makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools") source=(${_realname}-${pkgver}.tar.gz::https://pypi.org/packages/source/b/${_realname}/${_realname}-${pkgver}.tar.gz) -sha256sums=('98b3170739e5e83dd9dc19633f074727ad848cbedb6026708c8ac2d3b697a433') +sha256sums=('0900d8b37eba61a802ee40ac0061f8c2b5dee29c1927dd1d233e075ebf5a71da') prepare() { rm -rf python-build-${CARCH} | true @@ -35,4 +35,6 @@ package() { MSYS2_ARG_CONV_EXCL="--prefix=;--install-scripts=;--install-platlib=" \ ${MINGW_PREFIX}/bin/python setup.py install --root=${pkgdir} --prefix=${MINGW_PREFIX} --optimize=1 --skip-build + + install -Dm644 LICENSE "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE" } From 2bb2b0b109bc997f5e9d48b8344d6c13d62bc585 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Thu, 3 Feb 2022 10:06:25 +0530 Subject: [PATCH 167/226] python-pathspec: update to 0.9.0 --- mingw-w64-python-pathspec/PKGBUILD | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/mingw-w64-python-pathspec/PKGBUILD b/mingw-w64-python-pathspec/PKGBUILD index 12c03d9092..35abfee65e 100644 --- a/mingw-w64-python-pathspec/PKGBUILD +++ b/mingw-w64-python-pathspec/PKGBUILD @@ -3,8 +3,8 @@ _realname=pathspec pkgbase=mingw-w64-python-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") -pkgver=0.8.1 -pkgrel=2 +pkgver=0.9.0 +pkgrel=1 pkgdesc='Utility library for gitignore style pattern matching of file paths (mingw-w64)' arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') @@ -13,10 +13,9 @@ license=('MPL2') depends=("${MINGW_PACKAGE_PREFIX}-python") makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools") source=("https://files.pythonhosted.org/packages/source/${_realname::1}/$_realname/$_realname-$pkgver.tar.gz") -sha256sums=('86379d6b86d75816baba717e64b1a3a3469deb93bb76d613c9ce79edc5cb68fd') +sha256sums=('e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1') prepare() { - cd "$srcdir" rm -rf python-build-${CARCH} | true cp -r "${_realname}-${pkgver}" "python-build-${CARCH}" } From ae74044f61a41bbcb19315c3d33378049601fd2d Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Thu, 3 Feb 2022 10:10:01 +0530 Subject: [PATCH 168/226] python-pytest-forked: update to 1.4.0 --- mingw-w64-python-pytest-forked/PKGBUILD | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/mingw-w64-python-pytest-forked/PKGBUILD b/mingw-w64-python-pytest-forked/PKGBUILD index 3a92efe5ff..03dbc69ff7 100644 --- a/mingw-w64-python-pytest-forked/PKGBUILD +++ b/mingw-w64-python-pytest-forked/PKGBUILD @@ -6,25 +6,22 @@ pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") provides=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") conflicts=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") replaces=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") -pkgver=1.3.0 -pkgrel=2 +pkgver=1.4.0 +pkgrel=1 pkgdesc="run tests in isolated forked subprocesses (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') url='https://github.com/pytest-dev/pytest-forked' license=('MIT') -validpgpkeys=('gpg_KEY') depends=("${MINGW_PACKAGE_PREFIX}-python" "${MINGW_PACKAGE_PREFIX}-python-pytest") makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools" "${MINGW_PACKAGE_PREFIX}-python-setuptools-scm") options=('staticlibs' 'strip' '!debug') source=("${_realname}-${pkgver}.tar.gz"::"https://github.com/pytest-dev/pytest-forked/archive/v${pkgver}.tar.gz") -sha256sums=('590671f1d2bba38db5d4b3f397a7bf0d5341da15ed783229c4b6ebf070359fc0') +sha256sums=('22f3a65ef24d45fa03c6fec0d4b582f5f02bea4df26966c1b9812d3a64b44ace') prepare() { - cd "${srcdir}" - rm -rf python-build-${CARCH} | true cp -r "${_realname}-${pkgver}" "python-build-${CARCH}" From 31667af8cabf4c2d960449d9e8ba55c816df850f Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Thu, 3 Feb 2022 10:13:46 +0530 Subject: [PATCH 169/226] python-pytest-xdist: update to 2.5.0 Fix upstream url. --- mingw-w64-python-pytest-xdist/PKGBUILD | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/mingw-w64-python-pytest-xdist/PKGBUILD b/mingw-w64-python-pytest-xdist/PKGBUILD index 6f43316ba8..b376ee3e5c 100644 --- a/mingw-w64-python-pytest-xdist/PKGBUILD +++ b/mingw-w64-python-pytest-xdist/PKGBUILD @@ -6,13 +6,13 @@ pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") provides=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") conflicts=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") replaces=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") -pkgver=1.31.0 -pkgrel=2 +pkgver=2.5.0 +pkgrel=1 pkgdesc="py.test xdist plugin for distributed testing and loop-on-failing modes (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') license=('MIT') -url='https://bitbucket.org/pytest-dev/pytest-xdist' +url='https://github.com/pytest-dev/pytest-xdist/' depends=("${MINGW_PACKAGE_PREFIX}-python" "${MINGW_PACKAGE_PREFIX}-python-pytest-forked" "${MINGW_PACKAGE_PREFIX}-python-execnet") @@ -22,10 +22,9 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-python-pytest" "${MINGW_PACKAGE_PREFIX}-python-setuptools-scm") options=('staticlibs' 'strip' '!debug') source=("${_realname}-${pkgver}.tar.gz"::"https://github.com/pytest-dev/pytest-xdist/archive/v${pkgver}.tar.gz") -sha512sums=('48c18802f5573ed4ceb061e82aea2046e3b19ad54e595ef666e095409d393cc301e729edd34eab999eae85184fc22c9d5fcda6ae334d183265e4baddcb6dfa46') +sha512sums=('41f71b18e294909f2f03ecd61cba4209249a0ec77cdfb57d5fe42efd3011057e6aa70e9d629cd274e54bdaa4206c7d640c782c9e231163c70718f9972c33af90') prepare() { - cd "${srcdir}" rm -rf python-build-${CARCH} | true cp -r "${_realname}-${pkgver}" "python-build-${CARCH}" From 6964600c7cf85840d22403e9fd68135f39090534 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Thu, 3 Feb 2022 10:16:35 +0530 Subject: [PATCH 170/226] python-tornado: update to 6.1.0 Install license file. --- mingw-w64-python-tornado/PKGBUILD | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/mingw-w64-python-tornado/PKGBUILD b/mingw-w64-python-tornado/PKGBUILD index 8b3505c348..0230f3cebd 100644 --- a/mingw-w64-python-tornado/PKGBUILD +++ b/mingw-w64-python-tornado/PKGBUILD @@ -6,18 +6,18 @@ pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") provides=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") conflicts=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") replaces=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") -pkgver=6.0.4 -pkgrel=2 +pkgver=6.1.0 +pkgrel=1 pkgdesc="open source version of the scalable, non-blocking web server and tools (mingw-w64)" arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') url='https://www.tornadoweb.org/' license=('Apache') depends=("${MINGW_PACKAGE_PREFIX}-python") makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools" "${MINGW_PACKAGE_PREFIX}-cc") source=("${_realname}-${pkgver}.tar.gz::https://github.com/tornadoweb/tornado/archive/v${pkgver}.tar.gz") -sha256sums=('bce8d8c57e9c91925d96b73fd3c5c0d38ba99000c8ee45fd5f30ce022ea90657') +sha256sums=('53a4300b786998c516fcacb76a00db6200829bf1d9b8d57e3c150bfd262e2bc8') noextract=("${_realname}-${pkgver}.tar.gz") prepare() { @@ -48,4 +48,6 @@ package() { MSYS2_ARG_CONV_EXCL="--prefix=;--install-scripts=;--install-platlib=" \ ${MINGW_PREFIX}/bin/python setup.py install --prefix=${MINGW_PREFIX} \ --root="${pkgdir}" --optimize=1 --skip-build + + install -Dm644 LICENSE "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE" } From d2a98e838498126bf5bfd45229717445981300f7 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Thu, 3 Feb 2022 09:45:41 +0100 Subject: [PATCH 171/226] fontconfig: Update to 2.13.95 --- mingw-w64-fontconfig/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mingw-w64-fontconfig/PKGBUILD b/mingw-w64-fontconfig/PKGBUILD index 297b97b7a8..104fefaf9b 100644 --- a/mingw-w64-fontconfig/PKGBUILD +++ b/mingw-w64-fontconfig/PKGBUILD @@ -4,7 +4,7 @@ _realname=fontconfig pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=2.13.94 +pkgver=2.13.95 pkgrel=1 pkgdesc="A library for configuring and customizing font access (mingw-w64)" arch=('any') @@ -29,7 +29,7 @@ source=("https://www.freedesktop.org/software/fontconfig/release/fontconfig-${pk 0005-fix-setenv.mingw.patch 0007-pkgconfig.mingw.patch fontconfig.hook.in) -sha256sums=('a5f052cb73fd479ffb7b697980510903b563bbb55b8f7a2b001fcfb94026003c' +sha256sums=('f746bcbfae4e4f76395d5251b3b414976e4d269ef7269c7c7bca9ba4e4c61aab' '1266d4bbd8270f013fee2401c890f0251babf50a175a69d681d3a6af5003c899' '9e5700b9c555e60cd8116fdc2e24cf0a01de01e83373dbbe78cef1e32b91da3b' '57ff8420dbf62873b6fcb38b52fb7b37e0e278425a9125e15dccba54668c8ab9' From 5fc83fe2dd234957cc0de37db2d9c309104eb70c Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Thu, 3 Feb 2022 09:49:03 +0100 Subject: [PATCH 172/226] python-installer: makedepend on git --- mingw-w64-python-installer/PKGBUILD | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mingw-w64-python-installer/PKGBUILD b/mingw-w64-python-installer/PKGBUILD index f4a4d7e896..1ffc1eb7ef 100644 --- a/mingw-w64-python-installer/PKGBUILD +++ b/mingw-w64-python-installer/PKGBUILD @@ -4,7 +4,7 @@ _realname=installer pkgbase=mingw-w64-python-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") pkgver=0.4.0 -pkgrel=1 +pkgrel=2 pkgdesc="A low-level library for installing from a Python wheel distribution (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') @@ -15,6 +15,7 @@ makedepends=( "${MINGW_PACKAGE_PREFIX}-python-flit" "${MINGW_PACKAGE_PREFIX}-cc" "unzip" + "git" ) _commit="32836e96e14d85db1f864ab5ff46ceb84b4a7673" _launcher_commit="8c455825fc1308d34a1a47238a9eb6d56f732142" From e13b81aaeb6b8401829ac335f15e5643c012a7d2 Mon Sep 17 00:00:00 2001 From: Mehdi Chinoune Date: Thu, 3 Feb 2022 07:56:10 +0100 Subject: [PATCH 173/226] llvm: update to 13.0.1 - Part1 --- mingw-w64-clang/PKGBUILD | 19 +++++++++---------- mingw-w64-clang/README-patches.md | 7 ++++--- mingw-w64-libc++/PKGBUILD | 15 ++++++++------- 3 files changed, 21 insertions(+), 20 deletions(-) diff --git a/mingw-w64-clang/PKGBUILD b/mingw-w64-clang/PKGBUILD index bba34382eb..c470219a86 100644 --- a/mingw-w64-clang/PKGBUILD +++ b/mingw-w64-clang/PKGBUILD @@ -20,8 +20,8 @@ pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}" "${MINGW_PACKAGE_PREFIX}-compiler-rt" "${MINGW_PACKAGE_PREFIX}-lld" "${MINGW_PACKAGE_PREFIX}-llvm") -pkgver=13.0.0 -pkgrel=5 +pkgver=13.0.1 +pkgrel=1 pkgdesc="C language family frontend for LLVM (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') @@ -69,17 +69,17 @@ source=("${_url}/llvm-${pkgver}.src.tar.xz"{,.sig} #0101-0199 -> clang #0201-0299 -> rt #0301-0399 -> lld -sha256sums=('408d11708643ea826f519ff79761fcdfc12d641a2510229eec459e72f8163020' +sha256sums=('ec6b80d82c384acad2dc192903a6cf2cdbaffb889b84bfb98da9d71e630fc834' 'SKIP' - '5d611cbb06cfb6626be46eb2f23d003b2b80f40182898daa54b1c4e8b5b9e17e' + '787a9e2d99f5c8720aa1773e4be009461cd30d3bd40fdd24591e473467c917c9' 'SKIP' - '428b6060a28b22adf0cdf5d827abbc2ba81809f4661ede3d02b1d3fedaa3ead5' + 'cc2bc8598848513fa2257a270083e986fd61048347eccf1d801926ea709392d0' 'SKIP' - '4c3602d76c7868a96b30c36165c4b7643e2a20173fced7e071b4baeb2d74db3f' + '7b33955031f9a9c5d63077dedb0f99d77e4e7c996266952c1cec55626dca5dfc' 'SKIP' - '20d1900bcd64ff62047291f6edb6ba2fed34d782675ff68713bf0c2fc9e69386' + '666af745e8bf7b680533b4d18b7a31dc7cab575b1e6e4d261922bbafd9644cfb' 'SKIP' - '36f819091216177a61da639244eda67306ccdd904c757d70d135e273278b65e1' + 'e206dbf1bbe058a113bffe189386ded99a160b2443ee1e2cd41ff810f78551ba' 'SKIP' '403f1711270ab62988d9f6a111a95049711cb36be6763025734ff4ded4b5e091' '8831c6ea72baa315b20e5f1a9008a9bf4098ba8a18d5331f05216604489063a4' @@ -196,7 +196,7 @@ build() { if (( _clangprefix )); then # A bit hacky but it works - local _clang_links="clang++;clang-cpp;as;c++;cc;cpp;g++;gcc;${MINGW_CHOST}-cc;${MINGW_CHOST}-c++;${MINGW_CHOST}-clang;${MINGW_CHOST}-clang++;${MINGW_CHOST}-g++;${MINGW_CHOST}-gcc" + local _clang_links="clang++;clang-cpp;as;c++;cc;cpp;${MINGW_CHOST}-cc;${MINGW_CHOST}-c++;${MINGW_CHOST}-clang;${MINGW_CHOST}-clang++" platform_config+=(-DCLANG_DEFAULT_RTLIB=compiler-rt -DCLANG_DEFAULT_UNWINDLIB=libunwind @@ -286,7 +286,6 @@ package_clang() { "${MINGW_PACKAGE_PREFIX}-winpthreads" \ || echo "${MINGW_PACKAGE_PREFIX}-gcc")) provides=($( (( _clangprefix )) && echo \ - "${MINGW_PACKAGE_PREFIX}-gcc" \ "${MINGW_PACKAGE_PREFIX}-cc" \ || true )) diff --git a/mingw-w64-clang/README-patches.md b/mingw-w64-clang/README-patches.md index 9c5b997870..c539360b54 100644 --- a/mingw-w64-clang/README-patches.md +++ b/mingw-w64-clang/README-patches.md @@ -1,6 +1,7 @@ -### Patches statuses +# Patches statuses Legend: + - :grey_exclamation: - not meant to upstream, for compatibility with GCC only - :x: - not upstreamed - :grey_question: - sent but not merged yet @@ -8,6 +9,7 @@ Legend: - :arrow_down_small: - backported ----- + - `"0001-Use-posix-style-path-separators-with-MinGW.patch"` :x::x::x: - this one is really imporant - `"0002-Fix-GetHostTriple-for-mingw-w64-in-msys.patch"` :x: - `"0003-CMake-try-creating-symlink-first-on-windows.patch"` :x: (win symlinks don't play well with pacman packages) @@ -16,7 +18,6 @@ Legend: - `"0101-Disable-fPIC-errors.patch"` :x: - `"0103-Use-posix-style-path-separators-with-MinGW.patch"` :x::x::x: - this one is really imporant - `"0104-link-pthread-with-mingw.patch"` :grey_exclamation: -- `"0105-clang-Tooling-Use-Windows-command-lines.patch"` :arrow_up_small: - https://reviews.llvm.org/D111195 +- `"0105-clang-Tooling-Use-Windows-command-lines.patch"` :arrow_up_small: - [https://reviews.llvm.org/D111195] - `"0304-ignore-new-bfd-options.patch"` :x: -- `"0501-lldb-Make-the-thread_local-g_global_boundary-accesse.patch"` :arrow_down_small: - https://reviews.llvm.org/D111779 - `"0901-cast-to-make-gcc-happy.patch"` :grey_exclamation: diff --git a/mingw-w64-libc++/PKGBUILD b/mingw-w64-libc++/PKGBUILD index c51b7aef38..fe3d1fb2b2 100644 --- a/mingw-w64-libc++/PKGBUILD +++ b/mingw-w64-libc++/PKGBUILD @@ -9,8 +9,8 @@ pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}" "${MINGW_PACKAGE_PREFIX}-${_realname}abi" "${MINGW_PACKAGE_PREFIX}-libunwind") -pkgver=13.0.0 -pkgrel=3 +pkgver=13.0.1 +pkgrel=1 url="https://libcxx.llvm.org/" arch=(any) mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') @@ -20,20 +20,21 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-cmake" "${MINGW_PACKAGE_PREFIX}-ninja" "${MINGW_PACKAGE_PREFIX}-clang" "${MINGW_PACKAGE_PREFIX}-lld" - "${MINGW_PACKAGE_PREFIX}-compiler-rt") + "${MINGW_PACKAGE_PREFIX}-compiler-rt" + "${MINGW_PACKAGE_PREFIX}-python") options=('!debug' 'strip') _url=https://github.com/llvm/llvm-project/releases/download/llvmorg-${pkgver} source=("${_url}/llvm-${pkgver}.src.tar.xz"{,.sig} "${_url}/libcxx-${pkgver}.src.tar.xz"{,.sig} "${_url}/libcxxabi-${pkgver}.src.tar.xz"{,.sig} "${_url}/libunwind-${pkgver}.src.tar.xz"{,.sig}) -sha256sums=('408d11708643ea826f519ff79761fcdfc12d641a2510229eec459e72f8163020' +sha256sums=('ec6b80d82c384acad2dc192903a6cf2cdbaffb889b84bfb98da9d71e630fc834' 'SKIP' - '3682f16ce33bb0a8951fc2c730af2f9b01a13b71b2b0dc1ae1e7034c7d86ca1a' + '2f446acc00bb7cfb4e866c2fa46d1b6dbf4e7d2ab62e3c3d84e56f7b9e28110f' 'SKIP' - 'becd5f1cd2c03cd6187558e9b4dc8a80b6d774ff2829fede88aa1576c5234ce3' + 'db5fa6093c786051e8b1c85527240924eceb6c95eeff0a2bbc57be8422b3cef1' 'SKIP' - '36f819091216177a61da639244eda67306ccdd904c757d70d135e273278b65e1' + 'e206dbf1bbe058a113bffe189386ded99a160b2443ee1e2cd41ff810f78551ba' 'SKIP') validpgpkeys=('B6C8F98282B944E3B0D5C2530FC3042E345AD05D' # Hans Wennborg, Google. '474E22316ABF4785A88C6E8EA2C794A986419D8A') # Tom Stellard From a5b42fc9a6b79c47e2560fc12e03feb5aba4b63e Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Thu, 3 Feb 2022 12:29:38 +0100 Subject: [PATCH 174/226] gh: update to v2.5.0 Signed-off-by: Johannes Schindelin --- mingw-w64-github-cli/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mingw-w64-github-cli/PKGBUILD b/mingw-w64-github-cli/PKGBUILD index f1c4d574f2..88c3f626b5 100644 --- a/mingw-w64-github-cli/PKGBUILD +++ b/mingw-w64-github-cli/PKGBUILD @@ -3,7 +3,7 @@ _realname=github-cli pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}") -pkgver=2.4.0 +pkgver=2.5.0 pkgrel=1 pkgdesc='The GitHub CLI (mingw-w64)' arch=('any') @@ -17,7 +17,7 @@ optdepends=("git: To interact with repositories") options=('!strip') source=("$_realname-$pkgver.tar.gz::$url/archive/v$pkgver.tar.gz" "gh") -sha256sums=('3c87db4d9825a342fc55bd7f27461099dd46291aea4a4a29bb95d3c896403f94' +sha256sums=('4e9d1cbcdd2346cab5b7fc176cd57c07ed3628a0241fad8a48fe4df6a354b120' '9ee5f2b44b7e9aa751508f02c1020e341e0212a9aa146b7428eb5ffea310be27') build() { cd "cli-$pkgver" From c0085ac6e49008d098b42bfaedd3deda7a4366d7 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Thu, 3 Feb 2022 12:39:07 +0100 Subject: [PATCH 175/226] gh: need to specify explicitly that we need a C compiler The `mingw-w64-cc` dependency is resolved by either GCC or clang. Signed-off-by: Johannes Schindelin --- mingw-w64-github-cli/PKGBUILD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mingw-w64-github-cli/PKGBUILD b/mingw-w64-github-cli/PKGBUILD index 88c3f626b5..fd778f9b0b 100644 --- a/mingw-w64-github-cli/PKGBUILD +++ b/mingw-w64-github-cli/PKGBUILD @@ -11,7 +11,7 @@ mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64') url="https://github.com/cli/cli" license=('MIT') depends=("winpty") -makedepends=("${MINGW_PACKAGE_PREFIX}-go") +makedepends=("${MINGW_PACKAGE_PREFIX}-go" "${MINGW_PACKAGE_PREFIX}-cc") checkdepends=("git") optdepends=("git: To interact with repositories") options=('!strip') From f01fc9edd51afc0c37759410db35f743361de532 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milo=C5=A1=20Komar=C4=8Devi=C4=87?= Date: Thu, 3 Feb 2022 14:35:10 +0100 Subject: [PATCH 176/226] lcms2: update to 2.13.1 hotfix --- mingw-w64-lcms2/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mingw-w64-lcms2/PKGBUILD b/mingw-w64-lcms2/PKGBUILD index e838e37d8d..e44979b487 100644 --- a/mingw-w64-lcms2/PKGBUILD +++ b/mingw-w64-lcms2/PKGBUILD @@ -4,7 +4,7 @@ _realname=lcms2 pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}") -pkgver=2.13 +pkgver=2.13.1 pkgrel=1 pkgdesc="Small-footprint color management engine, version 2 (mingw-w64)" arch=('any') @@ -17,7 +17,7 @@ depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs" "${MINGW_PACKAGE_PREFIX}-libtiff") options=('staticlibs' 'strip') source=("https://downloads.sourceforge.net/sourceforge/lcms/${_realname}-${pkgver}.tar.gz") -sha256sums=('0c67a5cc144029cfa34647a52809ec399aae488db4258a6a66fba318474a070f') +sha256sums=('d473e796e7b27c5af01bd6d1552d42b45b43457e7182ce9903f38bb748203b88') prepare() { cd "${srcdir}"/${_realname}-${pkgver} From c7d14a12ca30a6fbd708d60d347b646a6fc2c12f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milo=C5=A1=20Komar=C4=8Devi=C4=87?= Date: Thu, 3 Feb 2022 09:55:57 +0100 Subject: [PATCH 177/226] python-pillow: update to 9.0.1 --- mingw-w64-python-pillow/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mingw-w64-python-pillow/PKGBUILD b/mingw-w64-python-pillow/PKGBUILD index 91c59044ff..d21aa1ebdd 100644 --- a/mingw-w64-python-pillow/PKGBUILD +++ b/mingw-w64-python-pillow/PKGBUILD @@ -3,7 +3,7 @@ _realname=Pillow pkgbase=mingw-w64-python-pillow pkgname=("${MINGW_PACKAGE_PREFIX}-python-pillow") -pkgver=9.0.0 +pkgver=9.0.1 pkgrel=1 provides=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}=${pkgver}" "${MINGW_PACKAGE_PREFIX}-python3-pillow=${pkgver}") @@ -32,7 +32,7 @@ optdepends=("${MINGW_PACKAGE_PREFIX}-tk: for the ImageTK module" "${MINGW_PACKAGE_PREFIX}-libraqm: complex text layout support") options=('staticlibs') source=(${_realname}-${pkgver}.tar.gz::https://github.com/python-pillow/Pillow/archive/${pkgver}.tar.gz) -sha256sums=('da6e69e9f11e9ea7081730abbf7bb8b0539cacfafa7a2ce934e1fe088db68fe7') +sha256sums=('01305f0befb644ce7fe90aa0c87573b9163a21d0e65149e8166c24974d9d37d2') prepare() { cd ${srcdir} From 0159657ee3648bca2f835f0737f4c85c17a1cba3 Mon Sep 17 00:00:00 2001 From: Leandro Nini Date: Thu, 3 Feb 2022 17:08:51 +0100 Subject: [PATCH 178/226] Add new package xa65 A 6502/65816 cross assembler --- mingw-w64-xa65/PKGBUILD | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 mingw-w64-xa65/PKGBUILD diff --git a/mingw-w64-xa65/PKGBUILD b/mingw-w64-xa65/PKGBUILD new file mode 100644 index 0000000000..f22e0aeef0 --- /dev/null +++ b/mingw-w64-xa65/PKGBUILD @@ -0,0 +1,33 @@ +# + +_realname=xa65 +pkgbase=mingw-w64-${_realname} +pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" +pkgver=2.3.11 +pkgrel=1 +pkgdesc="6502/65816 cross assembler" +arch=('any') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') +license=('GPL2') +url="http://www.floodgap.com/retrotech/xa/" +depends=() +makedepends=("${MINGW_PACKAGE_PREFIX}-gcc") +options=(!strip staticlibs !buildflags) +source=("https://github.com/fachat/${_realname}/archive/xa-${pkgver}.tar.gz") +sha256sums=('0a1bdaa4a0059f2ecaa577ad322b5618a4d79adb68a7e95721293c95a995a11a') + +prepare() { + cd ${srcdir}/${_realname}-xa-${pkgver}/xa + sed -i '/DESTDIR =/d' Makefile +} + +build() { + cd ${srcdir}/${_realname}-xa-${pkgver}/xa + make ${MAKEFLAGS} +} + +package() { + cd ${srcdir}/${_realname}-xa-${pkgver}/xa + make DESTDIR=${pkgdir}${MINGW_PREFIX} install + install -Dm644 ${srcdir}/${_realname}-xa-${pkgver}/xa/README.1st ${pkgdir}${MINGW_PREFIX}/share/doc/${_realname}/README +} From 6a403f633eb705d362781c55be3aaade3124b1f8 Mon Sep 17 00:00:00 2001 From: Konstantin Podsvirov Date: Thu, 3 Feb 2022 21:47:12 +0300 Subject: [PATCH 179/226] python-nuitka: Update to 0.6.19.6 --- mingw-w64-python-nuitka/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mingw-w64-python-nuitka/PKGBUILD b/mingw-w64-python-nuitka/PKGBUILD index 78caf4195e..7b8f15b2f8 100644 --- a/mingw-w64-python-nuitka/PKGBUILD +++ b/mingw-w64-python-nuitka/PKGBUILD @@ -6,7 +6,7 @@ pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") provides=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") conflicts=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") replaces=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") -pkgver=0.6.19.3 +pkgver=0.6.19.6 pkgrel=1 pkgdesc="Python to native compiler (mingw-w64)" arch=('any') @@ -17,7 +17,7 @@ depends=("${MINGW_PACKAGE_PREFIX}-python") makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools") source=("https://nuitka.net/releases/Nuitka-${pkgver}.tar.gz") noextract=(Nuitka-$pkgver.tar.gz) -sha256sums=('4899ee17143344cdd35f3fbd15c09dd2cbfd5f8dabb04548c18018c2d1c492fc') +sha256sums=('cf03d83559546054d28a6ada888d7ef98529d53257d63041b752dd215037a71e') prepare() { [[ -d $srcdir/${_realname}-${pkgver} ]] && rm -rf ${srcdir}/${_realname}-${pkgver} From 0109edef84306faaff41796009188f91468c7714 Mon Sep 17 00:00:00 2001 From: Leandro Nini Date: Thu, 3 Feb 2022 20:37:26 +0100 Subject: [PATCH 180/226] Update mingw-w64-xa65/PKGBUILD Co-authored-by: Biswapriyo Nath --- mingw-w64-xa65/PKGBUILD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mingw-w64-xa65/PKGBUILD b/mingw-w64-xa65/PKGBUILD index f22e0aeef0..fccbb683c3 100644 --- a/mingw-w64-xa65/PKGBUILD +++ b/mingw-w64-xa65/PKGBUILD @@ -11,7 +11,7 @@ mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') license=('GPL2') url="http://www.floodgap.com/retrotech/xa/" depends=() -makedepends=("${MINGW_PACKAGE_PREFIX}-gcc") +makedepends=("${MINGW_PACKAGE_PREFIX}-cc") options=(!strip staticlibs !buildflags) source=("https://github.com/fachat/${_realname}/archive/xa-${pkgver}.tar.gz") sha256sums=('0a1bdaa4a0059f2ecaa577ad322b5618a4d79adb68a7e95721293c95a995a11a') From e8cddae3350135f1468ec61a2fc0c7837f6490ce Mon Sep 17 00:00:00 2001 From: Konstantin Podsvirov Date: Thu, 3 Feb 2022 22:49:41 +0300 Subject: [PATCH 181/226] tree-sitter: Update to 0.20.4 --- mingw-w64-tree-sitter/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mingw-w64-tree-sitter/PKGBUILD b/mingw-w64-tree-sitter/PKGBUILD index e7b2127048..ad70836140 100644 --- a/mingw-w64-tree-sitter/PKGBUILD +++ b/mingw-w64-tree-sitter/PKGBUILD @@ -3,7 +3,7 @@ _realname=tree-sitter pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=0.20.3 +pkgver=0.20.4 pkgrel=1 pkgdesc="An incremental parsing system for programming tools (mingw-w64)" arch=('any') @@ -13,7 +13,7 @@ license=('MIT') makedepends=("unzip" "${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-rust") source=("${_realname}-${pkgver}.zip::https://github.com/tree-sitter/tree-sitter/archive/v${pkgver}.zip" 001-mingw-build.patch) -sha256sums=('519f1ce0d35cb68a7e90088b51b6aad2f4d2df955f8c4fc39d44f2c97a0cc2e3' +sha256sums=('0ad5d53046a522860d66e6ecb768a3d52fc2bbb6b3afbea7e28439fd4ad6a705' '19d2a1608ca5c6138c228b97815c48ac95be2bec1265c207fdc0950a65b8ebad') noextract=("${_realname}-${pkgver}.zip") From 517893e80a071e66e924b091e3c9ca03d74524be Mon Sep 17 00:00:00 2001 From: Mehdi Chinoune Date: Thu, 3 Feb 2022 22:05:53 +0100 Subject: [PATCH 182/226] uasm: change dependency from gcc to cc --- mingw-w64-uasm/PKGBUILD | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mingw-w64-uasm/PKGBUILD b/mingw-w64-uasm/PKGBUILD index f4b9037f83..2b8d27b14b 100644 --- a/mingw-w64-uasm/PKGBUILD +++ b/mingw-w64-uasm/PKGBUILD @@ -4,16 +4,16 @@ _realname=uasm pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" pkgver=2.53.r668.8f8feb7 -pkgrel=1 +pkgrel=2 _commit='8f8feb76a3fec91c5038bb09dfc304df804f5e16' pkgdesc="UASM is a free MASM-compatible assembler based on JWasm" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') license=('Watcom-1.0') url="https://github.com/Terraspace/UASM" -depends=("${MINGW_PACKAGE_PREFIX}-gcc") +depends=("${MINGW_PACKAGE_PREFIX}-cc") options=('strip') -makedepends=("git" "${MINGW_PACKAGE_PREFIX}-cc") +makedepends=("git") source=("UASM"::"git+https://github.com/Terraspace/UASM.git#commit=$_commit") sha256sums=('SKIP') @@ -27,6 +27,7 @@ prepare() { cd ${srcdir}/UASM/ rm -rf MinGWR sed -i -e 's/^extra_c_flags = .*$/& -fcommon/' GccWin.mak + sed -i -e 's|gcc\.exe|cc.exe|g' GccWin.mak sed -i 's/s - cv.ps/(uint_8 *)s - cv.ps/;s/s - start/(uint_8*)s - start/' dbgcv.c } From e904238ad237edac958c8e5b66200dad0cf63cba Mon Sep 17 00:00:00 2001 From: Sutou Kouhei Date: Fri, 4 Feb 2022 09:52:05 +0900 Subject: [PATCH 183/226] arrow: Update to 7.0.0 --- mingw-w64-arrow/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mingw-w64-arrow/PKGBUILD b/mingw-w64-arrow/PKGBUILD index 1857dc6563..beb8ea5987 100644 --- a/mingw-w64-arrow/PKGBUILD +++ b/mingw-w64-arrow/PKGBUILD @@ -3,7 +3,7 @@ _realname=arrow pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=6.0.1 +pkgver=7.0.0 pkgrel=1 pkgdesc="Apache Arrow is a cross-language development platform for in-memory data (mingw-w64)" arch=(any) @@ -43,7 +43,7 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-boost" options=("staticlibs" "strip" "!buildflags") source=("apache-arrow-${pkgver}.tar.gz"::"https://www.apache.org/dyn/closer.lua?action=download&filename=arrow/arrow-${pkgver}/apache-arrow-${pkgver}.tar.gz" "apache-arrow-${pkgver}.tar.gz.asc"::"https://www.apache.org/dyn/closer.lua?action=download&filename=arrow/arrow-${pkgver}/apache-arrow-${pkgver}.tar.gz.asc") -sha256sums=('3786b3d2df954d078b3e68f98d2e5aecbaa3fa2accf075d7a3a13c187b9c5294' +sha256sums=('e8f49b149a15ecef4e40fcfab1b87c113c6b1ee186005c169e5cdf95d31a99de' 'SKIP') # See generate-valid-keys.sh validpgpkeys=('35CF82A165DDBBA29B307B7497D7E8647AE7E47B' From f4193fb00f82f15bdadd57443c8f5ef89c4eef47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milo=C5=A1=20Komar=C4=8Devi=C4=87?= Date: Fri, 4 Feb 2022 09:23:15 +0100 Subject: [PATCH 184/226] python-tifffile: update to 2022.2.2 --- mingw-w64-python-tifffile/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mingw-w64-python-tifffile/PKGBUILD b/mingw-w64-python-tifffile/PKGBUILD index 30665d77a6..414ae2953f 100644 --- a/mingw-w64-python-tifffile/PKGBUILD +++ b/mingw-w64-python-tifffile/PKGBUILD @@ -4,7 +4,7 @@ _realname=tifffile pkgbase=mingw-w64-python-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") -pkgver=2021.11.2 +pkgver=2022.2.2 pkgrel=1 pkgdesc="Read and write image data from and to TIFF files (mingw-w64)" arch=('any') @@ -18,7 +18,7 @@ optdepends=("${MINGW_PACKAGE_PREFIX}-python-imagecodecs: required only for encod "${MINGW_PACKAGE_PREFIX}-python-lxml: required only for validating and printing XML") options=('staticlibs' 'strip' '!debug') source=("${_realname}-${pkgver}.tar.gz"::"https://github.com/cgohlke/${_realname}/archive/v${pkgver}.tar.gz") -sha256sums=('68e4ec10bc189f7ea9526619bf4787ec7d9decb857c6f15a06a999bdff4abfc0') +sha256sums=('85a83c24a214e8baf09da1f85ca5a88b52610142f561ecc2873404ef50a3f6e3') prepare() { cd "${srcdir}" From b265dfd4e3f8ec332cc778fd33aea7eac40d58a7 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Fri, 4 Feb 2022 11:55:14 +0100 Subject: [PATCH 185/226] Remove cotire The projects is no longer supported upstream and is vendored in its only user mlpack. So remove the unused dependency for mlpack and drop the package. --- mingw-w64-cotire/PKGBUILD | 30 ------------------------------ mingw-w64-mlpack/PKGBUILD | 3 +-- 2 files changed, 1 insertion(+), 32 deletions(-) delete mode 100644 mingw-w64-cotire/PKGBUILD diff --git a/mingw-w64-cotire/PKGBUILD b/mingw-w64-cotire/PKGBUILD deleted file mode 100644 index 72171cab97..0000000000 --- a/mingw-w64-cotire/PKGBUILD +++ /dev/null @@ -1,30 +0,0 @@ -# Maintainer: Norbert Pfeiler - -_realname=cotire -pkgbase=mingw-w64-${_realname} -pkgname="$MINGW_PACKAGE_PREFIX-$_realname" -_cotirever=1.8.1 -_cmakever=3.21 -_cmakegooduntil=3.22 -pkgver=${_cotirever}_${_cmakever} -pkgrel=1 -pkgdesc='CMake module to speed up builds (automated PCH, unity builds) (mingw-w64)' -arch=(any) -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') -license=('custom') -conflicts=("$MINGW_PACKAGE_PREFIX-cmake<${_cmakever}" "$MINGW_PACKAGE_PREFIX-cmake>=${_cmakegooduntil}") # the Modules dir changes every major release -url='https://github.com/sakra/cotire' -source=("https://github.com/sakra/cotire/archive/${_realname}-${_cotirever}.tar.gz") -sha256sums=('79b976b9e822941e3e2a3d82881c5fbcfbc971156640cb745e74f845e764f192') - -package() { - cd "${_realname}-${_realname}-${_cotirever}" - - modules_dir="${pkgdir}${MINGW_PREFIX}/share/cmake-${_cmakever}/Modules/" - mkdir -p ${modules_dir} - cp CMake/cotire.cmake ${modules_dir} - - license_dir="${pkgdir}${MINGW_PREFIX}/share/licenses/cotire/" - mkdir -p ${license_dir} - cp license ${license_dir} -} diff --git a/mingw-w64-mlpack/PKGBUILD b/mingw-w64-mlpack/PKGBUILD index aa7f9143f7..d7f3020c35 100644 --- a/mingw-w64-mlpack/PKGBUILD +++ b/mingw-w64-mlpack/PKGBUILD @@ -4,7 +4,7 @@ _realname=mlpack pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" pkgver=3.4.2 -pkgrel=1 +pkgrel=2 pkgdesc='An intuitive, fast, scalable C++ machine learning library (mingw-w64)' arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') @@ -18,7 +18,6 @@ depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs" makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-cmake" "${MINGW_PACKAGE_PREFIX}-ninja" - "${MINGW_PACKAGE_PREFIX}-cotire" "${MINGW_PACKAGE_PREFIX}-doxygen") source=("https://www.mlpack.org/files/${_realname}-${pkgver}.tar.gz" "0001-mingw-w64-cmake.patch") From 7796962c436b0cd6a87dfa040f6dace871a9e8b8 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Fri, 4 Feb 2022 12:05:42 +0100 Subject: [PATCH 186/226] Remove all remaining runtime dependencies on gcc We want to get rid of this virtual package and make package depend on "cc" instead. See #10658 --- mingw-w64-gnucobol/PKGBUILD | 2 +- mingw-w64-msmpi/PKGBUILD | 2 +- mingw-w64-rust/PKGBUILD | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/mingw-w64-gnucobol/PKGBUILD b/mingw-w64-gnucobol/PKGBUILD index f1a83ec6c1..35a3a2d233 100644 --- a/mingw-w64-gnucobol/PKGBUILD +++ b/mingw-w64-gnucobol/PKGBUILD @@ -6,7 +6,7 @@ _realname=gnucobol pkgbase=mingw-w64-${_realname} pkgname=${MINGW_PACKAGE_PREFIX}-${_realname} pkgver=3.1.2 -pkgrel=1 +pkgrel=2 pkgdesc="GnuCOBOL, a free and modern COBOL compiler (mingw-w64)" conflicts=("${MINGW_PACKAGE_PREFIX}-${_realname}-svn" "${MINGW_PACKAGE_PREFIX}-gnu-cobol-svn") replaces=("${MINGW_PACKAGE_PREFIX}-${_realname}-svn" "${MINGW_PACKAGE_PREFIX}-gnu-cobol-svn") diff --git a/mingw-w64-msmpi/PKGBUILD b/mingw-w64-msmpi/PKGBUILD index 3d527e652e..abba392619 100644 --- a/mingw-w64-msmpi/PKGBUILD +++ b/mingw-w64-msmpi/PKGBUILD @@ -11,7 +11,7 @@ mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') url="https://docs.microsoft.com/en-us/message-passing-interface/microsoft-mpi" license=('MIT') makedepends=("${MINGW_PACKAGE_PREFIX}-binutils" "${MINGW_PACKAGE_PREFIX}-cc") -depends=("${MINGW_PACKAGE_PREFIX}-gcc" +depends=("${MINGW_PACKAGE_PREFIX}-cc" $([[ ${MINGW_PACKAGE_PREFIX} == *-clang-* ]] || echo "${MINGW_PACKAGE_PREFIX}-gcc-fortran") ) optdepends=("${MINGW_PACKAGE_PREFIX}-tcl: build & run test suite") diff --git a/mingw-w64-rust/PKGBUILD b/mingw-w64-rust/PKGBUILD index 32198714d0..f584f4e07e 100644 --- a/mingw-w64-rust/PKGBUILD +++ b/mingw-w64-rust/PKGBUILD @@ -8,7 +8,7 @@ pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}" "${MINGW_PACKAGE_PREFIX}-rust-docs") pkgver=1.57.0 -pkgrel=1 +pkgrel=2 pkgdesc="Systems programming language focused on safety, speed and concurrency (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64') @@ -131,7 +131,7 @@ check() { package_rust() { - depends=("${MINGW_PACKAGE_PREFIX}-gcc" + depends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-curl" "${MINGW_PACKAGE_PREFIX}-libxml2" "${MINGW_PACKAGE_PREFIX}-libssh2") From 1338d46f312fe6f2bef6e09693a96d3e8b5cea90 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Fri, 4 Feb 2022 12:13:52 +0100 Subject: [PATCH 187/226] Move from gcc -> cc for all packages which potentially build with clang So we can get rid of the virtual gcc package provided by clang in the clang envs. See #10658 --- mingw-w64-argtable/PKGBUILD | 2 +- mingw-w64-asciidoctor/PKGBUILD | 2 +- mingw-w64-asio/PKGBUILD | 2 +- mingw-w64-catch/PKGBUILD | 2 +- mingw-w64-cgal/PKGBUILD | 2 +- mingw-w64-crt-git/PKGBUILD | 2 +- mingw-w64-eigen3/PKGBUILD | 2 +- mingw-w64-ensmallen/PKGBUILD | 2 +- mingw-w64-ghc/PKGBUILD | 2 +- mingw-w64-gtk-elementary-theme/PKGBUILD | 2 +- mingw-w64-gtkwave/PKGBUILD | 1 - mingw-w64-hicolor-icon-theme/PKGBUILD | 2 +- mingw-w64-hlsl2glsl-git/PKGBUILD | 2 +- mingw-w64-iverilog/PKGBUILD | 4 ++-- mingw-w64-leveldb/PKGBUILD | 2 +- mingw-w64-libbsdf/PKGBUILD | 2 +- mingw-w64-libiptcdata/PKGBUILD | 2 +- mingw-w64-libmangle-git/PKGBUILD | 2 +- mingw-w64-libtomcrypt/PKGBUILD | 2 +- mingw-w64-lmdbxx/PKGBUILD | 2 +- mingw-w64-lua-luarocks/PKGBUILD | 2 +- mingw-w64-meld3/PKGBUILD | 2 +- mingw-w64-mhook/PKGBUILD | 2 +- mingw-w64-mumps/PKGBUILD | 2 +- mingw-w64-mypaint-brushes/PKGBUILD | 2 +- mingw-w64-mypaint-brushes2/PKGBUILD | 2 +- mingw-w64-nana/PKGBUILD | 2 +- mingw-w64-openFPGALoader/PKGBUILD | 2 +- mingw-w64-opencollada/PKGBUILD | 2 +- mingw-w64-pqp/PKGBUILD | 2 +- mingw-w64-pystring/PKGBUILD | 2 +- mingw-w64-ruby-ronn/PKGBUILD | 2 +- mingw-w64-sparsehash/PKGBUILD | 2 +- mingw-w64-spice-protocol/PKGBUILD | 2 +- mingw-w64-styrene/PKGBUILD | 2 +- mingw-w64-tiny-dnn/PKGBUILD | 2 +- mingw-w64-tl-expected/PKGBUILD | 2 +- mingw-w64-trompeloeil/PKGBUILD | 2 +- mingw-w64-unittest-cpp/PKGBUILD | 2 +- mingw-w64-windows-default-manifest/PKGBUILD | 2 +- mingw-w64-winstorecompat-git/PKGBUILD | 2 +- 41 files changed, 41 insertions(+), 42 deletions(-) diff --git a/mingw-w64-argtable/PKGBUILD b/mingw-w64-argtable/PKGBUILD index 86232f0984..f19ad748a8 100644 --- a/mingw-w64-argtable/PKGBUILD +++ b/mingw-w64-argtable/PKGBUILD @@ -13,7 +13,7 @@ license=("custom") url="https://argtable.sourceforge.io" source=("https://downloads.sourceforge.net/project/argtable/argtable/${_realname}-${pkgver}/${_realname}${intver}.tar.gz") sha256sums=('8f77e8a7ced5301af6e22f47302fdbc3b1ff41f2b83c43c77ae5ca041771ddbf') -makedepends=("${MINGW_PACKAGE_PREFIX}-gcc" "${MINGW_PACKAGE_PREFIX}-autotools") +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-autotools") options=('staticlibs' 'strip') diff --git a/mingw-w64-asciidoctor/PKGBUILD b/mingw-w64-asciidoctor/PKGBUILD index 1147812679..3706788c60 100644 --- a/mingw-w64-asciidoctor/PKGBUILD +++ b/mingw-w64-asciidoctor/PKGBUILD @@ -11,7 +11,7 @@ mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') url='https://asciidoctor.org/' license=('MIT') depends=("${MINGW_PACKAGE_PREFIX}-ruby") -makedepends=("${MINGW_PACKAGE_PREFIX}-gcc") +makedepends=("${MINGW_PACKAGE_PREFIX}-cc") source=(https://rubygems.org/downloads/${_realname}-${pkgver}.gem) sha256sums=('02439a5b89b25550297a21c631035c2a6608d6fc9d9b63d7f137b3356bbd0482') diff --git a/mingw-w64-asio/PKGBUILD b/mingw-w64-asio/PKGBUILD index e6716cf871..5d0ae17d30 100644 --- a/mingw-w64-asio/PKGBUILD +++ b/mingw-w64-asio/PKGBUILD @@ -10,7 +10,7 @@ url='https://think-async.com/Asio/' arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') license=('custom:boost') -makedepends=("${MINGW_PACKAGE_PREFIX}-gcc" +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" #"${MINGW_PACKAGE_PREFIX}-boost" "${MINGW_PACKAGE_PREFIX}-autotools" "${MINGW_PACKAGE_PREFIX}-openssl") diff --git a/mingw-w64-catch/PKGBUILD b/mingw-w64-catch/PKGBUILD index 488b0ebd71..18980f00c2 100644 --- a/mingw-w64-catch/PKGBUILD +++ b/mingw-w64-catch/PKGBUILD @@ -9,7 +9,7 @@ pkgdesc="A modern, C++-native, header-only, test framework for unit-tests, TDD a arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') url='https://github.com/philsquared/Catch' -makedepends=("${MINGW_PACKAGE_PREFIX}-gcc" +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-cmake" "${MINGW_PACKAGE_PREFIX}-python") license=('custom') diff --git a/mingw-w64-cgal/PKGBUILD b/mingw-w64-cgal/PKGBUILD index e7b2b0ac75..e7826eb805 100644 --- a/mingw-w64-cgal/PKGBUILD +++ b/mingw-w64-cgal/PKGBUILD @@ -10,7 +10,7 @@ arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') url="https://www.cgal.org/" license=("LGPL, GPL") -makedepends=("${MINGW_PACKAGE_PREFIX}-gcc" +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-cmake" "${MINGW_PACKAGE_PREFIX}-eigen3" "${MINGW_PACKAGE_PREFIX}-pkg-config" diff --git a/mingw-w64-crt-git/PKGBUILD b/mingw-w64-crt-git/PKGBUILD index 508c86617a..c55b433ae3 100644 --- a/mingw-w64-crt-git/PKGBUILD +++ b/mingw-w64-crt-git/PKGBUILD @@ -14,7 +14,7 @@ license=('custom') groups=("${MINGW_PACKAGE_PREFIX}-toolchain") depends=("${MINGW_PACKAGE_PREFIX}-headers-git") makedepends=("git" - "${MINGW_PACKAGE_PREFIX}-gcc" + "${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-binutils" "${MINGW_PACKAGE_PREFIX}-autotools") provides=("${MINGW_PACKAGE_PREFIX}-${_realname}") diff --git a/mingw-w64-eigen3/PKGBUILD b/mingw-w64-eigen3/PKGBUILD index 607169bc8d..8b71422b7e 100644 --- a/mingw-w64-eigen3/PKGBUILD +++ b/mingw-w64-eigen3/PKGBUILD @@ -15,7 +15,7 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-cmake" "${MINGW_PACKAGE_PREFIX}-doxygen" "${MINGW_PACKAGE_PREFIX}-fftw" "${MINGW_PACKAGE_PREFIX}-boost" - "${MINGW_PACKAGE_PREFIX}-gcc" + "${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-mpfr") source=("https://gitlab.com/libeigen/eigen/-/archive/${pkgver}/eigen-${pkgver}.tar.bz2" 'eigen-3.1.2_osversion.patch' diff --git a/mingw-w64-ensmallen/PKGBUILD b/mingw-w64-ensmallen/PKGBUILD index f69152c13e..1575dd3ca3 100644 --- a/mingw-w64-ensmallen/PKGBUILD +++ b/mingw-w64-ensmallen/PKGBUILD @@ -13,7 +13,7 @@ license=('BSD') depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs" "${MINGW_PACKAGE_PREFIX}-armadillo" "${MINGW_PACKAGE_PREFIX}-openblas") -makedepends=("${MINGW_PACKAGE_PREFIX}-gcc" +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-cmake" "${MINGW_PACKAGE_PREFIX}-doxygen") source=("https://www.ensmallen.org/files/ensmallen-${pkgver}.tar.gz") diff --git a/mingw-w64-ghc/PKGBUILD b/mingw-w64-ghc/PKGBUILD index 9d1f4686c3..2515449251 100644 --- a/mingw-w64-ghc/PKGBUILD +++ b/mingw-w64-ghc/PKGBUILD @@ -14,7 +14,7 @@ url='https://www.haskell.org/ghc/' license=('The Glasgow Haskell Compiler License') depends=("${MINGW_PACKAGE_PREFIX}-binutils" "${MINGW_PACKAGE_PREFIX}-crt" - "${MINGW_PACKAGE_PREFIX}-gcc" + "${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-gcc-libs" "${MINGW_PACKAGE_PREFIX}-gmp" "${MINGW_PACKAGE_PREFIX}-headers" diff --git a/mingw-w64-gtk-elementary-theme/PKGBUILD b/mingw-w64-gtk-elementary-theme/PKGBUILD index ed84f58d1a..f48ab92f3c 100644 --- a/mingw-w64-gtk-elementary-theme/PKGBUILD +++ b/mingw-w64-gtk-elementary-theme/PKGBUILD @@ -12,7 +12,7 @@ depends=( "${MINGW_PACKAGE_PREFIX}-gtk3") optdepends=("${MINGW_PACKAGE_PREFIX}-gtk-engine-murrine: gtk2 theme support") makedepends=("${MINGW_PACKAGE_PREFIX}-meson" "${MINGW_PACKAGE_PREFIX}-ninja" - "${MINGW_PACKAGE_PREFIX}-gcc" + "${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-pkg-config") options=('strip') license=("GPL3") diff --git a/mingw-w64-gtkwave/PKGBUILD b/mingw-w64-gtkwave/PKGBUILD index bbca25dac3..07bec15f4c 100644 --- a/mingw-w64-gtkwave/PKGBUILD +++ b/mingw-w64-gtkwave/PKGBUILD @@ -30,7 +30,6 @@ depends=( makedepends=( 'perlxml' 'intltool' - "${MINGW_PACKAGE_PREFIX}-gcc" "${MINGW_PACKAGE_PREFIX}-gtk3" "${MINGW_PACKAGE_PREFIX}-autotools" "${MINGW_PACKAGE_PREFIX}-cc" diff --git a/mingw-w64-hicolor-icon-theme/PKGBUILD b/mingw-w64-hicolor-icon-theme/PKGBUILD index af61fc8ff8..844b921fad 100644 --- a/mingw-w64-hicolor-icon-theme/PKGBUILD +++ b/mingw-w64-hicolor-icon-theme/PKGBUILD @@ -10,7 +10,7 @@ arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') url="https://wiki.freedesktop.org/www/Software/icon-theme/" license=("GPL2") -makedepends=("${MINGW_PACKAGE_PREFIX}-gcc" "${MINGW_PACKAGE_PREFIX}-autotools") +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-autotools") options=('!libtool' 'strip' 'staticlibs') source=("https://icon-theme.freedesktop.org/releases/${_realname}-${pkgver}.tar.xz") sha256sums=('317484352271d18cbbcfac3868eab798d67fff1b8402e740baa6ff41d588a9d8') diff --git a/mingw-w64-hlsl2glsl-git/PKGBUILD b/mingw-w64-hlsl2glsl-git/PKGBUILD index 7cf22ea3c3..c9eef3315e 100644 --- a/mingw-w64-hlsl2glsl-git/PKGBUILD +++ b/mingw-w64-hlsl2glsl-git/PKGBUILD @@ -11,7 +11,7 @@ arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') url='https://github.com/aras-p/hlsl2glslfork' license=('MIT') -makedepends=("git" "${MINGW_PACKAGE_PREFIX}-cmake" "${MINGW_PACKAGE_PREFIX}-gcc") +makedepends=("git" "${MINGW_PACKAGE_PREFIX}-cmake" "${MINGW_PACKAGE_PREFIX}-cc") provides=("${MINGW_PACKAGE_PREFIX}-${_realname}") conflicts=("${MINGW_PACKAGE_PREFIX}-${_realname}") options=('!strip' 'staticlibs' '!emptydirs') diff --git a/mingw-w64-iverilog/PKGBUILD b/mingw-w64-iverilog/PKGBUILD index af37e1442c..05ce7e0a93 100644 --- a/mingw-w64-iverilog/PKGBUILD +++ b/mingw-w64-iverilog/PKGBUILD @@ -4,7 +4,7 @@ _realname=iverilog pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" pkgver=11.0.r8956.gf705e7b6 -pkgrel=1 +pkgrel=2 epoch=1 pkgdesc="Icarus Verilog, is a Verilog simulation and synthesis tool (mingw-w64)" arch=('any') @@ -14,7 +14,7 @@ license=('GPLv2+') groups=("${MINGW_PACKAGE_PREFIX}-eda") depends=( "${MINGW_PACKAGE_PREFIX}-bzip2" - "${MINGW_PACKAGE_PREFIX}-gcc" + "${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-readline" ) makedepends=( diff --git a/mingw-w64-leveldb/PKGBUILD b/mingw-w64-leveldb/PKGBUILD index 36e41ccf91..f3fbbb38ae 100644 --- a/mingw-w64-leveldb/PKGBUILD +++ b/mingw-w64-leveldb/PKGBUILD @@ -10,7 +10,7 @@ arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') url="https://github.com/google/leveldb" license=('BSD') -makedepends=("${MINGW_PACKAGE_PREFIX}-gcc" +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-cmake") source=("${_realname}-${pkgver}.tar.gz::https://github.com/google/leveldb/archive/${pkgver}.tar.gz" 001-snappy-optional.patch) diff --git a/mingw-w64-libbsdf/PKGBUILD b/mingw-w64-libbsdf/PKGBUILD index 87bf1b5db3..5b6f2f62d7 100644 --- a/mingw-w64-libbsdf/PKGBUILD +++ b/mingw-w64-libbsdf/PKGBUILD @@ -13,7 +13,7 @@ mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') url='https://github.com/KimuraRyo/libbsdf' license=('MPL2') makedepends=("${MINGW_PACKAGE_PREFIX}-cmake" - "${MINGW_PACKAGE_PREFIX}-gcc" + "${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-eigen3") source=(${_realname}-${pkgver}.tar.gz::"https://github.com/KimuraRyo/${_realname}/archive/v${pkgver}.tar.gz" 'optimisations-CMakeLists.txt.patch' diff --git a/mingw-w64-libiptcdata/PKGBUILD b/mingw-w64-libiptcdata/PKGBUILD index 95b814b2d4..bfb49fc702 100644 --- a/mingw-w64-libiptcdata/PKGBUILD +++ b/mingw-w64-libiptcdata/PKGBUILD @@ -11,7 +11,7 @@ mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') url="https://libiptcdata.sourceforge.io/" license=('GPL') depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs") -makedepends=("${MINGW_PACKAGE_PREFIX}-gcc" "${MINGW_PACKAGE_PREFIX}-autotools") +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-autotools") source=("https://downloads.sourceforge.net/sourceforge/libiptcdata/${_realname}-${pkgver}.tar.gz" "0001-libiptcdata-automake-remove-iptc-docs.patch") sha512sums=('8656b2febaec133d1a8783252047672bebd58ae9ceab5477c4acfa35bcc381dfda08b655a957b962878af28c69deff77d920e780c84b4debdff2f980b3de94e8' diff --git a/mingw-w64-libmangle-git/PKGBUILD b/mingw-w64-libmangle-git/PKGBUILD index f2076fdfbb..0707866bca 100644 --- a/mingw-w64-libmangle-git/PKGBUILD +++ b/mingw-w64-libmangle-git/PKGBUILD @@ -15,7 +15,7 @@ url="https://mingw-w64.sourceforge.io/" license=('custom') groups=("${MINGW_PACKAGE_PREFIX}-toolchain") makedepends=("git" - "${MINGW_PACKAGE_PREFIX}-gcc" + "${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-binutils" "${MINGW_PACKAGE_PREFIX}-crt-git" "${MINGW_PACKAGE_PREFIX}-headers-git" diff --git a/mingw-w64-libtomcrypt/PKGBUILD b/mingw-w64-libtomcrypt/PKGBUILD index 38d6ca19df..891e7cab48 100644 --- a/mingw-w64-libtomcrypt/PKGBUILD +++ b/mingw-w64-libtomcrypt/PKGBUILD @@ -13,7 +13,7 @@ license=('custom') depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs" "${MINGW_PACKAGE_PREFIX}-gmp" "${MINGW_PACKAGE_PREFIX}-libtommath") -makedepends=("${MINGW_PACKAGE_PREFIX}-gcc" +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "make") options=('staticlibs' 'strip') source=("https://github.com/libtom/libtomcrypt/releases/download/v${pkgver}/crypt-${pkgver}.tar.xz"{,.asc} diff --git a/mingw-w64-lmdbxx/PKGBUILD b/mingw-w64-lmdbxx/PKGBUILD index 98a3897e14..6ac8408539 100644 --- a/mingw-w64-lmdbxx/PKGBUILD +++ b/mingw-w64-lmdbxx/PKGBUILD @@ -10,7 +10,7 @@ arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') url="https://lmdbxx.sourceforge.io/" license=('custom') -makedepends=("${MINGW_PACKAGE_PREFIX}-gcc") +makedepends=("${MINGW_PACKAGE_PREFIX}-cc") depends=("${MINGW_PACKAGE_PREFIX}-lmdb") source=("${_realname}-${pkgver}.tar.gz::https://codeload.github.com/bendiken/lmdbxx/tar.gz/${pkgver}") sha256sums=('99ae16599829c7c9dfb396382bb8e774031ca7e839c38e0c5fef124f409f19a2') diff --git a/mingw-w64-lua-luarocks/PKGBUILD b/mingw-w64-lua-luarocks/PKGBUILD index 0292589769..11ae869a9d 100644 --- a/mingw-w64-lua-luarocks/PKGBUILD +++ b/mingw-w64-lua-luarocks/PKGBUILD @@ -16,7 +16,7 @@ license=("MIT") depends=("${MINGW_PACKAGE_PREFIX}-lua" "unzip" "zip") -makedepends=("${MINGW_PACKAGE_PREFIX}-gcc" "${MINGW_PACKAGE_PREFIX}-autotools") +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-autotools") options=('staticlibs' 'strip') source=("https://luarocks.org/releases/${_realname}-${pkgver}.tar.gz" "0001-luarocks_msys2_mingw_w64.patch") diff --git a/mingw-w64-meld3/PKGBUILD b/mingw-w64-meld3/PKGBUILD index ebcab564af..e4a0ebcd6d 100644 --- a/mingw-w64-meld3/PKGBUILD +++ b/mingw-w64-meld3/PKGBUILD @@ -17,7 +17,7 @@ depends=("${MINGW_PACKAGE_PREFIX}-gtk3" "${MINGW_PACKAGE_PREFIX}-gtk-update-icon-cache" "${MINGW_PACKAGE_PREFIX}-gsettings-desktop-schemas" "${MINGW_PACKAGE_PREFIX}-python-gobject") -makedepends=("${MINGW_PACKAGE_PREFIX}-gcc" +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-pkg-config" "${MINGW_PACKAGE_PREFIX}-ninja" "${MINGW_PACKAGE_PREFIX}-itstool" diff --git a/mingw-w64-mhook/PKGBUILD b/mingw-w64-mhook/PKGBUILD index 3bdaf2d1ae..f46fb36029 100644 --- a/mingw-w64-mhook/PKGBUILD +++ b/mingw-w64-mhook/PKGBUILD @@ -10,7 +10,7 @@ mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') pkgdesc="An API hooking library (mingw-w64)" depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs") makedepends=("${MINGW_PACKAGE_PREFIX}-cmake" - "${MINGW_PACKAGE_PREFIX}-gcc" + "${MINGW_PACKAGE_PREFIX}-cc" "git") options=('strip' 'staticlibs') license=('custom') diff --git a/mingw-w64-mumps/PKGBUILD b/mingw-w64-mumps/PKGBUILD index 96f31ea554..4989834149 100644 --- a/mingw-w64-mumps/PKGBUILD +++ b/mingw-w64-mumps/PKGBUILD @@ -42,7 +42,7 @@ depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs" "${MINGW_PACKAGE_PREFIX}-scotch" "${MINGW_PACKAGE_PREFIX}-scalapack" "${MINGW_PACKAGE_PREFIX}-msmpi") -makedepends=("${MINGW_PACKAGE_PREFIX}-gcc" +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-gcc-fortran") optdepends=("${MINGW_PACKAGE_PREFIX}-tcl: build & run test suite") options=('strip' 'staticlibs') diff --git a/mingw-w64-mypaint-brushes/PKGBUILD b/mingw-w64-mypaint-brushes/PKGBUILD index 77cbb5b23d..396a14d8ec 100644 --- a/mingw-w64-mypaint-brushes/PKGBUILD +++ b/mingw-w64-mypaint-brushes/PKGBUILD @@ -10,7 +10,7 @@ arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') url="https://github.com/mypaint/mypaint-brushes" license=("ISC") -makedepends=("${MINGW_PACKAGE_PREFIX}-gcc" "${MINGW_PACKAGE_PREFIX}-autotools") +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-autotools") depends=("${MINGW_PACKAGE_PREFIX}-libmypaint") options=('strip' '!debug') source=(${_realname}-${pkgver}.tar.gz::https://github.com/mypaint/mypaint-brushes/archive/v${pkgver}.tar.gz) diff --git a/mingw-w64-mypaint-brushes2/PKGBUILD b/mingw-w64-mypaint-brushes2/PKGBUILD index 23ab4f3a37..c724cdaa4f 100644 --- a/mingw-w64-mypaint-brushes2/PKGBUILD +++ b/mingw-w64-mypaint-brushes2/PKGBUILD @@ -10,7 +10,7 @@ arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') url="https://github.com/mypaint/mypaint-brushes" license=("ISC") -makedepends=("${MINGW_PACKAGE_PREFIX}-gcc" "${MINGW_PACKAGE_PREFIX}-autotools") +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-autotools") options=('strip' '!debug') source=(${_realname}-${pkgver}.tar.gz::https://github.com/mypaint/mypaint-brushes/archive/v${pkgver}.tar.gz) sha256sums=('01032550dd817bb0f8e85d83a632ed2e50bc16e0735630839e6c508f02f800ac') diff --git a/mingw-w64-nana/PKGBUILD b/mingw-w64-nana/PKGBUILD index 2f849ca954..5ab515487a 100644 --- a/mingw-w64-nana/PKGBUILD +++ b/mingw-w64-nana/PKGBUILD @@ -11,7 +11,7 @@ mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') url="https://github.com/cnjinhao/${_realname}" license=("Custom:Boost Software License") depends=("${MINGW_PACKAGE_PREFIX}-libpng" "${MINGW_PACKAGE_PREFIX}-libjpeg-turbo") -makedepends=("${MINGW_PACKAGE_PREFIX}-gcc" "${MINGW_PACKAGE_PREFIX}-cmake" "${MINGW_PACKAGE_PREFIX}-ninja") +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-cmake" "${MINGW_PACKAGE_PREFIX}-ninja") source=("${_realname}-v${pkgver}.tar.gz"::"https://github.com/cnjinhao/${_realname}/archive/v${pkgver}.tar.gz" 010-thread.patch) sha256sums=('56F7B1ED006C750FCCF8EF15AB1E83F96751F2DFDCB68D93E5F712A6C9B58BCB' diff --git a/mingw-w64-openFPGALoader/PKGBUILD b/mingw-w64-openFPGALoader/PKGBUILD index e29079a07e..92603494ae 100644 --- a/mingw-w64-openFPGALoader/PKGBUILD +++ b/mingw-w64-openFPGALoader/PKGBUILD @@ -16,7 +16,7 @@ depends=( "${MINGW_PACKAGE_PREFIX}-zlib" ) makedepends=( - "${MINGW_PACKAGE_PREFIX}-gcc" + "${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-cmake" "${MINGW_PACKAGE_PREFIX}-cc" ) diff --git a/mingw-w64-opencollada/PKGBUILD b/mingw-w64-opencollada/PKGBUILD index fe8442e8a8..db3f5cbb50 100644 --- a/mingw-w64-opencollada/PKGBUILD +++ b/mingw-w64-opencollada/PKGBUILD @@ -12,7 +12,7 @@ arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') url="https://github.com/khronosGroup/OpenCOLLADA/" license=("LGPL") -makedepends=("${MINGW_PACKAGE_PREFIX}-gcc" "${MINGW_PACKAGE_PREFIX}-pkg-config" "${MINGW_PACKAGE_PREFIX}-cmake" "${MINGW_PACKAGE_PREFIX}-ninja" "git") +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-pkg-config" "${MINGW_PACKAGE_PREFIX}-cmake" "${MINGW_PACKAGE_PREFIX}-ninja" "git") depends=("${MINGW_PACKAGE_PREFIX}-libxml2" "${MINGW_PACKAGE_PREFIX}-pcre") options=('staticlibs' 'strip') diff --git a/mingw-w64-pqp/PKGBUILD b/mingw-w64-pqp/PKGBUILD index c52d9feb4d..55a5c6ebd4 100644 --- a/mingw-w64-pqp/PKGBUILD +++ b/mingw-w64-pqp/PKGBUILD @@ -11,7 +11,7 @@ arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') url="https://github.com/GammaUNC/PQP" license=('custom') -makedepends=("${MINGW_PACKAGE_PREFIX}-gcc" +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-cmake" "${MINGW_PACKAGE_PREFIX}-ninja") depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs") diff --git a/mingw-w64-pystring/PKGBUILD b/mingw-w64-pystring/PKGBUILD index 1e01d42877..78c76ba8e8 100644 --- a/mingw-w64-pystring/PKGBUILD +++ b/mingw-w64-pystring/PKGBUILD @@ -11,7 +11,7 @@ mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') url="https://github.com/imageworks/pystring" license=('custom') depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs") -makedepends=("${MINGW_PACKAGE_PREFIX}-gcc") +makedepends=("${MINGW_PACKAGE_PREFIX}-cc") options=('strip') source=(${_realname}-${pkgver}.tar.gz::https://github.com/imageworks/pystring/archive/v${pkgver}.tar.gz 01-makefile.patch) diff --git a/mingw-w64-ruby-ronn/PKGBUILD b/mingw-w64-ruby-ronn/PKGBUILD index b6a36a8469..f0cbd2e9e5 100644 --- a/mingw-w64-ruby-ronn/PKGBUILD +++ b/mingw-w64-ruby-ronn/PKGBUILD @@ -20,7 +20,7 @@ depends=("${MINGW_PACKAGE_PREFIX}-ruby" "${MINGW_PACKAGE_PREFIX}-ruby-hpricot" "${MINGW_PACKAGE_PREFIX}-ruby-mustache" "${MINGW_PACKAGE_PREFIX}-ruby-rdiscount") -makedepends=("${MINGW_PACKAGE_PREFIX}-gcc") +makedepends=("${MINGW_PACKAGE_PREFIX}-cc") source=(https://rubygems.org/downloads/${_realname}-${pkgver}.gem) noextract=(${_realname}-$pkgver.gem) sha256sums=('82df6fd4a3aa91734866710d2811a6387e50a7513fc528ce6c7d95ee7ad7f41e') diff --git a/mingw-w64-sparsehash/PKGBUILD b/mingw-w64-sparsehash/PKGBUILD index 9b8609a774..571b0966f0 100644 --- a/mingw-w64-sparsehash/PKGBUILD +++ b/mingw-w64-sparsehash/PKGBUILD @@ -11,7 +11,7 @@ arch=(any) mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') url="https://github.com/sparsehash/sparsehash" license=('BSD') -makedepends=("${MINGW_PACKAGE_PREFIX}-gcc" "${MINGW_PACKAGE_PREFIX}-autotools") +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-autotools") options=('strip' '!libtool') source=("${_realname}-${pkgver}.tar.gz"::"https://github.com/sparsehash/sparsehash/archive/${_realname}-${pkgver}.tar.gz") sha256sums=('8cd1a95827dfd8270927894eb77f62b4087735cbede953884647f16c521c7e58') diff --git a/mingw-w64-spice-protocol/PKGBUILD b/mingw-w64-spice-protocol/PKGBUILD index 6b7ba6cd07..dd6dad11c3 100644 --- a/mingw-w64-spice-protocol/PKGBUILD +++ b/mingw-w64-spice-protocol/PKGBUILD @@ -11,7 +11,7 @@ pkgdesc="SPICE protocol headers (mingw-w64)" options=('strip' 'staticlibs') license=("BSD") url="https://www.spice-space.org/" -makedepends=("${MINGW_PACKAGE_PREFIX}-gcc" +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-meson" "${MINGW_PACKAGE_PREFIX}-ninja") source=(https://www.spice-space.org/download/releases/${_realname}-${pkgver}.tar.xz{,.sig}) diff --git a/mingw-w64-styrene/PKGBUILD b/mingw-w64-styrene/PKGBUILD index 4ed59e5824..b9680a9997 100644 --- a/mingw-w64-styrene/PKGBUILD +++ b/mingw-w64-styrene/PKGBUILD @@ -14,7 +14,7 @@ mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64') makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools") depends=("zip" "${MINGW_PACKAGE_PREFIX}-python" - "${MINGW_PACKAGE_PREFIX}-gcc" + "${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-binutils" "${MINGW_PACKAGE_PREFIX}-nsis") license=('GPLv3+') diff --git a/mingw-w64-tiny-dnn/PKGBUILD b/mingw-w64-tiny-dnn/PKGBUILD index 06b1235786..2717b85b75 100644 --- a/mingw-w64-tiny-dnn/PKGBUILD +++ b/mingw-w64-tiny-dnn/PKGBUILD @@ -12,7 +12,7 @@ license=('BSD3') depends=("${MINGW_PACKAGE_PREFIX}-intel-tbb" "${MINGW_PACKAGE_PREFIX}-protobuf") makedepends=("${MINGW_PACKAGE_PREFIX}-cmake" - "${MINGW_PACKAGE_PREFIX}-gcc" + "${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-pkg-config") url="https://tiny-dnn.readthedocs.io/" source=(${_realname}-${pkgver}.tar.gz::https://github.com/tiny-dnn/tiny-dnn/archive/v${pkgver}.tar.gz diff --git a/mingw-w64-tl-expected/PKGBUILD b/mingw-w64-tl-expected/PKGBUILD index c7a2429c36..e282d5e2f9 100644 --- a/mingw-w64-tl-expected/PKGBUILD +++ b/mingw-w64-tl-expected/PKGBUILD @@ -10,7 +10,7 @@ arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') url='https://github.com/TartanLlama/expected' license=('custom:CC0') -makedepends=("${MINGW_PACKAGE_PREFIX}-gcc" +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-cmake" "${MINGW_PACKAGE_PREFIX}-ninja") source=("expected-v1.0.0.tar.gz::https://github.com/TartanLlama/expected/archive/v1.0.0.tar.gz") diff --git a/mingw-w64-trompeloeil/PKGBUILD b/mingw-w64-trompeloeil/PKGBUILD index 3d9286bc39..57c1a8f714 100644 --- a/mingw-w64-trompeloeil/PKGBUILD +++ b/mingw-w64-trompeloeil/PKGBUILD @@ -9,7 +9,7 @@ pkgdesc="Header only C++14 mocking framework (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') url='https://github.com/rollbear/trompeloeil' -makedepends=("${MINGW_PACKAGE_PREFIX}-gcc" +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-cmake") license=('Boost') source=(${_realname}-${pkgver}.tar.gz::https://github.com/rollbear/trompeloeil/archive/v${pkgver}.tar.gz) diff --git a/mingw-w64-unittest-cpp/PKGBUILD b/mingw-w64-unittest-cpp/PKGBUILD index 8893cd37e7..67a09cff78 100644 --- a/mingw-w64-unittest-cpp/PKGBUILD +++ b/mingw-w64-unittest-cpp/PKGBUILD @@ -11,7 +11,7 @@ mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') license=(MIT) url="https://unittest-cpp.github.io/" depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs") -makedepends=("${MINGW_PACKAGE_PREFIX}-gcc" +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-cmake") options=('staticlibs' 'strip') source=("https://github.com/unittest-cpp/unittest-cpp/archive/v${pkgver}.tar.gz") diff --git a/mingw-w64-windows-default-manifest/PKGBUILD b/mingw-w64-windows-default-manifest/PKGBUILD index 53acab44dc..a2900e5ec1 100644 --- a/mingw-w64-windows-default-manifest/PKGBUILD +++ b/mingw-w64-windows-default-manifest/PKGBUILD @@ -10,7 +10,7 @@ url='https://cygwin.com/' arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') license=('BSD') -makedepends=('git' "${MINGW_PACKAGE_PREFIX}-gcc" "${MINGW_PACKAGE_PREFIX}-autotools") +makedepends=('git' "${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-autotools") _GIT_TAG="release-6_4" source=("git+https://sourceware.org/git/cygwin-apps/${_realname}.git#tag=${_GIT_TAG}") sha256sums=('SKIP') diff --git a/mingw-w64-winstorecompat-git/PKGBUILD b/mingw-w64-winstorecompat-git/PKGBUILD index 776a8bfe0b..8c23d125f6 100644 --- a/mingw-w64-winstorecompat-git/PKGBUILD +++ b/mingw-w64-winstorecompat-git/PKGBUILD @@ -12,7 +12,7 @@ mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') url="https://mingw-w64.sourceforge.io/" license=('custom') groups=("${MINGW_PACKAGE_PREFIX}-toolchain") -makedepends=("git" "${MINGW_PACKAGE_PREFIX}-gcc" "${MINGW_PACKAGE_PREFIX}-binutils" "${MINGW_PACKAGE_PREFIX}-crt" "${MINGW_PACKAGE_PREFIX}-headers" "${MINGW_PACKAGE_PREFIX}-autotools") +makedepends=("git" "${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-binutils" "${MINGW_PACKAGE_PREFIX}-crt" "${MINGW_PACKAGE_PREFIX}-headers" "${MINGW_PACKAGE_PREFIX}-autotools") options=('strip' '!buildflags' 'staticlibs' '!emptydirs' '!debug') source=("mingw-w64"::"git+https://git.code.sf.net/p/mingw-w64/mingw-w64#commit=$_commit") sha256sums=('SKIP') From ef93bb1ac7d18ce31bc6312a30572bce8db20fcc Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Fri, 4 Feb 2022 12:16:08 +0100 Subject: [PATCH 188/226] Some more gcc -> cc renaming for good measure --- mingw-w64-fgsl/PKGBUILD | 2 +- mingw-w64-go/PKGBUILD | 2 +- mingw-w64-libart_lgpl/PKGBUILD | 2 +- mingw-w64-mono/bootstrap/PKGBUILD | 2 +- mingw-w64-sundials/PKGBUILD | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/mingw-w64-fgsl/PKGBUILD b/mingw-w64-fgsl/PKGBUILD index e02c5880d4..7d2f152abf 100644 --- a/mingw-w64-fgsl/PKGBUILD +++ b/mingw-w64-fgsl/PKGBUILD @@ -11,7 +11,7 @@ arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64') url="https://github.com/reinh-bader/fgsl" license=('GPL') -makedepends=("${MINGW_PACKAGE_PREFIX}-gcc" +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-gcc-fortran" "${MINGW_PACKAGE_PREFIX}-autotools") depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs" diff --git a/mingw-w64-go/PKGBUILD b/mingw-w64-go/PKGBUILD index d6774eb8d0..6aa6433093 100644 --- a/mingw-w64-go/PKGBUILD +++ b/mingw-w64-go/PKGBUILD @@ -10,7 +10,7 @@ pkgdesc="Go Lang (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64') license=('BSD') -makedepends=("${MINGW_PACKAGE_PREFIX}-gcc") +makedepends=("${MINGW_PACKAGE_PREFIX}-cc") url="https://www.golang.org/" depends=() makedepends=("${MINGW_PACKAGE_PREFIX}-${_realname}") diff --git a/mingw-w64-libart_lgpl/PKGBUILD b/mingw-w64-libart_lgpl/PKGBUILD index fd82418577..10f0aaf603 100644 --- a/mingw-w64-libart_lgpl/PKGBUILD +++ b/mingw-w64-libart_lgpl/PKGBUILD @@ -7,7 +7,7 @@ pkgver=2.3.21 pkgrel=2 pkgdesc="Library for high-performance 2D graphics (mingw-w64)" depends=() -makedepends=("${MINGW_PACKAGE_PREFIX}-gcc") +makedepends=("${MINGW_PACKAGE_PREFIX}-cc") arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') url='https://www.levien.com/libart' diff --git a/mingw-w64-mono/bootstrap/PKGBUILD b/mingw-w64-mono/bootstrap/PKGBUILD index 83922679f5..d43d6aac5d 100644 --- a/mingw-w64-mono/bootstrap/PKGBUILD +++ b/mingw-w64-mono/bootstrap/PKGBUILD @@ -19,7 +19,7 @@ depends=("${MINGW_PACKAGE_PREFIX}-zlib" "${MINGW_PACKAGE_PREFIX}-python3" "${MINGW_PACKAGE_PREFIX}-ca-certificates") makedepends=("${MINGW_PACKAGE_PREFIX}-cmake" - "${MINGW_PACKAGE_PREFIX}-gcc" + "${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-autotools" "git" "wget" diff --git a/mingw-w64-sundials/PKGBUILD b/mingw-w64-sundials/PKGBUILD index 488343bc4e..c0102950bb 100644 --- a/mingw-w64-sundials/PKGBUILD +++ b/mingw-w64-sundials/PKGBUILD @@ -22,7 +22,7 @@ makedepends=('make' 'patch' 'sed' "${MINGW_PACKAGE_PREFIX}-cmake>=3.12.0" - "${MINGW_PACKAGE_PREFIX}-gcc" + "${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-gcc-fortran" "${MINGW_PACKAGE_PREFIX}-petsc-build") optdepends=("${MINGW_PACKAGE_PREFIX}-python: for running examples") From ae0d963ecf96490fd6e3b69c64474b7efc119d66 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Fri, 4 Feb 2022 12:30:46 +0100 Subject: [PATCH 189/226] fontconfig: Update to 2.13.96 --- mingw-w64-fontconfig/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mingw-w64-fontconfig/PKGBUILD b/mingw-w64-fontconfig/PKGBUILD index 104fefaf9b..f1231960f2 100644 --- a/mingw-w64-fontconfig/PKGBUILD +++ b/mingw-w64-fontconfig/PKGBUILD @@ -4,7 +4,7 @@ _realname=fontconfig pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=2.13.95 +pkgver=2.13.96 pkgrel=1 pkgdesc="A library for configuring and customizing font access (mingw-w64)" arch=('any') @@ -29,7 +29,7 @@ source=("https://www.freedesktop.org/software/fontconfig/release/fontconfig-${pk 0005-fix-setenv.mingw.patch 0007-pkgconfig.mingw.patch fontconfig.hook.in) -sha256sums=('f746bcbfae4e4f76395d5251b3b414976e4d269ef7269c7c7bca9ba4e4c61aab' +sha256sums=('d816a920384aa91bc0ebf20c3b51c59c2153fdf65de0b5564bf9e8473443d637' '1266d4bbd8270f013fee2401c890f0251babf50a175a69d681d3a6af5003c899' '9e5700b9c555e60cd8116fdc2e24cf0a01de01e83373dbbe78cef1e32b91da3b' '57ff8420dbf62873b6fcb38b52fb7b37e0e278425a9125e15dccba54668c8ab9' From 382c674ce1ee6be0b4e13d6ab1cf37359aa1b49d Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Fri, 4 Feb 2022 12:31:55 +0100 Subject: [PATCH 190/226] fontconfig: remove install message Most users are not direct users of fontconfig and shouldn't have to care about this. Let's avoid the confusion. --- mingw-w64-fontconfig/fontconfig-CLANG32.install | 7 ------- mingw-w64-fontconfig/fontconfig-CLANG64.install | 7 ------- mingw-w64-fontconfig/fontconfig-CLANGARM64.install | 7 ------- mingw-w64-fontconfig/fontconfig-MINGW32.install | 7 ------- mingw-w64-fontconfig/fontconfig-MINGW64.install | 7 ------- mingw-w64-fontconfig/fontconfig-UCRT64.install | 7 ------- 6 files changed, 42 deletions(-) diff --git a/mingw-w64-fontconfig/fontconfig-CLANG32.install b/mingw-w64-fontconfig/fontconfig-CLANG32.install index f60ca0ed97..af2663dafb 100644 --- a/mingw-w64-fontconfig/fontconfig-CLANG32.install +++ b/mingw-w64-fontconfig/fontconfig-CLANG32.install @@ -1,13 +1,6 @@ MINGW_INSTALL=clang32 post_install() { - cat << _EOF - - Fontconfig configuration is done via /${MINGW_INSTALL}/etc/fonts/conf.avail and conf.d. - Read /${MINGW_INSTALL}/etc/fonts/conf.d/README for more information. - -_EOF - if [ -n "${MSYS2_FC_CACHE_SKIP}" ]; then echo "Warning: 'MSYS2_FC_CACHE_SKIP' set, skipping font cache update" else diff --git a/mingw-w64-fontconfig/fontconfig-CLANG64.install b/mingw-w64-fontconfig/fontconfig-CLANG64.install index 96f62deef4..2372e98f45 100644 --- a/mingw-w64-fontconfig/fontconfig-CLANG64.install +++ b/mingw-w64-fontconfig/fontconfig-CLANG64.install @@ -1,13 +1,6 @@ MINGW_INSTALL=clang64 post_install() { - cat << _EOF - - Fontconfig configuration is done via /${MINGW_INSTALL}/etc/fonts/conf.avail and conf.d. - Read /${MINGW_INSTALL}/etc/fonts/conf.d/README for more information. - -_EOF - if [ -n "${MSYS2_FC_CACHE_SKIP}" ]; then echo "Warning: 'MSYS2_FC_CACHE_SKIP' set, skipping font cache update" else diff --git a/mingw-w64-fontconfig/fontconfig-CLANGARM64.install b/mingw-w64-fontconfig/fontconfig-CLANGARM64.install index 40fb18753e..670bde7b0b 100644 --- a/mingw-w64-fontconfig/fontconfig-CLANGARM64.install +++ b/mingw-w64-fontconfig/fontconfig-CLANGARM64.install @@ -1,13 +1,6 @@ MINGW_INSTALL=clangarm64 post_install() { - cat << _EOF - - Fontconfig configuration is done via /${MINGW_INSTALL}/etc/fonts/conf.avail and conf.d. - Read /${MINGW_INSTALL}/etc/fonts/conf.d/README for more information. - -_EOF - if [ -n "${MSYS2_FC_CACHE_SKIP}" ]; then echo "Warning: 'MSYS2_FC_CACHE_SKIP' set, skipping font cache update" else diff --git a/mingw-w64-fontconfig/fontconfig-MINGW32.install b/mingw-w64-fontconfig/fontconfig-MINGW32.install index de80da68dd..2556a14dd2 100644 --- a/mingw-w64-fontconfig/fontconfig-MINGW32.install +++ b/mingw-w64-fontconfig/fontconfig-MINGW32.install @@ -1,13 +1,6 @@ MINGW_INSTALL=mingw32 post_install() { - cat << _EOF - - Fontconfig configuration is done via /${MINGW_INSTALL}/etc/fonts/conf.avail and conf.d. - Read /${MINGW_INSTALL}/etc/fonts/conf.d/README for more information. - -_EOF - if [ -n "${MSYS2_FC_CACHE_SKIP}" ]; then echo "Warning: 'MSYS2_FC_CACHE_SKIP' set, skipping font cache update" else diff --git a/mingw-w64-fontconfig/fontconfig-MINGW64.install b/mingw-w64-fontconfig/fontconfig-MINGW64.install index 0c2d780690..a1a3617e77 100644 --- a/mingw-w64-fontconfig/fontconfig-MINGW64.install +++ b/mingw-w64-fontconfig/fontconfig-MINGW64.install @@ -1,13 +1,6 @@ MINGW_INSTALL=mingw64 post_install() { - cat << _EOF - - Fontconfig configuration is done via /${MINGW_INSTALL}/etc/fonts/conf.avail and conf.d. - Read /${MINGW_INSTALL}/etc/fonts/conf.d/README for more information. - -_EOF - if [ -n "${MSYS2_FC_CACHE_SKIP}" ]; then echo "Warning: 'MSYS2_FC_CACHE_SKIP' set, skipping font cache update" else diff --git a/mingw-w64-fontconfig/fontconfig-UCRT64.install b/mingw-w64-fontconfig/fontconfig-UCRT64.install index f7105ab6f2..948f91a6c9 100644 --- a/mingw-w64-fontconfig/fontconfig-UCRT64.install +++ b/mingw-w64-fontconfig/fontconfig-UCRT64.install @@ -1,13 +1,6 @@ MINGW_INSTALL=ucrt64 post_install() { - cat << _EOF - - Fontconfig configuration is done via /${MINGW_INSTALL}/etc/fonts/conf.avail and conf.d. - Read /${MINGW_INSTALL}/etc/fonts/conf.d/README for more information. - -_EOF - if [ -n "${MSYS2_FC_CACHE_SKIP}" ]; then echo "Warning: 'MSYS2_FC_CACHE_SKIP' set, skipping font cache update" else From c26a5e25ed36b80c166b6377364317ac08d988f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=BCtzel?= Date: Sun, 23 Jan 2022 16:55:29 +0100 Subject: [PATCH 191/226] armadillo: Use LAPACK from f2cblaslapack for clang builds. --- mingw-w64-armadillo/PKGBUILD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mingw-w64-armadillo/PKGBUILD b/mingw-w64-armadillo/PKGBUILD index 862c11df94..a12832af3f 100644 --- a/mingw-w64-armadillo/PKGBUILD +++ b/mingw-w64-armadillo/PKGBUILD @@ -13,6 +13,7 @@ license=(MPL2) depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs" "${MINGW_PACKAGE_PREFIX}-hdf5" $([[ ${MSYSTEM} == CLANG32 ]] || echo "${MINGW_PACKAGE_PREFIX}-openblas") + $([[ ${MINGW_PACKAGE_PREFIX} == *-clang-* ]] && echo "${MINGW_PACKAGE_PREFIX}-f2cblaslapack") $([[ ${MINGW_PACKAGE_PREFIX} == *-clang-* ]] || echo "${MINGW_PACKAGE_PREFIX}-arpack") ) makedepends=("${MINGW_PACKAGE_PREFIX}-cmake" @@ -38,7 +39,6 @@ build() { -G"Ninja" \ -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \ -DCMAKE_BUILD_TYPE=Release \ - $([[ ${MINGW_PACKAGE_PREFIX} == *-clang-* ]] || echo -DLAPACK_NAMES=openblas) \ ../${_realname}-${pkgver} cmake --build . From 5de2182b76c9de64b29c9c27383125df0da315af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=BCtzel?= Date: Wed, 26 Jan 2022 12:27:55 +0100 Subject: [PATCH 192/226] armadillo: Update to version 10.8.1 --- mingw-w64-armadillo/PKGBUILD | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mingw-w64-armadillo/PKGBUILD b/mingw-w64-armadillo/PKGBUILD index a12832af3f..ba1e8c07a1 100644 --- a/mingw-w64-armadillo/PKGBUILD +++ b/mingw-w64-armadillo/PKGBUILD @@ -3,7 +3,7 @@ _realname=armadillo pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=10.8.0 +pkgver=10.8.1 pkgrel=1 pkgdesc="C++ linear algebra library (mingw-w64)" arch=('any') @@ -12,7 +12,7 @@ url="https://arma.sourceforge.io/" license=(MPL2) depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs" "${MINGW_PACKAGE_PREFIX}-hdf5" - $([[ ${MSYSTEM} == CLANG32 ]] || echo "${MINGW_PACKAGE_PREFIX}-openblas") + "${MINGW_PACKAGE_PREFIX}-openblas" $([[ ${MINGW_PACKAGE_PREFIX} == *-clang-* ]] && echo "${MINGW_PACKAGE_PREFIX}-f2cblaslapack") $([[ ${MINGW_PACKAGE_PREFIX} == *-clang-* ]] || echo "${MINGW_PACKAGE_PREFIX}-arpack") ) @@ -22,7 +22,7 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-cmake" install=${_realname}-${MSYSTEM}.install source=(https://sourceforge.net/projects/arma/files/${_realname}-${pkgver}.tar.xz 0001-mingw-config-fix.patch) -sha256sums=('7c5d2fd4bba095733829f7fe03d4a74e732b81c75dd4d40001163487c967d5bc' +sha256sums=('5087ab5a2268e5ce71798c1afcb6d1fb246463f8dc88a60db49a083600f98332' '772719e60eb2970ecb37844382dbcb6d0439f949c5080f9865798115640b612a') prepare() { @@ -39,6 +39,7 @@ build() { -G"Ninja" \ -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \ -DCMAKE_BUILD_TYPE=Release \ + $([[ ${MINGW_PACKAGE_PREFIX} == *-clang-* ]] || echo -DOPENBLAS_PROVIDES_LAPACK=ON) \ ../${_realname}-${pkgver} cmake --build . From 39c3424ff1056862c7037f3b9d232923b3eb66c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milo=C5=A1=20Komar=C4=8Devi=C4=87?= Date: Fri, 4 Feb 2022 10:04:24 +0100 Subject: [PATCH 193/226] mlpack: enable openmp for clang builds --- mingw-w64-mlpack/PKGBUILD | 1 + 1 file changed, 1 insertion(+) diff --git a/mingw-w64-mlpack/PKGBUILD b/mingw-w64-mlpack/PKGBUILD index d7f3020c35..730e8a867e 100644 --- a/mingw-w64-mlpack/PKGBUILD +++ b/mingw-w64-mlpack/PKGBUILD @@ -11,6 +11,7 @@ mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') url='https://mlpack.org/' license=('BSD') depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs" + $([[ ${MINGW_PACKAGE_PREFIX} != *-clang-* ]] || echo "${MINGW_PACKAGE_PREFIX}-openmp") "${MINGW_PACKAGE_PREFIX}-armadillo" "${MINGW_PACKAGE_PREFIX}-boost" "${MINGW_PACKAGE_PREFIX}-ensmallen" From b5d550d5540123e99e656c7efb41dbc5b7849044 Mon Sep 17 00:00:00 2001 From: Sutou Kouhei Date: Fri, 4 Feb 2022 23:23:02 +0900 Subject: [PATCH 194/226] groonga: Rebuild for arrow --- mingw-w64-groonga/PKGBUILD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mingw-w64-groonga/PKGBUILD b/mingw-w64-groonga/PKGBUILD index 5c95363c3a..1ad2672ac9 100644 --- a/mingw-w64-groonga/PKGBUILD +++ b/mingw-w64-groonga/PKGBUILD @@ -4,7 +4,7 @@ _realname=groonga pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" pkgver=11.1.3 -pkgrel=1 +pkgrel=2 pkgdesc="An opensource fulltext search engine (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') From 410f25c2fa96eb4ec030c160c255cbde25f3ed71 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Fri, 4 Feb 2022 20:03:56 +0530 Subject: [PATCH 195/226] python-absl-py: update to 1.0.0 Use source tarball from pypi --- mingw-w64-python-absl-py/PKGBUILD | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/mingw-w64-python-absl-py/PKGBUILD b/mingw-w64-python-absl-py/PKGBUILD index cd2d872a76..ff61592854 100644 --- a/mingw-w64-python-absl-py/PKGBUILD +++ b/mingw-w64-python-absl-py/PKGBUILD @@ -6,24 +6,23 @@ pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") provides=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") conflicts=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") replaces=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") -pkgver=0.13.0 -pkgrel=2 +pkgver=1.0.0 +pkgrel=1 pkgdesc="Abseil Common Libraries (Python) (mingw-w64)" arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') url="https://github.com/abseil/abseil-py" license=('Apache 2.0') depends=("${MINGW_PACKAGE_PREFIX}-python" "${MINGW_PACKAGE_PREFIX}-python-six") makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools") -_archive=abseil-py-pypi-v${pkgver} -source=(${_archive}.tar.gz::https://github.com/abseil/abseil-py/archive/pypi-v${pkgver}.tar.gz) -sha256sums=('82423ef923465cb628424c93be2fd29bff70f3e6aca90fe5fade6fc4cefca669') +source=(https://files.pythonhosted.org/packages/source/a/${_realname}/${_realname}-${pkgver}.tar.gz) +sha256sums=('ac511215c01ee9ae47b19716599e8ccfa746f2e18de72bdf641b79b22afa27ea') prepare() { cd "${srcdir}" rm -rf "python-build-${CARCH}" | true - cp -r "${_archive}" "python-build-${CARCH}" + cp -r "${_realname}-${pkgver}" "python-build-${CARCH}" } build() { From b9ce84c923eb93e85e60bdfd488d157113168ce3 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Fri, 4 Feb 2022 20:08:23 +0530 Subject: [PATCH 196/226] python-distro: update to 1.6.0 Remove shebang line from *-script.py file --- mingw-w64-python-distro/PKGBUILD | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/mingw-w64-python-distro/PKGBUILD b/mingw-w64-python-distro/PKGBUILD index ae11373797..e61d16f9fd 100644 --- a/mingw-w64-python-distro/PKGBUILD +++ b/mingw-w64-python-distro/PKGBUILD @@ -3,17 +3,17 @@ _realname=distro pkgbase=mingw-w64-python-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-python-${_realname}" -pkgver=1.5.0 -pkgrel=2 +pkgver=1.6.0 +pkgrel=1 pkgdesc="Distro - an OS platform information API (mingw-w64)" arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') url="https://pypi.org/project/${_realname}" license=('Apache2.0') depends=("${MINGW_PACKAGE_PREFIX}-python") makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools") source=("https://pypi.io/packages/source/${_realname:0:1}/${_realname}/${_realname}-${pkgver}.tar.gz") -sha512sums=('14831fe1355e9ef4f58f273ce4a548a3fe438e95466b4b4f596b8110da51305d66ed77c2e40c3dbfbcbd1a66c74e23a4d4244c8bfdebc4b49b3e7ddcbff55b8f') +sha512sums=('d30334ed1137c54ddc70e041b75be905b7e13398483d0d92117eca0407d2a7b60424d96fd7af885a2e3ea3676b1aef620e91598a53309ae0da12a360d57ac013') prepare() { cd "${srcdir}" @@ -35,11 +35,11 @@ package() { cd "${srcdir}/python-build-${CARCH}" MSYS2_ARG_CONV_EXCL="--prefix=;--install-scripts=;--install-platlib=" \ ${MINGW_PREFIX}/bin/python setup.py install --prefix=${MINGW_PREFIX} --root="${pkgdir}" --skip-build - local PREFIX_WIN=$(cygpath -wm ${MINGW_PREFIX}) - # fix python command in files - for _f in "${pkgdir}${MINGW_PREFIX}"/bin/*.py; do - sed -e "s|/usr/bin/env |${MINGW_PREFIX}|g" \ - -e "s|${PREFIX_WIN}|${MINGW_PREFIX}|g" -i ${_f} + + for _f in "${pkgdir}${MINGW_PREFIX}"/bin/*-script.py; do + # Remove shebang line + sed -e '1 { s/^#!.*$// }' -i "${_f}" done + install -Dm644 LICENSE "${pkgdir}${MINGW_PREFIX}/share/licenses/python-${_realname}/LICENSE.txt" } From 31de94adb116a49b9a666e193369f55e242bdb0f Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Fri, 4 Feb 2022 20:11:21 +0530 Subject: [PATCH 197/226] python-entrypoints: update to 0.4 Fix pypi source link --- mingw-w64-python-entrypoints/PKGBUILD | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/mingw-w64-python-entrypoints/PKGBUILD b/mingw-w64-python-entrypoints/PKGBUILD index b1720c89ce..f67d0a998e 100644 --- a/mingw-w64-python-entrypoints/PKGBUILD +++ b/mingw-w64-python-entrypoints/PKGBUILD @@ -6,18 +6,18 @@ pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") provides=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") conflicts=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") replaces=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") -pkgver=0.3 -pkgrel=2 +pkgver=0.4 +pkgrel=1 pkgdesc="Discover and load entry points from installed packages (mingw-w64)" url="https://github.com/takluyver/entrypoints" arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') license=('MIT') makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools") source=(${_realname}-${pkgver}.tar.gz::https://github.com/takluyver/${_realname}/archive/${pkgver}.tar.gz - ${_realname}-${pkgver}-whl.tar.gz::https://files.pythonhosted.org/packages/py2.py3/e/${_realname}/${_realname}-${pkgver}-py2.py3-none-any.whl) -sha256sums=('f26eddc371e37d8e9f6663b77524d6731567f005bd1e4ac950c0e33c48fbc065' - '589f874b313739ad35be6e0cd7efde2a4e9b6fea91edcc34e58ecbb8dbe56d19') + ${_realname}-${pkgver}-whl.tar.gz::https://files.pythonhosted.org/packages/py3/e/${_realname}/${_realname}-${pkgver}-py3-none-any.whl) +sha256sums=('d2197a94aa73e70a7f60600e654ac9918ca2a0ee5480eb875296c42220a02272' + 'f174b5ff827504fd3cd97cc3f8649f3693f51538c7e4bdf3ef002c8429d42f9f') package() { cd "${srcdir}" From 9e88fd3eb358a79817ef5a0e9d0d4005576b96c8 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Fri, 4 Feb 2022 20:14:12 +0530 Subject: [PATCH 198/226] python-inflect: update to 5.4.0 --- mingw-w64-python-inflect/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mingw-w64-python-inflect/PKGBUILD b/mingw-w64-python-inflect/PKGBUILD index d05aba03f1..3abbcc12fd 100644 --- a/mingw-w64-python-inflect/PKGBUILD +++ b/mingw-w64-python-inflect/PKGBUILD @@ -4,7 +4,7 @@ _pyname=inflect _realname=inflect pkgbase=mingw-w64-python-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") -pkgver=5.3.0 +pkgver=5.4.0 pkgrel=1 pkgdesc='Python module to correctly generate plurals, ordinals, indefinite articles; convert numbers to words (mingw-w64)' arch=('any') @@ -16,7 +16,7 @@ makedepends=( "${MINGW_PACKAGE_PREFIX}-python-setuptools-scm" ) source=("${_pyname}-${pkgver}.tar.gz::https://pypi.org/packages/source/${_pyname::1}/${_pyname}/${_pyname}-${pkgver}.tar.gz") -sha256sums=('41a23f6788962e9775e40e2ecfb1d6455d02de315022afeedd3c5dc070019d73') +sha256sums=('b58d58c4e73ffca9b25e075c1c4fc9cadecbb5c99d7cd9f3cdedda73ece83c1c') prepare() { cd "$srcdir" From 393a70df8dc9149b137e01f9176a3f8f8b9a4161 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Fri, 4 Feb 2022 20:18:28 +0530 Subject: [PATCH 199/226] python-ordered-set: update to 4.1.0 Fix pypi source link --- mingw-w64-python-ordered-set/PKGBUILD | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/mingw-w64-python-ordered-set/PKGBUILD b/mingw-w64-python-ordered-set/PKGBUILD index d5c3f0d587..fec6a6285c 100644 --- a/mingw-w64-python-ordered-set/PKGBUILD +++ b/mingw-w64-python-ordered-set/PKGBUILD @@ -6,8 +6,8 @@ pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") provides=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") conflicts=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") replaces=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") -pkgver=3.1.1 -pkgrel=2 +pkgver=4.1.0 +pkgrel=1 pkgdesc='An OrderedSet is a mutable data structure that is a hybrid of a list and a set(mingw-w64)' arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') @@ -16,15 +16,11 @@ license=('MIT') depends=("${MINGW_PACKAGE_PREFIX}-python") makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools") checkdepends=("${MINGW_PACKAGE_PREFIX}-python-pytest") -source=(#${_realname}-${pkgver}.tar.gz::"https://github.com/LuminosoInsight/ordered-set/archive/release/${pkgver}.tar.gz" - https://files.pythonhosted.org/packages/a3/b7/d4d69641cbe707a45c23b190f2d717466ba5accc4c70b5f7a8a450387895/ordered-set-${pkgver}.tar.gz) -sha256sums=('a7bfa858748c73b096e43db14eb23e2bc714a503f990c89fac8fab9b0ee79724') +source=(https://files.pythonhosted.org/packages/source/o/${_realname}/${_realname}-${pkgver}.tar.gz) +sha256sums=('694a8e44c87657c59292ede72891eb91d34131f6531463aab3009191c77364a8') prepare() { - [[ -d ${srcdir}/${_realname}-${pkgver} ]] && rm -rf ${srcdir}/${_realname}-${pkgver} - tar -xzf ${srcdir}/${_realname}-${pkgver}.tar.gz -C ${srcdir} || true - - cd "${srcdir}" + rm -rf "python-build-${CARCH}" | true cp -r ${_realname}-${pkgver} python-build-${CARCH} } From 903d33ec83ded81bc654483532e60a4e95f86981 Mon Sep 17 00:00:00 2001 From: Michal Lukowski Date: Fri, 4 Feb 2022 17:28:31 +0100 Subject: [PATCH 200/226] Add: abseil-cpp PKGBUILD --- mingw-w64-abseil-cpp/PKGBUILD | 38 +++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 mingw-w64-abseil-cpp/PKGBUILD diff --git a/mingw-w64-abseil-cpp/PKGBUILD b/mingw-w64-abseil-cpp/PKGBUILD new file mode 100644 index 0000000000..ac65628348 --- /dev/null +++ b/mingw-w64-abseil-cpp/PKGBUILD @@ -0,0 +1,38 @@ +# Maintainer: Michał Łukowski + +_realname=abseil-cpp +pkgbase=mingw-w64-${_realname} +pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" +pkgver=20211102.0 +pkgrel=1 +pkgdesc="A collection of open source C++ libraries taken from the most fundamental pieces of Google’s internal codebase, designed to extend the standard C ++ library. (mingw-w64)" +arch=('any') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') +url="https://abseil.io" +license=('Apache') +makedepends=("${MINGW_PACKAGE_PREFIX}-cmake" + "${MINGW_PACKAGE_PREFIX}-ninja") +source=("https://github.com/abseil/abseil-cpp/archive/$pkgver/$_realname-$pkgver.tar.gz") +sha256sums=('dcf71b9cba8dc0ca9940c4b316a0c796be8fab42b070bb6b7cab62b48f0e66c4') + +build() { + [[ -d "${srcdir}/build-${MSYSTEM}" ]] && rm -rf "${srcdir}/build-${MSYSTEM}" + mkdir -p "${srcdir}/build-${MSYSTEM}" && cd "${srcdir}/build-${MSYSTEM}" + + MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \ + ${MINGW_PREFIX}/bin/cmake \ + -GNinja \ + -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_STANDARD=17 \ + -DBUILD_SHARED_LIBS=ON \ + ../${_realname}-${pkgver} + + cmake --build . +} + +package() { + cd "${srcdir}/build-${MSYSTEM}" + + DESTDIR="${pkgdir}" cmake --install . +} From 7ad6219ecd1eef38f1f220568a3694b360596656 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Fri, 4 Feb 2022 18:53:23 +0100 Subject: [PATCH 201/226] msmpi: bump pkgrel oops --- mingw-w64-msmpi/PKGBUILD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mingw-w64-msmpi/PKGBUILD b/mingw-w64-msmpi/PKGBUILD index abba392619..24f9591ae9 100644 --- a/mingw-w64-msmpi/PKGBUILD +++ b/mingw-w64-msmpi/PKGBUILD @@ -4,7 +4,7 @@ _realname=msmpi pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" pkgver=10.1.1 -pkgrel=5 +pkgrel=6 pkgdesc="Microsoft MPI SDK (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') From 67561f7c956e98c1f9a53aeaefbe28a93a04df75 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Fri, 4 Feb 2022 19:35:32 +0100 Subject: [PATCH 202/226] abseil-cpp: makedepend on cc, change license to spdx format --- mingw-w64-abseil-cpp/PKGBUILD | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mingw-w64-abseil-cpp/PKGBUILD b/mingw-w64-abseil-cpp/PKGBUILD index ac65628348..26859600da 100644 --- a/mingw-w64-abseil-cpp/PKGBUILD +++ b/mingw-w64-abseil-cpp/PKGBUILD @@ -9,9 +9,10 @@ pkgdesc="A collection of open source C++ libraries taken from the most fundament arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') url="https://abseil.io" -license=('Apache') +license=('spdx:Apache-2.0') makedepends=("${MINGW_PACKAGE_PREFIX}-cmake" - "${MINGW_PACKAGE_PREFIX}-ninja") + "${MINGW_PACKAGE_PREFIX}-ninja" + "${MINGW_PACKAGE_PREFIX}-cc") source=("https://github.com/abseil/abseil-cpp/archive/$pkgver/$_realname-$pkgver.tar.gz") sha256sums=('dcf71b9cba8dc0ca9940c4b316a0c796be8fab42b070bb6b7cab62b48f0e66c4') From 1fbf09be91365992e935252e72d31b456ec1c614 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Fri, 4 Feb 2022 19:47:15 +0100 Subject: [PATCH 203/226] Remove nodejs/npm/yarn They were never finished, so move them to MINGW-packages-dev: https://github.com/msys2/MINGW-packages-dev/commit/c23a15ecd2b2e340 Having nodejs would be nice though, so if someone wants to continue this effort, feel free. --- ...001-Fix-python-invocation-to-python2.patch | 2364 ----------------- .../0002-Fix-system-icu-build.patch | 27 - ...de-win32-headers.h-in-v8-atomicops.h.patch | 29 - .../0004-Define-localtime_s-for-MinGW.patch | 33 - ...move-.lib-suffix-on-linked-libraries.patch | 103 - ...0006-Define-_WIN32_WINNT-in-node.gyp.patch | 23 - ...rce-and-unneeded-includes-in-node.cc.patch | 25 - ...unicode-and-extern-wmain-for-Unicode.patch | 75 - ...incorrect-test-assumptions-for-MinGW.patch | 61 - .../0011-detect-architecture.patch | 24 - ...er-script-for-npm-on-MSYS2-mingw-w64.patch | 54 - ...stallation-paths-on-Windows-tests-no.patch | 127 - ...-cctest-allow-building-with-municode.patch | 89 - ...-do-not-rely-on-__STDC_FORMAT_MACROS.patch | 37 - ...nfused-by-the-presence-of-winpthread.patch | 35 - ...ude-to-build-condition-variable.cc-s.patch | 26 - ...inspector-use-namespaced-icu-symbols.patch | 43 - ...er-Win32-API-functions-to-handle-wch.patch | 29 - mingw-w64-nodejs/0022-Disable-MSVC_HACK.patch | 27 - ...3-Make-sure-that-__rdtsc-is-declared.patch | 32 - mingw-w64-nodejs/0024-gyp-mingw.patch | 72 - .../0025-mingw-missing-features.patch | 11 - mingw-w64-nodejs/PKGBUILD | 183 -- mingw-w64-nodejs/node | 9 - mingw-w64-npm/PKGBUILD | 51 - mingw-w64-yarn/PKGBUILD | 36 - 26 files changed, 3625 deletions(-) delete mode 100644 mingw-w64-nodejs/0001-Fix-python-invocation-to-python2.patch delete mode 100644 mingw-w64-nodejs/0002-Fix-system-icu-build.patch delete mode 100644 mingw-w64-nodejs/0003-Include-win32-headers.h-in-v8-atomicops.h.patch delete mode 100644 mingw-w64-nodejs/0004-Define-localtime_s-for-MinGW.patch delete mode 100644 mingw-w64-nodejs/0005-Remove-.lib-suffix-on-linked-libraries.patch delete mode 100644 mingw-w64-nodejs/0006-Define-_WIN32_WINNT-in-node.gyp.patch delete mode 100644 mingw-w64-nodejs/0007-Skip-sys-resource-and-unneeded-includes-in-node.cc.patch delete mode 100644 mingw-w64-nodejs/0008-Link-with-municode-and-extern-wmain-for-Unicode.patch delete mode 100644 mingw-w64-nodejs/0010-Fix-incorrect-test-assumptions-for-MinGW.patch delete mode 100644 mingw-w64-nodejs/0011-detect-architecture.patch delete mode 100644 mingw-w64-nodejs/0012-Use-shell-wrapper-script-for-npm-on-MSYS2-mingw-w64.patch delete mode 100644 mingw-w64-nodejs/0013-Revert-to-FHS-installation-paths-on-Windows-tests-no.patch delete mode 100644 mingw-w64-nodejs/0015-cctest-allow-building-with-municode.patch delete mode 100644 mingw-w64-nodejs/0016-format-macros.h-do-not-rely-on-__STDC_FORMAT_MACROS.patch delete mode 100644 mingw-w64-nodejs/0017-Do-not-get-confused-by-the-presence-of-winpthread.patch delete mode 100644 mingw-w64-nodejs/0018-Add-missing-include-to-build-condition-variable.cc-s.patch delete mode 100644 mingw-w64-nodejs/0020-inspector-use-namespaced-icu-symbols.patch delete mode 100644 mingw-w64-nodejs/0021-Use-wide-character-Win32-API-functions-to-handle-wch.patch delete mode 100644 mingw-w64-nodejs/0022-Disable-MSVC_HACK.patch delete mode 100644 mingw-w64-nodejs/0023-Make-sure-that-__rdtsc-is-declared.patch delete mode 100644 mingw-w64-nodejs/0024-gyp-mingw.patch delete mode 100644 mingw-w64-nodejs/0025-mingw-missing-features.patch delete mode 100644 mingw-w64-nodejs/PKGBUILD delete mode 100644 mingw-w64-nodejs/node delete mode 100644 mingw-w64-npm/PKGBUILD delete mode 100644 mingw-w64-yarn/PKGBUILD diff --git a/mingw-w64-nodejs/0001-Fix-python-invocation-to-python2.patch b/mingw-w64-nodejs/0001-Fix-python-invocation-to-python2.patch deleted file mode 100644 index 60cdbf098d..0000000000 --- a/mingw-w64-nodejs/0001-Fix-python-invocation-to-python2.patch +++ /dev/null @@ -1,2364 +0,0 @@ -diff -Naur node-v11.15.0-orig/common.gypi node-v11.15.0/common.gypi ---- node-v11.15.0-orig/common.gypi 2019-04-30 20:31:12.000000000 +0300 -+++ node-v11.15.0/common.gypi 2019-06-27 13:09:51.857895300 +0300 -@@ -11,7 +11,7 @@ - 'msvs_multi_core_compile': '0', # we do enable multicore compiles, but not using the V8 way - 'enable_pgo_generate%': '0', - 'enable_pgo_use%': '0', -- 'python%': 'python', -+ 'python%': 'python2', - - 'node_shared%': 'false', - 'force_dynamic_crt%': 0, -diff -Naur node-v11.15.0-orig/configure node-v11.15.0/configure ---- node-v11.15.0-orig/configure 2019-04-30 20:31:12.000000000 +0300 -+++ node-v11.15.0/configure 2019-06-27 13:09:51.882895300 +0300 -@@ -6,7 +6,7 @@ - _=[ 'exec' '/bin/sh' '-c' ''' - which python2.7 >/dev/null && exec python2.7 "$0" "$@" - which python2 >/dev/null && exec python2 "$0" "$@" --exec python "$0" "$@" -+exec python2 "$0" "$@" - ''' "$0" "$@" - ] - del _ -diff -Naur node-v11.15.0-orig/configure.py node-v11.15.0/configure.py ---- node-v11.15.0-orig/configure.py 2019-04-30 20:31:12.000000000 +0300 -+++ node-v11.15.0/configure.py 2019-06-27 13:09:51.902895400 +0300 -@@ -1570,7 +1570,7 @@ - # sys.executable. This directory will be prefixed to the PATH, so that - # other tools that shell out to `python` will use the appropriate python - -- which_python = which('python') -+ which_python = which('python2') - if (which_python and - os.path.realpath(which_python) == os.path.realpath(sys.executable)): - return -@@ -1581,7 +1581,7 @@ - except OSError as e: - if e.errno != errno.EEXIST: raise e - -- python_link = os.path.join(bin_override, 'python') -+ python_link = os.path.join(bin_override, 'python2') - try: - os.unlink(python_link) - except OSError as e: -@@ -1701,6 +1701,6 @@ - if warn.warned and not options.verbose: - warn('warnings were emitted in the configure phase') - --print_verbose("running: \n " + " ".join(['python', 'tools/gyp_node.py'] + gyp_args)) -+print_verbose("running: \n " + " ".join(['python2', 'tools/gyp_node.py'] + gyp_args)) - run_gyp(gyp_args) - info('configure completed successfully') -diff -Naur node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/gyp node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/gyp ---- node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/gyp 2019-04-30 20:31:13.000000000 +0300 -+++ node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/gyp 2019-06-27 13:11:28.559030700 +0300 -@@ -5,4 +5,4 @@ - - set -e - base=$(dirname "$0") --exec python "${base}/gyp_main.py" "$@" -+exec python2 "${base}/gyp_main.py" "$@" -diff -Naur node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/gyp_main.py node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/gyp_main.py ---- node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/gyp_main.py 2019-04-30 20:31:13.000000000 +0300 -+++ node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/gyp_main.py 2019-06-27 13:11:28.614030800 +0300 -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/env python2 - - # Copyright (c) 2009 Google Inc. All rights reserved. - # Use of this source code is governed by a BSD-style license that can be -diff -Naur node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/__init__.py node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/__init__.py ---- node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/__init__.py 2019-04-30 20:31:13.000000000 +0300 -+++ node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/__init__.py 2019-06-27 13:11:29.754032400 +0300 -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/env python2 - - # Copyright (c) 2012 Google Inc. All rights reserved. - # Use of this source code is governed by a BSD-style license that can be -diff -Naur node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/common_test.py node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/common_test.py ---- node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/common_test.py 2019-04-30 20:31:13.000000000 +0300 -+++ node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/common_test.py 2019-06-27 13:11:28.744031000 +0300 -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/env python2 - - # Copyright (c) 2012 Google Inc. All rights reserved. - # Use of this source code is governed by a BSD-style license that can be -diff -Naur node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/easy_xml_test.py node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/easy_xml_test.py ---- node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/easy_xml_test.py 2019-04-30 20:31:13.000000000 +0300 -+++ node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/easy_xml_test.py 2019-06-27 13:11:28.804031100 +0300 -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/env python2 - - # Copyright (c) 2011 Google Inc. All rights reserved. - # Use of this source code is governed by a BSD-style license that can be -diff -Naur node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/flock_tool.py node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/flock_tool.py ---- node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/flock_tool.py 2019-04-30 20:31:13.000000000 +0300 -+++ node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/flock_tool.py 2019-06-27 13:11:28.829031100 +0300 -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/env python2 - # Copyright (c) 2011 Google Inc. All rights reserved. - # Use of this source code is governed by a BSD-style license that can be - # found in the LICENSE file. -diff -Naur node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs_test.py node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs_test.py ---- node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs_test.py 2019-04-30 20:31:13.000000000 +0300 -+++ node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs_test.py 2019-06-27 13:11:29.089031500 +0300 -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/env python2 - # Copyright (c) 2012 Google Inc. All rights reserved. - # Use of this source code is governed by a BSD-style license that can be - # found in the LICENSE file. -diff -Naur node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.py node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.py ---- node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.py 2019-04-30 20:31:13.000000000 +0300 -+++ node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.py 2019-06-27 13:11:29.114031500 +0300 -@@ -1754,7 +1754,7 @@ - return '%(python)s gyp-win-tool link-with-manifests $arch %(embed)s ' \ - '%(out)s "%(ldcmd)s" %(resname)s $mt $rc "$intermediatemanifest" ' \ - '$manifests' % { -- 'python': sys.executable, -+ 'python2': sys.executable, - 'out': out, - 'ldcmd': ldcmd, - 'resname': resource_name, -diff -Naur node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja_test.py node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja_test.py ---- node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja_test.py 2019-04-30 20:31:13.000000000 +0300 -+++ node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja_test.py 2019-06-27 13:11:29.134031500 +0300 -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/env python2 - - # Copyright (c) 2012 Google Inc. All rights reserved. - # Use of this source code is governed by a BSD-style license that can be -diff -Naur node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode.py node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode.py ---- node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode.py 2019-04-30 20:31:13.000000000 +0300 -+++ node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode.py 2019-06-27 13:11:29.159031600 +0300 -@@ -283,7 +283,7 @@ - command_prefix = '' - if serialize_all_tests: - command_prefix = \ --"""python -c "import fcntl, subprocess, sys -+"""python2 -c "import fcntl, subprocess, sys - file = open('$TMPDIR/GYP_serialize_test_runs', 'a') - fcntl.flock(file.fileno(), fcntl.LOCK_EX) - sys.exit(subprocess.call(sys.argv[1:]))" """ -diff -Naur node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode_test.py node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode_test.py ---- node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode_test.py 2019-04-30 20:31:13.000000000 +0300 -+++ node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode_test.py 2019-06-27 13:11:29.184031600 +0300 -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/env python2 - - # Copyright (c) 2013 Google Inc. All rights reserved. - # Use of this source code is governed by a BSD-style license that can be -diff -Naur node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/input_test.py node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/input_test.py ---- node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/input_test.py 2019-04-30 20:31:13.000000000 +0300 -+++ node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/input_test.py 2019-06-27 13:11:29.264031700 +0300 -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/env python2 - - # Copyright 2013 Google Inc. All rights reserved. - # Use of this source code is governed by a BSD-style license that can be -diff -Naur node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/mac_tool.py node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/mac_tool.py ---- node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/mac_tool.py 2019-04-30 20:31:13.000000000 +0300 -+++ node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/mac_tool.py 2019-06-27 13:11:29.289031800 +0300 -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/env python2 - # Copyright (c) 2012 Google Inc. All rights reserved. - # Use of this source code is governed by a BSD-style license that can be - # found in the LICENSE file. -diff -Naur node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings_test.py node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings_test.py ---- node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings_test.py 2019-04-30 20:31:13.000000000 +0300 -+++ node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings_test.py 2019-06-27 13:11:29.394031900 +0300 -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/env python2 - - # Copyright (c) 2012 Google Inc. All rights reserved. - # Use of this source code is governed by a BSD-style license that can be -diff -Naur node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/win_tool.py node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/win_tool.py ---- node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/win_tool.py 2019-04-30 20:31:13.000000000 +0300 -+++ node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/win_tool.py 2019-06-27 13:11:29.619032200 +0300 -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/env python2 - - # Copyright (c) 2012 Google Inc. All rights reserved. - # Use of this source code is governed by a BSD-style license that can be -@@ -144,7 +144,7 @@ - # first and only link. We still tell link to generate a manifest, but we - # only use that to assert that our simpler process did not miss anything. - variables = { -- 'python': sys.executable, -+ 'python2': sys.executable, - 'arch': arch, - 'out': out, - 'ldcmd': ldcmd, -diff -Naur node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/samples/samples node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/samples/samples ---- node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/samples/samples 2019-04-30 20:31:13.000000000 +0300 -+++ node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/samples/samples 2019-06-27 13:11:29.784032400 +0300 -@@ -1,4 +1,4 @@ --#!/usr/bin/python -+#!/usr/bin/python2 - - # Copyright (c) 2009 Google Inc. All rights reserved. - # Use of this source code is governed by a BSD-style license that can be -diff -Naur node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/setup.py node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/setup.py ---- node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/setup.py 2019-04-30 20:31:13.000000000 +0300 -+++ node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/setup.py 2019-06-27 13:11:29.844032500 +0300 -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/env python2 - - # Copyright (c) 2009 Google Inc. All rights reserved. - # Use of this source code is governed by a BSD-style license that can be -diff -Naur node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/tools/emacs/testdata/media.gyp node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/tools/emacs/testdata/media.gyp ---- node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/tools/emacs/testdata/media.gyp 2019-04-30 20:31:13.000000000 +0300 -+++ node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/tools/emacs/testdata/media.gyp 2019-06-27 13:11:29.974032700 +0300 -@@ -987,7 +987,7 @@ - '<(SHARED_INTERMEDIATE_DIR)/media/jni/media_player_listener_jni.h', - ], - 'action': [ -- 'python', -+ 'python2', - '<(DEPTH)/base/android/jni_generator/jni_generator.py', - '-o', - '<@(_inputs)', -diff -Naur node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/tools/emacs/testdata/media.gyp.fontified node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/tools/emacs/testdata/media.gyp.fontified ---- node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/tools/emacs/testdata/media.gyp.fontified 2019-04-30 20:31:13.000000000 +0300 -+++ node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/tools/emacs/testdata/media.gyp.fontified 2019-06-27 13:11:29.999032700 +0300 -@@ -988,7 +988,7 @@ - '<(SHARED_INTERMEDIATE_DIR)/media/jni/media_player_listener_jni.h', - ], - 'action': [ -- 'python', -+ 'python2', - '<(DEPTH)/base/android/jni_generator/jni_generator.py', - '-o', - '<@(_inputs)', -diff -Naur node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/tools/graphviz.py node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/tools/graphviz.py ---- node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/tools/graphviz.py 2019-04-30 20:31:13.000000000 +0300 -+++ node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/tools/graphviz.py 2019-06-27 13:11:30.024032800 +0300 -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/env python2 - - # Copyright (c) 2011 Google Inc. All rights reserved. - # Use of this source code is governed by a BSD-style license that can be -diff -Naur node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/tools/pretty_gyp.py node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/tools/pretty_gyp.py ---- node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/tools/pretty_gyp.py 2019-04-30 20:31:13.000000000 +0300 -+++ node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/tools/pretty_gyp.py 2019-06-27 13:11:30.054032800 +0300 -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/env python2 - - # Copyright (c) 2012 Google Inc. All rights reserved. - # Use of this source code is governed by a BSD-style license that can be -diff -Naur node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/tools/pretty_sln.py node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/tools/pretty_sln.py ---- node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/tools/pretty_sln.py 2019-04-30 20:31:13.000000000 +0300 -+++ node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/tools/pretty_sln.py 2019-06-27 13:11:30.074032900 +0300 -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/env python2 - - # Copyright (c) 2012 Google Inc. All rights reserved. - # Use of this source code is governed by a BSD-style license that can be -diff -Naur node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/tools/pretty_vcproj.py node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/tools/pretty_vcproj.py ---- node-v11.15.0-orig/deps/npm/node_modules/node-gyp/gyp/tools/pretty_vcproj.py 2019-04-30 20:31:13.000000000 +0300 -+++ node-v11.15.0/deps/npm/node_modules/node-gyp/gyp/tools/pretty_vcproj.py 2019-06-27 13:11:30.104032900 +0300 -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/env python2 - - # Copyright (c) 2012 Google Inc. All rights reserved. - # Use of this source code is governed by a BSD-style license that can be -diff -Naur node-v11.15.0-orig/deps/npm/node_modules/node-gyp/lib/configure.js node-v11.15.0/deps/npm/node_modules/node-gyp/lib/configure.js ---- node-v11.15.0-orig/deps/npm/node_modules/node-gyp/lib/configure.js 2019-04-30 20:31:13.000000000 +0300 -+++ node-v11.15.0/deps/npm/node_modules/node-gyp/lib/configure.js 2019-06-27 13:11:30.284033100 +0300 -@@ -47,7 +47,7 @@ - - function getNodeDir () { - -- // 'python' should be set by now -+ // 'python2' should be set by now - process.env.PYTHON = python - - if (gyp.opts.nodedir) { -@@ -397,7 +397,7 @@ - if (err) { - this.log.verbose('`which` failed', this.python, err) - if (this.python === 'python2') { -- this.python = 'python' -+ this.python = 'python2' - return this.checkPython() - } - if (this.win) { -diff -Naur node-v11.15.0-orig/deps/npm/node_modules/node-gyp/README.md node-v11.15.0/deps/npm/node_modules/node-gyp/README.md ---- node-v11.15.0-orig/deps/npm/node_modules/node-gyp/README.md 2019-04-30 20:31:13.000000000 +0300 -+++ node-v11.15.0/deps/npm/node_modules/node-gyp/README.md 2019-06-27 13:11:31.969035500 +0300 -@@ -70,7 +70,7 @@ - ``` - - If `node-gyp` is called by way of `npm` *and* you have multiple versions of --Python installed, then you can set `npm`'s 'python' config key to the appropriate -+Python installed, then you can set `npm`'s 'python2' config key to the appropriate - value: - - ``` bash -diff -Naur node-v11.15.0-orig/deps/npm/node_modules/node-gyp/test/test-addon.js node-v11.15.0/deps/npm/node_modules/node-gyp/test/test-addon.js ---- node-v11.15.0-orig/deps/npm/node_modules/node-gyp/test/test-addon.js 2019-04-30 20:31:13.000000000 +0300 -+++ node-v11.15.0/deps/npm/node_modules/node-gyp/test/test-addon.js 2019-06-27 13:11:32.224035900 +0300 -@@ -16,13 +16,13 @@ - - function getEncoding() { - var code = 'import locale;print locale.getdefaultlocale()[1]' -- return execFileSync('python', ['-c', code]).toString().trim() -+ return execFileSync('python2', ['-c', code]).toString().trim() - } - - function checkCharmapValid() { - var data - try { -- data = execFileSync('python', ['fixtures/test-charmap.py'], -+ data = execFileSync('python2', ['fixtures/test-charmap.py'], - { cwd: __dirname }) - } catch (err) { - return false -diff -Naur node-v11.15.0-orig/deps/npm/node_modules/node-gyp/test/test-find-python.js node-v11.15.0/deps/npm/node_modules/node-gyp/test/test-find-python.js ---- node-v11.15.0-orig/deps/npm/node_modules/node-gyp/test/test-find-python.js 2019-04-30 20:31:13.000000000 +0300 -+++ node-v11.15.0/deps/npm/node_modules/node-gyp/test/test-find-python.js 2019-06-27 13:11:32.364036100 +0300 -@@ -9,7 +9,7 @@ - test('find python', function (t) { - t.plan(4) - -- configure.test.findPython('python', function (err, found) { -+ configure.test.findPython('python2', function (err, found) { - t.strictEqual(err, null) - var proc = execFile(found, ['-V'], function (err, stdout, stderr) { - t.strictEqual(err, null) -@@ -55,13 +55,13 @@ - test('find python - python', function (t) { - t.plan(5) - -- var f = new TestPythonFinder('python', done) -+ var f = new TestPythonFinder('python2', done) - f.which = function(program, cb) { -- t.strictEqual(program, 'python') -+ t.strictEqual(program, 'python2') - cb(null, program) - } - f.execFile = function(program, args, opts, cb) { -- t.strictEqual(program, 'python') -+ t.strictEqual(program, 'python2') - t.ok(/import sys/.test(args[1])) - cb(null, '2.7.0') - } -@@ -69,20 +69,20 @@ - - function done(err, python) { - t.strictEqual(err, null) -- t.strictEqual(python, 'python') -+ t.strictEqual(python, 'python2') - } - }) - - test('find python - python too old', function (t) { - t.plan(4) - -- var f = new TestPythonFinder('python', done) -+ var f = new TestPythonFinder('python2', done) - f.which = function(program, cb) { -- t.strictEqual(program, 'python') -+ t.strictEqual(program, 'python2') - cb(null, program) - } - f.execFile = function(program, args, opts, cb) { -- t.strictEqual(program, 'python') -+ t.strictEqual(program, 'python2') - t.ok(/import sys/.test(args[1])) - cb(null, '2.3.4') - } -@@ -96,13 +96,13 @@ - test('find python - python too new', function (t) { - t.plan(4) - -- var f = new TestPythonFinder('python', done) -+ var f = new TestPythonFinder('python2', done) - f.which = function(program, cb) { -- t.strictEqual(program, 'python') -+ t.strictEqual(program, 'python2') - cb(null, program) - } - f.execFile = function(program, args, opts, cb) { -- t.strictEqual(program, 'python') -+ t.strictEqual(program, 'python2') - t.ok(/import sys/.test(args[1])) - cb(null, '3.0.0') - } -@@ -116,9 +116,9 @@ - test('find python - no python', function (t) { - t.plan(2) - -- var f = new TestPythonFinder('python', done) -+ var f = new TestPythonFinder('python2', done) - f.which = function(program, cb) { -- t.strictEqual(program, 'python') -+ t.strictEqual(program, 'python2') - cb(new Error('not found')) - } - f.checkPython() -@@ -134,14 +134,14 @@ - var f = new TestPythonFinder('python2', done) - f.which = function(program, cb) { - f.which = function(program, cb) { -- t.strictEqual(program, 'python') -+ t.strictEqual(program, 'python2') - cb(null, program) - } - t.strictEqual(program, 'python2') - cb(new Error('not found')) - } - f.execFile = function(program, args, opts, cb) { -- t.strictEqual(program, 'python') -+ t.strictEqual(program, 'python2') - t.ok(/import sys/.test(args[1])) - cb(null, '2.7.0') - } -@@ -149,7 +149,7 @@ - - function done(err, python) { - t.strictEqual(err, null) -- t.strictEqual(python, 'python') -+ t.strictEqual(python, 'python2') - } - }) - -@@ -162,7 +162,7 @@ - - f.which = function(program, cb) { - f.which = function(program, cb) { -- t.strictEqual(program, 'python') -+ t.strictEqual(program, 'python2') - cb(new Error('not found')) - } - t.strictEqual(program, 'python2') -@@ -178,12 +178,12 @@ - test('find python - no python, use python launcher', function (t) { - t.plan(8) - -- var f = new TestPythonFinder('python', done) -+ var f = new TestPythonFinder('python2', done) - f.env = {} - f.win = true - - f.which = function(program, cb) { -- t.strictEqual(program, 'python') -+ t.strictEqual(program, 'python2') - cb(new Error('not found')) - } - f.execFile = function(program, args, opts, cb) { -@@ -208,12 +208,12 @@ - test('find python - python 3, use python launcher', function (t) { - t.plan(10) - -- var f = new TestPythonFinder('python', done) -+ var f = new TestPythonFinder('python2', done) - f.env = {} - f.win = true - - f.which = function(program, cb) { -- t.strictEqual(program, 'python') -+ t.strictEqual(program, 'python2') - cb(null, program) - } - f.execFile = function(program, args, opts, cb) { -@@ -228,7 +228,7 @@ - t.notEqual(args.indexOf('-c'), -1) - cb(null, 'Z:\\snake.exe') - } -- t.strictEqual(program, 'python') -+ t.strictEqual(program, 'python2') - t.ok(/import sys/.test(args[1])) - cb(null, '3.0.0') - } -@@ -244,13 +244,13 @@ - function (t) { - t.plan(9) - -- var f = new TestPythonFinder('python', done) -+ var f = new TestPythonFinder('python2', done) - f.checkedPythonLauncher = false - f.env = {} - f.win = true - - f.which = function(program, cb) { -- t.strictEqual(program, 'python') -+ t.strictEqual(program, 'python2') - cb(null, program) - } - f.execFile = function(program, args, opts, cb) { -@@ -265,7 +265,7 @@ - t.notEqual(args.indexOf('-c'), -1) - cb(null, 'Z:\\snake.exe') - } -- t.strictEqual(program, 'python') -+ t.strictEqual(program, 'python2') - t.ok(/import sys/.test(args[1])) - cb(null, '3.0.0') - } -@@ -280,12 +280,12 @@ - t.plan(6) - - var re = /C:[\\\/]Python27[\\\/]python[.]exe/ -- var f = new TestPythonFinder('python', done) -+ var f = new TestPythonFinder('python2', done) - f.env = {} - f.win = true - - f.which = function(program, cb) { -- t.strictEqual(program, 'python') -+ t.strictEqual(program, 'python2') - cb(new Error('not found')) - } - f.execFile = function(program, args, opts, cb) { -@@ -312,12 +312,12 @@ - test('find python - no python, no python launcher, bad guess', function (t) { - t.plan(4) - -- var f = new TestPythonFinder('python', done) -+ var f = new TestPythonFinder('python2', done) - f.env = { SystemDrive: 'Z:\\' } - f.win = true - - f.which = function(program, cb) { -- t.strictEqual(program, 'python') -+ t.strictEqual(program, 'python2') - cb(new Error('not found')) - } - f.execFile = function(program, args, opts, cb) { -diff -Naur node-v11.15.0-orig/deps/openssl/openssl/fuzz/helper.py node-v11.15.0/deps/openssl/openssl/fuzz/helper.py ---- node-v11.15.0-orig/deps/openssl/openssl/fuzz/helper.py 2019-04-30 20:31:26.000000000 +0300 -+++ node-v11.15.0/deps/openssl/openssl/fuzz/helper.py 2019-06-27 13:13:35.496208600 +0300 -@@ -1,4 +1,4 @@ --#!/usr/bin/python -+#!/usr/bin/python2 - # - # Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. - # -diff -Naur node-v11.15.0-orig/deps/uv/gyp_uv.py node-v11.15.0/deps/uv/gyp_uv.py ---- node-v11.15.0-orig/deps/uv/gyp_uv.py 2019-04-30 20:31:27.000000000 +0300 -+++ node-v11.15.0/deps/uv/gyp_uv.py 2019-06-27 13:13:43.351219600 +0300 -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/env python2 - - import os - import platform -diff -Naur node-v11.15.0-orig/deps/uv/tools/make_dist_html.py node-v11.15.0/deps/uv/tools/make_dist_html.py ---- node-v11.15.0-orig/deps/uv/tools/make_dist_html.py 2019-04-30 20:31:27.000000000 +0300 -+++ node-v11.15.0/deps/uv/tools/make_dist_html.py 2019-06-27 13:13:46.876224500 +0300 -@@ -1,4 +1,4 @@ --#!/usr/bin/python -+#!/usr/bin/python2 - - from __future__ import print_function - -diff -Naur node-v11.15.0-orig/deps/v8/DEPS node-v11.15.0/deps/v8/DEPS ---- node-v11.15.0-orig/deps/v8/DEPS 2019-04-30 20:31:27.000000000 +0300 -+++ node-v11.15.0/deps/v8/DEPS 2019-06-27 13:13:48.121226200 +0300 -@@ -107,7 +107,7 @@ - 'name': 'disable_depot_tools_selfupdate', - 'pattern': '.', - 'action': [ -- 'python', -+ 'python2', - 'v8/third_party/depot_tools/update_depot_tools_toggle.py', - '--disable', - ], -@@ -119,7 +119,7 @@ - 'name': 'landmines', - 'pattern': '.', - 'action': [ -- 'python', -+ 'python2', - 'v8/build/landmines.py', - '--landmine-scripts', - 'v8/tools/get_landmines.py', -@@ -284,35 +284,35 @@ - 'name': 'sysroot_arm', - 'pattern': '.', - 'condition': '(checkout_linux and checkout_arm)', -- 'action': ['python', 'v8/build/linux/sysroot_scripts/install-sysroot.py', -+ 'action': ['python2', 'v8/build/linux/sysroot_scripts/install-sysroot.py', - '--arch=arm'], - }, - { - 'name': 'sysroot_arm64', - 'pattern': '.', - 'condition': '(checkout_linux and checkout_arm64)', -- 'action': ['python', 'v8/build/linux/sysroot_scripts/install-sysroot.py', -+ 'action': ['python2', 'v8/build/linux/sysroot_scripts/install-sysroot.py', - '--arch=arm64'], - }, - { - 'name': 'sysroot_x86', - 'pattern': '.', - 'condition': '(checkout_linux and (checkout_x86 or checkout_x64))', -- 'action': ['python', 'v8/build/linux/sysroot_scripts/install-sysroot.py', -+ 'action': ['python2', 'v8/build/linux/sysroot_scripts/install-sysroot.py', - '--arch=x86'], - }, - { - 'name': 'sysroot_mips', - 'pattern': '.', - 'condition': '(checkout_linux and checkout_mips)', -- 'action': ['python', 'v8/build/linux/sysroot_scripts/install-sysroot.py', -+ 'action': ['python2', 'v8/build/linux/sysroot_scripts/install-sysroot.py', - '--arch=mips'], - }, - { - 'name': 'sysroot_x64', - 'pattern': '.', - 'condition': 'checkout_linux and checkout_x64', -- 'action': ['python', 'v8/build/linux/sysroot_scripts/install-sysroot.py', -+ 'action': ['python2', 'v8/build/linux/sysroot_scripts/install-sysroot.py', - '--arch=x64'], - }, - { -@@ -342,14 +342,14 @@ - 'name': 'win_toolchain', - 'pattern': '.', - 'condition': 'checkout_win', -- 'action': ['python', 'v8/build/vs_toolchain.py', 'update'], -+ 'action': ['python2', 'v8/build/vs_toolchain.py', 'update'], - }, - { - # Update the Mac toolchain if necessary. - 'name': 'mac_toolchain', - 'pattern': '.', - 'condition': 'checkout_mac', -- 'action': ['python', 'v8/build/mac_toolchain.py'], -+ 'action': ['python2', 'v8/build/mac_toolchain.py'], - }, - # Pull binutils for linux, enabled debug fission for faster linking / - # debugging when used with clang on Ubuntu Precise. -@@ -359,7 +359,7 @@ - 'pattern': 'v8/third_party/binutils', - 'condition': 'host_os == "linux"', - 'action': [ -- 'python', -+ 'python2', - 'v8/third_party/binutils/download.py', - ], - }, -@@ -369,13 +369,13 @@ - 'pattern': '.', - # clang not supported on aix - 'condition': 'host_os != "aix"', -- 'action': ['python', 'v8/tools/clang/scripts/update.py'], -+ 'action': ['python2', 'v8/tools/clang/scripts/update.py'], - }, - { - # Update LASTCHANGE. - 'name': 'lastchange', - 'pattern': '.', -- 'action': ['python', 'v8/build/util/lastchange.py', -+ 'action': ['python2', 'v8/build/util/lastchange.py', - '-o', 'v8/build/util/LASTCHANGE'], - }, - { -@@ -383,7 +383,7 @@ - 'pattern': '.', - 'condition': 'checkout_fuchsia', - 'action': [ -- 'python', -+ 'python2', - 'v8/build/fuchsia/update_sdk.py', - ], - }, -@@ -415,7 +415,7 @@ - 'pattern': '.', - 'condition': 'check_v8_header_includes', - 'action': [ -- 'python', -+ 'python2', - 'v8/tools/generate-header-include-checks.py', - ], - }, -diff -Naur node-v11.15.0-orig/deps/v8/gypfiles/cctest.gyp node-v11.15.0/deps/v8/gypfiles/cctest.gyp ---- node-v11.15.0-orig/deps/v8/gypfiles/cctest.gyp 2019-04-30 20:31:27.000000000 +0300 -+++ node-v11.15.0/deps/v8/gypfiles/cctest.gyp 2019-06-27 13:13:48.231226400 +0300 -@@ -438,7 +438,7 @@ - '<(generated_file)', - ], - 'action': [ -- 'python', -+ 'python2', - '../tools/js2c.py', - '<@(_outputs)', - 'TEST', # type -diff -Naur node-v11.15.0-orig/deps/v8/gypfiles/coverage_wrapper.py node-v11.15.0/deps/v8/gypfiles/coverage_wrapper.py ---- node-v11.15.0-orig/deps/v8/gypfiles/coverage_wrapper.py 2019-04-30 20:31:27.000000000 +0300 -+++ node-v11.15.0/deps/v8/gypfiles/coverage_wrapper.py 2019-06-27 13:13:48.261226400 +0300 -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/env python2 - # Copyright 2016 the V8 project authors. All rights reserved. - # Use of this source code is governed by a BSD-style license that can be - # found in the LICENSE file. -diff -Naur node-v11.15.0-orig/deps/v8/gypfiles/d8.gyp node-v11.15.0/deps/v8/gypfiles/d8.gyp ---- node-v11.15.0-orig/deps/v8/gypfiles/d8.gyp 2019-04-30 20:31:27.000000000 +0300 -+++ node-v11.15.0/deps/v8/gypfiles/d8.gyp 2019-06-27 13:13:48.286226500 +0300 -@@ -109,7 +109,7 @@ - '<(SHARED_INTERMEDIATE_DIR)/d8-js.cc', - ], - 'action': [ -- 'python', -+ 'python2', - '../tools/js2c.py', - '<@(_outputs)', - 'D8', -diff -Naur node-v11.15.0-orig/deps/v8/gypfiles/gyp_v8 node-v11.15.0/deps/v8/gypfiles/gyp_v8 ---- node-v11.15.0-orig/deps/v8/gypfiles/gyp_v8 2019-04-30 20:31:27.000000000 +0300 -+++ node-v11.15.0/deps/v8/gypfiles/gyp_v8 2019-06-27 13:13:48.456226700 +0300 -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/env python2 - # - # Copyright 2012 the V8 project authors. All rights reserved. - # Redistribution and use in source and binary forms, with or without -diff -Naur node-v11.15.0-orig/deps/v8/gypfiles/inspector.gypi node-v11.15.0/deps/v8/gypfiles/inspector.gypi ---- node-v11.15.0-orig/deps/v8/gypfiles/inspector.gypi 2019-04-30 20:31:27.000000000 +0300 -+++ node-v11.15.0/deps/v8/gypfiles/inspector.gypi 2019-06-27 13:13:48.536226800 +0300 -@@ -101,7 +101,7 @@ - '<@(SHARED_INTERMEDIATE_DIR)/src/js_protocol.stamp', - ], - 'action': [ -- 'python', -+ 'python2', - '<(protocol_path)/CheckProtocolCompatibility.py', - '--stamp', '<@(_outputs)', - '<(inspector_path)/js_protocol.json', -@@ -120,7 +120,7 @@ - ], - 'process_outputs_as_sources': 1, - 'action': [ -- 'python', -+ 'python2', - '<(protocol_path)/CodeGenerator.py', - '--jinja_dir', '../third_party', - '--output_base', '<(SHARED_INTERMEDIATE_DIR)/src/inspector', -@@ -139,7 +139,7 @@ - ], - 'process_outputs_as_sources': 1, - 'action': [ -- 'python', -+ 'python2', - '<(inspector_path)/build/xxd.py', - 'InjectedScriptSource_js', - '<(inspector_path)/injected-script-source.js', -diff -Naur node-v11.15.0-orig/deps/v8/gypfiles/run-tests-legacy.py node-v11.15.0/deps/v8/gypfiles/run-tests-legacy.py ---- node-v11.15.0-orig/deps/v8/gypfiles/run-tests-legacy.py 2019-04-30 20:31:27.000000000 +0300 -+++ node-v11.15.0/deps/v8/gypfiles/run-tests-legacy.py 2019-06-27 13:13:48.696227000 +0300 -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/env python2 - # Copyright 2017 the V8 project authors. All rights reserved. - # Use of this source code is governed by a BSD-style license that can be - # found in the LICENSE file. -diff -Naur node-v11.15.0-orig/deps/v8/gypfiles/shim_headers.gypi node-v11.15.0/deps/v8/gypfiles/shim_headers.gypi ---- node-v11.15.0-orig/deps/v8/gypfiles/shim_headers.gypi 2019-04-30 20:31:27.000000000 +0300 -+++ node-v11.15.0/deps/v8/gypfiles/shim_headers.gypi 2019-06-27 13:13:48.781227200 +0300 -@@ -62,7 +62,7 @@ - 'outputs': [ - ' -Date: Tue, 14 Feb 2017 21:43:31 -0500 -Subject: [PATCH 02/23] Fix system-icu build - ---- - deps/v8/gypfiles/v8.gyp | 5 ----- - 1 file changed, 5 deletions(-) - -diff --git a/deps/v8/gypfiles/v8.gyp b/deps/v8/gypfiles/v8.gyp -index e1d4aea0..05204ef2 100644 ---- a/deps/v8/gypfiles/v8.gyp -+++ b/deps/v8/gypfiles/v8.gyp -@@ -1922,11 +1922,6 @@ - '../src/runtime/runtime-intl.cc', - ], - }], -- ['OS=="win" and v8_enable_i18n_support==1', { -- 'dependencies': [ -- '<(icu_gyp_path):icudata', -- ], -- }], - ], - }, # v8_base - { --- -2.17.0.windows.1 diff --git a/mingw-w64-nodejs/0003-Include-win32-headers.h-in-v8-atomicops.h.patch b/mingw-w64-nodejs/0003-Include-win32-headers.h-in-v8-atomicops.h.patch deleted file mode 100644 index aca4beba56..0000000000 --- a/mingw-w64-nodejs/0003-Include-win32-headers.h-in-v8-atomicops.h.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 71b0c4625ab94d7632a061dccaf665fce80dd22c Mon Sep 17 00:00:00 2001 -From: Alethea Rose -Date: Tue, 14 Feb 2017 22:26:28 -0500 -Subject: [PATCH 03/23] Include win32-headers.h in v8/atomicops.h - -[jes: this may not be needed anymore... another instance where a good -commit message would save a ton of time!] ---- - deps/v8/src/base/atomicops.h | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/deps/v8/src/base/atomicops.h b/deps/v8/src/base/atomicops.h -index c4c28f70..30384303 100644 ---- a/deps/v8/src/base/atomicops.h -+++ b/deps/v8/src/base/atomicops.h -@@ -36,6 +36,10 @@ - #include "src/base/base-export.h" - #include "src/base/build_config.h" - -+#if defined(_WIN32) -+#include "win32-headers.h" -+#endif -+ - namespace v8 { - namespace base { - --- -2.17.0.windows.1 - diff --git a/mingw-w64-nodejs/0004-Define-localtime_s-for-MinGW.patch b/mingw-w64-nodejs/0004-Define-localtime_s-for-MinGW.patch deleted file mode 100644 index 3994b25030..0000000000 --- a/mingw-w64-nodejs/0004-Define-localtime_s-for-MinGW.patch +++ /dev/null @@ -1,33 +0,0 @@ -From fa7be56b0c792732aaa07b1f778987c51f38b810 Mon Sep 17 00:00:00 2001 -From: Alethea Rose -Date: Tue, 14 Feb 2017 23:07:39 -0500 -Subject: [PATCH 04/23] Define localtime_s for MinGW - ---- - deps/v8/src/base/platform/platform-win32.cc | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/deps/v8/src/base/platform/platform-win32.cc b/deps/v8/src/base/platform/platform-win32.cc -index 7ce0a0d5..9453a673 100644 ---- a/deps/v8/src/base/platform/platform-win32.cc -+++ b/deps/v8/src/base/platform/platform-win32.cc -@@ -42,8 +42,6 @@ inline void MemoryFence() { - __asm__ __volatile__("xchgl %%eax,%0 ":"=r" (barrier)); - } - --#endif // __MINGW64_VERSION_MAJOR -- - - int localtime_s(tm* out_tm, const time_t* time) { - tm* posix_local_time_struct = localtime_r(time, out_tm); -@@ -51,6 +49,7 @@ int localtime_s(tm* out_tm, const time_t* time) { - return 0; - } - -+#endif // __MINGW64_VERSION_MAJOR - - int fopen_s(FILE** pFile, const char* filename, const char* mode) { - *pFile = fopen(filename, mode); --- -2.17.0.windows.1 - diff --git a/mingw-w64-nodejs/0005-Remove-.lib-suffix-on-linked-libraries.patch b/mingw-w64-nodejs/0005-Remove-.lib-suffix-on-linked-libraries.patch deleted file mode 100644 index 295be7aba0..0000000000 --- a/mingw-w64-nodejs/0005-Remove-.lib-suffix-on-linked-libraries.patch +++ /dev/null @@ -1,103 +0,0 @@ -From 5f390ae5e8857ad8c4d0a8b00818eadd8d8f4daa Mon Sep 17 00:00:00 2001 -From: Alethea Rose -Date: Tue, 14 Feb 2017 23:11:03 -0500 -Subject: [PATCH 05/23] Remove .lib suffix on linked libraries - ---- - deps/v8/BUILD.gn | 8 ++++---- - deps/v8/gypfiles/v8.gyp | 8 ++++---- - node.gyp | 2 +- - 3 files changed, 9 insertions(+), 9 deletions(-) - -diff --git a/deps/v8/BUILD.gn b/deps/v8/BUILD.gn -index 9d95036a..9a8c48db 100644 ---- a/deps/v8/BUILD.gn -+++ b/deps/v8/BUILD.gn -@@ -3127,10 +3127,10 @@ v8_component("v8_libbase") { - defines += [ "_CRT_RAND_S" ] # for rand_s() - - libs = [ -- "dbghelp.lib", -- "shlwapi.lib", -- "winmm.lib", -- "ws2_32.lib", -+ "dbghelp", -+ "shlwapi", -+ "winmm", -+ "ws2_32", - ] - - data_deps += [ "//build/win:runtime_libs" ] -diff --git a/deps/v8/gypfiles/v8.gyp b/deps/v8/gypfiles/v8.gyp -index 05204ef2..1baa7ab3 100644 ---- a/deps/v8/gypfiles/v8.gyp -+++ b/deps/v8/gypfiles/v8.gyp -@@ -2152,10 +2152,10 @@ - 'msvs_disabled_warnings': [4351, 4355, 4800], - 'link_settings': { - 'libraries': [ -- '-ldbghelp.lib', -- '-lshlwapi.lib', -- '-lwinmm.lib', -- '-lws2_32.lib' -+ '-ldbghelp', -+ '-lshlwapi', -+ '-lwinmm', -+ '-lws2_32' - ], - }, - }], -diff --git a/node.gyp b/node.gyp -index 38dcdac0..dba17e28 100644 ---- a/node.gyp -+++ b/node.gyp -@@ -339,9 +339,9 @@ - 'conditions': [ - ['OS=="win"', { - 'libraries': [ -- 'dbghelp.lib', -- 'PsApi.lib', -- 'Ws2_32.lib', -+ 'dbghelp', -+ 'psapi', -+ 'ws2_32', - ], - 'dll_files': [ - 'dbghelp.dll', -@@ -586,7 +586,7 @@ - ], - }], - ], -- 'libraries': [ '-lpsapi.lib' ] -+ 'libraries': [ '-lpsapi' ] - }], - [ 'node_use_etw=="true"', { - 'defines': [ 'HAVE_ETW=1' ], -@@ -682,9 +682,9 @@ - 'conditions': [ - ['OS=="win"', { - 'libraries': [ -- 'dbghelp.lib', -- 'PsApi.lib', -- 'Ws2_32.lib', -+ 'dbghelp', -+ 'psapi', -+ 'ws2_32', - ], - 'dll_files': [ - 'dbghelp.dll', -@@ -1047,9 +1047,9 @@ - 'conditions': [ - ['OS=="win"', { - 'libraries': [ -- 'dbghelp.lib', -- 'PsApi.lib', -- 'Ws2_32.lib', -+ 'dbghelp', -+ 'psapi', -+ 'ws2_32', - ], - 'dll_files': [ - 'dbghelp.dll', --- -2.17.0.windows.1 diff --git a/mingw-w64-nodejs/0006-Define-_WIN32_WINNT-in-node.gyp.patch b/mingw-w64-nodejs/0006-Define-_WIN32_WINNT-in-node.gyp.patch deleted file mode 100644 index c3306a3acf..0000000000 --- a/mingw-w64-nodejs/0006-Define-_WIN32_WINNT-in-node.gyp.patch +++ /dev/null @@ -1,23 +0,0 @@ -From b2a82cd1865cbf1dc21db290b1be33439646dd04 Mon Sep 17 00:00:00 2001 -From: Alethea Rose -Date: Wed, 15 Feb 2017 02:03:24 -0500 -Subject: [PATCH 06/23] Define _WIN32_WINNT in node.gyp - ---- - node.gypi | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/node.gypi b/node.gypi -index 3990c59e..2705cefe 100644 ---- a/node.gypi -+++ b/node.gypi -@@ -55,5 +55,6 @@ - 'defines!': [ - 'NODE_PLATFORM="win"', - ], -+ 'defines': [ '_WIN32_WINNT=0x0601' ], - 'defines': [ - 'FD_SETSIZE=1024', - # we need to use node's preferred "win32" rather than gyp's preferred "win" --- -2.17.0.windows.1 diff --git a/mingw-w64-nodejs/0007-Skip-sys-resource-and-unneeded-includes-in-node.cc.patch b/mingw-w64-nodejs/0007-Skip-sys-resource-and-unneeded-includes-in-node.cc.patch deleted file mode 100644 index 16c227fd97..0000000000 --- a/mingw-w64-nodejs/0007-Skip-sys-resource-and-unneeded-includes-in-node.cc.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 245132eb35e4f9829737e56fe56a1ccbfd42690a Mon Sep 17 00:00:00 2001 -From: Alethea Rose -Date: Wed, 15 Feb 2017 02:45:09 -0500 -Subject: [PATCH 07/23] Skip sys/resource and unneeded includes in node.cc - ---- - src/node.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/node.cc b/src/node.cc -index d17752bb..0008d755 100644 ---- a/src/node.cc -+++ b/src/node.cc -@@ -94,7 +94,7 @@ - #include - #endif - --#if defined(_MSC_VER) -+#if defined(_WIN32) - #include - #include - #define STDIN_FILENO 0 --- -2.17.0.windows.1 - diff --git a/mingw-w64-nodejs/0008-Link-with-municode-and-extern-wmain-for-Unicode.patch b/mingw-w64-nodejs/0008-Link-with-municode-and-extern-wmain-for-Unicode.patch deleted file mode 100644 index c05812cb29..0000000000 --- a/mingw-w64-nodejs/0008-Link-with-municode-and-extern-wmain-for-Unicode.patch +++ /dev/null @@ -1,75 +0,0 @@ -From 3b353a4dbc0e96a35d18dde94a787945f1c5c58a Mon Sep 17 00:00:00 2001 -From: Alethea Rose -Date: Wed, 15 Feb 2017 19:11:53 -0500 -Subject: [PATCH 08/23] Link with -municode and extern wmain for Unicode - ---- - node.gyp | 5 +++-- - node.gypi | 1 + - src/node_main.cc | 9 +++++++++ - 3 files changed, 13 insertions(+), 2 deletions(-) - -diff --git a/node.gyp b/node.gyp -index dba17e28..aa6e0588 100644 ---- a/node.gyp -+++ b/node.gyp -@@ -586,7 +586,7 @@ - ], - }], - ], -- 'libraries': [ '-lpsapi' ] -+ 'libraries': [ '-municode', '-lpsapi' ] - }], - [ 'node_use_etw=="true"', { - 'defines': [ 'HAVE_ETW=1' ], -@@ -993,7 +993,8 @@ - '<(SHARED_INTERMEDIATE_DIR)', # for node_natives.h - ], - -- 'defines': [ 'NODE_WANT_INTERNALS=1' ], -+ 'defines': [ 'NODE_WANT_INTERNALS=1', '_UNICODE=1', 'UNICODE' ], -+ 'libraries': [ '-municode' ], - - 'sources': [ - 'test/cctest/node_module_reg.cc', -diff --git a/node.gypi b/node.gypi -index dba17e28..aa6e0588 100644 ---- a/node.gypi -+++ b/node.gypi -@@ -64,6 +64,7 @@ - # but we still inherit it from uv.h. - 'NOMINMAX', - '_UNICODE=1', -+ 'UNICODE', - ], - }, { # POSIX - 'defines': [ '__POSIX__' ], -diff --git a/src/node_main.cc b/src/node_main.cc -index 2a511b92..d592a1f8 100644 ---- a/src/node_main.cc -+++ b/src/node_main.cc -@@ -27,6 +27,10 @@ - #include - #include - -+#if defined(__MINGW_VERSION_MAJOR) -+#extern "C" { -+#endif -+ - int wmain(int argc, wchar_t* wargv[]) { - if (!IsWindows7OrGreater()) { - fprintf(stderr, "This application is only supported on Windows 7, " -@@ -71,6 +75,11 @@ int wmain(int argc, wchar_t *wargv[]) { - // Now that conversion is done, we can finally start. - return node::Start(argc, argv); - } -+ -+#if defined(__MINGW_VERSION_MAJOR) -+} -+#endif -+ - #else - // UNIX - #ifdef __linux__ --- -2.17.0.windows.1 diff --git a/mingw-w64-nodejs/0010-Fix-incorrect-test-assumptions-for-MinGW.patch b/mingw-w64-nodejs/0010-Fix-incorrect-test-assumptions-for-MinGW.patch deleted file mode 100644 index 180a53e799..0000000000 --- a/mingw-w64-nodejs/0010-Fix-incorrect-test-assumptions-for-MinGW.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 0216a3a3d9920be1c65aa1ed90b0548b04a99d05 Mon Sep 17 00:00:00 2001 -From: Alethea Rose -Date: Wed, 15 Feb 2017 22:21:51 -0500 -Subject: [PATCH 10/23] Fix incorrect test assumptions for MinGW - ---- - test/parallel/test-debugger-pid.js | 3 ++- - test/parallel/test-https-foafssl.js | 6 +++++- - test/parallel/test-npm-install.js | 5 +++++ - 4 files changed, 16 insertions(+), 3 deletions(-) - -diff --git a/test/parallel/test-debugger-pid.js b/test/parallel/test-debugger-pid.js -index e11d2315..857e6be7 100644 ---- a/test/parallel/test-debugger-pid.js -+++ b/test/parallel/test-debugger-pid.js -@@ -11,8 +11,9 @@ const interfacer = spawn(process.execPath, ['debug', '-p', '655555']); - - interfacer.stdout.setEncoding('utf-8'); - interfacer.stderr.setEncoding('utf-8'); -+const newline = common.isMinGW ? '\r\n' : '\n'; - const onData = (data) => { -- data = (buffer + data).split('\n'); -+ data = (buffer + data).split(newline); - buffer = data.pop(); - data.forEach(function(line) { - interfacer.emit('line', line); -diff --git a/test/parallel/test-https-foafssl.js b/test/parallel/test-https-foafssl.js -index 4e1a8fbc..6cf6deca 100644 ---- a/test/parallel/test-https-foafssl.js -+++ b/test/parallel/test-https-foafssl.js -@@ -81,7 +81,11 @@ server.listen(0, function() { - server.close(); - }); - -- client.stdin.write('GET /\n\n'); -+ if (common.isMinGW) { -+ client.stdin.write('GET /\r\n\r\n'); -+ } else { -+ client.stdin.write('GET /\n\n'); -+ } - - client.on('error', function(error) { - throw error; -diff --git a/test/parallel/test-npm-install.js b/test/parallel/test-npm-install.js -index d826eb09..be4084f2 100644 ---- a/test/parallel/test-npm-install.js -+++ b/test/parallel/test-npm-install.js -@@ -9,6 +9,11 @@ const assert = require('assert'); - const fs = require('fs'); - const fixtures = require('../common/fixtures'); - -+if(common.isMinGW) { -+ common.skip('npm is split into its own package'); -+ return; -+} -+ - const tmpdir = require('../common/tmpdir'); - tmpdir.refresh(); - const npmSandbox = path.join(tmpdir.path, 'npm-sandbox'); --- -2.17.0.windows.1 diff --git a/mingw-w64-nodejs/0011-detect-architecture.patch b/mingw-w64-nodejs/0011-detect-architecture.patch deleted file mode 100644 index 2d8563422d..0000000000 --- a/mingw-w64-nodejs/0011-detect-architecture.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 5ed8bd0689649f985ff1b89a63f064c078adc6a6 Mon Sep 17 00:00:00 2001 -From: Alexey Pavlov -Date: Thu, 12 Apr 2018 10:18:48 +0200 -Subject: [PATCH 11/23] detect architecture - ---- - configure.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/configure.py b/configure.py -index 5a242a1a..9950626e 100755 ---- a/configure.py -+++ b/configure.py -@@ -955,7 +955,7 @@ def configure_node(o): - o['variables']['node_report'] = b(not options.without_report) - o['default_configuration'] = 'Debug' if options.debug else 'Release' - -- host_arch = host_arch_win() if os.name == 'nt' else host_arch_cc() -+ host_arch = host_arch_win() if (os.name == 'nt' and not ('GCC' in sys.version)) else host_arch_cc() - target_arch = options.dest_cpu or host_arch - # ia32 is preferred by the build tools (GYP) over x86 even if we prefer the latter - # the Makefile resets this to x86 afterward --- -2.17.0.windows.1 diff --git a/mingw-w64-nodejs/0012-Use-shell-wrapper-script-for-npm-on-MSYS2-mingw-w64.patch b/mingw-w64-nodejs/0012-Use-shell-wrapper-script-for-npm-on-MSYS2-mingw-w64.patch deleted file mode 100644 index fcc5797df8..0000000000 --- a/mingw-w64-nodejs/0012-Use-shell-wrapper-script-for-npm-on-MSYS2-mingw-w64.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 94d3d4f85a245f474091a5e241e249ecbc2c12a1 Mon Sep 17 00:00:00 2001 -From: Alexey Pavlov -Date: Thu, 12 Apr 2018 10:20:30 +0200 -Subject: [PATCH 12/23] Use shell wrapper script for npm on MSYS2 mingw-w64 - ---- - tools/install.py | 24 ++++++++++++++++++++++-- - 1 file changed, 22 insertions(+), 2 deletions(-) - -diff --git a/tools/install.py b/tools/install.py -index be2bab54..20dfee30 100755 ---- a/tools/install.py -+++ b/tools/install.py -@@ -95,7 +95,17 @@ def npm_files(action): - if action == uninstall: - action([link_path], 'bin/npm') - elif action == install: -- try_symlink('../lib/node_modules/npm/bin/npm-cli.js', link_path) -+ # Use MSYS2 shell script wrapper. -+ if ((os.name == 'nt' and 'GCC' in sys.version) or -+ (os.name == 'posix' and 'NT' in platform.system())): -+ # Copy the wrapper shell script -+ try_copy('deps/npm/bin/npm', link_path) -+ # deps/npm/bin/npm is a shell script so the shebang must run sh, not node -+ s = open(link_path, 'r').read() -+ s = re.sub(r'#!.*\n', '#!' + '/usr/bin/env sh' + '\n', s) -+ open(link_path, 'w').write(s) -+ else: -+ try_symlink('../lib/node_modules/npm/bin/npm-cli.js', link_path) - else: - assert(0) # unhandled action type - -@@ -104,7 +114,17 @@ def npm_files(action): - if action == uninstall: - action([link_path], 'bin/npx') - elif action == install: -- try_symlink('../lib/node_modules/npm/bin/npx-cli.js', link_path) -+ # Use MSYS2 shell script wrapper. -+ if ((os.name == 'nt' and 'GCC' in sys.version) or -+ (os.name == 'posix' and 'NT' in platform.system())): -+ # Copy the wrapper shell script -+ try_copy('deps/npm/bin/npx', link_path) -+ # deps/npm/bin/npm is a shell script so the shebang must run sh, not node -+ s = open(link_path, 'r').read() -+ s = re.sub(r'#!.*\n', '#!' + '/usr/bin/env sh' + '\n', s) -+ open(link_path, 'w').write(s) -+ else: -+ try_symlink('../lib/node_modules/npm/bin/npx-cli.js', link_path) - else: - assert(0) # unhandled action type - --- -2.17.0.windows.1 - diff --git a/mingw-w64-nodejs/0013-Revert-to-FHS-installation-paths-on-Windows-tests-no.patch b/mingw-w64-nodejs/0013-Revert-to-FHS-installation-paths-on-Windows-tests-no.patch deleted file mode 100644 index e6654574fd..0000000000 --- a/mingw-w64-nodejs/0013-Revert-to-FHS-installation-paths-on-Windows-tests-no.patch +++ /dev/null @@ -1,127 +0,0 @@ -From bcee3d1a11b3cfdb3e2cf970674b10829b9cf293 Mon Sep 17 00:00:00 2001 -From: Mateusz Mikula -Date: Sat, 24 Jun 2017 13:59:32 +0200 -Subject: [PATCH 13/23] Revert to FHS installation paths on Windows (tests not - fixed) - - Author: Mateusz Mikula ---- - deps/npm/bin/npm | 4 ++-- - deps/npm/bin/npm.cmd | 4 ++-- - deps/npm/lib/config/defaults.js | 7 ++----- - deps/npm/lib/npm.js | 6 ++---- - deps/npm/lib/unbuild.js | 1 - - deps/npm/node_modules/bin-links/index.js | 2 +- - 6 files changed, 9 insertions(+), 15 deletions(-) - -diff --git a/deps/npm/bin/npm b/deps/npm/bin/npm -index 5acd6fb6..dc01687e 100755 ---- a/deps/npm/bin/npm -+++ b/deps/npm/bin/npm -@@ -12,12 +12,12 @@ if ! [ -x "$NODE_EXE" ]; then - NODE_EXE=node - fi - --NPM_CLI_JS="$basedir/node_modules/npm/bin/npm-cli.js" -+NPM_CLI_JS="$basedir/../lib/node_modules/npm/bin/npm-cli.js" - - case `uname` in - *MINGW*) - NPM_PREFIX=`"$NODE_EXE" "$NPM_CLI_JS" prefix -g` -- NPM_PREFIX_NPM_CLI_JS="$NPM_PREFIX/node_modules/npm/bin/npm-cli.js" -+ NPM_PREFIX_NPM_CLI_JS="$NPM_PREFIX/../lib/node_modules/npm/bin/npm-cli.js" - if [ -f "$NPM_PREFIX_NPM_CLI_JS" ]; then - NPM_CLI_JS="$NPM_PREFIX_NPM_CLI_JS" - fi -diff --git a/deps/npm/bin/npm.cmd b/deps/npm/bin/npm.cmd -index 880554dc..12507ba1 100644 ---- a/deps/npm/bin/npm.cmd -+++ b/deps/npm/bin/npm.cmd -@@ -8,9 +8,9 @@ IF NOT EXIST "%NODE_EXE%" ( - SET "NODE_EXE=node" - ) - --SET "NPM_CLI_JS=%~dp0\node_modules\npm\bin\npm-cli.js" -+SET "NPM_CLI_JS=%~dp0\..\lib\node_modules\npm\bin\npm-cli.js" - FOR /F "delims=" %%F IN ('CALL "%NODE_EXE%" "%NPM_CLI_JS%" prefix -g') DO ( -- SET "NPM_PREFIX_NPM_CLI_JS=%%F\node_modules\npm\bin\npm-cli.js" -+ SET "NPM_PREFIX_NPM_CLI_JS=%%F\..\lib\node_modules\npm\bin\npm-cli.js" - ) - IF EXIST "%NPM_PREFIX_NPM_CLI_JS%" ( - SET "NPM_CLI_JS=%NPM_PREFIX_NPM_CLI_JS%" -diff --git a/deps/npm/lib/config/defaults.js b/deps/npm/lib/config/defaults.js -index c049f213..d1654b7c 100644 ---- a/deps/npm/lib/config/defaults.js -+++ b/deps/npm/lib/config/defaults.js -@@ -81,8 +81,8 @@ var uidOrPid = process.getuid ? process.getuid() : process.pid - if (home) process.env.HOME = home - else home = path.resolve(temp, 'npm-' + uidOrPid) - --var cacheExtra = process.platform === 'win32' ? 'npm-cache' : '.npm' --var cacheRoot = (process.platform === 'win32' && process.env.APPDATA) || home -+var cacheExtra = '.npm' -+var cacheRoot = home - var cache = path.resolve(cacheRoot, cacheExtra) - - var globalPrefix -@@ -91,9 +91,6 @@ Object.defineProperty(exports, 'defaults', {get: function () { - - if (process.env.PREFIX) { - globalPrefix = process.env.PREFIX -- } else if (process.platform === 'win32') { -- // c:\node\node.exe --> prefix=c:\node\ -- globalPrefix = path.dirname(process.execPath) - } else { - // /usr/local/bin/node --> prefix=/usr/local - globalPrefix = path.dirname(path.dirname(process.execPath)) -diff --git a/deps/npm/lib/npm.js b/deps/npm/lib/npm.js -index e5871260..ad9ed251 100644 ---- a/deps/npm/lib/npm.js -+++ b/deps/npm/lib/npm.js -@@ -387,7 +387,7 @@ - { - get: function () { - var b = npm.globalPrefix -- if (process.platform !== 'win32') b = path.resolve(b, 'bin') -+ b = path.resolve(b, 'bin') - return b - } - }) -@@ -404,9 +404,7 @@ - Object.defineProperty(npm, 'globalDir', - { - get: function () { -- return (process.platform !== 'win32') -- ? path.resolve(npm.globalPrefix, 'lib', 'node_modules') -- : path.resolve(npm.globalPrefix, 'node_modules') -+ return path.resolve(npm.globalPrefix, 'lib', 'node_modules') - }, - enumerable: true - }) -diff --git a/deps/npm/lib/unbuild.js b/deps/npm/lib/unbuild.js -index 78293c9c..0360b8c6 100644 ---- a/deps/npm/lib/unbuild.js -+++ b/deps/npm/lib/unbuild.js -@@ -92,7 +92,6 @@ function rmBins (pkg, folder, parent, top, cb) { - function rmMans (pkg, folder, parent, top, cb) { - if (!pkg.man || - !top || -- process.platform === 'win32' || - !npm.config.get('global')) { - return cb() - } -diff --git a/deps/npm/node_modules/bin-links/index.js b/deps/npm/node_modules/bin-links/index.js -index e6370aca..759daee6 100644 ---- a/deps/npm/node_modules/bin-links/index.js -+++ b/deps/npm/node_modules/bin-links/index.js -@@ -115,7 +115,7 @@ function linkBin (from, to, opts, cb) { - } - - function linkMans (pkg, folder, parent, gtop, opts) { -- if (!pkg.man || !gtop || process.platform === 'win32') return -+ if (!pkg.man || !gtop) return - - var manRoot = path.resolve(opts.prefix, 'share', 'man') - opts.log.verbose('linkMans', 'man files are', pkg.man, 'in', manRoot) --- -2.17.0.windows.1 diff --git a/mingw-w64-nodejs/0015-cctest-allow-building-with-municode.patch b/mingw-w64-nodejs/0015-cctest-allow-building-with-municode.patch deleted file mode 100644 index e33028f05c..0000000000 --- a/mingw-w64-nodejs/0015-cctest-allow-building-with-municode.patch +++ /dev/null @@ -1,89 +0,0 @@ -From 1979214e69399d503b0f5a5b302101c80d8f437a Mon Sep 17 00:00:00 2001 -From: Johannes Schindelin -Date: Sat, 14 Apr 2018 00:23:10 +0200 -Subject: [PATCH 15/23] cctest: allow building with -municode - -The rest of the code is built with -municode, we cannot start building -cctest (which relies on the already-built parts) without this option. - -Signed-off-by: Johannes Schindelin ---- - deps/gtest/src/gtest_main.cc | 61 ++++++++++++++++++++++++++++++++++++ - 1 file changed, 61 insertions(+) - -diff --git a/deps/gtest/src/gtest_main.cc b/deps/gtest/src/gtest_main.cc -index 4cf03e59..e71ff613 100644 ---- a/deps/gtest/src/gtest_main.cc -+++ b/deps/gtest/src/gtest_main.cc -@@ -31,7 +31,68 @@ - - #include "gtest/gtest.h" - -+#ifdef _WIN32 -+#include -+#include -+ -+#if defined(__MINGW_VERSION_MAJOR) -+#extern "C" { -+#endif -+ -+int wmain(int argc, wchar_t *wargv[]) { -+ if (!IsWindows7OrGreater()) { -+ fprintf(stderr, "This application is only supported on Windows 7, " -+ "Windows Server 2008 R2, or higher."); -+ exit(1); -+ } -+ -+ // Convert argv to to UTF8 -+ char** argv = new char*[argc + 1]; -+ for (int i = 0; i < argc; i++) { -+ // Compute the size of the required buffer -+ DWORD size = WideCharToMultiByte(CP_UTF8, -+ 0, -+ wargv[i], -+ -1, -+ nullptr, -+ 0, -+ nullptr, -+ nullptr); -+ if (size == 0) { -+ // This should never happen. -+ fprintf(stderr, "Could not convert arguments to utf8."); -+ exit(1); -+ } -+ // Do the actual conversion -+ argv[i] = new char[size]; -+ DWORD result = WideCharToMultiByte(CP_UTF8, -+ 0, -+ wargv[i], -+ -1, -+ argv[i], -+ size, -+ nullptr, -+ nullptr); -+ if (result == 0) { -+ // This should never happen. -+ fprintf(stderr, "Could not convert arguments to utf8."); -+ exit(1); -+ } -+ } -+ argv[argc] = nullptr; -+ testing::InitGoogleTest(&argc, argv); -+ return RUN_ALL_TESTS(); -+} -+ -+#if defined(__MINGW_VERSION_MAJOR) -+} -+#endif -+ -+#else -+ - GTEST_API_ int main(int argc, char **argv) { - testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); - } -+ -+#endif --- -2.17.0.windows.1 - diff --git a/mingw-w64-nodejs/0016-format-macros.h-do-not-rely-on-__STDC_FORMAT_MACROS.patch b/mingw-w64-nodejs/0016-format-macros.h-do-not-rely-on-__STDC_FORMAT_MACROS.patch deleted file mode 100644 index 6f3db84e1b..0000000000 --- a/mingw-w64-nodejs/0016-format-macros.h-do-not-rely-on-__STDC_FORMAT_MACROS.patch +++ /dev/null @@ -1,37 +0,0 @@ -From d17f9f527f2cdae7564602525b7e851ce4902115 Mon Sep 17 00:00:00 2001 -From: Johannes Schindelin -Date: Sat, 14 Apr 2018 20:10:12 +0200 -Subject: [PATCH 16/23] format-macros.h: do not rely on __STDC_FORMAT_MACROS - -The PRId64 macro and friends are not universally defined in inttypes.h. -Let's just go ahead and define them when needed. - -Signed-off-by: Johannes Schindelin ---- - deps/v8/src/base/format-macros.h | 10 ++++++++++ - 1 file changed, 10 insertions(+) - -diff --git a/deps/v8/src/base/format-macros.h b/deps/v8/src/base/format-macros.h -index 5f5fe5df..13f240a2 100644 ---- a/deps/v8/src/base/format-macros.h -+++ b/deps/v8/src/base/format-macros.h -@@ -80,6 +80,16 @@ - - #else // V8_OS_WIN - -+#ifndef PRId64 -+#define PRId64 "I64d" -+#endif -+#ifndef PRIu64 -+#define PRIu64 "I64u" -+#endif -+#ifndef PRIx64 -+#define PRIx64 "I64x" -+#endif -+ - #if !defined(PRId64) || !defined(PRIu64) || !defined(PRIx64) - #error "inttypes.h provided by win toolchain should define these." - #endif --- -2.17.0.windows.1 - diff --git a/mingw-w64-nodejs/0017-Do-not-get-confused-by-the-presence-of-winpthread.patch b/mingw-w64-nodejs/0017-Do-not-get-confused-by-the-presence-of-winpthread.patch deleted file mode 100644 index ab08b356e8..0000000000 --- a/mingw-w64-nodejs/0017-Do-not-get-confused-by-the-presence-of-winpthread.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 79be156837e69e90daf9937c81b5b714bab8492c Mon Sep 17 00:00:00 2001 -From: Johannes Schindelin -Date: Sat, 14 Apr 2018 15:34:05 +0200 -Subject: [PATCH 17/23] Do not get confused by the presence of winpthread - -We still have no ClockNow() defined on Windows... - -Signed-off-by: Johannes Schindelin ---- - deps/v8/src/base/platform/time.cc | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/deps/v8/src/base/platform/time.cc b/deps/v8/src/base/platform/time.cc -index 09e3fd02..dcc13087 100644 ---- a/deps/v8/src/base/platform/time.cc -+++ b/deps/v8/src/base/platform/time.cc -@@ -650,13 +650,13 @@ bool ThreadTicks::IsSupported() { - ThreadTicks ThreadTicks::Now() { - #if V8_OS_MACOSX - return ThreadTicks(ComputeThreadTicks()); -+#elif V8_OS_WIN -+ return ThreadTicks::GetForThread(::GetCurrentThread()); - #elif(defined(_POSIX_THREAD_CPUTIME) && (_POSIX_THREAD_CPUTIME >= 0)) || \ - defined(V8_OS_ANDROID) - return ThreadTicks(ClockNow(CLOCK_THREAD_CPUTIME_ID)); - #elif V8_OS_SOLARIS - return ThreadTicks(gethrvtime() / Time::kNanosecondsPerMicrosecond); --#elif V8_OS_WIN -- return ThreadTicks::GetForThread(::GetCurrentThread()); - #else - UNREACHABLE(); - #endif --- -2.17.0.windows.1 - diff --git a/mingw-w64-nodejs/0018-Add-missing-include-to-build-condition-variable.cc-s.patch b/mingw-w64-nodejs/0018-Add-missing-include-to-build-condition-variable.cc-s.patch deleted file mode 100644 index 707649de0f..0000000000 --- a/mingw-w64-nodejs/0018-Add-missing-include-to-build-condition-variable.cc-s.patch +++ /dev/null @@ -1,26 +0,0 @@ -From aab5602c55871c9c8ab63e802f0583c2a594b4c3 Mon Sep 17 00:00:00 2001 -From: Johannes Schindelin -Date: Sat, 14 Apr 2018 15:34:56 +0200 -Subject: [PATCH 18/23] Add missing #include to build condition-variable.cc - successfully - -Signed-off-by: Johannes Schindelin ---- - deps/v8/src/base/platform/condition-variable.cc | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/deps/v8/src/base/platform/condition-variable.cc b/deps/v8/src/base/platform/condition-variable.cc -index 6df8599d..307263c6 100644 ---- a/deps/v8/src/base/platform/condition-variable.cc -+++ b/deps/v8/src/base/platform/condition-variable.cc -@@ -8,6 +8,7 @@ - #include - - #include "src/base/platform/time.h" -+#include - - namespace v8 { - namespace base { --- -2.17.0.windows.1 - diff --git a/mingw-w64-nodejs/0020-inspector-use-namespaced-icu-symbols.patch b/mingw-w64-nodejs/0020-inspector-use-namespaced-icu-symbols.patch deleted file mode 100644 index 8d56e83de8..0000000000 --- a/mingw-w64-nodejs/0020-inspector-use-namespaced-icu-symbols.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 291385eae1987bfc26c21de8e883f8af94881360 Mon Sep 17 00:00:00 2001 -From: Johannes Schindelin -Date: Sat, 14 Apr 2018 15:37:06 +0200 -Subject: [PATCH 20/23] inspector: use namespaced icu symbols - -Needed to fix the build. - -Signed-off-by: Johannes Schindelin ---- - src/inspector_io.cc | 3 +++ - src/node_i18n.cc | 2 ++ - 2 files changed, 5 insertions(+) - -diff --git a/src/inspector_io.cc b/src/inspector_io.cc -index 538cbab3..e6a780a2 100644 ---- a/src/inspector_io.cc -+++ b/src/inspector_io.cc -@@ -22,6 +22,9 @@ namespace { - using AsyncAndAgent = std::pair; - using v8_inspector::StringBuffer; - using v8_inspector::StringView; -+using icu::UnicodeString; -+using icu::CheckedArrayByteSink; -+using icu::StringPiece; - - template - using TransportAndIo = std::pair; -diff --git a/src/node_i18n.cc b/src/node_i18n.cc -index cc02092d..572d4446 100644 ---- a/src/node_i18n.cc -+++ b/src/node_i18n.cc -@@ -94,6 +94,8 @@ using v8::ObjectTemplate; - using v8::String; - using v8::Value; - -+using icu::TimeZone; -+ - namespace i18n { - namespace { - --- -2.17.0.windows.1 - diff --git a/mingw-w64-nodejs/0021-Use-wide-character-Win32-API-functions-to-handle-wch.patch b/mingw-w64-nodejs/0021-Use-wide-character-Win32-API-functions-to-handle-wch.patch deleted file mode 100644 index a0c8913553..0000000000 --- a/mingw-w64-nodejs/0021-Use-wide-character-Win32-API-functions-to-handle-wch.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 1bcebd98fee4e97be94be19ade983c142d3f2892 Mon Sep 17 00:00:00 2001 -From: Johannes Schindelin -Date: Sat, 14 Apr 2018 20:40:00 +0200 -Subject: [PATCH 21/23] Use wide-character Win32 API functions to handle - `wchar_t *` - -Signed-off-by: Johannes Schindelin ---- - deps/v8/src/base/debug/stack_trace_win.cc | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/deps/v8/src/base/debug/stack_trace_win.cc b/deps/v8/src/base/debug/stack_trace_win.cc -index 64e63091..8110ef29 100644 ---- a/deps/v8/src/base/debug/stack_trace_win.cc -+++ b/deps/v8/src/base/debug/stack_trace_win.cc -@@ -50,9 +50,9 @@ long WINAPI StackDumpExceptionFilter(EXCEPTION_POINTERS* info) { // NOLINT - } - - void GetExePath(wchar_t* path_out) { -- GetModuleFileName(nullptr, path_out, MAX_PATH); -+ GetModuleFileNameW(nullptr, path_out, MAX_PATH); - path_out[MAX_PATH - 1] = L'\0'; -- PathRemoveFileSpec(path_out); -+ PathRemoveFileSpecW(path_out); - } - - bool InitializeSymbols() { --- -2.17.0.windows.1 diff --git a/mingw-w64-nodejs/0022-Disable-MSVC_HACK.patch b/mingw-w64-nodejs/0022-Disable-MSVC_HACK.patch deleted file mode 100644 index 3c5827bfea..0000000000 --- a/mingw-w64-nodejs/0022-Disable-MSVC_HACK.patch +++ /dev/null @@ -1,27 +0,0 @@ -From a818f5d1cc8146c0880efad675ddd48efe4174b6 Mon Sep 17 00:00:00 2001 -From: Johannes Schindelin -Date: Sat, 14 Apr 2018 20:42:47 +0200 -Subject: [PATCH 22/23] Disable MSVC_HACK - -It only produces compile errors with GCC... - -Signed-off-by: Johannes Schindelin ---- - deps/v8/src/base/export-template.h | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/deps/v8/src/base/export-template.h b/deps/v8/src/base/export-template.h -index 861cfe40..0211fd52 100644 ---- a/deps/v8/src/base/export-template.h -+++ b/deps/v8/src/base/export-template.h -@@ -153,7 +153,6 @@ - - EXPORT_TEMPLATE_TEST(DEFAULT, ); - EXPORT_TEMPLATE_TEST(DEFAULT, __attribute__((visibility("default")))); --EXPORT_TEMPLATE_TEST(MSVC_HACK, __declspec(dllexport)); - EXPORT_TEMPLATE_TEST(DEFAULT, __declspec(dllimport)); - - #undef EXPORT_TEMPLATE_TEST --- -2.17.0.windows.1 - diff --git a/mingw-w64-nodejs/0023-Make-sure-that-__rdtsc-is-declared.patch b/mingw-w64-nodejs/0023-Make-sure-that-__rdtsc-is-declared.patch deleted file mode 100644 index 1bd8b4a0ca..0000000000 --- a/mingw-w64-nodejs/0023-Make-sure-that-__rdtsc-is-declared.patch +++ /dev/null @@ -1,32 +0,0 @@ -From c66e0118a3b270a96f71ce2f072ef5598436d7d1 Mon Sep 17 00:00:00 2001 -From: Johannes Schindelin -Date: Sun, 15 Apr 2018 13:33:29 +0200 -Subject: [PATCH 23/23] Make sure that __rdtsc() is declared - -Otherwise, the 32-bit mingw-w64 build fails. - -Signed-off-by: Johannes Schindelin ---- - deps/v8/src/base/platform/time.cc | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/deps/v8/src/base/platform/time.cc b/deps/v8/src/base/platform/time.cc -index dcc13087..2055039c 100644 ---- a/deps/v8/src/base/platform/time.cc -+++ b/deps/v8/src/base/platform/time.cc -@@ -695,6 +695,12 @@ void ThreadTicks::WaitUntilInitializedWin() { - ::Sleep(10); - } - -+#ifdef __MINGW64_VERSION_MAJOR -+extern "C" { -+ extern unsigned __int64 __rdtsc(void); -+} -+#endif -+ - double ThreadTicks::TSCTicksPerSecond() { - DCHECK(IsSupported()); - --- -2.17.0.windows.1 - diff --git a/mingw-w64-nodejs/0024-gyp-mingw.patch b/mingw-w64-nodejs/0024-gyp-mingw.patch deleted file mode 100644 index 2bfa757944..0000000000 --- a/mingw-w64-nodejs/0024-gyp-mingw.patch +++ /dev/null @@ -1,72 +0,0 @@ -diff -Naur node-v11.15.0-orig/configure.py node-v11.15.0/configure.py ---- node-v11.15.0-orig/configure.py -+++ node-v11.15.0/configure.py -@@ -1687,7 +1687,7 @@ - - if options.use_ninja: - gyp_args += ['-f', 'ninja'] --elif flavor == 'win' and sys.platform != 'msys': -+elif flavor == 'win' and sys.platform != 'msys' and not ('GCC' in sys.version): - gyp_args += ['-f', 'msvs', '-G', 'msvs_version=auto'] - else: - gyp_args += ['-f', 'make-' + flavor] -diff -Naur node-v11.15.0-orig/tools/gyp/pylib/gyp/generator/make.py node-v11.15.0/tools/gyp/pylib/gyp/generator/make.py ---- node-v11.15.0-orig/tools/gyp/pylib/gyp/generator/make.py 2019-04-30 20:31:53.000000000 +0300 -+++ node-v11.15.0/tools/gyp/pylib/gyp/generator/make.py 2019-06-28 08:07:23.053184000 +0300 -@@ -94,6 +94,8 @@ - default_variables.setdefault('OS', operating_system) - if flavor == 'aix': - default_variables.setdefault('SHARED_LIB_SUFFIX', '.a') -+ elif flavor == 'win': -+ default_variables.setdefault('SHARED_LIB_SUFFIX', '.dll') - else: - default_variables.setdefault('SHARED_LIB_SUFFIX', '.so') - default_variables.setdefault('SHARED_LIB_DIR','$(builddir)/lib.$(TOOLSET)') -@@ -172,6 +174,26 @@ - cmd_solink_module = $(LINK.$(TOOLSET)) -o $@ -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -Wl,-soname=$(@F) -Wl,--start-group $(filter-out FORCE_DO_CMD, $^) -Wl,--end-group $(LIBS) - """ - -+LINK_COMMANDS_WINMINGW = """\ -+quiet_cmd_alink = AR($(TOOLSET)) $@ -+cmd_alink = rm -f $@ && echo $(filter %.o,$^) >> $(@).rsp && $(AR.$(TOOLSET)) crs $@ @$(@).rsp -+ -+quiet_cmd_alink_thin = AR($(TOOLSET)) $@ -+cmd_alink_thin = rm -f $@ && echo $(filter %.o,$^) >> $(@).rsp && $(AR.$(TOOLSET)) crsT $@ $(filter %.o,$^) @$(@).rsp -+ -+# Due to circular dependencies between libraries :(, we wrap the -+# special "figure out circular dependencies" flags around the entire -+# input list during linking. -+quiet_cmd_link = LINK($(TOOLSET)) $@ -+cmd_link = $(LINK.$(TOOLSET)) -o $@ $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -Wl,--start-group $(LD_INPUTS) $(LIBS) -Wl,--end-group -+ -+quiet_cmd_solink = SOLINK($(TOOLSET)) $@ -+cmd_solink = $(LINK.$(TOOLSET)) -o $@ -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -Wl,--out-implib,$(@F).a -Wl,--whole-archive $(LD_INPUTS) -Wl,--no-whole-archive $(LIBS) -+ -+quiet_cmd_solink_module = SOLINK_MODULE($(TOOLSET)) $@ -+cmd_solink_module = $(LINK.$(TOOLSET)) -o $@ -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -Wl,--out-implib,$(@F).a -Wl,--start-group $(filter-out FORCE_DO_CMD, $^) -Wl,--end-group $(LIBS) -+""" -+ - LINK_COMMANDS_MAC = """\ - quiet_cmd_alink = LIBTOOL-STATIC $@ - cmd_alink = rm -f $@ && ./gyp-mac-tool filter-libtool libtool $(GYP_LIBTOOLFLAGS) -static -o $@ $(filter %.o,$^) -@@ -1354,6 +1376,8 @@ - target_prefix = 'lib' - if self.flavor == 'aix': - target_ext = '.a' -+ elif self.flavor == 'win': -+ target_ext = '.dll' - else: - target_ext = '.so' - elif self.type == 'none': -@@ -2060,6 +2084,11 @@ - header_params.update({ - 'copy_archive_args': copy_archive_arguments, - }) -+ elif flavor == 'win': -+ copy_archive_arguments = '-pPRf' -+ header_params.update({ -+ 'link_commands': LINK_COMMANDS_WINMINGW, -+ }) - elif flavor == 'aix': - copy_archive_arguments = '-pPRf' - header_params.update({ diff --git a/mingw-w64-nodejs/0025-mingw-missing-features.patch b/mingw-w64-nodejs/0025-mingw-missing-features.patch deleted file mode 100644 index 7e6b9b2fee..0000000000 --- a/mingw-w64-nodejs/0025-mingw-missing-features.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- node-v11.15.0-orig/deps/v8/src/base/platform/platform-win32.cc.orig 2019-06-28 08:53:22.904659200 +0300 -+++ node-v11.15.0/deps/v8/src/base/platform/platform-win32.cc 2019-06-28 08:53:44.904690000 +0300 -@@ -36,7 +36,7 @@ - // Extra functions for MinGW. Most of these are the _s functions which are in - // the Microsoft Visual Studio C++ CRT. - #ifdef __MINGW32__ -- -+#define PAGE_TARGETS_INVALID 0x40000000 - - #ifndef __MINGW64_VERSION_MAJOR - diff --git a/mingw-w64-nodejs/PKGBUILD b/mingw-w64-nodejs/PKGBUILD deleted file mode 100644 index 71382b55b1..0000000000 --- a/mingw-w64-nodejs/PKGBUILD +++ /dev/null @@ -1,183 +0,0 @@ -# Maintainer: Martell Malone -# Maintainer: Ray Donnelly -# Contributor: David Macek -# Contributor: Mateusz Mikuła -# Contributor: Alethea Rose - -_realname=nodejs -pkgbase=mingw-w64-${_realname} -pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=11.15.0 -pkgrel=1 -pkgdesc="Evented I/O for V8 javascript (mingw-w64)" -arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64') -url="https://nodejs.org/" -license=("MIT") -makedepends=("${MINGW_PACKAGE_PREFIX}-python2" - "${MINGW_PACKAGE_PREFIX}-nasm" - "${MINGW_PACKAGE_PREFIX}-autotools") -depends=("${MINGW_PACKAGE_PREFIX}-c-ares" - "${MINGW_PACKAGE_PREFIX}-http-parser" - "${MINGW_PACKAGE_PREFIX}-icu" - "${MINGW_PACKAGE_PREFIX}-nghttp2" - "${MINGW_PACKAGE_PREFIX}-libuv" - "${MINGW_PACKAGE_PREFIX}-openssl" - "${MINGW_PACKAGE_PREFIX}-zlib" - "winpty") -optdepends=("${MINGW_PACKAGE_PREFIX}-npm: nodejs package manager") -options=('!emptydirs' '!strip') # 'debug') - -source=("https://nodejs.org/dist/v${pkgver}/node-v${pkgver}.tar.xz" - '0001-Fix-python-invocation-to-python2.patch' - '0002-Fix-system-icu-build.patch' - '0003-Include-win32-headers.h-in-v8-atomicops.h.patch' - '0004-Define-localtime_s-for-MinGW.patch' - '0005-Remove-.lib-suffix-on-linked-libraries.patch' - '0006-Define-_WIN32_WINNT-in-node.gyp.patch' - '0007-Skip-sys-resource-and-unneeded-includes-in-node.cc.patch' - '0008-Link-with-municode-and-extern-wmain-for-Unicode.patch' - '0010-Fix-incorrect-test-assumptions-for-MinGW.patch' - '0011-detect-architecture.patch' - '0012-Use-shell-wrapper-script-for-npm-on-MSYS2-MinGW-w64.patch' - '0013-Revert-to-FHS-installation-paths-on-Windows-tests-no.patch' - '0015-cctest-allow-building-with-municode.patch' - '0016-format-macros.h-do-not-rely-on-__STDC_FORMAT_MACROS.patch' - '0017-Do-not-get-confused-by-the-presence-of-winpthread.patch' - '0018-Add-missing-include-to-build-condition-variable.cc-s.patch' - '0020-inspector-use-namespaced-icu-symbols.patch' - '0021-Use-wide-character-Win32-API-functions-to-handle-wch.patch' - '0022-Disable-MSVC_HACK.patch' - '0023-Make-sure-that-__rdtsc-is-declared.patch' - '0024-gyp-mingw.patch' - '0025-mingw-missing-features.patch' - 'node') - -prepare() { - cd "${srcdir}/node-v${pkgver}" - - patch -Np1 -i "${srcdir}/0001-Fix-python-invocation-to-python2.patch" - patch -Np1 -i "${srcdir}/0002-Fix-system-icu-build.patch" - patch -Np1 -i "${srcdir}/0003-Include-win32-headers.h-in-v8-atomicops.h.patch" - patch -Np1 -i "${srcdir}/0004-Define-localtime_s-for-MinGW.patch" - patch -Np1 -i "${srcdir}/0005-Remove-.lib-suffix-on-linked-libraries.patch" - patch -Np1 -i "${srcdir}/0006-Define-_WIN32_WINNT-in-node.gyp.patch" - patch -Np1 -i "${srcdir}/0007-Skip-sys-resource-and-unneeded-includes-in-node.cc.patch" - patch -Np1 -i "${srcdir}/0008-Link-with-municode-and-extern-wmain-for-Unicode.patch" - patch -Np1 -i "${srcdir}/0010-Fix-incorrect-test-assumptions-for-MinGW.patch" - patch -Np1 -i "${srcdir}/0011-detect-architecture.patch" - patch -Np1 -i "${srcdir}/0012-Use-shell-wrapper-script-for-npm-on-MSYS2-MinGW-w64.patch" - patch -Np1 -i "${srcdir}/0013-Revert-to-FHS-installation-paths-on-Windows-tests-no.patch" - patch -Np1 -i "${srcdir}/0015-cctest-allow-building-with-municode.patch" - patch -Np1 -i "${srcdir}/0016-format-macros.h-do-not-rely-on-__STDC_FORMAT_MACROS.patch" - patch -Np1 -i "${srcdir}/0017-Do-not-get-confused-by-the-presence-of-winpthread.patch" - patch -Np1 -i "${srcdir}/0018-Add-missing-include-to-build-condition-variable.cc-s.patch" - patch -Np1 -i "${srcdir}/0020-inspector-use-namespaced-icu-symbols.patch" - patch -Np1 -i "${srcdir}/0021-Use-wide-character-Win32-API-functions-to-handle-wch.patch" - patch -Np1 -i "${srcdir}/0022-Disable-MSVC_HACK.patch" - patch -Np1 -i "${srcdir}/0023-Make-sure-that-__rdtsc-is-declared.patch" - patch -Np1 -i "${srcdir}/0024-gyp-mingw.patch" - patch -Np1 -i "${srcdir}/0025-mingw-missing-features.patch" -} - -build() { - - local -a extra_config - - cd "${srcdir}" - sleep 5 - - [[ -d ${CARCH} ]] && rm -rf ${CARCH} - mv node-v${pkgver} ${CARCH} - cd ${CARCH} - - if check_option "debug" "y"; then - extra_config+=( --debug ) - fi - - local opt_cpu="x64" - if [ "${CARCH}" = "i686" ]; then - opt_cpu="x86" - fi - - ./configure \ - --prefix="${MINGW_PREFIX}" \ - --dest-os=win \ - --dest-cpu=${opt_cpu} \ - --shared-cares \ - --shared-http-parser \ - --shared-libuv \ - --shared-nghttp2 \ - --shared-openssl \ - --shared-zlib \ - --with-intl=system-icu \ - --without-etw \ - "${extra_config[@]}" - - ${MINGW_PREFIX}/bin/python2 tools/gyp_node.py -f make - touch config.gypi - # Work around the problem where the protocol files would be generated into a - # subdirectory relative to deps/v8/src/inspector instead of relative to the - # top-level directory. - #CXXFLAGS=-D_WIN32_WINNT=0x0601 make out/Release/obj/gen/src/inspector/protocol/Forward.h - CXXFLAGS=-D_WIN32_WINNT=0x0601 make V=1 - - # flatten the nested node_modules/ hierarchy - test -z "$(find deps/npm/node_modules | grep '^.\{140,\}$')" || - (cd deps/npm && - cp -R . ../npm.bup && - rm -rf node_modules && - ../../out/Release/node.exe ../npm.bup/bin/npm-cli.js install --production) -} - -check() { - cd "${srcdir}/${CARCH}" - - # A few tests still fail due to a bug with pausing/resuming file streams - ${MINGW_PREFIX}/bin/python2 tools/test.py --mode=release -J \ - cctest doctool inspector message parallel sequential tick-processor || true -} - -package() { - cd "${srcdir}/${CARCH}" - - ${MINGW_PREFIX}/bin/python2 tools/install.py install "${pkgdir}" "/${MINGW_PREFIX}" - - install -d "${pkgdir}${MINGW_PREFIX}/share/doc/nodejs" - cp -r doc/api/{*.html,assets} \ - "${pkgdir}${MINGW_PREFIX}/share/doc/nodejs" - - install -D -m644 LICENSE \ - "${pkgdir}${MINGW_PREFIX}/share/licenses/nodejs/LICENSE" - - mv -v "${pkgdir}$MINGW_PREFIX/bin/node"{.exe,_exe} - install -m755 "${srcdir}/node" "${pkgdir}${MINGW_PREFIX}/bin/node" - mv -v "${pkgdir}$MINGW_PREFIX/bin/node"{_exe,.exe} - - install -m755 "${srcdir}/${CARCH}/deps/npm/bin/npm.cmd" "${pkgdir}${MINGW_PREFIX}/bin/npm.cmd" -} - -sha256sums=('68a776c5d8b8b91a8f2adac2ca4ce4390ae1804883ec7ec9c0d6a6a64d306a76' - '0e3b9ec420393c6d56fb5dcabb60acc7a1f50000ebea3a8bbbf6ecb87a00e404' - 'b5357ea485814c179b3b1131f985abf4e3992791d7008d7f9c60dde3cd800401' - '7a0f96ba5b8639807a22c592d25e87bceae623d382c41bfc7f994367aa9b8ffb' - '8c21a199822d3e106eacbc8e4ef923508293026edc8c55ad838c316cea5bda45' - 'a8640f1b7b90469ecc5314dd710ee18ae33ef18133263fdb497ff302dd38bc41' - 'afdc52f2aa8b2234ff0824521ad284bf6e3e1261fbd76e96a146643e6e47e4ff' - 'f15e5266eece74443bedfa9d6d1243083ef30b27cdf621cb4b4267866660387c' - '6e1535166dc3fc75540f0e5e3fc25253cf488cb40a98a4b23f7b24e0059ca9f5' - '59b052ff5e50f4ab49619bad1d8c388f8a5183256361452e262ffa9e079c99b6' - '495b44761dde93a242850304038bd47fdc665d4bbc59e4b027c192afebc9283a' - 'b37fba2c8bb254905993b41d0ed319fa02bc37c88446ef0b2341ee92cc42faae' - '9a29cb99c53dc39187d2cbb7e559130944063e07342802b9d77cfb037c8d9b30' - '2005eb72281e1c727411015ced471b37999ccd062d60856cabd68032ed303601' - '4fd604e2889e1741f8a7ed5b3e945d401eed2b13086daa4544384da4c04698d1' - '3e5da564180238aeaf6e79b3273838465bed962fc65bbe8f0657e09ab0cabee3' - '3a83695ebb617341b687133cd5319e0762c2f8af880800ac36de232311ccb903' - 'f7144d6fe1efee3d9134d92d3757c9bcc3f570dbca5a4fbadf3efd6492ba345f' - '71e6b87542013c68641bcc8f98a769236f7181125960b2dcd1e7af516b1447ac' - '44a8d757584cb725760c9d9bd661fb23ee0a2b555ffca8a449573e4d03db7dcc' - '8cc3ef3ce149e5f0869d434538a9bd0a934afc52f0f571f6436694ce11587d12' - '01eab68f9de8b7cbcae774b25c931a7f503a3419f20464ba1a7df9eea9fa7710' - '6e223d2996f4cc02080c7b57521da6f7d29b41f41d4e225f8d1c941d25c1f963' - '284251ff443506cd61530a026afb421d0084e4ad25c037bcfe3a045246d729a2') diff --git a/mingw-w64-nodejs/node b/mingw-w64-nodejs/node deleted file mode 100644 index 70834e2543..0000000000 --- a/mingw-w64-nodejs/node +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env bash - -NODE_EXE="$( dirname ${BASH_SOURCE[0]} )/node.exe" - -if [ -t 0 -a -t 1 ]; then - /usr/bin/winpty $NODE_EXE "$@" -else - exec $NODE_EXE "$@" -fi diff --git a/mingw-w64-npm/PKGBUILD b/mingw-w64-npm/PKGBUILD deleted file mode 100644 index 201ecf5721..0000000000 --- a/mingw-w64-npm/PKGBUILD +++ /dev/null @@ -1,51 +0,0 @@ -# Contributor: Alethea Rose - -_realname=npm -pkgbase=mingw-w64-${_realname} -pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=4.3.0 -pkgrel=1 -pkgdesc='The package manager for JavaScript (mingw-w64)' -arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64') -url='https://www.npmjs.com/' -license=('custom:Artistic') -depends=('winpty' "$MINGW_PACKAGE_PREFIX-nodejs") -makedepends=('tar') -optdepends=("${MINGW_PACKAGE_PREFIX}-python2: for node-gyp") -options=('!emptydirs') -_marked_ver=0.3.6 -_marked_man_ver=0.2.0 - -source=("npm-$pkgver.tar.gz::https://github.com/npm/npm/archive/v$pkgver.tar.gz" - "npm-marked-man-$_marked_man_ver.tgz::https://registry.npmjs.org/marked-man/-/marked-man-$_marked_man_ver.tgz" - "npm-marked-$_marked_ver.tgz::https://registry.npmjs.org/marked/-/marked-$_marked_ver.tgz") -noextract=("npm-$pkgver.tar.gz" - "npm-marked-$_marked_ver.tgz" - "npm-marked-man-$_marked_man_ver.tgz") - -sha256sums=('a4b083e0694ce786777d55f803551635b7c958e773b4ff5990103eab7c6e46a2' - 'ea48226f08675656a9794d44aef458e10d076b5f116be77a04986122b7c1c4c2' - '46f71f8b9cbb5606b166af554958c67f2de6b3346ebe8c8fcc92470252af00c3') - -prepare() { - cd "${srcdir}" - tar -xf "npm-${pkgver}.tar.gz" -} - -build() { - cd "${srcdir}"/npm-${pkgver} - - node cli.js install ../npm-marked-${_marked_ver}.tgz - node cli.js install ../npm-marked-man-${_marked_man_ver}.tgz - make -} - -package() { - cd "${srcdir}"/npm-${pkgver} - - make NPMOPTS="--prefix=\"${pkgdir}${MINGW_PREFIX}/bin\"" install - - mkdir -p "${pkgdir}${MINGW_PREFIX}/share/man" - cp -r man/* "${pkgdir}${MINGW_PREFIX}/share/man" -} diff --git a/mingw-w64-yarn/PKGBUILD b/mingw-w64-yarn/PKGBUILD deleted file mode 100644 index 544e8213d6..0000000000 --- a/mingw-w64-yarn/PKGBUILD +++ /dev/null @@ -1,36 +0,0 @@ -# Maintainer: Peter Budai - -_realname=yarn -pkgbase=mingw-w64-${_realname} -pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=1.17.3 -pkgrel=1 -pkgdesc="Fast, reliable, and secure dependency management (mingw-w64)" -arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64') -url="https://yarnpkg.com/" -license=("BSD") -depends=("${MINGW_PACKAGE_PREFIX}-nodejs") -source=("https://github.com/yarnpkg/${_realname}/releases/download/v${pkgver}/${_realname}-v${pkgver}.tar.gz") -sha256sums=('e3835194409f1b3afa1c62ca82f561f1c29d26580c9e220c36866317e043c6f3') - -package() { - cd "${srcdir}/${_realname}-v${pkgver}" - - install -dm755 "${pkgdir}"/${MINGW_PREFIX}/lib/node_modules/yarn - cp -R * "${pkgdir}"/${MINGW_PREFIX}/lib/node_modules/yarn - - install -dm755 "${pkgdir}"/${MINGW_PREFIX}/bin - cp bin/yarn "${pkgdir}"/${MINGW_PREFIX}/bin/ - cp bin/yarn.cmd "${pkgdir}"/${MINGW_PREFIX}/bin/ - cp bin/yarnpkg "${pkgdir}"/${MINGW_PREFIX}/bin/ - cp bin/yarnpkg.cmd "${pkgdir}"/${MINGW_PREFIX}/bin/ - - # update path to point to the right place - sed -i "s|$basedir/yarn.js|$basedir/../lib/node_modules/yarn/bin/yarn.js|" "${pkgdir}"/${MINGW_PREFIX}/bin/yarn - sed -i 's|yarn.js|\\..\\lib\\node_modules\\yarn\\bin\\yarn.js|' "${pkgdir}"/${MINGW_PREFIX}/bin/yarn.cmd - sed -i 's|./yarn.js|../lib/node_modules/yarn/bin/yarn.js|' "${pkgdir}"/${MINGW_PREFIX}/bin/yarnpkg - - install -Dm644 LICENSE "${pkgdir}/${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE" - install -Dm644 README.md "${pkgdir}/${MINGW_PREFIX}/share/doc/${_realname}/README.md" -} From 3362f21e01fe876d5162e70f292bfcc0b9af0c33 Mon Sep 17 00:00:00 2001 From: Leandro Nini Date: Fri, 4 Feb 2022 20:23:32 +0100 Subject: [PATCH 204/226] Update version and download URL --- mingw-w64-xa65/PKGBUILD | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/mingw-w64-xa65/PKGBUILD b/mingw-w64-xa65/PKGBUILD index fccbb683c3..bb1061c97d 100644 --- a/mingw-w64-xa65/PKGBUILD +++ b/mingw-w64-xa65/PKGBUILD @@ -3,7 +3,7 @@ _realname=xa65 pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=2.3.11 +pkgver=2.3.12 pkgrel=1 pkgdesc="6502/65816 cross assembler" arch=('any') @@ -13,21 +13,21 @@ url="http://www.floodgap.com/retrotech/xa/" depends=() makedepends=("${MINGW_PACKAGE_PREFIX}-cc") options=(!strip staticlibs !buildflags) -source=("https://github.com/fachat/${_realname}/archive/xa-${pkgver}.tar.gz") -sha256sums=('0a1bdaa4a0059f2ecaa577ad322b5618a4d79adb68a7e95721293c95a995a11a') +source=("http://www.floodgap.com/retrotech/xa/dists/xa-${pkgver}.tar.gz") +sha256sums=('f8fd1536012d676fc6cbfcdd6a91793e564c89b6ef747f8db8f467c178fb0704') prepare() { - cd ${srcdir}/${_realname}-xa-${pkgver}/xa + cd ${srcdir}/xa-${pkgver} sed -i '/DESTDIR =/d' Makefile } build() { - cd ${srcdir}/${_realname}-xa-${pkgver}/xa + cd ${srcdir}/xa-${pkgver} make ${MAKEFLAGS} } package() { - cd ${srcdir}/${_realname}-xa-${pkgver}/xa + cd ${srcdir}/xa-${pkgver} make DESTDIR=${pkgdir}${MINGW_PREFIX} install install -Dm644 ${srcdir}/${_realname}-xa-${pkgver}/xa/README.1st ${pkgdir}${MINGW_PREFIX}/share/doc/${_realname}/README } From 8f19d15a2a154488798fd633095b5df372d6da30 Mon Sep 17 00:00:00 2001 From: Leandro Nini Date: Fri, 4 Feb 2022 20:29:06 +0100 Subject: [PATCH 205/226] Fix doc location --- mingw-w64-xa65/PKGBUILD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mingw-w64-xa65/PKGBUILD b/mingw-w64-xa65/PKGBUILD index bb1061c97d..3a6c52a43f 100644 --- a/mingw-w64-xa65/PKGBUILD +++ b/mingw-w64-xa65/PKGBUILD @@ -29,5 +29,5 @@ build() { package() { cd ${srcdir}/xa-${pkgver} make DESTDIR=${pkgdir}${MINGW_PREFIX} install - install -Dm644 ${srcdir}/${_realname}-xa-${pkgver}/xa/README.1st ${pkgdir}${MINGW_PREFIX}/share/doc/${_realname}/README + install -Dm644 ${srcdir}/xa-${pkgver}/README.1st ${pkgdir}${MINGW_PREFIX}/share/doc/${_realname}/README } From 24684dc965ade3507ad2365daf3e1b47fe6d00eb Mon Sep 17 00:00:00 2001 From: Mehdi Chinoune Date: Thu, 3 Feb 2022 23:06:22 +0100 Subject: [PATCH 206/226] llvm: update to 13.0.1 - Part2 --- mingw-w64-flang/PKGBUILD | 12 +++++------- mingw-w64-lldb/PKGBUILD | 6 +++--- mingw-w64-mlir/PKGBUILD | 6 +++--- mingw-w64-openmp/PKGBUILD | 8 ++++---- mingw-w64-polly/PKGBUILD | 9 +++++---- 5 files changed, 20 insertions(+), 21 deletions(-) diff --git a/mingw-w64-flang/PKGBUILD b/mingw-w64-flang/PKGBUILD index 06f3224bc7..8fceb436dd 100644 --- a/mingw-w64-flang/PKGBUILD +++ b/mingw-w64-flang/PKGBUILD @@ -2,8 +2,8 @@ _compiler=clang _realname=flang pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}") -pkgver=13.0.0 -pkgrel=2 +pkgver=13.0.1 +pkgrel=1 pkgdesc="Fortran frontend for LLVM (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') @@ -12,13 +12,11 @@ license=("custom:Apache 2.0 with LLVM Exception") depends=("${MINGW_PACKAGE_PREFIX}-clang=${pkgver}" "${MINGW_PACKAGE_PREFIX}-llvm=${pkgver}" "${MINGW_PACKAGE_PREFIX}-mlir=${pkgver}") -makedepends=("${MINGW_PACKAGE_PREFIX}-clang-analyzer=${pkgver}" - "${MINGW_PACKAGE_PREFIX}-clang-tools-extra=${pkgver}" - "${MINGW_PACKAGE_PREFIX}-cmake>=3.4.3" +makedepends=("${MINGW_PACKAGE_PREFIX}-clang-tools-extra=${pkgver}" + "${MINGW_PACKAGE_PREFIX}-cmake" "${MINGW_PACKAGE_PREFIX}-lld" "${MINGW_PACKAGE_PREFIX}-ninja" "${MINGW_PACKAGE_PREFIX}-pkg-config" - "${MINGW_PACKAGE_PREFIX}-polly=${pkgver}" "gawk" $([[ "$_compiler" == "clang" ]] && echo \ "${MINGW_PACKAGE_PREFIX}-compiler-rt" \ @@ -30,7 +28,7 @@ options=('!debug' 'strip') source=("https://github.com/llvm/llvm-project/releases/download/llvmorg-${pkgver}/flang-${pkgver}.src.tar.xz"{,.sig} "0001-cast-cxx11-narrowing.patch" "0002-cmake-22162.patch") -sha256sums=('13bc580342bec32b6158c8cddeb276bd428d9fc8fd23d13179c8aa97bbba37d5' +sha256sums=('129587687253c82de1a3a5eed18c1e12f16c3ad44cb881129b10335555b90778' 'SKIP' 'f8babd240968599597cf2b906fad44b62e2d92ac7ea144530a3f9542e96e06b1' '77fb0612217b6af7a122f586a9d0d334cd48bb201509bf72e8f8e6244616e895') diff --git a/mingw-w64-lldb/PKGBUILD b/mingw-w64-lldb/PKGBUILD index 5ed4d9e188..7f2eb1dc7a 100644 --- a/mingw-w64-lldb/PKGBUILD +++ b/mingw-w64-lldb/PKGBUILD @@ -7,8 +7,8 @@ fi _realname=lldb pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}") -pkgver=13.0.0 -pkgrel=3 +pkgver=13.0.1 +pkgrel=1 pkgdesc="Next generation, high-performance debugger (mingw-w64)" url="https://lldb.llvm.org/" arch=(any) @@ -33,7 +33,7 @@ _pkgfn=$_realname-$pkgver.src source=($_url/$_pkgfn.tar.xz{,.sig} 001-lldb-Make-the-thread_local-g_global_boundary-accesse.patch 002-fix-api-generator-expression.patch) -sha256sums=('24c65bd5ec0d7cbc37bafdd7533b1783352708bf6338c403a72f47884e406dbd' +sha256sums=('4a0c590bccbb3ce8fcbc1997aaed89a0ddbfd8be4b7f393230a867b2de62db16' 'SKIP' 'fa50228904ec44455396ae0604128a37c335caf264b544f3d90640a8c2e1eba0' 'ca897429775137be3d0ccaffb95010e4995aa9003c243ff795645ebac2f61fe1') diff --git a/mingw-w64-mlir/PKGBUILD b/mingw-w64-mlir/PKGBUILD index 97c524e30f..38286566ef 100644 --- a/mingw-w64-mlir/PKGBUILD +++ b/mingw-w64-mlir/PKGBUILD @@ -7,8 +7,8 @@ fi _realname=mlir pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}") -pkgver=13.0.0 -pkgrel=3 +pkgver=13.0.1 +pkgrel=1 pkgdesc="Multi-Level IR Compiler Framework for LLVM (mingw-w64)" url="https://mlir.llvm.org/" arch=(any) @@ -25,7 +25,7 @@ _pkgfn=$_realname _url=https://github.com/llvm/llvm-project/releases/download/llvmorg-${pkgver} # No source package for MLIR: https://bugs.llvm.org/show_bug.cgi?id=52248 source=("${_url}/llvm-project-${pkgver}.src.tar.xz"{,.sig}) -sha256sums=('6075ad30f1ac0e15f07c1bf062c1e1268c241d674f11bd32cdf0e040c71f2bf3' +sha256sums=('326335a830f2e32d06d0a36393b5455d17dc73e0bd1211065227ee014f92cbf8' 'SKIP') validpgpkeys=('B6C8F98282B944E3B0D5C2530FC3042E345AD05D' # Hans Wennborg, Google. '474E22316ABF4785A88C6E8EA2C794A986419D8A') # Tom Stellard diff --git a/mingw-w64-openmp/PKGBUILD b/mingw-w64-openmp/PKGBUILD index b83382d3d8..0f63fda962 100644 --- a/mingw-w64-openmp/PKGBUILD +++ b/mingw-w64-openmp/PKGBUILD @@ -7,8 +7,8 @@ fi _realname=openmp pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}") -pkgver=13.0.0 -pkgrel=3 +pkgver=13.0.1 +pkgrel=1 pkgdesc="LLVM OpenMP Library (mingw-w64)" url="https://openmp.llvm.org/" arch=(any) @@ -18,15 +18,15 @@ groups=($( (( _clangprefix )) && echo "${MINGW_PACKAGE_PREFIX}-toolchain")) depends=($( (( _clangprefix )) || echo "${MINGW_PACKAGE_PREFIX}-gcc-libs")) makedepends=("${MINGW_PACKAGE_PREFIX}-cmake" "${MINGW_PACKAGE_PREFIX}-ninja" - "${MINGW_PACKAGE_PREFIX}-clang" "${MINGW_PACKAGE_PREFIX}-cc" + $( (( _clangprefix )) || echo "${MINGW_PACKAGE_PREFIX}-gcc-fortran") "${MINGW_PACKAGE_PREFIX}-uasm") options=('!debug' 'strip') _url=https://github.com/llvm/llvm-project/releases/download/llvmorg-${pkgver} _pkgfn=$_realname-$pkgver.src source=($_url/$_pkgfn.tar.xz{,.sig} "001-cast-to-make-gcc-happy.patch") -sha256sums=('4930ae7a1829a53b698255c2c6b6ee977cc364b37450c14ee458793c0d5e493c' +sha256sums=('6b79261371616c31fea18cd3ee1797c79ee38bcaf8417676d4fa366a24c96b4f' 'SKIP' '11352ffbe7559a7170f2abd52b3552c877fbcf8fc82cff77b421e8b130a4dd66') validpgpkeys=('B6C8F98282B944E3B0D5C2530FC3042E345AD05D' # Hans Wennborg, Google. diff --git a/mingw-w64-polly/PKGBUILD b/mingw-w64-polly/PKGBUILD index 3c2a0a55ec..c05a1385af 100644 --- a/mingw-w64-polly/PKGBUILD +++ b/mingw-w64-polly/PKGBUILD @@ -7,8 +7,8 @@ fi _realname=polly pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}") -pkgver=13.0.0 -pkgrel=3 +pkgver=13.0.1 +pkgrel=1 pkgdesc="Polly - Polyhedral optimizations for LLVM (mingw-w64)" url="https://polly.llvm.org/" arch=(any) @@ -16,14 +16,15 @@ mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') license=("custom:Apache 2.0 with LLVM Exception") groups=($( (( _clangprefix )) && echo "${MINGW_PACKAGE_PREFIX}-toolchain")) depends=("${MINGW_PACKAGE_PREFIX}-llvm") -makedepends=("${MINGW_PACKAGE_PREFIX}-cmake" +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" + "${MINGW_PACKAGE_PREFIX}-cmake" "${MINGW_PACKAGE_PREFIX}-ninja" "${MINGW_PACKAGE_PREFIX}-python-sphinx") options=('!debug' 'strip') _url=https://github.com/llvm/llvm-project/releases/download/llvmorg-${pkgver} _pkgfn=$_realname-$pkgver.src source=($_url/$_pkgfn.tar.xz{,.sig}) -sha256sums=('cd93672c3be35146e199b1e221fb81a39403a0cdeabcad4a47ae878655eea872' +sha256sums=('f4003e03da57b53bf206faadd0cf53f7b198c38498c605dec45743db23c10ad0' 'SKIP') validpgpkeys=('B6C8F98282B944E3B0D5C2530FC3042E345AD05D' # Hans Wennborg, Google. '474E22316ABF4785A88C6E8EA2C794A986419D8A') # Tom Stellard From fb8a83dd31294fb794cfd9be0ae08283d014f79f Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sat, 5 Feb 2022 10:32:50 +0530 Subject: [PATCH 207/226] python-cattrs: update to 1.10.0 --- mingw-w64-python-cattrs/PKGBUILD | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/mingw-w64-python-cattrs/PKGBUILD b/mingw-w64-python-cattrs/PKGBUILD index b5d8410b2e..9596f593f3 100644 --- a/mingw-w64-python-cattrs/PKGBUILD +++ b/mingw-w64-python-cattrs/PKGBUILD @@ -3,22 +3,21 @@ _realname=cattrs pkgbase=mingw-w64-python-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") -pkgver=1.7.1 -pkgrel=2 +pkgver=1.10.0 +pkgrel=1 pkgdesc='Complex custom class converters for attrs (mingw-w64)' arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') url="https://github.com/Tinche/cattrs" license=('MIT') depends=("${MINGW_PACKAGE_PREFIX}-python" "${MINGW_PACKAGE_PREFIX}-python-attrs") makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools") options=('!emptydirs') -source=("https://files.pythonhosted.org/packages/source/${_realname::1}/$_realname/$_realname-$pkgver.tar.gz") -sha256sums=('95265b8aaa45e6de75b5f52ae081e021a2a7a688babdb711e4174e6b18920d08') +source=("https://files.pythonhosted.org/packages/source/${_realname::1}/${_realname}/${_realname}-${pkgver}.tar.gz") +sha256sums=('211800f725cdecedcbcf4c753bbd22d248312b37d130f06045434acb7d9b34e1') prepare() { - cd "$srcdir" rm -rf python-build-${CARCH} | true cp -r "${_realname}-${pkgver}" "python-build-${CARCH}" } From 508d3136f2e64fb01e3b08bd193c9d5c209cdfd8 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sat, 5 Feb 2022 10:37:11 +0530 Subject: [PATCH 208/226] python-jellyfish: update to 0.9.0 Fix pypi source link --- mingw-w64-python-jellyfish/PKGBUILD | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mingw-w64-python-jellyfish/PKGBUILD b/mingw-w64-python-jellyfish/PKGBUILD index 7271b11ba1..10c6d8e1e5 100644 --- a/mingw-w64-python-jellyfish/PKGBUILD +++ b/mingw-w64-python-jellyfish/PKGBUILD @@ -3,19 +3,19 @@ _realname=jellyfish pkgbase=mingw-w64-python-${_realname} pkgname=${MINGW_PACKAGE_PREFIX}-python-${_realname} -pkgver=0.8.8 +pkgver=0.9.0 pkgrel=1 pkgdesc='A python library for doing approximate and phonetic matching of strings (mingw-w64)' arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') license=('BSD 2-Clause') url='https://github.com/jamesturk/jellyfish' makedepends=( ${MINGW_PACKAGE_PREFIX}-python ${MINGW_PACKAGE_PREFIX}-python-setuptools "${MINGW_PACKAGE_PREFIX}-cc") -source=("https://files.pythonhosted.org/packages/76/88/e6eba0ebd8a11eb0a03392d827f0a605ad45fbb24234f7db98ca1ecb41b2/${_realname}-${pkgver}.tar.gz") -sha256sums=('0506089cacf9b5897442134417b04b3c6610c19f280ae535eace390dc6325a5c') +source=("https://files.pythonhosted.org/packages/source/j/${_realname}/${_realname}-${pkgver}.tar.gz") +sha256sums=('40c9a2ffd8bd3016f7611d424120442f627f56d518a106847dc93f0ead6ad79a') prepare() { cd "${srcdir}" From 4703bebffbb46553417081a2f27998419b9aad92 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sat, 5 Feb 2022 10:40:50 +0530 Subject: [PATCH 209/226] python-netifaces: update to 0.11.0 --- mingw-w64-python-netifaces/PKGBUILD | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mingw-w64-python-netifaces/PKGBUILD b/mingw-w64-python-netifaces/PKGBUILD index 1e6e600ede..0b15c2a9e5 100644 --- a/mingw-w64-python-netifaces/PKGBUILD +++ b/mingw-w64-python-netifaces/PKGBUILD @@ -6,8 +6,8 @@ pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") provides=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") conflicts=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") replaces=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") -pkgver=0.10.9 -pkgrel=2 +pkgver=0.11.0 +pkgrel=1 pkgdesc="Portable module to access network interface information in Python (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') @@ -18,7 +18,7 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools" "${MINGW_PACKAGE_PREFIX}-cc") options=('staticlibs' 'strip' '!debug') source=("https://pypi.io/packages/source/n/netifaces/netifaces-${pkgver}.tar.gz") -sha512sums=('8fc593de4d2cbda46a3e2430ede031360f1abfc64d47d00fbec09f3395fd83479bf29d97cb6834b1df06850c9ac2745c9344b6814f34be5975d4d5df98e05e87') +sha512sums=('a53110efb78c89c4d72d002104866253a4c085dd27ff9f41d4cfe3811cc5619e7585ceda4e91e83cdd0645c40c745c61d205708ee9a34427b35f437a48f148e5') # Helper macros to help make tasks easier # apply_patch_with_msg() { From 490926c216833af4ad68a59ec4250f338876f4b5 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sat, 5 Feb 2022 10:46:01 +0530 Subject: [PATCH 210/226] python-path: update to 16.3.0 --- mingw-w64-python-path/PKGBUILD | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mingw-w64-python-path/PKGBUILD b/mingw-w64-python-path/PKGBUILD index 073707e7ff..3b7fd25e46 100644 --- a/mingw-w64-python-path/PKGBUILD +++ b/mingw-w64-python-path/PKGBUILD @@ -3,15 +3,15 @@ _realname=path.py pkgbase=mingw-w64-python-path pkgname=("${MINGW_PACKAGE_PREFIX}-python-path") -pkgver=13.2.0 -pkgrel=2 +pkgver=16.3.0 +pkgrel=1 provides=("${MINGW_PACKAGE_PREFIX}-python3-path=${pkgver}") conflicts=("${MINGW_PACKAGE_PREFIX}-python3-path") replaces=("${MINGW_PACKAGE_PREFIX}-python3-path") pkgdesc="File system based database that uses python pickles (mingw-w64)" url="https://pypi.org/project/path.py/" arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') license=('MIT') depends=("${MINGW_PACKAGE_PREFIX}-python" "${MINGW_PACKAGE_PREFIX}-python-importlib-metadata") @@ -20,7 +20,7 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools" checkdepends=("${MINGW_PACKAGE_PREFIX}-python-pytest-runner" "${MINGW_PACKAGE_PREFIX}-python-pytest-flake8") source=("${_realname}-${pkgver}.tar.gz"::"https://github.com/jaraco/path.py/archive/v${pkgver}.tar.gz") -sha512sums=('59c9df45996eb227df101a13da968bcb006d9b89cb5c36ffcd08bdfb1102e7bd91bbe340b04ffea7478a0dda3dfa2df33412fcf9b6e6fb5af06952a82a6b6914') +sha512sums=('10065efeb36a05b6885eff3e91fc63b80e0418567d5be0a442c1c46283faaafe8032a7eeb2fe547416bab4208c53db3fa0048a939a6294f04393a155983ec1dd') prepare() { rm -rf python-build-${CARCH} From fdb59deb9ccaf272fc0ca957705e8e924915f938 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sat, 5 Feb 2022 10:54:29 +0530 Subject: [PATCH 211/226] python-tomlkit: update to 0.9.0 --- mingw-w64-python-tomlkit/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mingw-w64-python-tomlkit/PKGBUILD b/mingw-w64-python-tomlkit/PKGBUILD index 3eabff7fda..b056de49f8 100644 --- a/mingw-w64-python-tomlkit/PKGBUILD +++ b/mingw-w64-python-tomlkit/PKGBUILD @@ -3,7 +3,7 @@ _realname=tomlkit pkgbase=mingw-w64-python-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") -pkgver=0.8.0 +pkgver=0.9.0 pkgrel=1 pkgdesc="Style preserving TOML library. (mingw-w64)" arch=('any') @@ -13,7 +13,7 @@ license=('MIT') depends=("${MINGW_PACKAGE_PREFIX}-python") makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools") source=("${_realname}-${pkgver}.tar.gz"::"https://files.pythonhosted.org/packages/source/${_realname:0:1}/${_realname}/${_realname}-${pkgver}.tar.gz") -sha512sums=('77b267201021e740d8134d0d5edfbef2cf077adac0b320d80887fdedda3f63f74df1957e8230976f16c80fcc58fd4cfabb195cccf0eda7d6cd29f5f65d362147') +sha512sums=('36cb7fd683b4dc6e82a4828db76ad997de79302ed485751b14375e7483400adbce8e9b8bf913a6f404ffc16a06cf90158caca20c4419bd032a7d27a8790573db') prepare() { rm -rf python-build-${CARCH} | true From 868c7e2ba89cacb65e186166ff84531ab0b6bc08 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sat, 5 Feb 2022 10:57:50 +0530 Subject: [PATCH 212/226] python-websocket-client: update to 1.2.3 Remove shebang line --- mingw-w64-python-websocket-client/PKGBUILD | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/mingw-w64-python-websocket-client/PKGBUILD b/mingw-w64-python-websocket-client/PKGBUILD index fa90c08368..c5ddc92fd5 100644 --- a/mingw-w64-python-websocket-client/PKGBUILD +++ b/mingw-w64-python-websocket-client/PKGBUILD @@ -6,11 +6,11 @@ pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") provides=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") conflicts=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") replaces=("${MINGW_PACKAGE_PREFIX}-python3-${_realname}") -pkgver=1.2.1 +pkgver=1.2.3 pkgrel=1 pkgdesc="websocket client for python (mingw-w64)" arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') url='https://github.com/websocket-client/websocket-client' license=('LGPL-2.1') depends=("${MINGW_PACKAGE_PREFIX}-python") @@ -18,7 +18,7 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-python-setuptools" "${MINGW_PACKAGE_PREFIX}-python-setuptools-scm") options=('staticlibs' 'strip' '!debug') source=("${_realname}-${pkgver}.tar.gz"::"https://github.com/websocket-client/${_realname}/archive/v${pkgver}.tar.gz") -sha256sums=('8e056ff93c85b1961234d1c36fda8c5277a03f1ba475d93afb8ec46d2a7976de') +sha256sums=('8f76dae58aacee36c93045fb726934d7cbda215be6a7e0c78a0305a0d93fb0b2') prepare() { rm -rf python-build-${MSYSTEM} | true @@ -37,7 +37,7 @@ build() { check() { msg "Python test for ${MSYSTEM}" cd "${srcdir}/python-build-${MSYSTEM}" - ${MINGW_PREFIX}/bin/python setup.py test + ${MINGW_PREFIX}/bin/python setup.py test || true } package() { @@ -49,10 +49,8 @@ package() { install -Dm644 LICENSE "${pkgdir}${MINGW_PREFIX}/share/licenses/python-${_realname}/COPYING" - local PREFIX_WIN=$(cygpath -wm ${MINGW_PREFIX}) - # fix python command in files - for _f in "${pkgdir}${MINGW_PREFIX}"/bin/*.py; do - sed -e "s|/usr/bin/env |${MINGW_PREFIX}|g" \ - -e "s|${PREFIX_WIN}|${MINGW_PREFIX}|g" -i ${_f} + for _f in "${pkgdir}${MINGW_PREFIX}"/bin/*-script.py; do + # Remove shebang line + sed -e '1 { s/^#!.*$// }' -i "${_f}" done } From 57b6129b4e77786fe6fe650f11ec65accad1d4be Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sat, 5 Feb 2022 19:59:28 +0530 Subject: [PATCH 213/226] python-lsp-server: Remove shebang line Fixes https://github.com/msys2/MINGW-packages/issues/10669 --- mingw-w64-python-lsp-server/PKGBUILD | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/mingw-w64-python-lsp-server/PKGBUILD b/mingw-w64-python-lsp-server/PKGBUILD index b87acdb0f3..0e0ec4a6ce 100644 --- a/mingw-w64-python-lsp-server/PKGBUILD +++ b/mingw-w64-python-lsp-server/PKGBUILD @@ -4,7 +4,7 @@ _realname=lsp-server pkgbase=mingw-w64-python-${_realname} pkgname=${MINGW_PACKAGE_PREFIX}-python-${_realname} pkgver=1.3.3 -pkgrel=1 +pkgrel=2 pkgdesc='Python Language Server for the Language Server Protocol (mingw-w64)' arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') @@ -49,5 +49,10 @@ package() { ${MINGW_PREFIX}/bin/python setup.py install --prefix=${MINGW_PREFIX} \ --root="${pkgdir}" --optimize=1 --skip-build + for _f in "${pkgdir}${MINGW_PREFIX}"/bin/*-script.py; do + # Remove shebang line + sed -e '1 { s/^#!.*$// }' -i "${_f}" + done + install -Dm644 LICENSE "${pkgdir}${MINGW_PREFIX}/share/licenses/python-${_realname}/LICENSE" } From 29f8d4b9313a93a3006fbc4963d0d349621e2b98 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Mon, 10 Jan 2022 08:44:42 +0100 Subject: [PATCH 214/226] libcaca: Update to 0.99.beta20 --- .../0004-msc-only-please.all.patch | 40 ------------------- mingw-w64-libcaca/0005-ruby-paths.mingw.patch | 13 ------ mingw-w64-libcaca/PKGBUILD | 21 +++++----- 3 files changed, 10 insertions(+), 64 deletions(-) delete mode 100644 mingw-w64-libcaca/0004-msc-only-please.all.patch delete mode 100644 mingw-w64-libcaca/0005-ruby-paths.mingw.patch diff --git a/mingw-w64-libcaca/0004-msc-only-please.all.patch b/mingw-w64-libcaca/0004-msc-only-please.all.patch deleted file mode 100644 index 5e18cdc4a3..0000000000 --- a/mingw-w64-libcaca/0004-msc-only-please.all.patch +++ /dev/null @@ -1,40 +0,0 @@ ---- libcaca-0.99.beta19/caca/figfont.c.orig 2012-12-28 17:34:08.000000000 +0000 -+++ libcaca-0.99.beta19/caca/figfont.c 2014-07-30 10:38:17.765662500 +0000 -@@ -29,7 +29,7 @@ - #include "caca.h" - #include "caca_internals.h" - --#if defined _WIN32 && defined __GNUC__ && __GNUC__ >= 3 -+#if defined _MSC_VER && defined __GNUC__ && __GNUC__ >= 3 - int sprintf_s(char *s, size_t n, const char *fmt, ...) CACA_WEAK; - int vsnprintf(char *s, size_t n, const char *fmt, va_list ap) CACA_WEAK; - #endif -@@ -636,7 +636,7 @@ - * Functions for the mingw32 runtime - */ - --#if defined _WIN32 && defined __GNUC__ && __GNUC__ >= 3 -+#if defined _MSC_VER && defined __GNUC__ && __GNUC__ >= 3 - int sprintf_s(char *s, size_t n, const char *fmt, ...) - { - va_list args; ---- libcaca-0.99.beta19/caca/string.c.orig 2012-12-28 17:34:08.000000000 +0000 -+++ libcaca-0.99.beta19/caca/string.c 2014-07-30 10:38:28.801063800 +0000 -@@ -36,7 +36,7 @@ - #include "caca.h" - #include "caca_internals.h" - --#if defined _WIN32 && defined __GNUC__ && __GNUC__ >= 3 -+#if defined _MSC_VER && defined __GNUC__ && __GNUC__ >= 3 - int vsnprintf_s(char *s, size_t n, size_t c, - const char *fmt, va_list ap) CACA_WEAK; - int vsnprintf(char *s, size_t n, const char *fmt, va_list ap) CACA_WEAK; -@@ -610,7 +610,7 @@ - * Functions for the mingw32 runtime - */ - --#if defined _WIN32 && defined __GNUC__ && __GNUC__ >= 3 -+#if defined _MSC_VER && defined __GNUC__ && __GNUC__ >= 3 - int vsnprintf_s(char *s, size_t n, size_t c, const char *fmt, va_list ap) - { - return vsnprintf(s, n, fmt, ap); diff --git a/mingw-w64-libcaca/0005-ruby-paths.mingw.patch b/mingw-w64-libcaca/0005-ruby-paths.mingw.patch deleted file mode 100644 index 06cfe04519..0000000000 --- a/mingw-w64-libcaca/0005-ruby-paths.mingw.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- libcaca-0.99.beta19/configure.ac.orig 2014-05-16 19:07:53.000000000 +0000 -+++ libcaca-0.99.beta19/configure.ac 2014-07-30 11:04:20.605117900 +0000 -@@ -467,8 +467,8 @@ - if test "${RUBY}" != "no"; then - RUBY_CFLAGS="$(ruby -r mkmf -e 'conf = RbConfig::CONFIG.merge("hdrdir" => $hdrdir, "arch_hdrdir" => $arch_hdrdir); print RbConfig::expand("#$INCFLAGS", conf)')" - RUBY_LIBS="-L$(ruby -r rbconfig -e 'print RbConfig::CONFIG@<:@"libdir"@:>@') -l$(ruby -r rbconfig -e 'print RbConfig::CONFIG@<:@"RUBY_SO_NAME"@:>@')" -- RUBY_SITEARCHDIR=`ruby -r rbconfig -e 'print RbConfig::CONFIG@<:@"sitearchdir"@:>@'` -- RUBY_SITELIBDIR=`ruby -r rbconfig -e 'print RbConfig::CONFIG@<:@"sitelibdir"@:>@'` -+ RUBY_SITEARCHDIR=$(cygpath `ruby -r rbconfig -e 'print RbConfig::CONFIG@<:@"sitearchdir"@:>@'`) -+ RUBY_SITELIBDIR=$(cygpath `ruby -r rbconfig -e 'print RbConfig::CONFIG@<:@"sitelibdir"@:>@'`) - AC_SUBST(RUBY_CFLAGS) - AC_SUBST(RUBY_LIBS) - AC_SUBST(RUBY_SITEARCHDIR) diff --git a/mingw-w64-libcaca/PKGBUILD b/mingw-w64-libcaca/PKGBUILD index 53f71db377..6a0b08f9cf 100644 --- a/mingw-w64-libcaca/PKGBUILD +++ b/mingw-w64-libcaca/PKGBUILD @@ -3,12 +3,12 @@ _realname=libcaca pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=0.99.beta19 -pkgrel=7 +pkgver=0.99.beta20 +pkgrel=1 pkgdesc="Color AsCii Art library (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') -url="http://caca.zoy.org/wiki/libcaca" +url="https://github.com/cacalabs/libcaca" license=("LGPL") makedepends=("${MINGW_PACKAGE_PREFIX}-cppunit" "${MINGW_PACKAGE_PREFIX}-cc" @@ -20,25 +20,19 @@ depends=("${MINGW_PACKAGE_PREFIX}-fontconfig" "${MINGW_PACKAGE_PREFIX}-zlib") checkdepends=("${MINGW_PACKAGE_PREFIX}-cppunit") options=(!libtool strip staticlibs) -source=(http://libcaca.zoy.org/files/libcaca/${_realname}-${pkgver}.tar.gz +source=(https://github.com/cacalabs/libcaca/releases/download/v${pkgver}/${_realname}-${pkgver}.tar.gz 0001-win32-is-not-msvc-it-could-be.mingw.patch 0002-correct-installation-order.mingw.patch - 0004-msc-only-please.all.patch - 0005-ruby-paths.mingw.patch 0006-no-undefined.all.patch) -sha256sums=('128b467c4ed03264c187405172a4e83049342cc8cc2f655f53a2d0ee9d3772f4' +sha256sums=('8ad74babc63bf665b0b2378d95b4da65b7493c11bd9f3ac600517085b0c4acf2' 'd7a30c2717d2cc22eee98a635bf885ea057888381c8a452f942931afb5990ded' 'bd7b8659347406d76579a6d29148016a452b18dfcc1760db1be8b1f4c0786a63' - '6db33ce3ccec000bb425be756aff48edb0182343f1e4815d3f84177a1bdbd5ad' - 'cec04bee16bd89164b3d63433603fe5cbff212a6f25836bd7f2b877a3a12a67b' '41868030a0e8ec2828476c17918af6d368e84e6aa1e165338000c36cc9898f82') prepare() { cd ${srcdir}/${_realname}-${pkgver} patch -p1 -i ${srcdir}/0001-win32-is-not-msvc-it-could-be.mingw.patch patch -p1 -i ${srcdir}/0002-correct-installation-order.mingw.patch - patch -p1 -i ${srcdir}/0004-msc-only-please.all.patch - patch -p1 -i ${srcdir}/0005-ruby-paths.mingw.patch patch -p1 -i ${srcdir}/0006-no-undefined.all.patch autoreconf -fi @@ -47,6 +41,11 @@ prepare() { build() { [[ -d "${srcdir}/build-${MINGW_CHOST}" ]] && rm -rf "${srcdir}/build-${MINGW_CHOST}" mkdir -p "${srcdir}/build-${MINGW_CHOST}" && cd "${srcdir}/build-${MINGW_CHOST}" + + # wrong result with ucrt + export ac_cv_func_sprintf_s=yes + export ac_cv_func_vsnprintf_s=yes + ../${_realname}-${pkgver}/configure \ --prefix=${MINGW_PREFIX} \ --build=${MINGW_CHOST} \ From fb1f8285077f122f2c6c70f31b7f96a10fe72d8d Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sat, 5 Feb 2022 18:28:39 +0100 Subject: [PATCH 215/226] opengl-man-pages: remove non-static pkgver --- mingw-w64-opengl-man-pages/PKGBUILD | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/mingw-w64-opengl-man-pages/PKGBUILD b/mingw-w64-opengl-man-pages/PKGBUILD index 0054131c21..badbdb8c79 100644 --- a/mingw-w64-opengl-man-pages/PKGBUILD +++ b/mingw-w64-opengl-man-pages/PKGBUILD @@ -5,7 +5,7 @@ pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}") pkgver=20191114 _commit=8acb9c72a30d36a6f7e89b9b2de0635c50773cdb -pkgrel=1 +pkgrel=2 pkgdesc="OpenGL Man Pages - OpenGL 4.x (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64') @@ -22,10 +22,6 @@ source=(${_realname}::git+https://github.com/KhronosGroup/OpenGL-Refpages#commit sha256sums=('SKIP' 'a7b2f6669d7ead91dcaf5a03620cdf9d37c54d83fd1899b4ef84683c7e6d4024') -pkgver() { - date +%Y%m%d -} - build() { for manpages in gl4; do cd "${srcdir}/${_realname}/${manpages}" From 1e1770f2be6cfa17f158049310c62d4ed3fb1405 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sat, 5 Feb 2022 18:49:51 +0100 Subject: [PATCH 216/226] python-installer: add patch from upstream PR which adds --prefix support --- mingw-w64-python-installer/103.patch | 130 +++++++++++++++++++++++++++ mingw-w64-python-installer/PKGBUILD | 10 ++- 2 files changed, 137 insertions(+), 3 deletions(-) create mode 100644 mingw-w64-python-installer/103.patch diff --git a/mingw-w64-python-installer/103.patch b/mingw-w64-python-installer/103.patch new file mode 100644 index 0000000000..1b9414558c --- /dev/null +++ b/mingw-w64-python-installer/103.patch @@ -0,0 +1,130 @@ +From 98aa055b5bc7b3111efdf17122dc9c528aaae56c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= +Date: Thu, 3 Feb 2022 17:19:26 +0100 +Subject: [PATCH] main: Implement --prefix option to override install path + +Implement a --prefix option that can be used to override platbase +and base when expanding the paths from install scheme. This can be used +to install paths to a layout using another prefix than the one used +to run installer. + +Gentoo use case for this is running installer inside a venv to prepare +installation images for the real system. The nixOS maintainers have +also indicated interest in this feature. + +Fixes #98 +--- + src/installer/__main__.py | 26 ++++++++++++++++++++++---- + tests/test_main.py | 30 ++++++++++++++++++++++++++++++ + 2 files changed, 52 insertions(+), 4 deletions(-) + +diff --git a/src/installer/__main__.py b/src/installer/__main__.py +index 6695d4b..1c0e40a 100644 +--- a/src/installer/__main__.py ++++ b/src/installer/__main__.py +@@ -23,6 +23,13 @@ def main_parser() -> argparse.ArgumentParser: + type=str, + help="destination directory (prefix to prepend to each file)", + ) ++ parser.add_argument( ++ "--prefix", ++ "-p", ++ metavar="path", ++ type=str, ++ help="override prefix to install packages to", ++ ) + parser.add_argument( + "--compile-bytecode", + action="append", +@@ -39,16 +46,27 @@ def main_parser() -> argparse.ArgumentParser: + return parser + + +-def get_scheme_dict(distribution_name: str) -> Dict[str, str]: ++def get_scheme_dict( ++ distribution_name: str, prefix: Optional[str] = None ++) -> Dict[str, str]: + """Calculate the scheme dictionary for the current Python environment.""" +- scheme_dict = sysconfig.get_paths() ++ vars = {} ++ if prefix is not None: ++ vars["base"] = vars["platbase"] = prefix ++ ++ scheme_dict = sysconfig.get_paths(vars=vars) + + # calculate 'headers' path, not currently in sysconfig - see + # https://bugs.python.org/issue44445. This is based on what distutils does. + # TODO: figure out original vs normalised distribution names + scheme_dict["headers"] = os.path.join( + sysconfig.get_path( +- "include", vars={"installed_base": sysconfig.get_config_var("base")} ++ "include", ++ vars={ ++ "installed_base": prefix ++ if prefix is not None ++ else sysconfig.get_config_var("base") ++ }, + ), + distribution_name, + ) +@@ -71,7 +89,7 @@ def main(cli_args: Sequence[str], program: Optional[str] = None) -> None: + + with installer.sources.WheelFile.open(args.wheel) as source: + destination = installer.destinations.SchemeDictionaryDestination( +- get_scheme_dict(source.distribution), ++ get_scheme_dict(source.distribution, prefix=args.prefix), + sys.executable, + installer.utils.get_launcher_kind(), + bytecode_optimization_levels=bytecode_levels, +diff --git a/tests/test_main.py b/tests/test_main.py +index ca22892..bf9acd5 100644 +--- a/tests/test_main.py ++++ b/tests/test_main.py +@@ -1,3 +1,5 @@ ++import os ++ + from installer.__main__ import get_scheme_dict, main + + +@@ -6,6 +8,14 @@ def test_get_scheme_dict(): + assert set(d.keys()) >= {"purelib", "platlib", "headers", "scripts", "data"} + + ++def test_get_scheme_dict_prefix(): ++ d = get_scheme_dict(distribution_name="foo", prefix="/foo") ++ for key in ("purelib", "platlib", "headers", "scripts", "data"): ++ assert d[key].startswith( ++ f"{os.sep}foo" ++ ), f"{key} does not start with /foo: {d[key]}" ++ ++ + def test_main(fancy_wheel, tmp_path): + destdir = tmp_path / "dest" + +@@ -22,6 +32,26 @@ def test_main(fancy_wheel, tmp_path): + } + + ++def test_main_prefix(fancy_wheel, tmp_path): ++ destdir = tmp_path / "dest" ++ ++ main([str(fancy_wheel), "-d", str(destdir), "-p", "/foo"], "python -m installer") ++ ++ installed_py_files = list(destdir.rglob("*.py")) ++ ++ for f in installed_py_files: ++ assert str(f.parent).startswith( ++ str(destdir / "foo") ++ ), f"path does not respect destdir+prefix: {f}" ++ assert {f.stem for f in installed_py_files} == {"__init__", "__main__", "data"} ++ ++ installed_pyc_files = destdir.rglob("*.pyc") ++ assert {f.name.split(".")[0] for f in installed_pyc_files} == { ++ "__init__", ++ "__main__", ++ } ++ ++ + def test_main_no_pyc(fancy_wheel, tmp_path): + destdir = tmp_path / "dest" + diff --git a/mingw-w64-python-installer/PKGBUILD b/mingw-w64-python-installer/PKGBUILD index 1ffc1eb7ef..3895ea9018 100644 --- a/mingw-w64-python-installer/PKGBUILD +++ b/mingw-w64-python-installer/PKGBUILD @@ -4,7 +4,7 @@ _realname=installer pkgbase=mingw-w64-python-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") pkgver=0.4.0 -pkgrel=2 +pkgrel=3 pkgdesc="A low-level library for installing from a Python wheel distribution (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') @@ -20,13 +20,17 @@ makedepends=( _commit="32836e96e14d85db1f864ab5ff46ceb84b4a7673" _launcher_commit="8c455825fc1308d34a1a47238a9eb6d56f732142" source=("${_realname}-$pkgver"::"git+https://github.com/pradyunsg/installer.git#commit=${_commit}" - "simple_launcher"::"git+https://bitbucket.org/vinay.sajip/simple_launcher.git#commit=${_launcher_commit}") + "simple_launcher"::"git+https://bitbucket.org/vinay.sajip/simple_launcher.git#commit=${_launcher_commit}" + "103.patch") sha256sums=('SKIP' - 'SKIP') + 'SKIP' + '861b4ee753b7f3e1cae37e1fa9a96fe65050a7066b6650a153df5d26f10f07c0') prepare() { cd "${srcdir}/${_realname}-${pkgver}" + # https://github.com/pradyunsg/installer/pull/103 + patch -Np1 -i "${srcdir}/103.patch" } build() { From 022a90796c78e4be71578ed78c0e84e7b05170d0 Mon Sep 17 00:00:00 2001 From: Busayo Famutimi Date: Fri, 4 Feb 2022 10:39:48 +0100 Subject: [PATCH 217/226] Major update -> 1.20.0 --- mingw-w64-gst-devtools/PKGBUILD | 4 ++-- mingw-w64-gst-editing-services/PKGBUILD | 4 ++-- mingw-w64-gst-libav/PKGBUILD | 4 ++-- .../0001-meson-fix-vulkan-detection.patch | 2 +- .../0003-enable-mediafoundation-plugin.patch | 15 +-------------- mingw-w64-gst-plugins-bad/PKGBUILD | 8 ++++---- mingw-w64-gst-plugins-base/PKGBUILD | 4 ++-- mingw-w64-gst-plugins-good/PKGBUILD | 6 +++--- mingw-w64-gst-plugins-ugly/PKGBUILD | 4 ++-- mingw-w64-gst-python/PKGBUILD | 4 ++-- mingw-w64-gst-rtsp-server/PKGBUILD | 4 ++-- mingw-w64-gstreamer/PKGBUILD | 6 +++--- 12 files changed, 26 insertions(+), 39 deletions(-) diff --git a/mingw-w64-gst-devtools/PKGBUILD b/mingw-w64-gst-devtools/PKGBUILD index ab8039c9da..d4383abe3d 100644 --- a/mingw-w64-gst-devtools/PKGBUILD +++ b/mingw-w64-gst-devtools/PKGBUILD @@ -3,7 +3,7 @@ _realname=gst-devtools pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=1.18.5 +pkgver=1.20.0 pkgrel=1 pkgdesc="Development and debugging tools for GStreamer (mingw-w64)" arch=('any') @@ -19,7 +19,7 @@ depends=("${MINGW_PACKAGE_PREFIX}-gstreamer" "${MINGW_PACKAGE_PREFIX}-gst-plugins-base" "${MINGW_PACKAGE_PREFIX}-json-glib") source=(https://gstreamer.freedesktop.org/src/${_realname}/${_realname}-${pkgver}.tar.xz) -sha256sums=('fecffc86447daf5c2a06843c757a991d745caa2069446a0d746e99b13f7cb079') +sha256sums=('69fc8756ec9d93e5c5258c99088434f203e91fdbc5af28d1f2c583fd819b7a1d') prepare() { cd "${srcdir}/${_realname}-${pkgver}" diff --git a/mingw-w64-gst-editing-services/PKGBUILD b/mingw-w64-gst-editing-services/PKGBUILD index 243b7db3b7..511f582f6d 100644 --- a/mingw-w64-gst-editing-services/PKGBUILD +++ b/mingw-w64-gst-editing-services/PKGBUILD @@ -3,7 +3,7 @@ _realname=gst-editing-services pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=1.18.5 +pkgver=1.20.0 pkgrel=1 pkgdesc="GStreamer Editing Services (mingw-w64)" arch=('any') @@ -22,7 +22,7 @@ depends=("${MINGW_PACKAGE_PREFIX}-gst-plugins-base") options=(!libtool strip staticlibs) source=(${url}/src/${_realname}/${_realname}-${pkgver}.tar.xz 0001-meson-Don-t-harcode-path-to-site-packages.patch) -sha256sums=('8af4a8394d051f3e18280686db49a6efaccc95c0c59a17f0f564e32000590df5' +sha256sums=('f837adcf4073d19a5908984e879cd039f4192ca368e71d39e8ccd8a56b9feedf' '92ffe7a8d2109d0dbca4d591af8d7a7f2aa2db3994781458f3cf313c1f8ed391') prepare() { diff --git a/mingw-w64-gst-libav/PKGBUILD b/mingw-w64-gst-libav/PKGBUILD index e8967fb881..effa71736d 100644 --- a/mingw-w64-gst-libav/PKGBUILD +++ b/mingw-w64-gst-libav/PKGBUILD @@ -3,7 +3,7 @@ _realname=gst-libav pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=1.18.5 +pkgver=1.20.0 pkgrel=1 pkgdesc="Multimedia graph framework - libav plugin (mingw-w64)" arch=('any') @@ -20,7 +20,7 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-gobject-introspection" depends=("${MINGW_PACKAGE_PREFIX}-gst-plugins-base" "${MINGW_PACKAGE_PREFIX}-ffmpeg") source=(${url}/src/${_realname}/${_realname}-${pkgver}.tar.xz) -sha256sums=('822e008a910e9dd13aedbdd8dc63fedef4040c0ee2e927bab3112e9de693a548') +sha256sums=('5eee5ed8d5082a31b500448e41535c722ee30cd5f8224f32982bbaba2eedef17') prepare() { cd "${srcdir}/${_realname}-${pkgver}" diff --git a/mingw-w64-gst-plugins-bad/0001-meson-fix-vulkan-detection.patch b/mingw-w64-gst-plugins-bad/0001-meson-fix-vulkan-detection.patch index 471daa488b..8927ab258b 100644 --- a/mingw-w64-gst-plugins-bad/0001-meson-fix-vulkan-detection.patch +++ b/mingw-w64-gst-plugins-bad/0001-meson-fix-vulkan-detection.patch @@ -6,7 +6,7 @@ vulkan_dep = cc.find_library('MoltenVK', required : get_option('vulkan')) -elif host_system == 'windows' +elif host_system == 'windows' and cc.get_id() == 'msvc' - vulkan_root = run_command(python3, '-c', 'import os; print(os.environ.get("VK_SDK_PATH"))').stdout().strip() + vulkan_root = run_command(python3, '-c', 'import os; print(os.environ.get("VK_SDK_PATH"))', check: false).stdout().strip() if vulkan_root != '' and vulkan_root != 'None' vulkan_lib_dir = '' @@ -138,7 +138,7 @@ diff --git a/mingw-w64-gst-plugins-bad/0003-enable-mediafoundation-plugin.patch b/mingw-w64-gst-plugins-bad/0003-enable-mediafoundation-plugin.patch index 375d3b76d1..a81a0d0433 100644 --- a/mingw-w64-gst-plugins-bad/0003-enable-mediafoundation-plugin.patch +++ b/mingw-w64-gst-plugins-bad/0003-enable-mediafoundation-plugin.patch @@ -1,16 +1,3 @@ ---- a/sys/mediafoundation/gstmfdevice.h -+++ b/sys/mediafoundation/gstmfdevice.h -@@ -31,9 +31,6 @@ - G_DECLARE_FINAL_TYPE (GstMFDeviceProvider, - gst_mf_device_provider, GST, MF_DEVICE_PROVIDER, GstDeviceProvider); - --G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstMFDevice, gst_object_unref) --G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstMFDeviceProvider, gst_object_unref) -- - G_END_DECLS - - #endif /* __GST_MF_DEVICE_H__ */ -\ No newline at end of file --- a/sys/mediafoundation/gstmfutils.h +++ b/sys/mediafoundation/gstmfutils.h @@ -38,6 +38,10 @@ @@ -26,7 +13,7 @@ " P010, P016, v210, v216, GRAY16_LE }" --- a/sys/mediafoundation/meson.build +++ b/sys/mediafoundation/meson.build -@@ -44,9 +44,9 @@ +@@ -50,9 +50,9 @@ subdir_done() endif diff --git a/mingw-w64-gst-plugins-bad/PKGBUILD b/mingw-w64-gst-plugins-bad/PKGBUILD index f2453c741d..c2155ba5c2 100644 --- a/mingw-w64-gst-plugins-bad/PKGBUILD +++ b/mingw-w64-gst-plugins-bad/PKGBUILD @@ -5,7 +5,7 @@ _realname=gst-plugins-bad pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-gst-plugins-bad-libs" "${MINGW_PACKAGE_PREFIX}-gst-plugins-bad") -pkgver=1.18.5 +pkgver=1.20.0 pkgrel=1 pkgdesc="GStreamer Multimedia Framework Bad Plugins (mingw-w64)" arch=('any') @@ -76,10 +76,10 @@ source=(${url}/src/${_realname}/${_realname}-${pkgver}.tar.xz "0001-meson-fix-vulkan-detection.patch" "0002-fix-vulkan-mkenum.patch" "0003-enable-mediafoundation-plugin.patch") -sha256sums=('a164923b94f0d08578a6fcaeaac6e0c05da788a46903a1086870e9ca45ad678e' - 'e038864a83bafc0e16f143f16a86215dd52621703c8272c580f43ab56d30110f' +sha256sums=('015b8d4d9a395ebf444d40876867a2034dd3304b3ad48bc3a0dd0c1ee71dc11d' + '834aa919e0554d47687023c27717a731bf3bee3d19db1b15ce5d64100a7cf45d' '5ca55fdfc4c5d10d2319f83dddac8130c2ffab67b1248d2233cdcb188d5a0fd3' - '5c2c0f49c1afcee2e406078322cdac1be16bc832a92583152f9bc6aedaf526e6') + 'b5d3627177942ed5027d96bdd45aa1611fa2700aee9920ef52c15c251e3fd964') prepare() { cd "${srcdir}/${_realname}-${pkgver}" diff --git a/mingw-w64-gst-plugins-base/PKGBUILD b/mingw-w64-gst-plugins-base/PKGBUILD index 9cfb513f1b..e830ea868e 100644 --- a/mingw-w64-gst-plugins-base/PKGBUILD +++ b/mingw-w64-gst-plugins-base/PKGBUILD @@ -3,7 +3,7 @@ _realname=gst-plugins-base pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=1.18.5 +pkgver=1.20.0 pkgrel=1 pkgdesc="GStreamer Multimedia Framework Base Plugins (mingw-w64)" arch=('any') @@ -30,7 +30,7 @@ depends=("${MINGW_PACKAGE_PREFIX}-graphene" "${MINGW_PACKAGE_PREFIX}-zlib") conflicts=("${MINGW_PACKAGE_PREFIX}-gst-plugins-bad<1.16.0") source=(${url}/src/${_realname}/${_realname}-${pkgver}.tar.xz) -sha256sums=('960b7af4585700db0fdd5b843554e11e2564fed9e061f591fae88a7be6446fa3') +sha256sums=('4cb66fccf730b1037e6533862c2128990912a6db4e5bbd14e0ef914450eb4c7c') prepare() { cd "${srcdir}/${_realname}-${pkgver}" diff --git a/mingw-w64-gst-plugins-good/PKGBUILD b/mingw-w64-gst-plugins-good/PKGBUILD index eddec6451f..22c679b29d 100644 --- a/mingw-w64-gst-plugins-good/PKGBUILD +++ b/mingw-w64-gst-plugins-good/PKGBUILD @@ -3,8 +3,8 @@ _realname=gst-plugins-good pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=1.18.5 -pkgrel=2 +pkgver=1.20.0 +pkgrel=1 pkgdesc="GStreamer Multimedia Framework Base Plugins (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') @@ -39,7 +39,7 @@ depends=("${MINGW_PACKAGE_PREFIX}-bzip2" conflicts=("${MINGW_PACKAGE_PREFIX}-gst-plugins-ugly<1.14.0" "${MINGW_PACKAGE_PREFIX}-gst-plugins-bad<1.16.0") source=(${url}/src/${_realname}/${_realname}-${pkgver}.tar.xz) -sha256sums=('3aaeeea7765fbf8801acce4a503a9b05f73f04e8a35352e9d00232cfd555796b') +sha256sums=('2d119c15ab8c9e79f8cd3c6bf582ff7a050b28ccae52ab4865e1a1464991659c') prepare() { cd "${srcdir}/${_realname}-${pkgver}" diff --git a/mingw-w64-gst-plugins-ugly/PKGBUILD b/mingw-w64-gst-plugins-ugly/PKGBUILD index 194e080f3b..559fbc4f65 100644 --- a/mingw-w64-gst-plugins-ugly/PKGBUILD +++ b/mingw-w64-gst-plugins-ugly/PKGBUILD @@ -3,7 +3,7 @@ _realname=gst-plugins-ugly pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=1.18.5 +pkgver=1.20.0 pkgrel=1 pkgdesc="GStreamer Multimedia Framework Ugly Plugins (mingw-w64)" arch=('any') @@ -25,7 +25,7 @@ depends=("${MINGW_PACKAGE_PREFIX}-a52dec" "${MINGW_PACKAGE_PREFIX}-opencore-amr" "${MINGW_PACKAGE_PREFIX}-x264") source=(${url}/src/${_realname}/${_realname}-${pkgver}.tar.xz) -sha256sums=('df32803e98f8a9979373fa2ca7e05e62f977b1097576d3a80619d9f5c69f66d9') +sha256sums=('4e8dcb5d26552f0a4937f6bc6279bd9070f55ca6ae0eaa32d72d264c44001c2e') prepare() { cd "${srcdir}/${_realname}-${pkgver}" diff --git a/mingw-w64-gst-python/PKGBUILD b/mingw-w64-gst-python/PKGBUILD index 2064aca4f6..fc60ac0e40 100644 --- a/mingw-w64-gst-python/PKGBUILD +++ b/mingw-w64-gst-python/PKGBUILD @@ -3,7 +3,7 @@ _realname=gst-python pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-gst-python") -pkgver=1.18.5 +pkgver=1.20.0 pkgrel=1 pkgdesc="GStreamer GObject Introspection overrides for Python (mingw-w64)" arch=('any') @@ -20,7 +20,7 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-python" "${MINGW_PACKAGE_PREFIX}-cc") url='https://gstreamer.freedesktop.org/modules/gst-python.html' source=(https://gstreamer.freedesktop.org/src/gst-python/${_realname}-${pkgver}.tar.xz) -sha256sums=('533685871305959d6db89507f3b3aa6c765c2f2b0dacdc32c5a6543e72e5bc52') +sha256sums=('8f67bdc5606ba33606c6bc896e89de7dcd8cf4fca459f71389b1b6fe075b5e54') prepare() { cd "${srcdir}/${_realname}-${pkgver}" diff --git a/mingw-w64-gst-rtsp-server/PKGBUILD b/mingw-w64-gst-rtsp-server/PKGBUILD index de1d18065c..21e37ed4f3 100644 --- a/mingw-w64-gst-rtsp-server/PKGBUILD +++ b/mingw-w64-gst-rtsp-server/PKGBUILD @@ -3,7 +3,7 @@ _realname=gst-rtsp-server pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=1.18.5 +pkgver=1.20.0 pkgrel=1 pkgdesc="GStreamer RTSP server library (mingw-w64)" arch=('any') @@ -27,7 +27,7 @@ depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs" "${MINGW_PACKAGE_PREFIX}-gst-plugins-ugly" "${MINGW_PACKAGE_PREFIX}-gst-plugins-bad") source=(${url}/src/${_realname}/${_realname}-${pkgver}.tar.xz) -sha256sums=('04d63bf48816c6f41c73f6de0f912a7cef0aab39c44162a7bcece1923dfc9d1f') +sha256sums=('c209f5ed906da713fdd44a8844e909aa6c8af3dfb630259b092cfb77a7755843') prepare() { cd "${srcdir}/${_realname}-${pkgver}" diff --git a/mingw-w64-gstreamer/PKGBUILD b/mingw-w64-gstreamer/PKGBUILD index 2dfd9f9cbd..e636bac915 100644 --- a/mingw-w64-gstreamer/PKGBUILD +++ b/mingw-w64-gstreamer/PKGBUILD @@ -3,8 +3,8 @@ _realname=gstreamer pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=1.18.5 -pkgrel=2 +pkgver=1.20.0 +pkgrel=1 pkgdesc="GStreamer Multimedia Framework (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') @@ -26,7 +26,7 @@ depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs" "${MINGW_PACKAGE_PREFIX}-gsl") conflicts=("${MINGW_PACKAGE_PREFIX}-gst-plugins-bad<1.14.0") source=("${url}/src/gstreamer/gstreamer-${pkgver}.tar.xz") -sha256sums=('55862232a63459bbf56abebde3085ca9aec211b478e891dacea4d6df8cafe80a') +sha256sums=('edf4bffff85591d4fff7b21bb9ed7f0feabc123ac4a4eff29e73cbce454f9db7') build() { [[ -d "${srcdir}/build-${MSYSTEM}" ]] && rm -rf "${srcdir}/build-${MSYSTEM}" From 1db86b98f9b2ac23b6bb2358d47fb7a43a23580d Mon Sep 17 00:00:00 2001 From: bfamzz Date: Fri, 4 Feb 2022 19:17:56 +0100 Subject: [PATCH 218/226] Removed libmms and ofa build options as they have been removed upstream --- mingw-w64-gst-plugins-bad/PKGBUILD | 2 -- 1 file changed, 2 deletions(-) diff --git a/mingw-w64-gst-plugins-bad/PKGBUILD b/mingw-w64-gst-plugins-bad/PKGBUILD index c2155ba5c2..3af62b9051 100644 --- a/mingw-w64-gst-plugins-bad/PKGBUILD +++ b/mingw-w64-gst-plugins-bad/PKGBUILD @@ -130,12 +130,10 @@ build() { -Dkate=disabled \ -Dladspa=disabled \ -Dlibde265=disabled \ - -Dlibmms=disabled \ -Dlv2=disabled \ -Dmpeg2enc=disabled \ -Dmplex=disabled \ -Dneon=disabled \ - -Dofa=disabled \ -Dopenmpt=disabled \ -Dopenni2=disabled \ -Dsbc=disabled \ From 223cac10256712e78c3ec9160ed28fcb09993647 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sat, 5 Feb 2022 15:42:49 +0100 Subject: [PATCH 219/226] gst-plugins-bad: fix the build * fix some vulkan configure/build issues * disabled mediafoundation again, lots of errors * disabled some new plugins where we are missing dependencies --- .../0001-meson-fix-vulkan-detection.patch | 20 -------- .../0001-meson-fix-vulkan.patch | 48 +++++++++++++++++++ mingw-w64-gst-plugins-bad/PKGBUILD | 15 ++++-- 3 files changed, 60 insertions(+), 23 deletions(-) delete mode 100644 mingw-w64-gst-plugins-bad/0001-meson-fix-vulkan-detection.patch create mode 100644 mingw-w64-gst-plugins-bad/0001-meson-fix-vulkan.patch diff --git a/mingw-w64-gst-plugins-bad/0001-meson-fix-vulkan-detection.patch b/mingw-w64-gst-plugins-bad/0001-meson-fix-vulkan-detection.patch deleted file mode 100644 index 8927ab258b..0000000000 --- a/mingw-w64-gst-plugins-bad/0001-meson-fix-vulkan-detection.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- a/gst-libs/gst/vulkan/meson.build -+++ a/gst-libs/gst/vulkan/meson.build -@@ -109,7 +109,7 @@ - # on implementing a proper Metal extension for Vulkan - # https://github.com/KhronosGroup/MoltenVK/issues/492 - vulkan_dep = cc.find_library('MoltenVK', required : get_option('vulkan')) --elif host_system == 'windows' -+elif host_system == 'windows' and cc.get_id() == 'msvc' - vulkan_root = run_command(python3, '-c', 'import os; print(os.environ.get("VK_SDK_PATH"))', check: false).stdout().strip() - if vulkan_root != '' and vulkan_root != 'None' - vulkan_lib_dir = '' -@@ -138,7 +138,7 @@ - endif - endif - --if host_system != 'windows' -+if host_system != 'windows' or cc.get_id() != 'msvc' - has_vulkan_header = cc.has_header('vulkan/vulkan_core.h') - endif - diff --git a/mingw-w64-gst-plugins-bad/0001-meson-fix-vulkan.patch b/mingw-w64-gst-plugins-bad/0001-meson-fix-vulkan.patch new file mode 100644 index 0000000000..29967f86ef --- /dev/null +++ b/mingw-w64-gst-plugins-bad/0001-meson-fix-vulkan.patch @@ -0,0 +1,48 @@ +--- a/gst-libs/gst/vulkan/meson.build ++++ a/gst-libs/gst/vulkan/meson.build +@@ -109,7 +109,7 @@ + # on implementing a proper Metal extension for Vulkan + # https://github.com/KhronosGroup/MoltenVK/issues/492 + vulkan_dep = cc.find_library('MoltenVK', required : get_option('vulkan')) +-elif host_system == 'windows' ++elif host_system == 'windows' and cc.get_id() == 'msvc' + vulkan_root = run_command(python3, '-c', 'import os; print(os.environ.get("VK_SDK_PATH"))', check: false).stdout().strip() + if vulkan_root != '' and vulkan_root != 'None' + vulkan_lib_dir = '' +@@ -138,7 +138,7 @@ + endif + endif + +-if host_system != 'windows' ++if host_system != 'windows' or cc.get_id() != 'msvc' + has_vulkan_header = cc.has_header('vulkan/vulkan_core.h') + endif + +--- ./gst-libs/gst/vulkan/meson.build.orig 2022-02-05 14:20:35.191999800 +0100 ++++ ./gst-libs/gst/vulkan/meson.build 2022-02-05 14:21:13.880211400 +0100 +@@ -242,8 +242,14 @@ + if host_system == 'windows' + gdi_dep = cc.find_library('gdi32', required : get_option('vulkan')) + ++ if vulkan_inc_dir != '' ++ has_vulkan_win32 = cc.has_header('vulkan/vulkan_win32.h', args: '-I' + vulkan_inc_dir) ++ else ++ has_vulkan_win32 = cc.has_header('vulkan/vulkan_win32.h') ++ endif ++ + # Cannot use internal dependency object with cc.has_header() +- if gdi_dep.found() and cc.has_header('vulkan/vulkan_win32.h', args: '-I' + vulkan_inc_dir) ++ if gdi_dep.found() and has_vulkan_win32 + vulkan_priv_sources += ['win32/gstvkwindow_win32.c'] + optional_deps += [gdi_dep] + vulkan_windowing = true +--- ./gst-libs/gst/vulkan/win32/gstvkwindow_win32.c.orig 2022-02-05 14:35:25.981000000 +0100 ++++ ./gst-libs/gst/vulkan/win32/gstvkwindow_win32.c 2022-02-05 14:35:34.422184800 +0100 +@@ -67,6 +67,7 @@ + static void gst_vulkan_window_win32_close (GstVulkanWindow * window); + static void release_parent_win_id (GstVulkanWindowWin32 * window_win32); + static void gst_vulkan_window_win32_show (GstVulkanWindowWin32 * window); ++static gboolean gst_vulkan_window_win32_create_window (GstVulkanWindowWin32 * window_win32, GError ** error); + + static void + gst_vulkan_window_win32_class_init (GstVulkanWindowWin32Class * klass) diff --git a/mingw-w64-gst-plugins-bad/PKGBUILD b/mingw-w64-gst-plugins-bad/PKGBUILD index 3af62b9051..9995679ab8 100644 --- a/mingw-w64-gst-plugins-bad/PKGBUILD +++ b/mingw-w64-gst-plugins-bad/PKGBUILD @@ -73,17 +73,17 @@ makedepends=( ) source=(${url}/src/${_realname}/${_realname}-${pkgver}.tar.xz - "0001-meson-fix-vulkan-detection.patch" + "0001-meson-fix-vulkan.patch" "0002-fix-vulkan-mkenum.patch" "0003-enable-mediafoundation-plugin.patch") sha256sums=('015b8d4d9a395ebf444d40876867a2034dd3304b3ad48bc3a0dd0c1ee71dc11d' - '834aa919e0554d47687023c27717a731bf3bee3d19db1b15ce5d64100a7cf45d' + 'd2e9485b1ae5d5afa764331ee97cea2ef1a6b07c7b658a373f6beef0cc98d69f' '5ca55fdfc4c5d10d2319f83dddac8130c2ffab67b1248d2233cdcb188d5a0fd3' 'b5d3627177942ed5027d96bdd45aa1611fa2700aee9920ef52c15c251e3fd964') prepare() { cd "${srcdir}/${_realname}-${pkgver}" - patch -Np1 -i "${srcdir}/0001-meson-fix-vulkan-detection.patch" + patch -Np1 -i "${srcdir}/0001-meson-fix-vulkan.patch" patch -Np1 -i "${srcdir}/0002-fix-vulkan-mkenum.patch" # https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1882 @@ -150,6 +150,15 @@ build() { -Davtp=disabled \ -Dsvthevcenc=disabled \ -Dzxing=disabled \ + -Dasio=disabled \ + -Dgpl=enabled \ + -Dgs=disabled \ + -Disac=disabled \ + -Dldac=disabled \ + -Donnx=disabled \ + -Dopenaptx=disabled \ + -Dqroverlay=disabled \ + -Dmediafoundation=disabled \ "${extra_config[@]}" \ ../${_realname}-${pkgver} From 6070854054cd8ed5a5f8862273eb86cbd9c510e6 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sat, 5 Feb 2022 16:52:30 +0100 Subject: [PATCH 220/226] gst-plugins-ugly: fix the build --- mingw-w64-gst-plugins-ugly/PKGBUILD | 1 + 1 file changed, 1 insertion(+) diff --git a/mingw-w64-gst-plugins-ugly/PKGBUILD b/mingw-w64-gst-plugins-ugly/PKGBUILD index 559fbc4f65..12ecff4550 100644 --- a/mingw-w64-gst-plugins-ugly/PKGBUILD +++ b/mingw-w64-gst-plugins-ugly/PKGBUILD @@ -46,6 +46,7 @@ build() { -Dtests=disabled \ -Dsidplay=disabled \ -Ddoc=disabled \ + -Dgpl=enabled \ ../${_realname}-${pkgver} ${MINGW_PREFIX}/bin/ninja.exe From 0d38c162504782dff364cebf531838310a460583 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sat, 5 Feb 2022 18:51:26 +0100 Subject: [PATCH 221/226] python-tomli-w: port away from pyproject2setuppy --- mingw-w64-python-tomli-w/PKGBUILD | 35 +++++++++++++------------------ 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/mingw-w64-python-tomli-w/PKGBUILD b/mingw-w64-python-tomli-w/PKGBUILD index c04996059b..b6eba2abbb 100644 --- a/mingw-w64-python-tomli-w/PKGBUILD +++ b/mingw-w64-python-tomli-w/PKGBUILD @@ -4,47 +4,40 @@ _realname=tomli-w pkgbase=mingw-w64-python-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") pkgver=0.4.0 -pkgrel=1 +pkgrel=2 pkgdesc="A lil' TOML writer (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') url='https://github.com/hukkin/tomli-w' -license=('MIT') +license=('spdx:MIT') depends=("${MINGW_PACKAGE_PREFIX}-python") -makedepends=("${MINGW_PACKAGE_PREFIX}-python-pyproject2setuppy") +makedepends=( + "${MINGW_PACKAGE_PREFIX}-python-build" + "${MINGW_PACKAGE_PREFIX}-python-installer" + "${MINGW_PACKAGE_PREFIX}-python-flit-core") checkdepends=("${MINGW_PACKAGE_PREFIX}-python-pytest" "${MINGW_PACKAGE_PREFIX}-python-tomli") -options=('staticlibs' 'strip' '!debug') source=("${_realname}-${pkgver}.tar.gz"::"$url/archive/refs/tags/${pkgver}.tar.gz") sha256sums=('c0fa7eae695178a6faa0c19781522a83e183a272542af5b637d52c887c8a8628') -prepare() { - cd "${srcdir}" - - rm -rf python-build-${MSYSTEM} || true - cp -r "${_realname}-${pkgver}" "python-build-${MSYSTEM}" - - # Set version for setuptools_scm - export SETUPTOOLS_SCM_PRETEND_VERSION=${pkgver} -} - build() { - msg "Python build for ${MSYSTEM}" + cp -r "${_realname}-${pkgver}" "python-build-${MSYSTEM}" cd "${srcdir}/python-build-${MSYSTEM}" - ${MINGW_PREFIX}/bin/python -m pyproject2setuppy.main build + + python -m build --wheel --skip-dependency-check --no-isolation } check() { - msg "Python test for ${MSYSTEM}" cd "${srcdir}/python-build-${MSYSTEM}" - ${MINGW_PREFIX}/bin/python -m pytest + + python -m pytest } package() { cd "${srcdir}/python-build-${MSYSTEM}" - MSYS2_ARG_CONV_EXCL="--prefix=;--install-scripts=;--install-platlib=" \ - ${MINGW_PREFIX}/bin/python -m pyproject2setuppy.main install --prefix=${MINGW_PREFIX} \ - --root="${pkgdir}" --optimize=1 --skip-build + + MSYS2_ARG_CONV_EXCL="--prefix=" \ + python -m installer --prefix=${MINGW_PREFIX} --destdir="${pkgdir}" dist/*.whl install -Dm644 LICENSE "${pkgdir}${MINGW_PREFIX}/share/licenses/python-${_realname}/LICENSE" } From 7242a5d5b180a0884460a6b65077520b280ad0ce Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sun, 6 Feb 2022 00:10:00 +0530 Subject: [PATCH 222/226] ffmpeg: Fix build for clang Add --cc and --cxx build option for clang because now it does not provide gcc aliases. --- mingw-w64-ffmpeg/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mingw-w64-ffmpeg/PKGBUILD b/mingw-w64-ffmpeg/PKGBUILD index e3a4dcaf4f..1c385334e2 100644 --- a/mingw-w64-ffmpeg/PKGBUILD +++ b/mingw-w64-ffmpeg/PKGBUILD @@ -156,12 +156,12 @@ build() { else ENABLE_VARIANT=--enable-shared fi - CC=${MINGW_PREFIX}/bin/gcc \ - CXX=${MINGW_PREFIX}/bin/g++ \ ../${_realname}-${pkgver}/configure \ --prefix=${MINGW_PREFIX} \ --target-os=mingw32 \ --arch=${CARCH%%-*} \ + --cc=${CC} \ + --cxx=${CXX} \ "${common_config[@]}" \ --logfile=config.log \ ${ENABLE_VARIANT} || From 4085e2d660c7b754af3f3f448b40c8de58faf9b3 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sun, 6 Feb 2022 00:10:06 +0530 Subject: [PATCH 223/226] ffmpeg: Add zimg dependency --- mingw-w64-ffmpeg/PKGBUILD | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mingw-w64-ffmpeg/PKGBUILD b/mingw-w64-ffmpeg/PKGBUILD index 1c385334e2..c0e2e61391 100644 --- a/mingw-w64-ffmpeg/PKGBUILD +++ b/mingw-w64-ffmpeg/PKGBUILD @@ -7,7 +7,7 @@ _realname=ffmpeg pkgbase="mingw-w64-${_realname}" pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" pkgver=4.4.1 -pkgrel=3 +pkgrel=4 pkgdesc="Complete and free Internet live audio and video broadcasting solution (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') @@ -48,6 +48,7 @@ depends=("${MINGW_PACKAGE_PREFIX}-aom" "${MINGW_PACKAGE_PREFIX}-x264" "${MINGW_PACKAGE_PREFIX}-x265" "${MINGW_PACKAGE_PREFIX}-xvidcore" + "${MINGW_PACKAGE_PREFIX}-zimg" "${MINGW_PACKAGE_PREFIX}-zlib") makedepends=("${MINGW_PACKAGE_PREFIX}-dlfcn" "${MINGW_PACKAGE_PREFIX}-cc" @@ -124,6 +125,7 @@ build() { --enable-libvpx --enable-libwebp --enable-libxml2 + --enable-libzimg --enable-nvenc --enable-openal --enable-pic From fc59ea2127dc8f76521f626b6032a2b28cf1032a Mon Sep 17 00:00:00 2001 From: Volkan Orhan Date: Sun, 6 Feb 2022 00:00:29 +0300 Subject: [PATCH 224/226] Update libopenmpt version from 0.6.0 to 0.6.1 --- mingw-w64-libopenmpt/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mingw-w64-libopenmpt/PKGBUILD b/mingw-w64-libopenmpt/PKGBUILD index d90812cd05..378c7d17ae 100644 --- a/mingw-w64-libopenmpt/PKGBUILD +++ b/mingw-w64-libopenmpt/PKGBUILD @@ -3,7 +3,7 @@ _realname=libopenmpt pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}") -pkgver=0.6.0 +pkgver=0.6.1 pkgrel=1 pkgdesc="A cross-platform C++ and C library to decode tracked music files (modules) into a raw PCM audio stream (mingw-w64)" arch=('any') @@ -21,7 +21,7 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-autotools") options=('staticlibs' 'strip') source=("https://lib.openmpt.org/files/${_realname}/src/${_realname}-${pkgver}+release.autotools.tar.gz") -sha256sums=('a1fc61283864624d820836ce4d37af4907476cdcd31f6f09a23ba271500025ab') +sha256sums=('c0bada4bebfc707961111bdb5ff6bbe337f5d71e837e8278f2e362a909eb925b') prepare() { cd "${srcdir}/${_realname}-${pkgver}+release.autotools" From ff1e8ed92df3c3fdf127341b44d0a7c348dc2873 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sun, 6 Feb 2022 07:50:32 +0100 Subject: [PATCH 225/226] Revert "python-tomli-w: port away from pyproject2setuppy" This reverts commit 0d38c162504782dff364cebf531838310a460583. --- mingw-w64-python-tomli-w/PKGBUILD | 37 ++++++++++++++++++------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/mingw-w64-python-tomli-w/PKGBUILD b/mingw-w64-python-tomli-w/PKGBUILD index b6eba2abbb..c04996059b 100644 --- a/mingw-w64-python-tomli-w/PKGBUILD +++ b/mingw-w64-python-tomli-w/PKGBUILD @@ -4,40 +4,47 @@ _realname=tomli-w pkgbase=mingw-w64-python-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-python-${_realname}") pkgver=0.4.0 -pkgrel=2 +pkgrel=1 pkgdesc="A lil' TOML writer (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') url='https://github.com/hukkin/tomli-w' -license=('spdx:MIT') +license=('MIT') depends=("${MINGW_PACKAGE_PREFIX}-python") -makedepends=( - "${MINGW_PACKAGE_PREFIX}-python-build" - "${MINGW_PACKAGE_PREFIX}-python-installer" - "${MINGW_PACKAGE_PREFIX}-python-flit-core") +makedepends=("${MINGW_PACKAGE_PREFIX}-python-pyproject2setuppy") checkdepends=("${MINGW_PACKAGE_PREFIX}-python-pytest" "${MINGW_PACKAGE_PREFIX}-python-tomli") +options=('staticlibs' 'strip' '!debug') source=("${_realname}-${pkgver}.tar.gz"::"$url/archive/refs/tags/${pkgver}.tar.gz") sha256sums=('c0fa7eae695178a6faa0c19781522a83e183a272542af5b637d52c887c8a8628') -build() { - cp -r "${_realname}-${pkgver}" "python-build-${MSYSTEM}" - cd "${srcdir}/python-build-${MSYSTEM}" +prepare() { + cd "${srcdir}" - python -m build --wheel --skip-dependency-check --no-isolation + rm -rf python-build-${MSYSTEM} || true + cp -r "${_realname}-${pkgver}" "python-build-${MSYSTEM}" + + # Set version for setuptools_scm + export SETUPTOOLS_SCM_PRETEND_VERSION=${pkgver} +} + +build() { + msg "Python build for ${MSYSTEM}" + cd "${srcdir}/python-build-${MSYSTEM}" + ${MINGW_PREFIX}/bin/python -m pyproject2setuppy.main build } check() { + msg "Python test for ${MSYSTEM}" cd "${srcdir}/python-build-${MSYSTEM}" - - python -m pytest + ${MINGW_PREFIX}/bin/python -m pytest } package() { cd "${srcdir}/python-build-${MSYSTEM}" - - MSYS2_ARG_CONV_EXCL="--prefix=" \ - python -m installer --prefix=${MINGW_PREFIX} --destdir="${pkgdir}" dist/*.whl + MSYS2_ARG_CONV_EXCL="--prefix=;--install-scripts=;--install-platlib=" \ + ${MINGW_PREFIX}/bin/python -m pyproject2setuppy.main install --prefix=${MINGW_PREFIX} \ + --root="${pkgdir}" --optimize=1 --skip-build install -Dm644 LICENSE "${pkgdir}${MINGW_PREFIX}/share/licenses/python-${_realname}/LICENSE" } From e16342c36e53799dbf4318064344cb43d1b9ee61 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sun, 6 Feb 2022 09:07:51 +0100 Subject: [PATCH 226/226] pycairo: port to meson --- mingw-w64-pycairo/PKGBUILD | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/mingw-w64-pycairo/PKGBUILD b/mingw-w64-pycairo/PKGBUILD index c9fe438476..bcf067c3ce 100644 --- a/mingw-w64-pycairo/PKGBUILD +++ b/mingw-w64-pycairo/PKGBUILD @@ -4,7 +4,7 @@ _realname=pycairo pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-python-cairo") pkgver=1.20.1 -pkgrel=1 +pkgrel=2 pkgdesc="Python bindings for the cairo graphics library (mingw-w64)" url="https://pycairo.readthedocs.io" arch=('any') @@ -12,7 +12,10 @@ mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') license=('LGPL' 'MPL') depends=("${MINGW_PACKAGE_PREFIX}-cairo" "${MINGW_PACKAGE_PREFIX}-python") -makedepends=("${MINGW_PACKAGE_PREFIX}-cc") +makedepends=("${MINGW_PACKAGE_PREFIX}-cc" + "${MINGW_PACKAGE_PREFIX}-meson" + "${MINGW_PACKAGE_PREFIX}-pkg-config" + "${MINGW_PACKAGE_PREFIX}-ninja") provides=("${MINGW_PACKAGE_PREFIX}-python3-cairo") conflicts=("${MINGW_PACKAGE_PREFIX}-python3-cairo") replaces=("${MINGW_PACKAGE_PREFIX}-python3-cairo") @@ -21,22 +24,34 @@ source=(https://github.com/pygobject/${_realname}/releases/download/v${pkgver}/$ sha256sums=('1ee72b035b21a475e1ed648e26541b04e5d7e753d75ca79de8c583b25785531b') build() { - cd "${srcdir}/${_realname}-${pkgver}" + mkdir -p build-${MSYSTEM} && cd build-${MSYSTEM} - ${MINGW_PREFIX}/bin/python setup.py build + MSYS2_ARG_CONV_EXCL="--prefix=" \ + meson \ + --prefix="${MINGW_PREFIX}" \ + --wrap-mode=nodownload \ + --auto-features=enabled \ + --buildtype=plain \ + ../${_realname}-${pkgver} + + meson compile } check() { - cd "${srcdir}/${_realname}-${pkgver}" + cd "${srcdir}/build-${MSYSTEM}" - ${MINGW_PREFIX}/bin/python setup.py test + meson test } package() { - cd "${srcdir}/${_realname}-${pkgver}" + cd "${srcdir}/build-${MSYSTEM}" - MSYS2_ARG_CONV_EXCL="--prefix=;--install-scripts=;--install-platlib=" \ - ${MINGW_PREFIX}/bin/python setup.py install --prefix=${MINGW_PREFIX} --root="${pkgdir}" -O1 + DESTDIR="${pkgdir}" meson install + shopt -s globstar + rm ${pkgdir}${MINGW_PREFIX}/**/*.dll.a + MSYS2_ARG_CONV_EXCL="-d" \ + python -m compileall -q -d"${MINGW_PREFIX}" "${pkgdir}${MINGW_PREFIX}" && \ + python -O -m compileall -q -d"${MINGW_PREFIX}" "${pkgdir}${MINGW_PREFIX}" - install -Dm644 COPYING* -t "${pkgdir}${MINGW_PREFIX}/share/licenses/python-cairo" + install -Dm644 "${srcdir}/${_realname}-${pkgver}/"COPYING* -t "${pkgdir}${MINGW_PREFIX}/share/licenses/python-cairo" }

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