[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[tor-commits] [tor-browser-build/master] Bug 40306: Update Windows toolchain to switch to mozilla91



commit d1ed741bff7be58757d8135c4646b3875ab96183
Author: Nicolas Vigier <boklm@xxxxxxxxxxxxxx>
Date:   Thu Aug 5 11:47:57 2021 +0200

    Bug 40306: Update Windows toolchain to switch to mozilla91
---
 projects/binutils/config                     |    5 -
 projects/clang/build                         |    2 +-
 projects/clang/config                        |    8 -
 projects/mingw-w64-clang/build               |   28 +-
 projects/mingw-w64-clang/config              |    7 +-
 projects/mingw-w64-clang/mingw-unknown.patch |   46 ++
 projects/mingw-w64-clang/mingw-winrt.patch   | 1028 +-------------------------
 projects/mingw-w64/config                    |    6 +-
 projects/ninja/build                         |    5 +
 projects/node/config                         |    4 +
 projects/rust/config                         |    2 +-
 projects/tor-browser/build                   |   10 +-
 projects/tor-browser/config                  |    6 +-
 projects/tor-browser/pe_checksum_fix.py      |    6 +-
 rbm.conf                                     |    7 +-
 15 files changed, 120 insertions(+), 1050 deletions(-)

diff --git a/projects/binutils/config b/projects/binutils/config
index 86aaf29..7eb4ac6 100644
--- a/projects/binutils/config
+++ b/projects/binutils/config
@@ -7,11 +7,6 @@ var:
     use_container: 1
 
 targets:
-  # We use the windows-clang target for the binutils we use for building
-  # clang during windows builds. See projects/clang/config.
-  windows-clang:
-    var:
-      configure_opt: '--disable-multilib --enable-gold --enable-deterministic-archives --enable-plugins'
   windows:
     var:
       configure_opt: '--target=[% c("arch") %]-w64-mingw32 --disable-multilib --enable-deterministic-archives'
diff --git a/projects/clang/build b/projects/clang/build
index 41669b9..2f31dbf 100644
--- a/projects/clang/build
+++ b/projects/clang/build
@@ -12,7 +12,7 @@ export PATH="/var/tmp/dist/cmake/bin:$PATH"
   ln -s gcc /var/tmp/dist/gcc/bin/cc
   [% pc('python', 'var/setup', { python_tarfile => c('input_files_by_name/python') }) %]
 [% END -%]
-[% IF c("var/linux") || c("var/android") || c("var/windows") -%]
+[% IF c("var/linux") || c("var/android") -%]
   tar -C /var/tmp/dist -xf [% c('input_files_by_name/binutils') %]
   export PATH="/var/tmp/dist/binutils/bin:$PATH"
 [% END -%]
diff --git a/projects/clang/config b/projects/clang/config
index 038a44b..855c200 100644
--- a/projects/clang/config
+++ b/projects/clang/config
@@ -20,14 +20,6 @@ input_files:
   - name: binutils
     project: binutils
     enable: '[% c("var/linux") %] || [% c("var/android") %]'
-  # We build our own binutils as the one from buster has a regression:
-  # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=953423
-  # https://sourceware.org/bugzilla/show_bug.cgi?id=24458
-  - name: binutils
-    project: binutils
-    enable: '[% c("var/windows") %]'
-    target_prepend:
-     - windows-clang
   - project: cmake
     name: cmake
   - project: clang-source
diff --git a/projects/mingw-w64-clang/build b/projects/mingw-w64-clang/build
index 974d2a9..00b1171 100644
--- a/projects/mingw-w64-clang/build
+++ b/projects/mingw-w64-clang/build
@@ -11,7 +11,7 @@ mkdir -p $builddir
 cd $builddir
 tar -xf $rootdir/mingw-w64-clang-[% c('version') %].tar.gz
 mv mingw-w64-clang-[% c('version') %] mingw-w64-clang
-tar -xf $rootdir/[% c('input_files_by_name/clang-source') %]
+tar -xf $rootdir/[% c('input_files_by_name/llvm-project') %]
 tar -xf $rootdir/[% c('input_files_by_name/llvm-mingw') %]
 
 # Adding the wrappers and symlinks we need
@@ -61,6 +61,7 @@ default_win32_winnt=0x601
 cd $builddir/mingw-w64-clang
 patch -p1 < $rootdir/mingw-winrt.patch
 patch -p1 < $rootdir/mingw-dwrite_3.patch
+patch -p1 < $rootdir/mingw-unknown.patch
 
 cd mingw-w64-headers
 mkdir build && cd build
@@ -92,7 +93,7 @@ make -j[% c("buildconf/num_procs") %]
 make -j[% c("buildconf/num_procs") %] install
 
 # compiler-rt
-cd $builddir/clang-source/projects/compiler-rt
+cd $builddir/clang-source/compiler-rt
 mkdir build && cd build
 cmake -DCMAKE_BUILD_TYPE=Release \
       -DCMAKE_C_COMPILER=$CC \
@@ -102,9 +103,9 @@ cmake -DCMAKE_BUILD_TYPE=Release \
       -DCMAKE_C_COMPILER_WORKS=1 \
       -DCMAKE_C_COMPILER_TARGET=$compiler_rt_machine-windows-gnu \
       -DCOMPILER_RT_DEFAULT_TARGET_ONLY=TRUE \
-      $builddir/clang-source/projects/compiler-rt/lib/builtins
+      $builddir/clang-source/compiler-rt/lib/builtins
   make -j[% c("buildconf/num_procs") %]
-  rtdir=$distdir/lib/clang/[% pc("clang-source", "version") %]/lib/windows
+  rtdir=$distdir/lib/clang/[% pc("llvm-project", "version") %]/lib/windows
   mkdir -p $rtdir
   cp lib/windows/libclang_rt.builtins-$compiler_rt_machine.a $rtdir/
 
@@ -130,14 +131,14 @@ cmake -DCMAKE_BUILD_TYPE=Release \
       -DLIBUNWIND_ENABLE_THREADS=TRUE \
       -DLIBUNWIND_ENABLE_SHARED=FALSE \
       -DLIBUNWIND_ENABLE_CROSS_UNWINDING=FALSE \
-      -DCMAKE_CXX_FLAGS="-Wno-dll-attribute-on-redeclaration -nostdinc++ -I$builddir/clang-source/projects/libcxx/include -DPSAPI_VERSION=2" \
+      -DCMAKE_CXX_FLAGS="-Wno-dll-attribute-on-redeclaration -nostdinc++ -I$builddir/clang-source/libcxx/include -DPSAPI_VERSION=2" \
       -DCMAKE_C_FLAGS="-Wno-dll-attribute-on-redeclaration" \
       $builddir/clang-source/libunwind
 make -j[% c("buildconf/num_procs") %]
 make -j[% c("buildconf/num_procs") %] install
 
 # libcxxabi
-cd $builddir/clang-source/projects/libcxxabi
+cd $builddir/clang-source/libcxxabi
 mkdir build && cd build
 cmake -DCMAKE_BUILD_TYPE=Release \
       -DCMAKE_INSTALL_PREFIX=$distdir/[% c("arch") %]-w64-mingw32 \
@@ -156,19 +157,16 @@ cmake -DCMAKE_BUILD_TYPE=Release \
       -DLIBCXXABI_ENABLE_THREADS=ON \
       -DLIBCXXABI_TARGET_TRIPLE=[% c("arch") %]-w64-mingw32 \
       -DLIBCXXABI_ENABLE_SHARED=OFF \
-      -DLIBCXXABI_LIBCXX_INCLUDES=$builddir/clang-source/projects/libcxx/include \
+      -DLIBCXXABI_LIBCXX_INCLUDES=$builddir/clang-source/libcxx/include \
       -DLLVM_NO_OLD_LIBSTDCXX=TRUE \
       -DCXX_SUPPORTS_CXX11=TRUE \
       -DCXX_SUPPORTS_CXX_STD=True \
       -DCMAKE_CXX_FLAGS="-D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCPP_HAS_THREAD_API_WIN32" \
-      $builddir/clang-source/projects/libcxxabi
+      $builddir/clang-source/libcxxabi
 make -j[% c("buildconf/num_procs") %] VERBOSE=1
 
 # libcxx
-# the build expects ../llvm to exist so we add a symlink
-# See https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/merge_requests/240#note_2729207
-ln -s /var/tmp/build/clang-source /var/tmp/build/clang-source/projects/llvm
-cd $builddir/clang-source/projects/libcxx
+cd $builddir/clang-source/libcxx
 mkdir build && cd build
 cmake -DCMAKE_BUILD_TYPE=Release \
       -DCMAKE_INSTALL_PREFIX=$distdir/[% c("arch") %]-w64-mingw32 \
@@ -194,10 +192,10 @@ cmake -DCMAKE_BUILD_TYPE=Release \
       -DLIBCXX_ENABLE_FILESYSTEM=OFF \
       -DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=TRUE \
       -DLIBCXX_CXX_ABI=libcxxabi \
-      -DLIBCXX_CXX_ABI_INCLUDE_PATHS=$builddir/clang-source/projects/libcxxabi/include \
-      -DLIBCXX_CXX_ABI_LIBRARY_PATH=$builddir/clang-source/projects/libcxxabi/build/lib \
+      -DLIBCXX_CXX_ABI_INCLUDE_PATHS=$builddir/clang-source/libcxxabi/include \
+      -DLIBCXX_CXX_ABI_LIBRARY_PATH=$builddir/clang-source/libcxxabi/build/lib \
       -DCMAKE_CXX_FLAGS="-D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS" \
-      $builddir/clang-source/projects/libcxx
+      $builddir/clang-source/libcxx
 make -j[% c("buildconf/num_procs") %] VERBOSE=1
 make -j[% c("buildconf/num_procs") %] install
 
diff --git a/projects/mingw-w64-clang/config b/projects/mingw-w64-clang/config
index 080c75b..b589b53 100644
--- a/projects/mingw-w64-clang/config
+++ b/projects/mingw-w64-clang/config
@@ -1,7 +1,7 @@
 # vim: filetype=yaml sw=2
 filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz'
 git_url: https://git.code.sf.net/p/mingw-w64/mingw-w64
-git_hash: 660e09f3cb20f181b6d6435cb623d65a3922a063
+git_hash: cdb052f1d4056cd510cb83197b55868427b87476
 version: '[% c("abbrev") %]'
 
 var:
@@ -18,9 +18,10 @@ input_files:
     name: clang
   - project: cmake
     name: cmake
-  - project: clang-source
-    name: clang-source
+  - project: llvm-project
+    name: llvm-project
   - project: llvm-mingw
     name: llvm-mingw
   - filename: mingw-winrt.patch
   - filename: mingw-dwrite_3.patch
+  - filename: mingw-unknown.patch
diff --git a/projects/mingw-w64-clang/mingw-unknown.patch b/projects/mingw-w64-clang/mingw-unknown.patch
new file mode 100644
index 0000000..cca10e9
--- /dev/null
+++ b/projects/mingw-w64-clang/mingw-unknown.patch
@@ -0,0 +1,46 @@
+From ae5fe7a557873f05a4954f4b3a47e4b41053a406 Mon Sep 17 00:00:00 2001
+From: Tom Ritter <tom@xxxxxxxxx>
+Date: Tue, 29 Jun 2021 23:10:24 -0400
+Subject: [PATCH] Add back the IUnknown_QI functions
+
+---
+ mingw-w64-headers/include/unknwn.h | 23 +++++++++++++++++++++++
+ 1 file changed, 23 insertions(+)
+
+diff --git a/mingw-w64-headers/include/unknwn.h b/mingw-w64-headers/include/unknwn.h
+index d8c309071..968c41d61 100644
+--- a/mingw-w64-headers/include/unknwn.h
++++ b/mingw-w64-headers/include/unknwn.h
+@@ -167,6 +167,29 @@ static FORCEINLINE ULONG IUnknown_Release(IUnknown* This) {
+ 
+ #endif
+ 
++HRESULT STDMETHODCALLTYPE IUnknown_QueryInterface_Proxy(
++    IUnknown* This,
++    REFIID riid,
++    void **ppvObject);
++void __RPC_STUB IUnknown_QueryInterface_Stub(
++    IRpcStubBuffer* This,
++    IRpcChannelBuffer* pRpcChannelBuffer,
++    PRPC_MESSAGE pRpcMessage,
++    DWORD* pdwStubPhase);
++ULONG STDMETHODCALLTYPE IUnknown_AddRef_Proxy(
++    IUnknown* This);
++void __RPC_STUB IUnknown_AddRef_Stub(
++    IRpcStubBuffer* This,
++    IRpcChannelBuffer* pRpcChannelBuffer,
++    PRPC_MESSAGE pRpcMessage,
++    DWORD* pdwStubPhase);
++ULONG STDMETHODCALLTYPE IUnknown_Release_Proxy(
++    IUnknown* This);
++void __RPC_STUB IUnknown_Release_Stub(
++    IRpcStubBuffer* This,
++    IRpcChannelBuffer* pRpcChannelBuffer,
++    PRPC_MESSAGE pRpcMessage,
++    DWORD* pdwStubPhase);
+ 
+ #endif  /* __IUnknown_INTERFACE_DEFINED__ */
+ 
+-- 
+2.25.1
+
diff --git a/projects/mingw-w64-clang/mingw-winrt.patch b/projects/mingw-w64-clang/mingw-winrt.patch
index e7124e1..526844c 100644
--- a/projects/mingw-w64-clang/mingw-winrt.patch
+++ b/projects/mingw-w64-clang/mingw-winrt.patch
@@ -1,995 +1,30 @@
-commit 07fff0900d668fbd75e0ac0a6382a86d486cee88
-Author: Jacek Caban <jacek@xxxxxxxxxxxxxxx>
-Date:   Sun Mar 24 21:20:55 2019 +0100
+From 105a640ff423978987112d8f37edfbfc29c014f9 Mon Sep 17 00:00:00 2001
+From: Tom Ritter <tom@xxxxxxxxx>
+Date: Wed, 30 Jun 2021 09:25:45 -0400
+Subject: [PATCH] winrt headers
 
-    winrt headers
+---
+ .../include/windows.foundation.metadata.h     |  315 ++
+ .../include/windows.foundation.numerics.h     |  204 ++
+ .../include/windows.graphics.directx.h        |  343 ++
+ .../include/windows.graphics.effects.h        |  184 +
+ .../include/windows.ui.composition.h          | 3212 +++++++++++++++++
+ .../include/windows.ui.composition.interop.h  |   31 +
+ mingw-w64-headers/include/windows.ui.core.h   |  127 +
+ mingw-w64-headers/include/windows.ui.h        |   72 +
+ 8 files changed, 4488 insertions(+)
+ create mode 100644 mingw-w64-headers/include/windows.foundation.metadata.h
+ create mode 100644 mingw-w64-headers/include/windows.foundation.numerics.h
+ create mode 100644 mingw-w64-headers/include/windows.graphics.directx.h
+ create mode 100644 mingw-w64-headers/include/windows.graphics.effects.h
+ create mode 100644 mingw-w64-headers/include/windows.ui.composition.h
+ create mode 100644 mingw-w64-headers/include/windows.ui.composition.interop.h
+ create mode 100644 mingw-w64-headers/include/windows.ui.core.h
+ create mode 100644 mingw-w64-headers/include/windows.ui.h
 
-diff --git a/mingw-w64-headers/include/intsafe.h b/mingw-w64-headers/include/intsafe.h
-index 701d4cef..daaedb83 100644
---- a/mingw-w64-headers/include/intsafe.h
-+++ b/mingw-w64-headers/include/intsafe.h
-@@ -411,5 +411,8 @@ __MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(ULongLongMult, ULONGLONG, mul)
- __MINGW_INTSAFE_API __MINGW_INTSAFE_MATH(LongLongMult, LONGLONG, mul)
- 
- #endif /* __GNUC__ >= 5 */
-+
-+#define SizeTToUInt32   UIntPtrToUInt
-+
- #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
- #endif /* _INTSAFE_H_INCLUDED_ */
-diff --git a/mingw-w64-headers/include/windows.foundation.h b/mingw-w64-headers/include/windows.foundation.h
-index 6c4d3ec8..59797984 100644
---- a/mingw-w64-headers/include/windows.foundation.h
-+++ b/mingw-w64-headers/include/windows.foundation.h
-@@ -1,11 +1,12 @@
--/*** Autogenerated by WIDL 1.5.31 from include/windows.foundation.idl - Do not edit ***/
-+/*** Autogenerated by WIDL 4.4 from windows.foundation.idl - Do not edit ***/
- 
-+#ifdef _WIN32
- #ifndef __REQUIRED_RPCNDR_H_VERSION__
- #define __REQUIRED_RPCNDR_H_VERSION__ 475
- #endif
--
- #include <rpc.h>
- #include <rpcndr.h>
-+#endif
- 
- #ifndef COM_NO_WINDOWS_H
- #include <windows.h>
-@@ -17,24 +18,18 @@
- 
- /* Forward declarations */
- 
--#ifndef __IAsyncInfo_FWD_DEFINED__
--#define __IAsyncInfo_FWD_DEFINED__
--typedef interface IAsyncInfo IAsyncInfo;
--#endif
--
--#ifndef __IASyncAction_FWD_DEFINED__
--#define __IASyncAction_FWD_DEFINED__
--typedef interface IASyncAction IASyncAction;
--#endif
--
--#ifndef __AsyncActionCompletedHandler_FWD_DEFINED__
--#define __AsyncActionCompletedHandler_FWD_DEFINED__
--typedef interface AsyncActionCompletedHandler AsyncActionCompletedHandler;
--#endif
--
--#ifndef __IAsyncOperation_FWD_DEFINED__
--#define __IAsyncOperation_FWD_DEFINED__
--typedef interface IAsyncOperation IAsyncOperation;
-+#ifndef ____x_ABI_CWindows_CFoundation_CIStringable_FWD_DEFINED__
-+#define ____x_ABI_CWindows_CFoundation_CIStringable_FWD_DEFINED__
-+typedef interface __x_ABI_CWindows_CFoundation_CIStringable __x_ABI_CWindows_CFoundation_CIStringable;
-+#ifdef __cplusplus
-+namespace ABI {
-+    namespace Windows {
-+        namespace Foundation {
-+            interface IStringable;
-+        }
-+    }
-+}
-+#endif /* __cplusplus */
- #endif
- 
- /* Headers for imported files */
-@@ -45,667 +40,331 @@ typedef interface IAsyncOperation IAsyncOperation;
- extern "C" {
- #endif
- 
--#ifndef __IAsyncInfo_FWD_DEFINED__
--#define __IAsyncInfo_FWD_DEFINED__
--typedef interface IAsyncInfo IAsyncInfo;
--#endif
--
--#ifndef __IAsyncAction_FWD_DEFINED__
--#define __IAsyncAction_FWD_DEFINED__
--typedef interface IAsyncAction IAsyncAction;
--#endif
--
--#ifndef __IAsyncOperation_FWD_DEFINED__
--#define __IAsyncOperation_FWD_DEFINED__
--typedef interface IAsyncOperation IAsyncOperation;
--#endif
--
--#ifndef __AsyncActionCompletedHandler_FWD_DEFINED__
--#define __AsyncActionCompletedHandler_FWD_DEFINED__
--typedef interface AsyncActionCompletedHandler AsyncActionCompletedHandler;
--#endif
--
--#ifndef __TypedEventHandler_FWD_DEFINED__
--#define __TypedEventHandler_FWD_DEFINED__
--typedef interface TypedEventHandler TypedEventHandler;
--#endif
--
--struct DateTime;
--
--struct EventRegistrationToken;
--
--#ifndef __IVectorView_FWD_DEFINED__
--#define __IVectorView_FWD_DEFINED__
--typedef interface IVectorView IVectorView;
--#endif
--
--#ifndef __IPropertySet_FWD_DEFINED__
--#define __IPropertySet_FWD_DEFINED__
--typedef interface IPropertySet IPropertySet;
--#endif
--
--typedef enum AsyncStatus {
--    Started = 0,
--    Completed = 1,
--    Canceled = 2,
--    Error = 3
--} AsyncStatus;
--typedef struct DateTime {
--    UINT64 UniversalTime;
--} DateTime;
--typedef struct EventRegistrationToken {
--    UINT64 Value;
--} EventRegistrationToken;
--/*****************************************************************************
-- * IAsyncInfo interface
-- */
--#ifndef __IAsyncInfo_INTERFACE_DEFINED__
--#define __IAsyncInfo_INTERFACE_DEFINED__
--
--DEFINE_GUID(IID_IAsyncInfo, 0x00000036, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
--#if defined(__cplusplus) && !defined(CINTERFACE)
--MIDL_INTERFACE("00000036-0000-0000-c000-000000000046")
--IAsyncInfo : public IInspectable
--{
--    virtual HRESULT STDMETHODCALLTYPE get_Id(
--        unsigned int *id) = 0;
--
--    virtual HRESULT STDMETHODCALLTYPE get_Status(
--        AsyncStatus *status) = 0;
--
--    virtual HRESULT STDMETHODCALLTYPE get_ErrorCode(
--        HRESULT *errorCode) = 0;
--
--    virtual HRESULT STDMETHODCALLTYPE Cancel(
--        ) = 0;
--
--    virtual HRESULT STDMETHODCALLTYPE Close(
--        ) = 0;
--
--};
--#ifdef __CRT_UUID_DECL
--__CRT_UUID_DECL(IAsyncInfo, 0x00000036, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46)
--#endif
-+#ifdef __cplusplus
-+} /* extern "C" */
-+namespace ABI {
-+    namespace Windows {
-+        namespace Foundation {
-+            enum PropertyType {
-+                PropertyType_Empty = 0,
-+                PropertyType_UInt8 = 1,
-+                PropertyType_Int16 = 2,
-+                PropertyType_UInt16 = 3,
-+                PropertyType_Int32 = 4,
-+                PropertyType_UInt32 = 5,
-+                PropertyType_Int64 = 6,
-+                PropertyType_UInt64 = 7,
-+                PropertyType_Single = 8,
-+                PropertyType_Double = 9,
-+                PropertyType_Char16 = 10,
-+                PropertyType_Boolean = 11,
-+                PropertyType_String = 12,
-+                PropertyType_Inspectable = 13,
-+                PropertyType_DateTime = 14,
-+                PropertyType_TimeSpan = 15,
-+                PropertyType_Guid = 16,
-+                PropertyType_Point = 17,
-+                PropertyType_Size = 18,
-+                PropertyType_Rect = 19,
-+                PropertyType_OtherType = 20,
-+                PropertyType_UInt8Array = 1025,
-+                PropertyType_Int16Array = 1026,
-+                PropertyType_UInt16Array = 1027,
-+                PropertyType_Int32Array = 1028,
-+                PropertyType_UInt32Array = 1029,
-+                PropertyType_Int64Array = 1030,
-+                PropertyType_UInt64Array = 1031,
-+                PropertyType_SingleArray = 1032,
-+                PropertyType_DoubleArray = 1033,
-+                PropertyType_Char16Array = 1034,
-+                PropertyType_BooleanArray = 1035,
-+                PropertyType_StringArray = 1036,
-+                PropertyType_InspectableArray = 1037,
-+                PropertyType_DateTimeArray = 1038,
-+                PropertyType_TimeSpanArray = 1039,
-+                PropertyType_GuidArray = 1040,
-+                PropertyType_PointArray = 1041,
-+                PropertyType_SizeArray = 1042,
-+                PropertyType_RectArray = 1043,
-+                PropertyType_OtherTypeArray = 1044
-+            };
-+        }
-+    }
-+}
-+extern "C" {
- #else
--typedef struct IAsyncInfoVtbl {
--    BEGIN_INTERFACE
--
--    /*** IUnknown methods ***/
--    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
--        IAsyncInfo* This,
--        REFIID riid,
--        void **ppvObject);
--
--    ULONG (STDMETHODCALLTYPE *AddRef)(
--        IAsyncInfo* This);
--
--    ULONG (STDMETHODCALLTYPE *Release)(
--        IAsyncInfo* This);
--
--    /*** IInspectable methods ***/
--    HRESULT (STDMETHODCALLTYPE *GetIids)(
--        IAsyncInfo* This,
--        ULONG *iidCount,
--        IID **iids);
--
--    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
--        IAsyncInfo* This,
--        HSTRING *className);
--
--    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
--        IAsyncInfo* This,
--        TrustLevel *trustLevel);
--
--    /*** IAsyncInfo methods ***/
--    HRESULT (STDMETHODCALLTYPE *get_Id)(
--        IAsyncInfo* This,
--        unsigned int *id);
--
--    HRESULT (STDMETHODCALLTYPE *get_Status)(
--        IAsyncInfo* This,
--        AsyncStatus *status);
--
--    HRESULT (STDMETHODCALLTYPE *get_ErrorCode)(
--        IAsyncInfo* This,
--        HRESULT *errorCode);
--
--    HRESULT (STDMETHODCALLTYPE *Cancel)(
--        IAsyncInfo* This);
--
--    HRESULT (STDMETHODCALLTYPE *Close)(
--        IAsyncInfo* This);
--
--    END_INTERFACE
--} IAsyncInfoVtbl;
--interface IAsyncInfo {
--    CONST_VTBL IAsyncInfoVtbl* lpVtbl;
-+enum __x_ABI_CWindows_CFoundation_CPropertyType {
-+    PropertyType_Empty = 0,
-+    PropertyType_UInt8 = 1,
-+    PropertyType_Int16 = 2,
-+    PropertyType_UInt16 = 3,
-+    PropertyType_Int32 = 4,
-+    PropertyType_UInt32 = 5,
-+    PropertyType_Int64 = 6,
-+    PropertyType_UInt64 = 7,
-+    PropertyType_Single = 8,
-+    PropertyType_Double = 9,
-+    PropertyType_Char16 = 10,
-+    PropertyType_Boolean = 11,
-+    PropertyType_String = 12,
-+    PropertyType_Inspectable = 13,
-+    PropertyType_DateTime = 14,
-+    PropertyType_TimeSpan = 15,
-+    PropertyType_Guid = 16,
-+    PropertyType_Point = 17,
-+    PropertyType_Size = 18,
-+    PropertyType_Rect = 19,
-+    PropertyType_OtherType = 20,
-+    PropertyType_UInt8Array = 1025,
-+    PropertyType_Int16Array = 1026,
-+    PropertyType_UInt16Array = 1027,
-+    PropertyType_Int32Array = 1028,
-+    PropertyType_UInt32Array = 1029,
-+    PropertyType_Int64Array = 1030,
-+    PropertyType_UInt64Array = 1031,
-+    PropertyType_SingleArray = 1032,
-+    PropertyType_DoubleArray = 1033,
-+    PropertyType_Char16Array = 1034,
-+    PropertyType_BooleanArray = 1035,
-+    PropertyType_StringArray = 1036,
-+    PropertyType_InspectableArray = 1037,
-+    PropertyType_DateTimeArray = 1038,
-+    PropertyType_TimeSpanArray = 1039,
-+    PropertyType_GuidArray = 1040,
-+    PropertyType_PointArray = 1041,
-+    PropertyType_SizeArray = 1042,
-+    PropertyType_RectArray = 1043,
-+    PropertyType_OtherTypeArray = 1044
- };
--
--#ifdef COBJMACROS
--#ifndef WIDL_C_INLINE_WRAPPERS
--/*** IUnknown methods ***/
--#define IAsyncInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
--#define IAsyncInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
--#define IAsyncInfo_Release(This) (This)->lpVtbl->Release(This)
--/*** IInspectable methods ***/
--#define IAsyncInfo_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
--#define IAsyncInfo_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
--#define IAsyncInfo_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
--/*** IAsyncInfo methods ***/
--#define IAsyncInfo_get_Id(This,id) (This)->lpVtbl->get_Id(This,id)
--#define IAsyncInfo_get_Status(This,status) (This)->lpVtbl->get_Status(This,status)
--#define IAsyncInfo_get_ErrorCode(This,errorCode) (This)->lpVtbl->get_ErrorCode(This,errorCode)
--#define IAsyncInfo_Cancel(This) (This)->lpVtbl->Cancel(This)
--#define IAsyncInfo_Close(This) (This)->lpVtbl->Close(This)
--#else
--/*** IUnknown methods ***/
--static FORCEINLINE HRESULT IAsyncInfo_QueryInterface(IAsyncInfo* This,REFIID riid,void **ppvObject) {
--    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
--}
--static FORCEINLINE ULONG IAsyncInfo_AddRef(IAsyncInfo* This) {
--    return This->lpVtbl->AddRef(This);
--}
--static FORCEINLINE ULONG IAsyncInfo_Release(IAsyncInfo* This) {
--    return This->lpVtbl->Release(This);
--}
--/*** IInspectable methods ***/
--static FORCEINLINE HRESULT IAsyncInfo_GetIids(IAsyncInfo* This,ULONG *iidCount,IID **iids) {
--    return This->lpVtbl->GetIids(This,iidCount,iids);
--}
--static FORCEINLINE HRESULT IAsyncInfo_GetRuntimeClassName(IAsyncInfo* This,HSTRING *className) {
--    return This->lpVtbl->GetRuntimeClassName(This,className);
--}
--static FORCEINLINE HRESULT IAsyncInfo_GetTrustLevel(IAsyncInfo* This,TrustLevel *trustLevel) {
--    return This->lpVtbl->GetTrustLevel(This,trustLevel);
--}
--/*** IAsyncInfo methods ***/
--static FORCEINLINE HRESULT IAsyncInfo_get_Id(IAsyncInfo* This,unsigned int *id) {
--    return This->lpVtbl->get_Id(This,id);
--}
--static FORCEINLINE HRESULT IAsyncInfo_get_Status(IAsyncInfo* This,AsyncStatus *status) {
--    return This->lpVtbl->get_Status(This,status);
--}
--static FORCEINLINE HRESULT IAsyncInfo_get_ErrorCode(IAsyncInfo* This,HRESULT *errorCode) {
--    return This->lpVtbl->get_ErrorCode(This,errorCode);
--}
--static FORCEINLINE HRESULT IAsyncInfo_Cancel(IAsyncInfo* This) {
--    return This->lpVtbl->Cancel(This);
--}
--static FORCEINLINE HRESULT IAsyncInfo_Close(IAsyncInfo* This) {
--    return This->lpVtbl->Close(This);
--}
- #endif
--#endif
--
--#endif
--
--HRESULT STDMETHODCALLTYPE IAsyncInfo_get_Id_Proxy(
--    IAsyncInfo* This,
--    unsigned int *id);
--void __RPC_STUB IAsyncInfo_get_Id_Stub(
--    IRpcStubBuffer* This,
--    IRpcChannelBuffer* pRpcChannelBuffer,
--    PRPC_MESSAGE pRpcMessage,
--    DWORD* pdwStubPhase);
--HRESULT STDMETHODCALLTYPE IAsyncInfo_get_Status_Proxy(
--    IAsyncInfo* This,
--    AsyncStatus *status);
--void __RPC_STUB IAsyncInfo_get_Status_Stub(
--    IRpcStubBuffer* This,
--    IRpcChannelBuffer* pRpcChannelBuffer,
--    PRPC_MESSAGE pRpcMessage,
--    DWORD* pdwStubPhase);
--HRESULT STDMETHODCALLTYPE IAsyncInfo_get_ErrorCode_Proxy(
--    IAsyncInfo* This,
--    HRESULT *errorCode);
--void __RPC_STUB IAsyncInfo_get_ErrorCode_Stub(
--    IRpcStubBuffer* This,
--    IRpcChannelBuffer* pRpcChannelBuffer,
--    PRPC_MESSAGE pRpcMessage,
--    DWORD* pdwStubPhase);
--HRESULT STDMETHODCALLTYPE IAsyncInfo_Cancel_Proxy(
--    IAsyncInfo* This);
--void __RPC_STUB IAsyncInfo_Cancel_Stub(
--    IRpcStubBuffer* This,
--    IRpcChannelBuffer* pRpcChannelBuffer,
--    PRPC_MESSAGE pRpcMessage,
--    DWORD* pdwStubPhase);
--HRESULT STDMETHODCALLTYPE IAsyncInfo_Close_Proxy(
--    IAsyncInfo* This);
--void __RPC_STUB IAsyncInfo_Close_Stub(
--    IRpcStubBuffer* This,
--    IRpcChannelBuffer* pRpcChannelBuffer,
--    PRPC_MESSAGE pRpcMessage,
--    DWORD* pdwStubPhase);
--
--#endif  /* __IAsyncInfo_INTERFACE_DEFINED__ */
--
--/*****************************************************************************
-- * IASyncAction interface
-- */
--#ifndef __IASyncAction_INTERFACE_DEFINED__
--#define __IASyncAction_INTERFACE_DEFINED__
--
--DEFINE_GUID(IID_IASyncAction, 0x5a648006, 0x843a, 0x4da9, 0x86,0x5b, 0x9d,0x26,0xe5,0xdf,0xad,0x7b);
--#if defined(__cplusplus) && !defined(CINTERFACE)
--MIDL_INTERFACE("5a648006-843a-4da9-865b-9d26e5dfad7b")
--IASyncAction : public IInspectable
--{
--    virtual HRESULT STDMETHODCALLTYPE put_Completed(
--        AsyncActionCompletedHandler *handler) = 0;
--
--    virtual HRESULT STDMETHODCALLTYPE get_Completed(
--        AsyncActionCompletedHandler **handler) = 0;
--
--    virtual HRESULT STDMETHODCALLTYPE GetResults(
--        ) = 0;
- 
--};
--#ifdef __CRT_UUID_DECL
--__CRT_UUID_DECL(IASyncAction, 0x5a648006, 0x843a, 0x4da9, 0x86,0x5b, 0x9d,0x26,0xe5,0xdf,0xad,0x7b)
--#endif
-+#ifdef __cplusplus
-+} /* extern "C" */
-+namespace ABI {
-+    namespace Windows {
-+        namespace Foundation {
-+            struct Point {
-+                FLOAT X;
-+                FLOAT Y;
-+            };
-+        }
-+    }
-+}
-+extern "C" {
- #else
--typedef struct IASyncActionVtbl {
--    BEGIN_INTERFACE
--
--    /*** IUnknown methods ***/
--    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
--        IASyncAction* This,
--        REFIID riid,
--        void **ppvObject);
--
--    ULONG (STDMETHODCALLTYPE *AddRef)(
--        IASyncAction* This);
--
--    ULONG (STDMETHODCALLTYPE *Release)(
--        IASyncAction* This);
--
--    /*** IInspectable methods ***/
--    HRESULT (STDMETHODCALLTYPE *GetIids)(
--        IASyncAction* This,
--        ULONG *iidCount,
--        IID **iids);
--
--    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
--        IASyncAction* This,
--        HSTRING *className);
--
--    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
--        IASyncAction* This,
--        TrustLevel *trustLevel);
--
--    /*** IASyncAction methods ***/
--    HRESULT (STDMETHODCALLTYPE *put_Completed)(
--        IASyncAction* This,
--        AsyncActionCompletedHandler *handler);
--
--    HRESULT (STDMETHODCALLTYPE *get_Completed)(
--        IASyncAction* This,
--        AsyncActionCompletedHandler **handler);
--
--    HRESULT (STDMETHODCALLTYPE *GetResults)(
--        IASyncAction* This);
--
--    END_INTERFACE
--} IASyncActionVtbl;
--interface IASyncAction {
--    CONST_VTBL IASyncActionVtbl* lpVtbl;
-+struct __x_ABI_CWindows_CFoundation_CPoint {
-+    FLOAT X;
-+    FLOAT Y;
- };
--
--#ifdef COBJMACROS
--#ifndef WIDL_C_INLINE_WRAPPERS
--/*** IUnknown methods ***/
--#define IASyncAction_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
--#define IASyncAction_AddRef(This) (This)->lpVtbl->AddRef(This)
--#define IASyncAction_Release(This) (This)->lpVtbl->Release(This)
--/*** IInspectable methods ***/
--#define IASyncAction_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
--#define IASyncAction_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
--#define IASyncAction_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
--/*** IASyncAction methods ***/
--#define IASyncAction_put_Completed(This,handler) (This)->lpVtbl->put_Completed(This,handler)
--#define IASyncAction_get_Completed(This,handler) (This)->lpVtbl->get_Completed(This,handler)
--#define IASyncAction_GetResults(This) (This)->lpVtbl->GetResults(This)
--#else
--/*** IUnknown methods ***/
--static FORCEINLINE HRESULT IASyncAction_QueryInterface(IASyncAction* This,REFIID riid,void **ppvObject) {
--    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
--}
--static FORCEINLINE ULONG IASyncAction_AddRef(IASyncAction* This) {
--    return This->lpVtbl->AddRef(This);
--}
--static FORCEINLINE ULONG IASyncAction_Release(IASyncAction* This) {
--    return This->lpVtbl->Release(This);
--}
--/*** IInspectable methods ***/
--static FORCEINLINE HRESULT IASyncAction_GetIids(IASyncAction* This,ULONG *iidCount,IID **iids) {
--    return This->lpVtbl->GetIids(This,iidCount,iids);
--}
--static FORCEINLINE HRESULT IASyncAction_GetRuntimeClassName(IASyncAction* This,HSTRING *className) {
--    return This->lpVtbl->GetRuntimeClassName(This,className);
--}
--static FORCEINLINE HRESULT IASyncAction_GetTrustLevel(IASyncAction* This,TrustLevel *trustLevel) {
--    return This->lpVtbl->GetTrustLevel(This,trustLevel);
--}
--/*** IASyncAction methods ***/
--static FORCEINLINE HRESULT IASyncAction_put_Completed(IASyncAction* This,AsyncActionCompletedHandler *handler) {
--    return This->lpVtbl->put_Completed(This,handler);
--}
--static FORCEINLINE HRESULT IASyncAction_get_Completed(IASyncAction* This,AsyncActionCompletedHandler **handler) {
--    return This->lpVtbl->get_Completed(This,handler);
--}
--static FORCEINLINE HRESULT IASyncAction_GetResults(IASyncAction* This) {
--    return This->lpVtbl->GetResults(This);
--}
--#endif
- #endif
- 
--#endif
--
--HRESULT STDMETHODCALLTYPE IASyncAction_put_Completed_Proxy(
--    IASyncAction* This,
--    AsyncActionCompletedHandler *handler);
--void __RPC_STUB IASyncAction_put_Completed_Stub(
--    IRpcStubBuffer* This,
--    IRpcChannelBuffer* pRpcChannelBuffer,
--    PRPC_MESSAGE pRpcMessage,
--    DWORD* pdwStubPhase);
--HRESULT STDMETHODCALLTYPE IASyncAction_get_Completed_Proxy(
--    IASyncAction* This,
--    AsyncActionCompletedHandler **handler);
--void __RPC_STUB IASyncAction_get_Completed_Stub(
--    IRpcStubBuffer* This,
--    IRpcChannelBuffer* pRpcChannelBuffer,
--    PRPC_MESSAGE pRpcMessage,
--    DWORD* pdwStubPhase);
--HRESULT STDMETHODCALLTYPE IASyncAction_GetResults_Proxy(
--    IASyncAction* This);
--void __RPC_STUB IASyncAction_GetResults_Stub(
--    IRpcStubBuffer* This,
--    IRpcChannelBuffer* pRpcChannelBuffer,
--    PRPC_MESSAGE pRpcMessage,
--    DWORD* pdwStubPhase);
--
--#endif  /* __IASyncAction_INTERFACE_DEFINED__ */
--
--/*****************************************************************************
-- * AsyncActionCompletedHandler interface
-- */
--#ifndef __AsyncActionCompletedHandler_INTERFACE_DEFINED__
--#define __AsyncActionCompletedHandler_INTERFACE_DEFINED__
--
--DEFINE_GUID(IID_AsyncActionCompletedHandler, 0xa4ed5c81, 0x76c9, 0x40bd, 0x8b,0xe6, 0xb1,0xd9,0x0f,0xb2,0x0a,0xe7);
--#if defined(__cplusplus) && !defined(CINTERFACE)
--MIDL_INTERFACE("a4ed5c81-76c9-40bd-8be6-b1d90fb20ae7")
--AsyncActionCompletedHandler : public IUnknown
--{
--    virtual HRESULT STDMETHODCALLTYPE Invoke(
--        IInspectable *asyncAction,
--        AsyncStatus status) = 0;
--
-+#ifdef __cplusplus
-+} /* extern "C" */
-+namespace ABI {
-+    namespace Windows {
-+        namespace Foundation {
-+            struct Size {
-+                FLOAT Width;
-+                FLOAT Height;
-+            };
-+        }
-+    }
-+}
-+extern "C" {
-+#else
-+struct __x_ABI_CWindows_CFoundation_CSize {
-+    FLOAT Width;
-+    FLOAT Height;
- };
--#ifdef __CRT_UUID_DECL
--__CRT_UUID_DECL(AsyncActionCompletedHandler, 0xa4ed5c81, 0x76c9, 0x40bd, 0x8b,0xe6, 0xb1,0xd9,0x0f,0xb2,0x0a,0xe7)
- #endif
--#else
--typedef struct AsyncActionCompletedHandlerVtbl {
--    BEGIN_INTERFACE
--
--    /*** IUnknown methods ***/
--    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
--        AsyncActionCompletedHandler* This,
--        REFIID riid,
--        void **ppvObject);
--
--    ULONG (STDMETHODCALLTYPE *AddRef)(
--        AsyncActionCompletedHandler* This);
--
--    ULONG (STDMETHODCALLTYPE *Release)(
--        AsyncActionCompletedHandler* This);
--
--    /*** AsyncActionCompletedHandler methods ***/
--    HRESULT (STDMETHODCALLTYPE *Invoke)(
--        AsyncActionCompletedHandler* This,
--        IInspectable *asyncAction,
--        AsyncStatus status);
- 
--    END_INTERFACE
--} AsyncActionCompletedHandlerVtbl;
--interface AsyncActionCompletedHandler {
--    CONST_VTBL AsyncActionCompletedHandlerVtbl* lpVtbl;
-+#ifdef __cplusplus
-+namespace ABI {
-+    namespace Windows {
-+        namespace Foundation {
-+typedef struct Size Size;
-+        }
-+    }
-+}
-+#endif /* __cplusplus */
-+#ifdef __cplusplus
-+} /* extern "C" */
-+namespace ABI {
-+    namespace Windows {
-+        namespace Foundation {
-+            struct Rect {
-+                FLOAT X;
-+                FLOAT Y;
-+                FLOAT Width;
-+                FLOAT Height;
-+            };
-+        }
-+    }
-+}
-+extern "C" {
-+#else
-+struct __x_ABI_CWindows_CFoundation_CRect {
-+    FLOAT X;
-+    FLOAT Y;
-+    FLOAT Width;
-+    FLOAT Height;
- };
-+#endif
- 
--#ifdef COBJMACROS
--#ifndef WIDL_C_INLINE_WRAPPERS
--/*** IUnknown methods ***/
--#define AsyncActionCompletedHandler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
--#define AsyncActionCompletedHandler_AddRef(This) (This)->lpVtbl->AddRef(This)
--#define AsyncActionCompletedHandler_Release(This) (This)->lpVtbl->Release(This)
--/*** AsyncActionCompletedHandler methods ***/
--#define AsyncActionCompletedHandler_Invoke(This,asyncAction,status) (This)->lpVtbl->Invoke(This,asyncAction,status)
--#else
--/*** IUnknown methods ***/
--static FORCEINLINE HRESULT AsyncActionCompletedHandler_QueryInterface(AsyncActionCompletedHandler* This,REFIID riid,void **ppvObject) {
--    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
--}
--static FORCEINLINE ULONG AsyncActionCompletedHandler_AddRef(AsyncActionCompletedHandler* This) {
--    return This->lpVtbl->AddRef(This);
--}
--static FORCEINLINE ULONG AsyncActionCompletedHandler_Release(AsyncActionCompletedHandler* This) {
--    return This->lpVtbl->Release(This);
--}
--/*** AsyncActionCompletedHandler methods ***/
--static FORCEINLINE HRESULT AsyncActionCompletedHandler_Invoke(AsyncActionCompletedHandler* This,IInspectable *asyncAction,AsyncStatus status) {
--    return This->lpVtbl->Invoke(This,asyncAction,status);
-+#ifdef __cplusplus
-+} /* extern "C" */
-+namespace ABI {
-+    namespace Windows {
-+        namespace Foundation {
-+            struct DateTime {
-+                INT64 UniversalTime;
-+            };
-+        }
-+    }
- }
--#endif
-+extern "C" {
-+#else
-+struct __x_ABI_CWindows_CFoundation_CDateTime {
-+    INT64 UniversalTime;
-+};
- #endif
- 
-+#ifdef __cplusplus
-+} /* extern "C" */
-+namespace ABI {
-+    namespace Windows {
-+        namespace Foundation {
-+            struct TimeSpan {
-+                INT64 Duration;
-+            };
-+        }
-+    }
-+}
-+extern "C" {
-+#else
-+struct __x_ABI_CWindows_CFoundation_CTimeSpan {
-+    INT64 Duration;
-+};
- #endif
- 
--HRESULT STDMETHODCALLTYPE AsyncActionCompletedHandler_Invoke_Proxy(
--    AsyncActionCompletedHandler* This,
--    IInspectable *asyncAction,
--    AsyncStatus status);
--void __RPC_STUB AsyncActionCompletedHandler_Invoke_Stub(
--    IRpcStubBuffer* This,
--    IRpcChannelBuffer* pRpcChannelBuffer,
--    PRPC_MESSAGE pRpcMessage,
--    DWORD* pdwStubPhase);
--
--#endif  /* __AsyncActionCompletedHandler_INTERFACE_DEFINED__ */
--
- /*****************************************************************************
-- * IAsyncOperation interface
-+ * IStringable interface
-  */
--#ifndef __IAsyncOperation_INTERFACE_DEFINED__
--#define __IAsyncOperation_INTERFACE_DEFINED__
-+#ifndef ____x_ABI_CWindows_CFoundation_CIStringable_INTERFACE_DEFINED__
-+#define ____x_ABI_CWindows_CFoundation_CIStringable_INTERFACE_DEFINED__
- 
--DEFINE_GUID(IID_IAsyncOperation, 0x9fc2b0bb, 0xe446, 0x44e2, 0xaa,0x61, 0x9c,0xab,0x8f,0x63,0x6a,0xf2);
-+DEFINE_GUID(IID___x_ABI_CWindows_CFoundation_CIStringable, 0x96369f54, 0x8eb6, 0x48f0, 0xab,0xce, 0xc1,0xb2,0x11,0xe6,0x27,0xc3);
- #if defined(__cplusplus) && !defined(CINTERFACE)
--MIDL_INTERFACE("9fc2b0bb-e446-44e2-aa61-9cab8f636af2")
--IAsyncOperation : public IAsyncInfo
--{
--    virtual HRESULT STDMETHODCALLTYPE put_Completed(
--        AsyncActionCompletedHandler *handler) = 0;
--
--    virtual HRESULT STDMETHODCALLTYPE get_Completed(
--        AsyncActionCompletedHandler **handler) = 0;
--
--    virtual IInspectable * STDMETHODCALLTYPE GetResults(
--        ) = 0;
--
--};
-+} /* extern "C" */
-+namespace ABI {
-+    namespace Windows {
-+        namespace Foundation {
-+            MIDL_INTERFACE("96369f54-8eb6-48f0-abce-c1b211e627c3")
-+            IStringable : public IInspectable
-+            {
-+                virtual HRESULT STDMETHODCALLTYPE ToString(
-+                    HSTRING *value) = 0;
-+
-+            };
-+        }
-+    }
-+}
-+extern "C" {
- #ifdef __CRT_UUID_DECL
--__CRT_UUID_DECL(IAsyncOperation, 0x9fc2b0bb, 0xe446, 0x44e2, 0xaa,0x61, 0x9c,0xab,0x8f,0x63,0x6a,0xf2)
-+__CRT_UUID_DECL(ABI::Windows::Foundation::IStringable, 0x96369f54, 0x8eb6, 0x48f0, 0xab,0xce, 0xc1,0xb2,0x11,0xe6,0x27,0xc3)
- #endif
- #else
--typedef struct IAsyncOperationVtbl {
-+typedef struct __x_ABI_CWindows_CFoundation_CIStringableVtbl {
-     BEGIN_INTERFACE
- 
-     /*** IUnknown methods ***/
-     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
--        IAsyncOperation* This,
-+        __x_ABI_CWindows_CFoundation_CIStringable *This,
-         REFIID riid,
-         void **ppvObject);
- 
-     ULONG (STDMETHODCALLTYPE *AddRef)(
--        IAsyncOperation* This);
-+        __x_ABI_CWindows_CFoundation_CIStringable *This);
- 
-     ULONG (STDMETHODCALLTYPE *Release)(
--        IAsyncOperation* This);
-+        __x_ABI_CWindows_CFoundation_CIStringable *This);
- 
-     /*** IInspectable methods ***/
-     HRESULT (STDMETHODCALLTYPE *GetIids)(
--        IAsyncOperation* This,
-+        __x_ABI_CWindows_CFoundation_CIStringable *This,
-         ULONG *iidCount,
-         IID **iids);
- 
-     HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
--        IAsyncOperation* This,
-+        __x_ABI_CWindows_CFoundation_CIStringable *This,
-         HSTRING *className);
- 
-     HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
--        IAsyncOperation* This,
-+        __x_ABI_CWindows_CFoundation_CIStringable *This,
-         TrustLevel *trustLevel);
- 
--    /*** IAsyncInfo methods ***/
--    HRESULT (STDMETHODCALLTYPE *get_Id)(
--        IAsyncOperation* This,
--        unsigned int *id);
--
--    HRESULT (STDMETHODCALLTYPE *get_Status)(
--        IAsyncOperation* This,
--        AsyncStatus *status);
--
--    HRESULT (STDMETHODCALLTYPE *get_ErrorCode)(
--        IAsyncOperation* This,
--        HRESULT *errorCode);
--
--    HRESULT (STDMETHODCALLTYPE *Cancel)(
--        IAsyncOperation* This);
--
--    HRESULT (STDMETHODCALLTYPE *Close)(
--        IAsyncOperation* This);
--
--    /*** IAsyncOperation methods ***/
--    HRESULT (STDMETHODCALLTYPE *put_Completed)(
--        IAsyncOperation* This,
--        AsyncActionCompletedHandler *handler);
--
--    HRESULT (STDMETHODCALLTYPE *get_Completed)(
--        IAsyncOperation* This,
--        AsyncActionCompletedHandler **handler);
--
--    IInspectable * (STDMETHODCALLTYPE *GetResults)(
--        IAsyncOperation* This);
-+    /*** IStringable methods ***/
-+    HRESULT (STDMETHODCALLTYPE *ToString)(
-+        __x_ABI_CWindows_CFoundation_CIStringable *This,
-+        HSTRING *value);
- 
-     END_INTERFACE
--} IAsyncOperationVtbl;
--interface IAsyncOperation {
--    CONST_VTBL IAsyncOperationVtbl* lpVtbl;
-+} __x_ABI_CWindows_CFoundation_CIStringableVtbl;
-+
-+interface __x_ABI_CWindows_CFoundation_CIStringable {
-+    CONST_VTBL __x_ABI_CWindows_CFoundation_CIStringableVtbl* lpVtbl;
- };
- 
- #ifdef COBJMACROS
- #ifndef WIDL_C_INLINE_WRAPPERS
- /*** IUnknown methods ***/
--#define IAsyncOperation_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
--#define IAsyncOperation_AddRef(This) (This)->lpVtbl->AddRef(This)
--#define IAsyncOperation_Release(This) (This)->lpVtbl->Release(This)
-+#define __x_ABI_CWindows_CFoundation_CIStringable_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-+#define __x_ABI_CWindows_CFoundation_CIStringable_AddRef(This) (This)->lpVtbl->AddRef(This)
-+#define __x_ABI_CWindows_CFoundation_CIStringable_Release(This) (This)->lpVtbl->Release(This)
- /*** IInspectable methods ***/
--#define IAsyncOperation_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
--#define IAsyncOperation_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
--#define IAsyncOperation_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
--/*** IAsyncInfo methods ***/
--#define IAsyncOperation_get_Id(This,id) (This)->lpVtbl->get_Id(This,id)
--#define IAsyncOperation_get_Status(This,status) (This)->lpVtbl->get_Status(This,status)
--#define IAsyncOperation_get_ErrorCode(This,errorCode) (This)->lpVtbl->get_ErrorCode(This,errorCode)
--#define IAsyncOperation_Cancel(This) (This)->lpVtbl->Cancel(This)
--#define IAsyncOperation_Close(This) (This)->lpVtbl->Close(This)
--/*** IAsyncOperation methods ***/
--#define IAsyncOperation_put_Completed(This,handler) (This)->lpVtbl->put_Completed(This,handler)
--#define IAsyncOperation_get_Completed(This,handler) (This)->lpVtbl->get_Completed(This,handler)
--#define IAsyncOperation_GetResults(This) (This)->lpVtbl->GetResults(This)
-+#define __x_ABI_CWindows_CFoundation_CIStringable_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
-+#define __x_ABI_CWindows_CFoundation_CIStringable_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
-+#define __x_ABI_CWindows_CFoundation_CIStringable_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
-+/*** IStringable methods ***/
-+#define __x_ABI_CWindows_CFoundation_CIStringable_ToString(This,value) (This)->lpVtbl->ToString(This,value)
- #else
- /*** IUnknown methods ***/
--static FORCEINLINE HRESULT IAsyncOperation_QueryInterface(IAsyncOperation* This,REFIID riid,void **ppvObject) {
-+static FORCEINLINE HRESULT __x_ABI_CWindows_CFoundation_CIStringable_QueryInterface(__x_ABI_CWindows_CFoundation_CIStringable* This,REFIID riid,void **ppvObject) {
-     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
- }
--static FORCEINLINE ULONG IAsyncOperation_AddRef(IAsyncOperation* This) {
-+static FORCEINLINE ULONG __x_ABI_CWindows_CFoundation_CIStringable_AddRef(__x_ABI_CWindows_CFoundation_CIStringable* This) {
-     return This->lpVtbl->AddRef(This);
- }
--static FORCEINLINE ULONG IAsyncOperation_Release(IAsyncOperation* This) {
-+static FORCEINLINE ULONG __x_ABI_CWindows_CFoundation_CIStringable_Release(__x_ABI_CWindows_CFoundation_CIStringable* This) {
-     return This->lpVtbl->Release(This);
- }
- /*** IInspectable methods ***/
--static FORCEINLINE HRESULT IAsyncOperation_GetIids(IAsyncOperation* This,ULONG *iidCount,IID **iids) {
-+static FORCEINLINE HRESULT __x_ABI_CWindows_CFoundation_CIStringable_GetIids(__x_ABI_CWindows_CFoundation_CIStringable* This,ULONG *iidCount,IID **iids) {
-     return This->lpVtbl->GetIids(This,iidCount,iids);
- }
--static FORCEINLINE HRESULT IAsyncOperation_GetRuntimeClassName(IAsyncOperation* This,HSTRING *className) {
-+static FORCEINLINE HRESULT __x_ABI_CWindows_CFoundation_CIStringable_GetRuntimeClassName(__x_ABI_CWindows_CFoundation_CIStringable* This,HSTRING *className) {
-     return This->lpVtbl->GetRuntimeClassName(This,className);
- }
--static FORCEINLINE HRESULT IAsyncOperation_GetTrustLevel(IAsyncOperation* This,TrustLevel *trustLevel) {
-+static FORCEINLINE HRESULT __x_ABI_CWindows_CFoundation_CIStringable_GetTrustLevel(__x_ABI_CWindows_CFoundation_CIStringable* This,TrustLevel *trustLevel) {
-     return This->lpVtbl->GetTrustLevel(This,trustLevel);
- }
--/*** IAsyncInfo methods ***/
--static FORCEINLINE HRESULT IAsyncOperation_get_Id(IAsyncOperation* This,unsigned int *id) {
--    return This->lpVtbl->get_Id(This,id);
--}
--static FORCEINLINE HRESULT IAsyncOperation_get_Status(IAsyncOperation* This,AsyncStatus *status) {
--    return This->lpVtbl->get_Status(This,status);
--}
--static FORCEINLINE HRESULT IAsyncOperation_get_ErrorCode(IAsyncOperation* This,HRESULT *errorCode) {
--    return This->lpVtbl->get_ErrorCode(This,errorCode);
--}
--static FORCEINLINE HRESULT IAsyncOperation_Cancel(IAsyncOperation* This) {
--    return This->lpVtbl->Cancel(This);
--}
--static FORCEINLINE HRESULT IAsyncOperation_Close(IAsyncOperation* This) {
--    return This->lpVtbl->Close(This);
--}
--/*** IAsyncOperation methods ***/
--static FORCEINLINE HRESULT IAsyncOperation_put_Completed(IAsyncOperation* This,AsyncActionCompletedHandler *handler) {
--    return This->lpVtbl->put_Completed(This,handler);
--}
--static FORCEINLINE HRESULT IAsyncOperation_get_Completed(IAsyncOperation* This,AsyncActionCompletedHandler **handler) {
--    return This->lpVtbl->get_Completed(This,handler);
--}
--static FORCEINLINE IInspectable * IAsyncOperation_GetResults(IAsyncOperation* This) {
--    return This->lpVtbl->GetResults(This);
-+/*** IStringable methods ***/
-+static FORCEINLINE HRESULT __x_ABI_CWindows_CFoundation_CIStringable_ToString(__x_ABI_CWindows_CFoundation_CIStringable* This,HSTRING *value) {
-+    return This->lpVtbl->ToString(This,value);
- }
- #endif
- #endif
- 
- #endif
- 
--HRESULT STDMETHODCALLTYPE IAsyncOperation_put_Completed_Proxy(
--    IAsyncOperation* This,
--    AsyncActionCompletedHandler *handler);
--void __RPC_STUB IAsyncOperation_put_Completed_Stub(
--    IRpcStubBuffer* This,
--    IRpcChannelBuffer* pRpcChannelBuffer,
--    PRPC_MESSAGE pRpcMessage,
--    DWORD* pdwStubPhase);
--HRESULT STDMETHODCALLTYPE IAsyncOperation_get_Completed_Proxy(
--    IAsyncOperation* This,
--    AsyncActionCompletedHandler **handler);
--void __RPC_STUB IAsyncOperation_get_Completed_Stub(
--    IRpcStubBuffer* This,
--    IRpcChannelBuffer* pRpcChannelBuffer,
--    PRPC_MESSAGE pRpcMessage,
--    DWORD* pdwStubPhase);
--IInspectable * STDMETHODCALLTYPE IAsyncOperation_GetResults_Proxy(
--    IAsyncOperation* This);
--void __RPC_STUB IAsyncOperation_GetResults_Stub(
--    IRpcStubBuffer* This,
--    IRpcChannelBuffer* pRpcChannelBuffer,
--    PRPC_MESSAGE pRpcMessage,
--    DWORD* pdwStubPhase);
--
--#endif  /* __IAsyncOperation_INTERFACE_DEFINED__ */
-+#endif  /* ____x_ABI_CWindows_CFoundation_CIStringable_INTERFACE_DEFINED__ */
- 
- /* Begin additional prototypes for all interfaces */
- 
-+ULONG           __RPC_USER HSTRING_UserSize     (ULONG *, ULONG, HSTRING *);
-+unsigned char * __RPC_USER HSTRING_UserMarshal  (ULONG *, unsigned char *, HSTRING *);
-+unsigned char * __RPC_USER HSTRING_UserUnmarshal(ULONG *, unsigned char *, HSTRING *);
-+void            __RPC_USER HSTRING_UserFree     (ULONG *, HSTRING *);
- 
- /* End additional prototypes */
- 
 diff --git a/mingw-w64-headers/include/windows.foundation.metadata.h b/mingw-w64-headers/include/windows.foundation.metadata.h
 new file mode 100644
-index 00000000..13262699
+index 000000000..132626999
 --- /dev/null
 +++ b/mingw-w64-headers/include/windows.foundation.metadata.h
 @@ -0,0 +1,315 @@
@@ -1310,7 +345,7 @@ index 00000000..13262699
 +#endif /* __windows_foundation_metadata_h__ */
 diff --git a/mingw-w64-headers/include/windows.foundation.numerics.h b/mingw-w64-headers/include/windows.foundation.numerics.h
 new file mode 100644
-index 00000000..e20017ce
+index 000000000..e20017ce6
 --- /dev/null
 +++ b/mingw-w64-headers/include/windows.foundation.numerics.h
 @@ -0,0 +1,204 @@
@@ -1520,7 +555,7 @@ index 00000000..e20017ce
 +#endif /* __windows_foundation_numerics_h__ */
 diff --git a/mingw-w64-headers/include/windows.graphics.directx.h b/mingw-w64-headers/include/windows.graphics.directx.h
 new file mode 100644
-index 00000000..4bc4cb44
+index 000000000..4bc4cb44b
 --- /dev/null
 +++ b/mingw-w64-headers/include/windows.graphics.directx.h
 @@ -0,0 +1,343 @@
@@ -1869,7 +904,7 @@ index 00000000..4bc4cb44
 +#endif /* __windows_graphics_directx_h__ */
 diff --git a/mingw-w64-headers/include/windows.graphics.effects.h b/mingw-w64-headers/include/windows.graphics.effects.h
 new file mode 100644
-index 00000000..7c6e62a5
+index 000000000..7c6e62a54
 --- /dev/null
 +++ b/mingw-w64-headers/include/windows.graphics.effects.h
 @@ -0,0 +1,184 @@
@@ -2059,7 +1094,7 @@ index 00000000..7c6e62a5
 +#endif /* __windows_graphics_effects_h__ */
 diff --git a/mingw-w64-headers/include/windows.ui.composition.h b/mingw-w64-headers/include/windows.ui.composition.h
 new file mode 100644
-index 00000000..9410a3ce
+index 000000000..9410a3ce6
 --- /dev/null
 +++ b/mingw-w64-headers/include/windows.ui.composition.h
 @@ -0,0 +1,3212 @@
@@ -5277,7 +4312,7 @@ index 00000000..9410a3ce
 +#endif /* __windows_ui_composition_h__ */
 diff --git a/mingw-w64-headers/include/windows.ui.composition.interop.h b/mingw-w64-headers/include/windows.ui.composition.interop.h
 new file mode 100644
-index 00000000..a82afdf1
+index 000000000..a82afdf1b
 --- /dev/null
 +++ b/mingw-w64-headers/include/windows.ui.composition.interop.h
 @@ -0,0 +1,31 @@
@@ -5314,7 +4349,7 @@ index 00000000..a82afdf1
 +
 diff --git a/mingw-w64-headers/include/windows.ui.core.h b/mingw-w64-headers/include/windows.ui.core.h
 new file mode 100644
-index 00000000..a3c16ac2
+index 000000000..a3c16ac23
 --- /dev/null
 +++ b/mingw-w64-headers/include/windows.ui.core.h
 @@ -0,0 +1,127 @@
@@ -5447,7 +4482,7 @@ index 00000000..a3c16ac2
 +#endif /* __windows_ui_core_h__ */
 diff --git a/mingw-w64-headers/include/windows.ui.h b/mingw-w64-headers/include/windows.ui.h
 new file mode 100644
-index 00000000..2e4abd54
+index 000000000..2e4abd547
 --- /dev/null
 +++ b/mingw-w64-headers/include/windows.ui.h
 @@ -0,0 +1,72 @@
@@ -5523,3 +4558,6 @@ index 00000000..2e4abd54
 +#endif
 +
 +#endif /* __windows_ui_h__ */
+-- 
+2.25.1
+
diff --git a/projects/mingw-w64/config b/projects/mingw-w64/config
index 6758997..3792a76 100644
--- a/projects/mingw-w64/config
+++ b/projects/mingw-w64/config
@@ -1,12 +1,12 @@
 # vim: filetype=yaml sw=2
 filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz'
 git_url: https://git.code.sf.net/p/mingw-w64/mingw-w64
-git_hash: 660e09f3cb20f181b6d6435cb623d65a3922a063
+git_hash: cdb052f1d4056cd510cb83197b55868427b87476
 version: '[% c("abbrev") %]'
 var:
   container:
     use_container: 1
-  gcc_version: 9.3.0
+  gcc_version: 10.3.0
   deps:
     - automake
     - build-essential
@@ -30,6 +30,6 @@ targets:
 input_files:
   - project: container-image
   - URL: 'https://ftp.gnu.org/gnu/gcc/gcc-[% c("var/gcc_version") %]/gcc-[% c("var/gcc_version") %].tar.xz'
-    sha256sum: 71e197867611f6054aa1119b13a0c0abac12834765fe2d81f35ac57f84f742d1
+    sha256sum: 64f404c1a650f27fc33da242e1f2df54952e3963a49e06e73f6940f3223ac344
   - name: binutils
     project: binutils
diff --git a/projects/ninja/build b/projects/ninja/build
index 6500ca7..9fc0eaa 100644
--- a/projects/ninja/build
+++ b/projects/ninja/build
@@ -10,6 +10,11 @@ mkdir /var/tmp/build
 tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.gz
 cd /var/tmp/build/[% project %]-[% c('version') %]
 
+[% IF c("var/windows") -%]
+  # Starting with Debian Bullseye, /usr/bin/python does not exist, so
+  # we need to use python3 explicitly
+  sed -i 's/env python$/env python3/' configure.py
+[% END -%]
 ./configure.py --bootstrap
 
 mkdir $distdir
diff --git a/projects/node/config b/projects/node/config
index 30fce8d..ce058cf 100644
--- a/projects/node/config
+++ b/projects/node/config
@@ -12,6 +12,10 @@ targets:
     var:
       node_version: 10.23.1
       node_hash: 88aa16f5af79615b183ca55ed81393763169e75d1fb96013cf1831895c6cedfa
+  windows:
+    var:
+      arch_deps:
+        - python2
 
 input_files:
   - project: container-image
diff --git a/projects/rust/config b/projects/rust/config
index 01e1843..4995f1c 100644
--- a/projects/rust/config
+++ b/projects/rust/config
@@ -75,7 +75,7 @@ targets:
         - libssl-dev
         - pkg-config
         - zlib1g-dev
-      configure_opt: --enable-local-rust --enable-vendor --enable-extended --release-channel=stable --sysconfdir=etc --target=[% c("arch") %]-pc-windows-gnu
+      configure_opt: --enable-local-rust --enable-vendor --enable-extended --release-channel=stable --sysconfdir=etc --target=x86_64-unknown-linux-gnu,[% c("arch") %]-pc-windows-gnu
 
 input_files:
   - project: container-image
diff --git a/projects/tor-browser/build b/projects/tor-browser/build
index 1d2e35b..6deec70 100644
--- a/projects/tor-browser/build
+++ b/projects/tor-browser/build
@@ -226,14 +226,6 @@ popd
 
 
 [% IF c("var/windows") %]
-  # We need to install a recent version of python-pefile so that it works
-  # in a x86_64 container:
-  # https://github.com/TheTorProject/tor-messenger-build/pull/10
-  tar xf $rootdir/[% c('input_files_by_name/python-pefile') %]
-  cd $(echo [% c('input_files_by_name/python-pefile') %] | sed s/\.tar\.gz$//)
-  python setup.py install --user
-  cd ..
-
   tar -C /var/tmp/dist -xf $rootdir/[% c('input_files_by_name/nsis') %]
   export PATH="/var/tmp/dist/nsis/bin:$PATH"
 
@@ -288,7 +280,7 @@ cd $distdir
   makensis torbrowser.nsi
   # Working around NSIS braindamage
   mv torbrowser-install.exe torbrowser-install-tmp.exe
-  python $rootdir/pe_checksum_fix.py
+  python3 $rootdir/pe_checksum_fix.py
   mv torbrowser-install-tmp2.exe torbrowser-install.exe
   rm torbrowser-install-tmp.exe
   mv torbrowser-install.exe $OUTDIR/torbrowser-install[% IF c("var/windows-x86_64") %]-win64[% END %]-[% c("var/torbrowser_version") %]_${PKG_LOCALE}.exe
diff --git a/projects/tor-browser/config b/projects/tor-browser/config
index 09f77b2..a3f21d3 100644
--- a/projects/tor-browser/config
+++ b/projects/tor-browser/config
@@ -35,7 +35,7 @@ targets:
   windows:
     var:
       arch_deps:
-        - python-future
+        - python3-pefile
   windows-i686:
     var:
       mar_osname: win32
@@ -98,10 +98,6 @@ input_files:
     enable: '[% c("var/windows") %]'
   - filename: pe_checksum_fix.py
     enable: '[% c("var/windows") %]'
-  - name: python-pefile
-    URL: https://files.pythonhosted.org/packages/7e/9b/f99171190f04cd23768547dd34533b4016bd582842f53cd9fe9585a74c74/pefile-2017.11.5.tar.gz
-    sha256sum: 675c35ee0e1677db9e80d2f48d8a7ff2cf38e6207e8cd5e2a2c6d126db025854
-    enable: '[% c("var/windows") %]'
   # To generate a new keystore, see how-to-generate-keystore.txt
   - filename: android-qa.keystore
     enable: '[% c("var/android") %]'
diff --git a/projects/tor-browser/pe_checksum_fix.py b/projects/tor-browser/pe_checksum_fix.py
index 85d8fef..73cd009 100755
--- a/projects/tor-browser/pe_checksum_fix.py
+++ b/projects/tor-browser/pe_checksum_fix.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 # Copyright (c) 2015-2017, The Tor Project, Inc.
 #
@@ -45,12 +45,12 @@ Thanks to a cypherpunk for this workaround idea.
 
 import pefile;
 
-f = open('torbrowser-install-tmp.exe')
+f = open('torbrowser-install-tmp.exe', 'rb')
 exe = f.read()
 f.close()
 remainder = len(exe) % 8
 if remainder > 0:
-    exe += '\0' * (8 - remainder)
+    exe += bytes('\0' * (8 - remainder), 'utf-8')
 pef = pefile.PE(data=exe, fast_load=True)
 pef.OPTIONAL_HEADER.CheckSum = pef.generate_checksum()
 pef.write(filename='torbrowser-install-tmp2.exe')
diff --git a/rbm.conf b/rbm.conf
index b389872..c67fdc9 100644
--- a/rbm.conf
+++ b/rbm.conf
@@ -428,9 +428,11 @@ targets:
   torbrowser-windows-i686:
     - windows-i686
     - windows
+    - ff91esr
   torbrowser-windows-x86_64:
     - windows-x86_64
     - windows
+    - ff91esr
   windows-x86_64:
     arch: x86_64
     var:
@@ -451,7 +453,7 @@ targets:
     var:
       windows: 1
       container:
-        suite: buster
+        suite: bullseye
         arch: amd64
       configure_opt: '--host=[% c("arch") %]-w64-mingw32 CFLAGS="[% c("var/CFLAGS") %]" LDFLAGS="[% c("var/LDFLAGS") %]" [% c("var/configure_opt_project") %]'
       CFLAGS: '-fstack-protector-strong -fno-strict-overflow -Wno-missing-field-initializers -Wformat -Wformat-security [% c("var/flag_mwindows") %]'
@@ -464,7 +466,8 @@ targets:
       snowflake: '[% c("var/alpha") || c("var/nightly") %]'
       deps:
         - build-essential
-        - python
+        - python3
+        - python3-distutils
         - bison
         - automake
         - libtool



_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits