فهرست منبع

build: updated SPICE dependencies

osy 9 ماه پیش
والد
کامیت
38521a32e7

+ 36 - 18
UTM.xcodeproj/project.pbxproj

@@ -344,7 +344,7 @@
 		CE0B6ECC24AD677200FE012D /* gstriff-1.0.0.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE2D63DE22653C7400FC7E63 /* gstriff-1.0.0.framework */; };
 		CE0B6ECD24AD677200FE012D /* gsttag-1.0.0.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE2D63F622653C7400FC7E63 /* gsttag-1.0.0.framework */; };
 		CE0B6ECF24AD677200FE012D /* gstrtp-1.0.0.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE2D63DD22653C7400FC7E63 /* gstrtp-1.0.0.framework */; };
-		CE0B6ED124AD677200FE012D /* phodav-2.0.0.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE059DC0243BD67100338317 /* phodav-2.0.0.framework */; };
+		CE0B6ED124AD677200FE012D /* phodav-3.0.0.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE059DC0243BD67100338317 /* phodav-3.0.0.framework */; };
 		CE0B6ED324AD677200FE012D /* libgstvideoconvert.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CE9D19542265425900355E14 /* libgstvideoconvert.a */; };
 		CE0B6ED724AD677200FE012D /* gstaudio-1.0.0.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE2D63EF22653C7400FC7E63 /* gstaudio-1.0.0.framework */; };
 		CE0B6EDC24AD677200FE012D /* libgstapp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CE9D19612265425900355E14 /* libgstapp.a */; };
@@ -390,7 +390,7 @@
 		CE0B6F2924AD67AD00FE012D /* gsttag-1.0.0.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE2D63F622653C7400FC7E63 /* gsttag-1.0.0.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
 		CE0B6F2A24AD67AF00FE012D /* gstvideo-1.0.0.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE2D63F922653C7400FC7E63 /* gstvideo-1.0.0.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
 		CE0B6F2F24AD67BE00FE012D /* json-glib-1.0.0.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE2D63E222653C7400FC7E63 /* json-glib-1.0.0.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
-		CE0B6F3124AD67C100FE012D /* phodav-2.0.0.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE059DC0243BD67100338317 /* phodav-2.0.0.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
+		CE0B6F3124AD67C100FE012D /* phodav-3.0.0.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE059DC0243BD67100338317 /* phodav-3.0.0.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
 		CE0B6F5424AD67FA00FE012D /* spice-client-glib-2.0.8.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE2D63FE22653C7500FC7E63 /* spice-client-glib-2.0.8.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
 		CE0DF19425A83C1700A51894 /* qemu-aarch64-softmmu.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE2D63FD22653C7500FC7E63 /* qemu-aarch64-softmmu.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
 		CE0DF19525A83C1700A51894 /* qemu-alpha-softmmu.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE2D641322653C7500FC7E63 /* qemu-alpha-softmmu.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
@@ -495,7 +495,7 @@
 		CE2D934C24AD46670059923A /* ffi.7.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE2D63E322653C7400FC7E63 /* ffi.7.framework */; };
 		CE2D934D24AD46670059923A /* gstnet-1.0.0.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE2D63E522653C7400FC7E63 /* gstnet-1.0.0.framework */; };
 		CE2D934E24AD46670059923A /* gstbase-1.0.0.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE2D63E822653C7400FC7E63 /* gstbase-1.0.0.framework */; };
-		CE2D934F24AD46670059923A /* phodav-2.0.0.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE059DC0243BD67100338317 /* phodav-2.0.0.framework */; };
+		CE2D934F24AD46670059923A /* phodav-3.0.0.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE059DC0243BD67100338317 /* phodav-3.0.0.framework */; };
 		CE2D935024AD46670059923A /* gstcontroller-1.0.0.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE2D63EE22653C7400FC7E63 /* gstcontroller-1.0.0.framework */; };
 		CE2D935124AD46670059923A /* gstaudio-1.0.0.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE2D63EF22653C7400FC7E63 /* gstaudio-1.0.0.framework */; };
 		CE2D935224AD46670059923A /* gpg-error.0.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE2D63F122653C7400FC7E63 /* gpg-error.0.framework */; };
@@ -543,7 +543,7 @@
 		CE2D938A24AD46670059923A /* gstrtp-1.0.0.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE2D63DD22653C7400FC7E63 /* gstrtp-1.0.0.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
 		CE2D938B24AD46670059923A /* gstriff-1.0.0.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE2D63DE22653C7400FC7E63 /* gstriff-1.0.0.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
 		CE2D938C24AD46670059923A /* qemu-ppc-softmmu.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE2D63E722653C7400FC7E63 /* qemu-ppc-softmmu.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
-		CE2D938D24AD46670059923A /* phodav-2.0.0.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE059DC0243BD67100338317 /* phodav-2.0.0.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
+		CE2D938D24AD46670059923A /* phodav-3.0.0.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE059DC0243BD67100338317 /* phodav-3.0.0.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
 		CE2D938E24AD46670059923A /* gthread-2.0.0.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE2D63DC22653C7300FC7E63 /* gthread-2.0.0.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
 		CE2D938F24AD46670059923A /* qemu-aarch64-softmmu.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE2D63FD22653C7500FC7E63 /* qemu-aarch64-softmmu.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
 		CE2D939024AD46670059923A /* qemu-mips-softmmu.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE2D63FF22653C7500FC7E63 /* qemu-mips-softmmu.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
@@ -770,7 +770,7 @@
 		CEA45F44263519B5002FA97D /* gstnet-1.0.0.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE2D63E522653C7400FC7E63 /* gstnet-1.0.0.framework */; };
 		CEA45F45263519B5002FA97D /* gstbase-1.0.0.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE2D63E822653C7400FC7E63 /* gstbase-1.0.0.framework */; };
 		CEA45F46263519B5002FA97D /* Logging in Frameworks */ = {isa = PBXBuildFile; productRef = CEA45E20263519B5002FA97D /* Logging */; };
-		CEA45F47263519B5002FA97D /* phodav-2.0.0.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE059DC0243BD67100338317 /* phodav-2.0.0.framework */; };
+		CEA45F47263519B5002FA97D /* phodav-3.0.0.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE059DC0243BD67100338317 /* phodav-3.0.0.framework */; };
 		CEA45F49263519B5002FA97D /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE0E9B86252FD06B0026E02B /* SwiftUI.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
 		CEA45F4A263519B5002FA97D /* gstcontroller-1.0.0.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE2D63EE22653C7400FC7E63 /* gstcontroller-1.0.0.framework */; };
 		CEA45F4B263519B5002FA97D /* gstaudio-1.0.0.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE2D63EF22653C7400FC7E63 /* gstaudio-1.0.0.framework */; };
@@ -816,7 +816,7 @@
 		CEA45F86263519B5002FA97D /* gstrtp-1.0.0.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE2D63DD22653C7400FC7E63 /* gstrtp-1.0.0.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
 		CEA45F87263519B5002FA97D /* gstriff-1.0.0.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE2D63DE22653C7400FC7E63 /* gstriff-1.0.0.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
 		CEA45F88263519B5002FA97D /* qemu-ppc-softmmu.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE2D63E722653C7400FC7E63 /* qemu-ppc-softmmu.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
-		CEA45F89263519B5002FA97D /* phodav-2.0.0.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE059DC0243BD67100338317 /* phodav-2.0.0.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
+		CEA45F89263519B5002FA97D /* phodav-3.0.0.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE059DC0243BD67100338317 /* phodav-3.0.0.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
 		CEA45F8A263519B5002FA97D /* gthread-2.0.0.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE2D63DC22653C7300FC7E63 /* gthread-2.0.0.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
 		CEA45F8B263519B5002FA97D /* qemu-aarch64-softmmu.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE2D63FD22653C7500FC7E63 /* qemu-aarch64-softmmu.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
 		CEA45F8F263519B5002FA97D /* gobject-2.0.0.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE2D63F522653C7400FC7E63 /* gobject-2.0.0.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
@@ -890,6 +890,14 @@
 		CEC794BD2949663C00121A9F /* UTMScripting.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEC794BB2949663C00121A9F /* UTMScripting.swift */; };
 		CED234ED254796E500ED0A57 /* NumberTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = CED234EC254796E500ED0A57 /* NumberTextField.swift */; };
 		CED234EE254796E500ED0A57 /* NumberTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = CED234EC254796E500ED0A57 /* NumberTextField.swift */; };
+		CED297142CE425CB00F1E3EB /* soup-3.0.0.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CED297132CE425CA00F1E3EB /* soup-3.0.0.framework */; };
+		CED297152CE425CB00F1E3EB /* soup-3.0.0.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CED297132CE425CA00F1E3EB /* soup-3.0.0.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+		CED297192CE4263100F1E3EB /* soup-3.0.0.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CED297132CE425CA00F1E3EB /* soup-3.0.0.framework */; };
+		CED2971A2CE4263100F1E3EB /* soup-3.0.0.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CED297132CE425CA00F1E3EB /* soup-3.0.0.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+		CED2971B2CE4263600F1E3EB /* soup-3.0.0.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CED297132CE425CA00F1E3EB /* soup-3.0.0.framework */; };
+		CED2971C2CE4263600F1E3EB /* soup-3.0.0.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CED297132CE425CA00F1E3EB /* soup-3.0.0.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+		CED2971D2CE4263A00F1E3EB /* soup-3.0.0.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CED297132CE425CA00F1E3EB /* soup-3.0.0.framework */; };
+		CED2971E2CE4263A00F1E3EB /* soup-3.0.0.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CED297132CE425CA00F1E3EB /* soup-3.0.0.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
 		CED779E52C78C82A00EB82AE /* UTMTips.swift in Sources */ = {isa = PBXBuildFile; fileRef = CED779E42C78C82A00EB82AE /* UTMTips.swift */; };
 		CED779E62C78C82A00EB82AE /* UTMTips.swift in Sources */ = {isa = PBXBuildFile; fileRef = CED779E42C78C82A00EB82AE /* UTMTips.swift */; };
 		CED779E72C78C82A00EB82AE /* UTMTips.swift in Sources */ = {isa = PBXBuildFile; fileRef = CED779E42C78C82A00EB82AE /* UTMTips.swift */; };
@@ -1134,7 +1142,7 @@
 		CEF7F6562AEEDCC400E34952 /* gstbase-1.0.0.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE2D63E822653C7400FC7E63 /* gstbase-1.0.0.framework */; };
 		CEF7F6572AEEDCC400E34952 /* Logging in Frameworks */ = {isa = PBXBuildFile; productRef = CEF7F5842AEEDCC400E34952 /* Logging */; };
 		CEF7F6582AEEDCC400E34952 /* SwiftTerm in Frameworks */ = {isa = PBXBuildFile; productRef = CEF7F58E2AEEDCC400E34952 /* SwiftTerm */; };
-		CEF7F65A2AEEDCC400E34952 /* phodav-2.0.0.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE059DC0243BD67100338317 /* phodav-2.0.0.framework */; };
+		CEF7F65A2AEEDCC400E34952 /* phodav-3.0.0.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE059DC0243BD67100338317 /* phodav-3.0.0.framework */; };
 		CEF7F65C2AEEDCC400E34952 /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE0E9B86252FD06B0026E02B /* SwiftUI.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
 		CEF7F65D2AEEDCC400E34952 /* gstcontroller-1.0.0.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE2D63EE22653C7400FC7E63 /* gstcontroller-1.0.0.framework */; };
 		CEF7F65E2AEEDCC400E34952 /* gstaudio-1.0.0.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE2D63EF22653C7400FC7E63 /* gstaudio-1.0.0.framework */; };
@@ -1180,7 +1188,7 @@
 		CEF7F6962AEEDCC400E34952 /* gsttag-1.0.0.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE2D63F622653C7400FC7E63 /* gsttag-1.0.0.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
 		CEF7F6982AEEDCC400E34952 /* gstrtp-1.0.0.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE2D63DD22653C7400FC7E63 /* gstrtp-1.0.0.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
 		CEF7F6992AEEDCC400E34952 /* gstriff-1.0.0.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE2D63DE22653C7400FC7E63 /* gstriff-1.0.0.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
-		CEF7F69C2AEEDCC400E34952 /* phodav-2.0.0.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE059DC0243BD67100338317 /* phodav-2.0.0.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
+		CEF7F69C2AEEDCC400E34952 /* phodav-3.0.0.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE059DC0243BD67100338317 /* phodav-3.0.0.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
 		CEF7F69D2AEEDCC400E34952 /* gthread-2.0.0.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE2D63DC22653C7300FC7E63 /* gthread-2.0.0.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
 		CEF7F6A22AEEDCC400E34952 /* gobject-2.0.0.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE2D63F522653C7400FC7E63 /* gobject-2.0.0.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
 		CEF7F6A32AEEDCC400E34952 /* gmodule-2.0.0.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = CE2D63D822653C7300FC7E63 /* gmodule-2.0.0.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
@@ -1288,6 +1296,7 @@
 				CE0B6F1F24AD679E00FE012D /* gstcontroller-1.0.0.framework in Embed Libraries */,
 				CEF83F8E250094EC00557D15 /* gpg-error.0.framework in Embed Libraries */,
 				CE0B6F1A24AD679500FE012D /* gstallocators-1.0.0.framework in Embed Libraries */,
+				CED297152CE425CB00F1E3EB /* soup-3.0.0.framework in Embed Libraries */,
 				CE03D08F24D9124200F76B84 /* gobject-2.0.0.framework in Embed Libraries */,
 				CE0B6F1D24AD679B00FE012D /* gstbase-1.0.0.framework in Embed Libraries */,
 				CE0B6F2224AD67A200FE012D /* gstnet-1.0.0.framework in Embed Libraries */,
@@ -1299,7 +1308,7 @@
 				CEF83F8B250094D700557D15 /* spice-server.1.framework in Embed Libraries */,
 				CE0B6F1B24AD679700FE012D /* gstapp-1.0.0.framework in Embed Libraries */,
 				CE0B6F2924AD67AD00FE012D /* gsttag-1.0.0.framework in Embed Libraries */,
-				CE0B6F3124AD67C100FE012D /* phodav-2.0.0.framework in Embed Libraries */,
+				CE0B6F3124AD67C100FE012D /* phodav-3.0.0.framework in Embed Libraries */,
 				CE0B6F2624AD67A900FE012D /* gstrtp-1.0.0.framework in Embed Libraries */,
 				CE0B6F2524AD67A700FE012D /* gstriff-1.0.0.framework in Embed Libraries */,
 				CE0B6F2424AD67A600FE012D /* gstreamer-1.0.0.framework in Embed Libraries */,
@@ -1395,7 +1404,7 @@
 				CE2D938B24AD46670059923A /* gstriff-1.0.0.framework in Embed Libraries */,
 				CE2D938C24AD46670059923A /* qemu-ppc-softmmu.framework in Embed Libraries */,
 				84C5068728CA5702007CE8FF /* Hypervisor.framework in Embed Libraries */,
-				CE2D938D24AD46670059923A /* phodav-2.0.0.framework in Embed Libraries */,
+				CE2D938D24AD46670059923A /* phodav-3.0.0.framework in Embed Libraries */,
 				CE2D938E24AD46670059923A /* gthread-2.0.0.framework in Embed Libraries */,
 				CE2D938F24AD46670059923A /* qemu-aarch64-softmmu.framework in Embed Libraries */,
 				CEA9059225FC6A3500801E7C /* usbredirparser.1.framework in Embed Libraries */,
@@ -1425,6 +1434,7 @@
 				CE2D93A324AD46670059923A /* gstvideo-1.0.0.framework in Embed Libraries */,
 				CE2D93A424AD46670059923A /* json-glib-1.0.0.framework in Embed Libraries */,
 				CE2D93A524AD46670059923A /* pixman-1.0.framework in Embed Libraries */,
+				CED2971A2CE4263100F1E3EB /* soup-3.0.0.framework in Embed Libraries */,
 				CE2D93A624AD46670059923A /* jpeg.62.framework in Embed Libraries */,
 				CE2D93A724AD46670059923A /* qemu-microblazeel-softmmu.framework in Embed Libraries */,
 				CE2D93A824AD46670059923A /* qemu-hppa-softmmu.framework in Embed Libraries */,
@@ -1478,12 +1488,13 @@
 				CEA45F7C263519B5002FA97D /* gstnet-1.0.0.framework in Embed Libraries */,
 				CEA45F7E263519B5002FA97D /* crypto.1.1.framework in Embed Libraries */,
 				CEA45F7F263519B5002FA97D /* qemu-riscv64-softmmu.framework in Embed Libraries */,
+				CED2971C2CE4263600F1E3EB /* soup-3.0.0.framework in Embed Libraries */,
 				CEA45F80263519B5002FA97D /* gstapp-1.0.0.framework in Embed Libraries */,
 				CEA45F84263519B5002FA97D /* gsttag-1.0.0.framework in Embed Libraries */,
 				CEA45F86263519B5002FA97D /* gstrtp-1.0.0.framework in Embed Libraries */,
 				CEA45F87263519B5002FA97D /* gstriff-1.0.0.framework in Embed Libraries */,
 				CEA45F88263519B5002FA97D /* qemu-ppc-softmmu.framework in Embed Libraries */,
-				CEA45F89263519B5002FA97D /* phodav-2.0.0.framework in Embed Libraries */,
+				CEA45F89263519B5002FA97D /* phodav-3.0.0.framework in Embed Libraries */,
 				CEA45F8A263519B5002FA97D /* gthread-2.0.0.framework in Embed Libraries */,
 				84937F20289767F0003148F4 /* zstd.1.framework in Embed Libraries */,
 				CEA45F8B263519B5002FA97D /* qemu-aarch64-softmmu.framework in Embed Libraries */,
@@ -1542,6 +1553,7 @@
 				CEF7F6832AEEDCC400E34952 /* gpg-error.0.framework in Embed Libraries */,
 				CEF7F6852AEEDCC400E34952 /* gstcontroller-1.0.0.framework in Embed Libraries */,
 				CEF7F6862AEEDCC400E34952 /* gstallocators-1.0.0.framework in Embed Libraries */,
+				CED2971E2CE4263A00F1E3EB /* soup-3.0.0.framework in Embed Libraries */,
 				CEF7F6872AEEDCC400E34952 /* gstbase-1.0.0.framework in Embed Libraries */,
 				CEF7F6882AEEDCC400E34952 /* ffi.7.framework in Embed Libraries */,
 				CEF7F6892AEEDCC400E34952 /* ssl.1.1.framework in Embed Libraries */,
@@ -1553,7 +1565,7 @@
 				CEF7F6962AEEDCC400E34952 /* gsttag-1.0.0.framework in Embed Libraries */,
 				CEF7F6982AEEDCC400E34952 /* gstrtp-1.0.0.framework in Embed Libraries */,
 				CEF7F6992AEEDCC400E34952 /* gstriff-1.0.0.framework in Embed Libraries */,
-				CEF7F69C2AEEDCC400E34952 /* phodav-2.0.0.framework in Embed Libraries */,
+				CEF7F69C2AEEDCC400E34952 /* phodav-3.0.0.framework in Embed Libraries */,
 				CEF7F69D2AEEDCC400E34952 /* gthread-2.0.0.framework in Embed Libraries */,
 				CEF7F6A22AEEDCC400E34952 /* gobject-2.0.0.framework in Embed Libraries */,
 				CEF7F6A32AEEDCC400E34952 /* gmodule-2.0.0.framework in Embed Libraries */,
@@ -1774,7 +1786,7 @@
 		CE03D0D324DCF6DD00F76B84 /* VMMetalViewInputDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VMMetalViewInputDelegate.swift; sourceTree = "<group>"; };
 		CE056CA4242454100004B68A /* VMDisplayMetalViewController+Touch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "VMDisplayMetalViewController+Touch.h"; sourceTree = "<group>"; };
 		CE056CA5242454100004B68A /* VMDisplayMetalViewController+Touch.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "VMDisplayMetalViewController+Touch.m"; sourceTree = "<group>"; };
-		CE059DC0243BD67100338317 /* phodav-2.0.0.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "phodav-2.0.0.framework"; path = "$(SYSROOT_DIR)/Frameworks/phodav-2.0.0.framework"; sourceTree = "<group>"; };
+		CE059DC0243BD67100338317 /* phodav-3.0.0.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "phodav-3.0.0.framework"; path = "$(SYSROOT_DIR)/Frameworks/phodav-3.0.0.framework"; sourceTree = "<group>"; };
 		CE059DC3243BFA3200338317 /* UTMLegacyQemuConfiguration+Sharing.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "UTMLegacyQemuConfiguration+Sharing.h"; sourceTree = "<group>"; };
 		CE059DC4243BFA3200338317 /* UTMLegacyQemuConfiguration+Sharing.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "UTMLegacyQemuConfiguration+Sharing.m"; sourceTree = "<group>"; };
 		CE059DC6243E9E3400338317 /* UTMLocationManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UTMLocationManager.h; sourceTree = "<group>"; };
@@ -2015,6 +2027,7 @@
 		CECF02562B706ADD00409FC0 /* UTMRemoteConnectInterface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UTMRemoteConnectInterface.h; sourceTree = "<group>"; };
 		CECF02572B70909900409FC0 /* Info-Remote.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-Remote.plist"; sourceTree = "<group>"; };
 		CED234EC254796E500ED0A57 /* NumberTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NumberTextField.swift; sourceTree = "<group>"; };
+		CED297132CE425CA00F1E3EB /* soup-3.0.0.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "soup-3.0.0.framework"; path = "$(SYSROOT_DIR)/Frameworks/soup-3.0.0.framework"; sourceTree = "<group>"; };
 		CED779E42C78C82A00EB82AE /* UTMTips.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UTMTips.swift; sourceTree = "<group>"; };
 		CED779E92C7938D500EB82AE /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Localizable.strings; sourceTree = "<group>"; };
 		CED814E824C79F070042F0F1 /* VMConfigDriveCreateView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VMConfigDriveCreateView.swift; sourceTree = "<group>"; };
@@ -2128,6 +2141,7 @@
 				CE2D933224AD46670059923A /* libgstvolume.a in Frameworks */,
 				CE2D933324AD46670059923A /* libgstcoreelements.a in Frameworks */,
 				CE2D933424AD46670059923A /* libgstvideorate.a in Frameworks */,
+				CED297192CE4263100F1E3EB /* soup-3.0.0.framework in Frameworks */,
 				CE2D933524AD46670059923A /* libgstjpeg.a in Frameworks */,
 				CE2D933624AD46670059923A /* libgstaudioresample.a in Frameworks */,
 				CE2D933724AD46670059923A /* libgstplayback.a in Frameworks */,
@@ -2163,7 +2177,7 @@
 				CE020BA724AEDEF000B44AB6 /* Logging in Frameworks */,
 				8401865A2887AFD50050AC51 /* SwiftTerm in Frameworks */,
 				CE02C8AC294EE4EC006DFE48 /* slirp.0.framework in Frameworks */,
-				CE2D934F24AD46670059923A /* phodav-2.0.0.framework in Frameworks */,
+				CE2D934F24AD46670059923A /* phodav-3.0.0.framework in Frameworks */,
 				CEA9059025FC6A1700801E7C /* usbredirparser.1.framework in Frameworks */,
 				CE0E9B87252FD06B0026E02B /* SwiftUI.framework in Frameworks */,
 				CE2D935024AD46670059923A /* gstcontroller-1.0.0.framework in Frameworks */,
@@ -2230,7 +2244,7 @@
 				CE0B6EF124AD677200FE012D /* libgstplayback.a in Frameworks */,
 				CE0B6EF424AD677200FE012D /* json-glib-1.0.0.framework in Frameworks */,
 				CEDD11C12B7C74D7004DDAC6 /* SwiftPortmap in Frameworks */,
-				CE0B6ED124AD677200FE012D /* phodav-2.0.0.framework in Frameworks */,
+				CE0B6ED124AD677200FE012D /* phodav-3.0.0.framework in Frameworks */,
 				CEF83F862500947D00557D15 /* gcrypt.20.framework in Frameworks */,
 				CE0B6ECB24AD677200FE012D /* gstcheck-1.0.0.framework in Frameworks */,
 				CE0B6F0724AD677200FE012D /* libgstvolume.a in Frameworks */,
@@ -2256,6 +2270,7 @@
 				84937EFF28960789003148F4 /* zstd.1.framework in Frameworks */,
 				CE0B6EE224AD677200FE012D /* gstnet-1.0.0.framework in Frameworks */,
 				CE03D08624D90F0700F76B84 /* gmodule-2.0.0.framework in Frameworks */,
+				CED297142CE425CB00F1E3EB /* soup-3.0.0.framework in Frameworks */,
 				CE03D0CA24D9142000F76B84 /* ssl.1.1.framework in Frameworks */,
 				CE0B6EC624AD677200FE012D /* gstfft-1.0.0.framework in Frameworks */,
 				CE0B6EE624AD677200FE012D /* libgstaudiorate.a in Frameworks */,
@@ -2295,6 +2310,7 @@
 				CEA45F2A263519B5002FA97D /* MetalKit.framework in Frameworks */,
 				84CF5DF3288E433F00D01721 /* SwiftUIVisualEffects in Frameworks */,
 				84818C0D2898A07F009EDB67 /* AVFAudio.framework in Frameworks */,
+				CED2971B2CE4263600F1E3EB /* soup-3.0.0.framework in Frameworks */,
 				CEA45F2B263519B5002FA97D /* libgstvolume.a in Frameworks */,
 				CEA45F2C263519B5002FA97D /* libgstcoreelements.a in Frameworks */,
 				CEA45F2D263519B5002FA97D /* libgstvideorate.a in Frameworks */,
@@ -2326,7 +2342,7 @@
 				CEA45F45263519B5002FA97D /* gstbase-1.0.0.framework in Frameworks */,
 				CEA45F46263519B5002FA97D /* Logging in Frameworks */,
 				84A0A88C2A47D5D70038F329 /* QEMUKit in Frameworks */,
-				CEA45F47263519B5002FA97D /* phodav-2.0.0.framework in Frameworks */,
+				CEA45F47263519B5002FA97D /* phodav-3.0.0.framework in Frameworks */,
 				CEA45F49263519B5002FA97D /* SwiftUI.framework in Frameworks */,
 				CEA45F4A263519B5002FA97D /* gstcontroller-1.0.0.framework in Frameworks */,
 				CEA45F4B263519B5002FA97D /* gstaudio-1.0.0.framework in Frameworks */,
@@ -2408,7 +2424,8 @@
 				CEF7F6562AEEDCC400E34952 /* gstbase-1.0.0.framework in Frameworks */,
 				CEF7F6572AEEDCC400E34952 /* Logging in Frameworks */,
 				CEF7F6582AEEDCC400E34952 /* SwiftTerm in Frameworks */,
-				CEF7F65A2AEEDCC400E34952 /* phodav-2.0.0.framework in Frameworks */,
+				CED2971D2CE4263A00F1E3EB /* soup-3.0.0.framework in Frameworks */,
+				CEF7F65A2AEEDCC400E34952 /* phodav-3.0.0.framework in Frameworks */,
 				CEF7F65C2AEEDCC400E34952 /* SwiftUI.framework in Frameworks */,
 				CEF7F65D2AEEDCC400E34952 /* gstcontroller-1.0.0.framework in Frameworks */,
 				CEF7F65E2AEEDCC400E34952 /* gstaudio-1.0.0.framework in Frameworks */,
@@ -2511,6 +2528,7 @@
 		CE2D63D622653C7300FC7E63 /* Frameworks */ = {
 			isa = PBXGroup;
 			children = (
+				CED297132CE425CA00F1E3EB /* soup-3.0.0.framework */,
 				CE064C642A563F4A003C833D /* swtpm.0.framework */,
 				CE02C8A8294EE4EA006DFE48 /* qemu-loongarch64-softmmu.framework */,
 				CE02C8A9294EE4EB006DFE48 /* slirp.0.framework */,
@@ -2527,7 +2545,7 @@
 				CEA9058825FC69D100801E7C /* usbredirparser.1.framework */,
 				CEA9053725F981E900801E7C /* usb-1.0.0.framework */,
 				CE0E9B86252FD06B0026E02B /* SwiftUI.framework */,
-				CE059DC0243BD67100338317 /* phodav-2.0.0.framework */,
+				CE059DC0243BD67100338317 /* phodav-3.0.0.framework */,
 				CE66450C2269313200B0849A /* MetalKit.framework */,
 				CE9D195D2265425900355E14 /* libgstadder.a */,
 				CE9D19612265425900355E14 /* libgstapp.a */,

+ 0 - 114
patches/libsoup-2.74.2.patch

@@ -1,114 +0,0 @@
-From 119abc03aac8c5cf1af0845a0e64b3027ce1fa78 Mon Sep 17 00:00:00 2001
-From: osy <50960678+osy@users.noreply.github.com>
-Date: Sat, 5 Mar 2022 17:02:38 -0800
-Subject: [PATCH] soup-tld: disabled when libpsl is optional
-
-When building without libpsl, we no longer have soup-tld.c. As a result,
-we do not provide those APIs in the built library and additionally the
-following change is made to soup_cookie_jar_add_cookie_full()
-
-1. We no longer reject cookies for public domains
-2. If the accept policy is not SOUP_COOKIE_JAR_ACCEPT_ALWAYS we assume
-   all incoming cookie is third party and reject it.
----
- libsoup/meson.build       | 4 +++-
- libsoup/soup-cookie-jar.c | 6 ++++++
- meson.build               | 5 ++++-
- tests/meson.build         | 7 ++++++-
- 4 files changed, 19 insertions(+), 3 deletions(-)
-
-diff --git a/libsoup/meson.build b/libsoup/meson.build
-index e585b3fe..ec0aca23 100644
---- a/libsoup/meson.build
-+++ b/libsoup/meson.build
-@@ -76,7 +76,6 @@ soup_sources = [
-   'soup-socket.c',
-   'soup-socket-properties.c',
-   'soup-status.c',
--  'soup-tld.c',
-   'soup-uri.c',
-   'soup-value-utils.c',
-   'soup-version.c',
-@@ -208,6 +207,9 @@ if brotlidec_dep.found()
-   soup_headers += 'soup-brotli-decompressor.h'
- endif
- 
-+if libpsl_dep.found()
-+  soup_sources += 'soup-tld.c'
-+endif
- 
- includedir = join_paths(libsoup_api_name, meson.project_name())
- install_headers(soup_installed_headers, subdir : includedir)
-diff --git a/libsoup/soup-cookie-jar.c b/libsoup/soup-cookie-jar.c
-index c8231f0e..5e35e135 100644
---- a/libsoup/soup-cookie-jar.c
-+++ b/libsoup/soup-cookie-jar.c
-@@ -595,18 +595,24 @@ soup_cookie_jar_add_cookie_full (SoupCookieJar *jar, SoupCookie *cookie, SoupURI
- 	g_return_if_fail (SOUP_IS_COOKIE_JAR (jar));
- 	g_return_if_fail (cookie != NULL);
- 
-+#ifdef HAVE_TLD
- 	/* Never accept cookies for public domains. */
- 	if (!g_hostname_is_ip_address (cookie->domain) &&
- 	    soup_tld_domain_is_public_suffix (cookie->domain)) {
- 		soup_cookie_free (cookie);
- 		return;
- 	}
-+#endif
- 
- 	priv = soup_cookie_jar_get_instance_private (jar);
- 
-         if (first_party != NULL) {
-+#ifdef HAVE_TLD
-                 if (priv->accept_policy == SOUP_COOKIE_JAR_ACCEPT_NEVER ||
-                     incoming_cookie_is_third_party (jar, cookie, first_party, priv->accept_policy)) {
-+#else // no TLD, assume every cookie is third-party
-+                if (priv->accept_policy != SOUP_COOKIE_JAR_ACCEPT_ALWAYS) {
-+#endif
-                         soup_cookie_free (cookie);
-                         return;
-                 }
-diff --git a/meson.build b/meson.build
-index 3cc56fb9..5865dfc7 100644
---- a/meson.build
-+++ b/meson.build
-@@ -148,7 +148,10 @@ endif
- 
- libpsl_required_version = '>= 0.20'
- libpsl_dep = dependency('libpsl', version : libpsl_required_version,
--  fallback : ['libpsl', 'libpsl_dep'])
-+  fallback : ['libpsl', 'libpsl_dep'], required : false)
-+if libpsl_dep.found()
-+    cdata.set('HAVE_TLD', '1')
-+endif
- 
- if cc.has_function('gmtime_r', prefix : '#include <time.h>', args : default_source_flag)
-     cdata.set('HAVE_GMTIME_R', '1')
-diff --git a/tests/meson.build b/tests/meson.build
-index 5482aa86..d5b32a12 100644
---- a/tests/meson.build
-+++ b/tests/meson.build
-@@ -62,7 +62,6 @@ tests = [
-   ['ssl', true, []],
-   ['streaming', true, []],
-   ['timeout', true, []],
--  ['tld', true, []],
-   ['uri-parsing', true, []],
-   ['websocket', true, [libz_dep]]
- ]
-@@ -82,6 +81,12 @@ if brotlidec_dep.found()
-   endif
- endif
- 
-+if libpsl_dep.found()
-+  tests += [
-+    ['tld', true, []],
-+  ]
-+endif
-+
- if have_apache
-   tests += [
-     ['auth', false, []],
--- 
-2.32.0 (Apple Git-132)
-

+ 255 - 0
patches/libsoup-3.6.0.patch

@@ -0,0 +1,255 @@
+From 95102597efaddede487bd03c191fa0a08b70e3b6 Mon Sep 17 00:00:00 2001
+From: osy <osy@turing.llc>
+Date: Mon, 11 Nov 2024 14:47:39 -0800
+Subject: [PATCH 1/2] soup-tld: disabled when libpsl is optional
+
+When building without libpsl, we no longer have soup-tld.c. As a result,
+we do not provide those APIs in the built library and additionally the
+following change is made to soup_cookie_jar_add_cookie_full()
+
+1. We no longer reject cookies for public domains
+2. If the accept policy is not SOUP_COOKIE_JAR_ACCEPT_ALWAYS we assume
+   all incoming cookie is third party and reject it.
+---
+ libsoup/cookies/soup-cookie-jar.c | 15 +++++++++++++++
+ libsoup/meson.build               |  5 ++++-
+ meson.build                       |  5 ++++-
+ tests/meson.build                 |  5 ++++-
+ 4 files changed, 27 insertions(+), 3 deletions(-)
+
+diff --git a/libsoup/cookies/soup-cookie-jar.c b/libsoup/cookies/soup-cookie-jar.c
+index bdb6697a..753c36b5 100644
+--- a/libsoup/cookies/soup-cookie-jar.c
++++ b/libsoup/cookies/soup-cookie-jar.c
+@@ -511,6 +511,7 @@ normalize_cookie_domain (const char *domain)
+ 	return domain;
+ }
+ 
++#ifdef HAVE_TLD
+ static gboolean
+ incoming_cookie_is_third_party (SoupCookieJar            *jar,
+ 				SoupCookie               *cookie,
+@@ -563,6 +564,16 @@ incoming_cookie_is_third_party (SoupCookieJar            *jar,
+ 
+         return retval;
+ }
++#else
++static gboolean
++incoming_cookie_is_third_party (SoupCookieJar            *jar,
++				SoupCookie               *cookie,
++				GUri                     *first_party,
++				SoupCookieJarAcceptPolicy policy)
++{
++	return TRUE;
++}
++#endif
+ 
+ static gboolean
+ string_contains_ctrlcode (const char *s)
+@@ -612,7 +623,11 @@ soup_cookie_jar_add_cookie_full (SoupCookieJar *jar, SoupCookie *cookie, GUri *u
+ 
+ 	/* Never accept cookies for public domains. */
+ 	if (!g_hostname_is_ip_address (soup_cookie_get_domain (cookie)) &&
++#ifdef HAVE_TLD
+ 	    soup_tld_domain_is_public_suffix (soup_cookie_get_domain (cookie))) {
++#else
++	    priv->accept_policy != SOUP_COOKIE_JAR_ACCEPT_ALWAYS){
++#endif
+ 		soup_cookie_free (cookie);
+ 		return;
+ 	}
+diff --git a/libsoup/meson.build b/libsoup/meson.build
+index d920b522..b889931d 100644
+--- a/libsoup/meson.build
++++ b/libsoup/meson.build
+@@ -87,11 +87,14 @@ soup_sources = [
+   'soup-session-feature.c',
+   'soup-socket-properties.c',
+   'soup-status.c',
+-  'soup-tld.c',
+   'soup-uri-utils.c',
+   'soup-version.c',
+ ]
+ 
++if libpsl_dep.found()
++  soup_sources += 'soup-tld.c'
++endif
++
+ soup_private_enum_headers = [
+   'soup-connection.h',
+ ]
+diff --git a/meson.build b/meson.build
+index f7c63389..50ca7b91 100644
+--- a/meson.build
++++ b/meson.build
+@@ -155,7 +155,10 @@ endif
+ 
+ libpsl_required_version = '>= 0.20'
+ libpsl_dep = dependency('libpsl', version : libpsl_required_version,
+-  fallback : ['libpsl', 'libpsl_dep'])
++  fallback : ['libpsl', 'libpsl_dep'], required : false)
++if libnghttp2_dep.found()
++  cdata.set('HAVE_TLD', true)
++endif
+ 
+ if cc.has_function('gmtime_r', prefix : '#include <time.h>', args : default_source_flag)
+     cdata.set('HAVE_GMTIME_R', '1')
+diff --git a/tests/meson.build b/tests/meson.build
+index 01a0c63f..cf24ef97 100644
+--- a/tests/meson.build
++++ b/tests/meson.build
+@@ -102,12 +102,15 @@ tests = [
+   },
+   {'name': 'streaming'},
+   {'name': 'timeout'},
+-  {'name': 'tld'},
+   {'name': 'uri-parsing'},
+   {'name': 'websocket',
+    'dependencies': [libz_dep]},
+ ]
+ 
++if libpsl_dep.found()
++  tests += [{'name': 'tld'}]
++endif
++
+ if brotlidec_dep.found()
+   tests += [{'name': 'brotli-decompressor'}]
+ 
+-- 
+2.41.0
+
+From e4ce620a7db4d2f1a581a8095fea32a182b353aa Mon Sep 17 00:00:00 2001
+From: osy <osy@turing.llc>
+Date: Mon, 11 Nov 2024 14:48:15 -0800
+Subject: [PATCH 2/2] build: make HTTP2 optional
+
+---
+ libsoup/meson.build                     | 13 ++++++++-----
+ libsoup/server/soup-server-connection.c |  4 ++++
+ libsoup/soup-connection.c               |  4 ++++
+ meson.build                             |  9 ++++++---
+ tests/meson.build                       |  7 +++++--
+ 5 files changed, 27 insertions(+), 10 deletions(-)
+
+diff --git a/libsoup/meson.build b/libsoup/meson.build
+index b889931d..f2f4a0d7 100644
+--- a/libsoup/meson.build
++++ b/libsoup/meson.build
+@@ -39,11 +39,7 @@ soup_sources = [
+   'http1/soup-message-io-data.c',
+   'http1/soup-message-io-source.c',
+ 
+-  'http2/soup-client-message-io-http2.c',
+-  'http2/soup-body-input-stream-http2.c',
+-
+   'server/http1/soup-server-message-io-http1.c',
+-  'server/http2/soup-server-message-io-http2.c',
+   'server/soup-auth-domain.c',
+   'server/soup-auth-domain-basic.c',
+   'server/soup-auth-domain-digest.c',
+@@ -70,7 +66,6 @@ soup_sources = [
+   'soup-form.c',
+   'soup-headers.c',
+   'soup-header-names.c',
+-  'soup-http2-utils.c',
+   'soup-init.c',
+   'soup-io-stream.c',
+   'soup-logger.c',
+@@ -95,6 +90,14 @@ if libpsl_dep.found()
+   soup_sources += 'soup-tld.c'
+ endif
+ 
++if libnghttp2_dep.found()
++  soup_sources += 'http2/soup-client-message-io-http2.c'
++  soup_sources += 'http2/soup-body-input-stream-http2.c'
++  soup_sources += 'server/http2/soup-server-message-io-http2.c'
++  soup_sources += 'soup-http2-utils.c'
++endif
++
++
+ soup_private_enum_headers = [
+   'soup-connection.h',
+ ]
+diff --git a/libsoup/server/soup-server-connection.c b/libsoup/server/soup-server-connection.c
+index cac4eaa7..02fdb497 100644
+--- a/libsoup/server/soup-server-connection.c
++++ b/libsoup/server/soup-server-connection.c
+@@ -395,10 +395,14 @@ soup_server_connection_connected (SoupServerConnection *conn)
+                                                                   conn);
+                 break;
+         case SOUP_HTTP_2_0:
++#ifdef WITH_HTTP2
+                 priv->io_data = soup_server_message_io_http2_new (conn,
+                                                                   g_steal_pointer (&priv->initial_msg),
+                                                                   (SoupMessageIOStartedFn)request_started_cb,
+                                                                   conn);
++#else
++                g_assert_not_reached();
++#endif
+                 break;
+         }
+         g_signal_emit (conn, signals[CONNECTED], 0);
+diff --git a/libsoup/soup-connection.c b/libsoup/soup-connection.c
+index 9100f8c9..fc28cd22 100644
+--- a/libsoup/soup-connection.c
++++ b/libsoup/soup-connection.c
+@@ -504,7 +504,11 @@ soup_connection_create_io_data (SoupConnection *conn)
+                 priv->io_data = soup_client_message_io_http1_new (conn);
+                 break;
+         case SOUP_HTTP_2_0:
++#ifdef WITH_HTTP2
+                 priv->io_data = soup_client_message_io_http2_new (conn);
++#else
++                g_assert_not_reached();
++#endif
+                 break;
+         }
+ }
+diff --git a/meson.build b/meson.build
+index 50ca7b91..1ec35873 100644
+--- a/meson.build
++++ b/meson.build
+@@ -112,9 +112,12 @@ glib_deps = [glib_dep, gmodule_dep, gobject_dep, gio_dep]
+ 
+ cdata = configuration_data()
+ 
+-libnghttp2_dep = dependency('libnghttp2')
+-if (libnghttp2_dep.version() == 'unknown' and (libnghttp2_dep.type_name() == 'internal' or cc.has_function('nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation', prefix : '#include <nghttp2/nghttp2.h>', dependencies : libnghttp2_dep))) or libnghttp2_dep.version().version_compare('>=1.50')
+-    cdata.set('HAVE_NGHTTP2_OPTION_SET_NO_RFC9113_LEADING_AND_TRAILING_WS_VALIDATION', '1')
++libnghttp2_dep = dependency('libnghttp2', required : false)
++if libnghttp2_dep.found()
++  cdata.set('WITH_HTTP2', true)
++  if (libnghttp2_dep.version() == 'unknown' and (libnghttp2_dep.type_name() == 'internal' or cc.has_function('nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation', prefix : '#include <nghttp2/nghttp2.h>', dependencies : libnghttp2_dep))) or libnghttp2_dep.version().version_compare('>=1.50')
++      cdata.set('HAVE_NGHTTP2_OPTION_SET_NO_RFC9113_LEADING_AND_TRAILING_WS_VALIDATION', '1')
++  endif
+ endif
+ 
+ sqlite_dep = dependency('sqlite3', required: false)
+diff --git a/tests/meson.build b/tests/meson.build
+index cf24ef97..6bd68868 100644
+--- a/tests/meson.build
++++ b/tests/meson.build
+@@ -78,8 +78,6 @@ tests = [
+   {'name': 'date'},
+   {'name': 'forms'},
+   {'name': 'header-parsing'},
+-  {'name': 'http2'},
+-  {'name': 'http2-body-stream'},
+   {'name': 'hsts'},
+   {'name': 'hsts-db'},
+   {'name': 'logger'},
+@@ -111,6 +109,11 @@ if libpsl_dep.found()
+   tests += [{'name': 'tld'}]
+ endif
+ 
++if libnghttp2_dep.found()
++  tests += [{'name': 'http2'}]
++  tests += [{'name': 'http2-body-stream'}]
++endif
++
+ if brotlidec_dep.found()
+   tests += [{'name': 'brotli-decompressor'}]
+ 
+-- 
+2.41.0
+

+ 0 - 135
patches/phodav-2.5.patch

@@ -1,135 +0,0 @@
-From c0d495a77c7934e982d280a33deaaa9f6595785e Mon Sep 17 00:00:00 2001
-From: osy <50960678+osy@users.noreply.github.com>
-Date: Sat, 5 Mar 2022 17:40:07 -0800
-Subject: [PATCH 1/4] method: fix compile on Darwin
-
-On Darwin systems, removexattr() is defined with 3 arguments.
----
- libphodav/phodav-method-proppatch.c | 4 ++++
- tests/meson.build                   | 2 +-
- 2 files changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/libphodav/phodav-method-proppatch.c b/libphodav/phodav-method-proppatch.c
-index 4cd8211..3421e32 100644
---- a/libphodav/phodav-method-proppatch.c
-+++ b/libphodav/phodav-method-proppatch.c
-@@ -59,7 +59,11 @@ set_attr (GFile *file, xmlNodePtr attrnode,
-         return SOUP_STATUS_FORBIDDEN;
-       gchar *path = g_file_get_path (file);
- #ifdef HAVE_SYS_XATTR_H
-+#ifdef __APPLE__
-+      removexattr (path, attrname, 0);
-+#else
-       removexattr (path, attrname);
-+#endif
- #else
-       g_debug ("cannot remove xattr from %s, not supported", path); /* FIXME? */
- #endif
-diff --git a/tests/meson.build b/tests/meson.build
-index aeb48e3..43e9a13 100644
---- a/tests/meson.build
-+++ b/tests/meson.build
-@@ -1,6 +1,6 @@
- tests_sources = []
- 
--if host_machine.system() != 'windows'
-+if host_machine.system() not in ['darwin', 'ios', 'windows']
-   tests_sources += 'virtual-dir.c'
- endif
- 
--- 
-2.32.0 (Apple Git-132)
-
-From 8060e63fb82baba60dee6f3360780c6e83d16472 Mon Sep 17 00:00:00 2001
-From: osy <50960678+osy@users.noreply.github.com>
-Date: Sat, 5 Mar 2022 17:41:18 -0800
-Subject: [PATCH 2/4] meson: fix build on unsupported --no-undefined
-
-Clang on Darwin systems do not support this flag.
----
- libphodav/meson.build | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/libphodav/meson.build b/libphodav/meson.build
-index 5443ce0..4ab6821 100644
---- a/libphodav/meson.build
-+++ b/libphodav/meson.build
-@@ -30,7 +30,10 @@ if not dependency('glib-2.0', version : '>= 2.51.2', required: false).found()
- endif
- 
- mapfile = 'libphodav.syms'
--vflag = '-Wl,--version-script,@0@/@1@'.format(meson.current_source_dir(), mapfile)
-+vflag = compiler.get_supported_link_arguments(
-+  '-Wl,--no-undefined',
-+  '-Wl,--version-script,@0@/@1@'.format(meson.current_source_dir(), mapfile)
-+)
- 
- libphodav = library(
-   'phodav-2.0',
-@@ -38,7 +41,7 @@ libphodav = library(
-   c_args : [ '-DG_LOG_DOMAIN="phodav"' ],
-   include_directories : incdir,
-   version: '0.0.0',
--  link_args : [ '-Wl,--no-undefined', vflag ],
-+  link_args : vflag,
-   link_depends : mapfile,
-   dependencies : deps,
-   install : true,
--- 
-2.32.0 (Apple Git-132)
-
-From 450361cefca48f6b8ca191a7024cad29beaa0825 Mon Sep 17 00:00:00 2001
-From: osy <50960678+osy@users.noreply.github.com>
-Date: Sat, 5 Mar 2022 17:49:26 -0800
-Subject: [PATCH 3/4] spice-webdavd: support macOS port
-
----
- bin/spice-webdavd.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/bin/spice-webdavd.c b/bin/spice-webdavd.c
-index ee713bd..b9453ff 100644
---- a/bin/spice-webdavd.c
-+++ b/bin/spice-webdavd.c
-@@ -655,7 +655,11 @@ run_service (ServiceData *service_data)
- 
-   loop = g_main_loop_new (NULL, TRUE);
- #ifdef G_OS_UNIX
-+#ifdef __APPLE__
-+  open_mux_path ("/dev/tty.org.spice-space.webdav.0");
-+#else
-   open_mux_path ("/dev/virtio-ports/org.spice-space.webdav.0");
-+#endif
- #else
-   open_mux_path ("\\\\.\\Global\\org.spice-space.webdav.0");
- #endif
--- 
-2.32.0 (Apple Git-132)
-
-From f5c7f192644d8f30817ab23a98425e3179a0021d Mon Sep 17 00:00:00 2001
-From: osy <50960678+osy@users.noreply.github.com>
-Date: Sat, 5 Mar 2022 23:40:27 -0800
-Subject: [PATCH 4/4] meson: link statically with libsoup and libxml
-
----
- meson.build | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/meson.build b/meson.build
-index b8ff125..7ab6da1 100644
---- a/meson.build
-+++ b/meson.build
-@@ -34,8 +34,8 @@ else
-   deps += dependency('gio-unix-2.0', version : '>= 2.44')
- endif
- 
--deps += dependency('libsoup-2.4', version : '>= 2.48.0')
--deps += dependency('libxml-2.0')
-+deps += dependency('libsoup-2.4', version : '>= 2.48.0', static : true)
-+deps += dependency('libxml-2.0', static : true)
- 
- d1 = dependency('avahi-gobject', required : get_option('avahi'))
- d2 = dependency('avahi-client', required : get_option('avahi'))
--- 
-2.32.0 (Apple Git-132)
-

+ 27 - 0
patches/phodav-3.0.patch

@@ -0,0 +1,27 @@
+From ddca2a3c7a5cabf19ae94e4a6482457cb5fa1b30 Mon Sep 17 00:00:00 2001
+From: osy <osy@turing.llc>
+Date: Tue, 12 Nov 2024 08:51:07 -0800
+Subject: [PATCH] meson: link statically with libsoup and libxml
+
+---
+ meson.build | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index ac84b94..c425839 100644
+--- a/meson.build
++++ b/meson.build
+@@ -34,8 +34,8 @@ else
+   deps += dependency('gio-unix-2.0', version : '>= 2.44')
+ endif
+ 
+-deps += dependency('libsoup-3.0', version : '>= 3.0.0')
+-deps += dependency('libxml-2.0')
++deps += dependency('libsoup-3.0', version : '>= 3.0.0', static : true)
++deps += dependency('libxml-2.0', static : true)
+ 
+ d1 = dependency('avahi-gobject', required : get_option('avahi'))
+ d2 = dependency('avahi-client', required : get_option('avahi'))
+-- 
+2.41.0
+

+ 6 - 6
patches/sources

@@ -9,7 +9,7 @@ ICONV_SRC="https://ftp.gnu.org/gnu/libiconv/libiconv-1.16.tar.gz"
 GETTEXT_SRC="https://ftp.gnu.org/gnu/gettext/gettext-0.22.5.tar.gz"
 PNG_SRC="https://ftp.osuosl.org/pub/blfs/conglomeration/libpng/libpng-1.6.37.tar.xz"
 JPEG_TURBO_SRC="https://ftp.osuosl.org/pub/blfs/conglomeration/libjpeg-turbo/libjpeg-turbo-1.5.3.tar.gz"
-GLIB_SRC="https://download.gnome.org/sources/glib/2.69/glib-2.69.0.tar.xz"
+GLIB_SRC="https://download.gnome.org/sources/glib/2.83/glib-2.83.0.tar.xz"
 GPG_ERROR_SRC="https://www.gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-1.38.tar.gz"
 GCRYPT_SRC="https://www.gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.8.4.tar.gz"
 PIXMAN_SRC="https://www.cairographics.org/releases/pixman-0.38.0.tar.gz"
@@ -21,19 +21,19 @@ ZSTD_SRC="https://github.com/facebook/zstd/releases/download/v1.5.2/zstd-1.5.2.t
 SPICE_PROTOCOL_SRC="https://www.spice-space.org/download/releases/spice-protocol-0.14.4.tar.xz"
 SPICE_SERVER_SRC="https://www.spice-space.org/download/releases/spice-server/spice-0.14.3.tar.bz2"
 USB_SRC="https://github.com/libusb/libusb/releases/download/v1.0.25/libusb-1.0.25.tar.bz2"
-USBREDIR_SRC="https://www.spice-space.org/download/usbredir/usbredir-0.13.0.tar.xz"
+USBREDIR_SRC="https://www.spice-space.org/download/usbredir/usbredir-0.14.0.tar.xz"
 SLIRP_SRC="https://gitlab.freedesktop.org/slirp/libslirp/-/archive/v4.7.0/libslirp-v4.7.0.tar.gz"
 QEMU_SRC="https://github.com/utmapp/qemu/releases/download/v9.1.0-utm/qemu-9.1.0-utm.tar.xz"
 
 # Source files for spice-client
-JSON_GLIB_SRC="https://download.gnome.org/sources/json-glib/1.6/json-glib-1.6.6.tar.xz"
+JSON_GLIB_SRC="https://download.gnome.org/sources/json-glib/1.10/json-glib-1.10.0.tar.xz"
 GST_SRC="https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.19.1.tar.xz"
 GST_BASE_SRC="https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.19.1.tar.xz"
 GST_GOOD_SRC="https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.19.1.tar.xz"
 XML2_SRC="http://xmlsoft.org/sources/libxml2-2.9.12.tar.gz"
-SOUP_SRC="https://download.gnome.org/sources/libsoup/2.74/libsoup-2.74.2.tar.xz"
-PHODAV_SRC="https://download.gnome.org/sources/phodav/2.5/phodav-2.5.tar.xz"
-SPICE_CLIENT_SRC="https://www.spice-space.org/download/gtk/spice-gtk-0.40.tar.xz"
+SOUP_SRC="https://download.gnome.org/sources/libsoup/3.6/libsoup-3.6.0.tar.xz"
+PHODAV_SRC="https://download.gnome.org/sources/phodav/3.0/phodav-3.0.tar.xz"
+SPICE_CLIENT_SRC="https://www.spice-space.org/download/gtk/spice-gtk-0.42.tar.xz"
 LIBUCONTEXT_REPO="https://github.com/utmapp/libucontext.git"
 LIBUCONTEXT_COMMIT="9b1d8f01a6e99166f9808c79966abe10786de8b6"
 

+ 14 - 548
patches/spice-gtk-0.40.patch → patches/spice-gtk-0.42.patch

@@ -1,134 +1,7 @@
-From 2f16f6d4b0d6dde0d1d518f61c01f5f972caa008 Mon Sep 17 00:00:00 2001
-From: osy <osy@turing.llc>
-Date: Fri, 4 Mar 2022 13:15:16 -0800
-Subject: [PATCH 1/8] meson: move cairo dependency to GTK build only
-
-Cairo is only used in SpiceDisplay which is part of the GTK client. If
-we are building the GLib only client, it should be optional.
----
- meson.build | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/meson.build b/meson.build
-index 11173fd..ecc9d6d 100644
---- a/meson.build
-+++ b/meson.build
-@@ -107,8 +107,8 @@ foreach dep, version : deps
- endforeach
- 
- # mandatory dependencies, without specific version requirement
--# TODO: specify minimum version for cairo, jpeg and zlib?
--deps = ['cairo', 'libjpeg', 'zlib', 'json-glib-1.0']
-+# TODO: specify minimum version for jpeg and zlib?
-+deps = ['libjpeg', 'zlib', 'json-glib-1.0']
- if host_machine.system() == 'windows'
-   deps += 'gio-windows-2.0'
- else
-@@ -149,6 +149,8 @@ d = dependency('gtk+-3.0', version : '>= @0@'.format(gtk_version_required),
- summary_info += {'gtk': d.found()}
- if d.found()
-   spice_gtk_deps += d
-+  # TODO: specify minimum version for cairo?
-+  spice_gtk_deps += dependency('cairo')
-   if host_machine.system() != 'windows'
-     spice_gtk_deps += dependency('epoxy')
-     spice_gtk_deps += dependency('x11')
--- 
-2.32.0 (Apple Git-132)
-
-From 312a1fc6cf4a8d839639dce411107537e1791045 Mon Sep 17 00:00:00 2001
-From: osy <osy@turing.llc>
-Date: Fri, 4 Mar 2022 15:52:48 -0800
-Subject: [PATCH 2/8] coroutine: add support for libucontext
-
-libucontext is a lightweight implementation of ucontext for platforms
-that do not have a built-in implementation. This allows us to use the
-same code to support libucontext as ucontext.
----
- meson.build        |  7 +++++++
- meson_options.txt  |  2 +-
- src/continuation.c | 12 +++++++++++-
- src/meson.build    |  2 +-
- 4 files changed, 20 insertions(+), 3 deletions(-)
-
-diff --git a/meson.build b/meson.build
-index ecc9d6d..29615b1 100644
---- a/meson.build
-+++ b/meson.build
-@@ -319,6 +319,13 @@ if spice_gtk_coroutine == 'ucontext'
-   endif
-   endif
- 
-+if spice_gtk_coroutine == 'libucontext'
-+  d = dependency('libucontext')
-+  spice_glib_deps += d
-+  spice_gtk_config_data.set('WITH_UCONTEXT', '1')
-+  spice_gtk_config_data.set('HAVE_LIBUCONTEXT', '1')
-+endif
-+
- if spice_gtk_coroutine == 'gthread'
-   spice_gtk_config_data.set('WITH_GTHREAD', '1')
- endif
-diff --git a/meson_options.txt b/meson_options.txt
-index 3cbc7c6..5acfc9a 100644
---- a/meson_options.txt
-+++ b/meson_options.txt
-@@ -45,7 +45,7 @@ option('usb-ids-path',
- option('coroutine',
-     type : 'combo',
-     value : 'auto',
--    choices : ['auto', 'ucontext', 'gthread', 'winfiber'],
-+    choices : ['auto', 'ucontext', 'libucontext', 'gthread', 'winfiber'],
-     description : 'Use ucontext or GThread for coroutines')
- 
- option('introspection',
-diff --git a/src/continuation.c b/src/continuation.c
-index 65527ac..400169a 100644
---- a/src/continuation.c
-+++ b/src/continuation.c
-@@ -25,11 +25,21 @@
- #endif
- 
- #include <errno.h>
--#include <ucontext.h>
- #include <glib.h>
- 
- #include "continuation.h"
- 
-+#ifdef HAVE_LIBUCONTEXT
-+#include <libucontext/libucontext.h>
-+#define ucontext_t libucontext_ucontext_t
-+#define getcontext libucontext_getcontext
-+#define setcontext libucontext_setcontext
-+#define swapcontext libucontext_swapcontext
-+#define makecontext libucontext_makecontext
-+#else
-+#include <ucontext.h>
-+#endif
-+
- /*
-  * va_args to makecontext() must be type 'int', so passing
-  * the pointer we need may require several int args. This
-diff --git a/src/meson.build b/src/meson.build
-index a9dfc57..961779f 100644
---- a/src/meson.build
-+++ b/src/meson.build
-@@ -146,7 +146,7 @@ endif
- 
- if spice_gtk_coroutine == 'gthread'
-   spice_client_glib_sources += 'coroutine_gthread.c'
--elif spice_gtk_coroutine == 'ucontext'
-+elif spice_gtk_coroutine in ['ucontext', 'libucontext']
-   spice_client_glib_sources += ['continuation.c',
-                                 'continuation.h',
-                                 'coroutine_ucontext.c']
--- 
-2.32.0 (Apple Git-132)
-
-From fb47817a4963a6e64d76bccb562cf5dbe2f628c1 Mon Sep 17 00:00:00 2001
+From 07ba2d801b4a03125dee3f9d5f4a13cad8d62008 Mon Sep 17 00:00:00 2001
 From: osy <osy@turing.llc>
 Date: Fri, 4 Mar 2022 16:35:26 -0800
-Subject: [PATCH 3/8] spice-util: support for non-default GMainContext
+Subject: [PATCH 1/2] spice-util: support for non-default GMainContext
 
 When spice-gtk is used in an application with its own GMainContext, the
 wrong context will be used leading to various issues.
@@ -387,12 +260,12 @@ index 421b4b0..e161c83 100644
  #define SPICE_DEBUG(fmt, ...)                                   \
      do {                                                        \
 -- 
-2.32.0 (Apple Git-132)
+2.41.0
 
-From a02df4084ff43c5796f1ead29ab9d67da48dff1e Mon Sep 17 00:00:00 2001
+From 92ac46d9328afa036e2e3aebf0f7218ba5b2910f Mon Sep 17 00:00:00 2001
 From: osy <osy@turing.llc>
 Date: Fri, 4 Mar 2022 16:44:20 -0800
-Subject: [PATCH 4/8] spice-gtk: user specified GMainContext for events
+Subject: [PATCH 2/2] spice-gtk: user specified GMainContext for events
 
 Following the previous commit, this replaces all GLib calls that
 implicitly uses the default main context with versions that can use the
@@ -747,7 +620,7 @@ index bb97ad7..8cc2dd1 100644
  
      return id;
 diff --git a/src/spice-channel.c b/src/spice-channel.c
-index d6199a5..d5070a9 100644
+index 3fd42c5..813923a 100644
 --- a/src/spice-channel.c
 +++ b/src/spice-channel.c
 @@ -744,9 +744,9 @@ void spice_msg_out_send(SpiceMsgOut *out)
@@ -763,7 +636,7 @@ index d6199a5..d5070a9 100644
      }
  
  end:
-@@ -2703,7 +2703,7 @@ cleanup:
+@@ -2748,7 +2748,7 @@ cleanup:
          c->event = SPICE_CHANNEL_ERROR_CONNECT;
      }
  
@@ -772,7 +645,7 @@ index d6199a5..d5070a9 100644
      /* Co-routine exits now - the SpiceChannel object may no longer exist,
         so don't do anything else now unless you like SEGVs */
      return NULL;
-@@ -2762,7 +2762,7 @@ static gboolean channel_connect(SpiceChannel *channel, gboolean tls)
+@@ -2807,7 +2807,7 @@ static gboolean channel_connect(SpiceChannel *channel, gboolean tls)
      g_object_ref(G_OBJECT(channel)); /* Unref'd when co-routine exits */
  
      /* we connect in idle, to let previous coroutine exit, if present */
@@ -781,7 +654,7 @@ index d6199a5..d5070a9 100644
  
      return true;
  }
-@@ -2828,7 +2828,7 @@ static void channel_reset(SpiceChannel *channel, gboolean migrating)
+@@ -2873,7 +2873,7 @@ static void channel_reset(SpiceChannel *channel, gboolean migrating)
  
      CHANNEL_DEBUG(channel, "channel reset");
      if (c->connect_delayed_id) {
@@ -790,7 +663,7 @@ index d6199a5..d5070a9 100644
          c->connect_delayed_id = 0;
      }
  
-@@ -2860,7 +2860,7 @@ static void channel_reset(SpiceChannel *channel, gboolean migrating)
+@@ -2905,7 +2905,7 @@ static void channel_reset(SpiceChannel *channel, gboolean migrating)
      g_queue_foreach(&c->xmit_queue, (GFunc)spice_msg_out_unref, NULL);
      g_queue_clear(&c->xmit_queue);
      if (c->xmit_queue_wakeup_id) {
@@ -922,7 +795,7 @@ index bb3c6cd..9d161ee 100644
      coroutine_yield(NULL);
  
 diff --git a/src/spice-widget.c b/src/spice-widget.c
-index 5f7c061..3e3fe05 100644
+index 6311115..19dff68 100644
 --- a/src/spice-widget.c
 +++ b/src/spice-widget.c
 @@ -55,6 +55,7 @@
@@ -1025,416 +898,9 @@ index e26b939..6054f3e 100644
          g_clear_object(&self->task);
      }
 -- 
-2.32.0 (Apple Git-132)
-
-From d24779edda0a889937131818b13e4f57a68a8169 Mon Sep 17 00:00:00 2001
-From: osy <osy@turing.llc>
-Date: Fri, 4 Mar 2022 21:23:51 -0800
-Subject: [PATCH 5/8] usb-device-cd: option to disable physical CD
-
-On iOS, there is no "sys/disk.h" header and cannot build the CD
-emulation code. This should not prevent the rest of USB redirection from
-working.
----
- meson.build         |  8 ++++++++
- meson_options.txt   |  4 ++++
- src/usb-device-cd.c | 36 +++++++++++++++++++++++++++++++++++-
- 3 files changed, 47 insertions(+), 1 deletion(-)
-
-diff --git a/meson.build b/meson.build
-index 29615b1..8c06666 100644
---- a/meson.build
-+++ b/meson.build
-@@ -228,11 +228,19 @@ if d1.found() and d2.found() and d3.found()
-     spice_glib_deps += [d1, d2, d3]
-     spice_gtk_config_data.set('USE_USBREDIR', '1')
-     spice_gtk_has_usbredir = true
-+    if get_option('physical-cd').allowed()
-+      spice_gtk_config_data.set('HAVE_PHYSICAL_CD', '1')
-+    endif
-   else
-     warning('USB redirection disabled on big endian machine as ' +
-             'usbredir only support little endian')
-   endif
- endif
-+summary_info += {'physical-cd': get_option('physical-cd')}
-+
-+if get_option('physical-cd').enabled() and not spice_gtk_has_usbredir
-+  error('Physical CD support cannot be enabled without USB redirection support!')
-+endif
- 
- d = dependency('libcap-ng', required : get_option('libcap-ng'))
- summary_info += {'libcap-ng': d.found()}
-diff --git a/meson_options.txt b/meson_options.txt
-index 5acfc9a..557ef6a 100644
---- a/meson_options.txt
-+++ b/meson_options.txt
-@@ -19,6 +19,10 @@ option('usbredir',
-     type : 'feature',
-     description : 'Enable usbredir support')
- 
-+option('physical-cd',
-+    type : 'feature',
-+    description : 'Enable support of physical CD drives')
-+
- option('libcap-ng',
-        type : 'feature',
-        description: 'Enable libcap-ng support for the USB acl helper')
-diff --git a/src/usb-device-cd.c b/src/usb-device-cd.c
-index 2bfeb3a..41d2e13 100644
---- a/src/usb-device-cd.c
-+++ b/src/usb-device-cd.c
-@@ -32,11 +32,14 @@
- 
- #ifdef G_OS_WIN32
- #include <windows.h>
-+#ifdef HAVE_PHYSICAL_CD
- #include <ntddcdrm.h>
- #include <ntddmmc.h>
-+#endif // HAVE_PHYSICAL_CD
- #else
- #include <sys/stat.h>
- #include <sys/ioctl.h>
-+#ifdef HAVE_PHYSICAL_CD
- #ifdef __APPLE__
- #include <sys/disk.h>
- #include <fcntl.h>
-@@ -44,6 +47,7 @@
- #include <linux/fs.h>
- #include <linux/cdrom.h>
- #endif
-+#endif // HAVE_PHYSICAL_CD
- #endif
- 
- #include "usb-emulation.h"
-@@ -120,6 +124,7 @@ static int cd_device_open_stream(SpiceCdLU *unit, const char *filename)
-     }
- 
-     struct stat file_stat = { 0 };
-+#ifdef HAVE_PHYSICAL_CD
-     if (fstat(fd, &file_stat) || file_stat.st_size == 0) {
-         file_stat.st_size = 0;
-         unit->device = 1;
-@@ -138,6 +143,12 @@ static int cd_device_open_stream(SpiceCdLU *unit, const char *filename)
-         }
- #endif
-     }
-+#else // HAVE_PHYSICAL_CD
-+    if (fstat(fd, &file_stat) != 0) {
-+        SPICE_DEBUG("%s: can't run stat on %s", __FUNCTION__, unit->filename);
-+        return -1;
-+    }
-+#endif
-     unit->size = file_stat.st_size;
-     close(fd);
-     if (unit->size) {
-@@ -153,6 +164,8 @@ static int cd_device_open_stream(SpiceCdLU *unit, const char *filename)
-     return 0;
- }
- 
-+#if defined HAVE_PHYSICAL_CD
-+
- static int cd_device_load(SpiceCdLU *unit, gboolean load)
- {
-     int error;
-@@ -214,7 +227,11 @@ static int cd_device_check(SpiceCdLU *unit)
-     return error;
- }
- 
--#else
-+#endif // HAVE_PHYSICAL_CD
-+
-+#else // G_OS_WIN32
-+
-+#ifdef HAVE_PHYSICAL_CD
- 
- static gboolean is_device_name(const char *filename)
- {
-@@ -261,6 +278,8 @@ static gboolean check_device(HANDLE h)
-                            &ret, NULL);
- }
- 
-+#endif // HAVE_PHYSICAL_CD
-+
- static int cd_device_open_stream(SpiceCdLU *unit, const char *filename)
- {
-     HANDLE h;
-@@ -275,8 +294,10 @@ static int cd_device_open_stream(SpiceCdLU *unit, const char *filename)
-     }
-     if (!filename) {
-         // reopening the stream on existing file name
-+#if defined HAVE_PHYSICAL_CD
-     } else if (is_device_name(filename)) {
-         unit->filename = g_strdup_printf("\\\\.\\%s", filename);
-+#endif
-     } else {
-         unit->filename = g_strdup(filename);
-     }
-@@ -287,6 +308,7 @@ static int cd_device_open_stream(SpiceCdLU *unit, const char *filename)
-     }
- 
-     LARGE_INTEGER size = { 0 };
-+#if defined HAVE_PHYSICAL_CD
-     if (!GetFileSizeEx(h, &size)) {
-         uint64_t buffer[256];
-         uint32_t res;
-@@ -304,6 +326,12 @@ static int cd_device_open_stream(SpiceCdLU *unit, const char *filename)
-                 __FUNCTION__, unit->filename, res);
-         }
-     }
-+#else
-+    if (!GetFileSizeEx(h, &size)) {
-+        SPICE_DEBUG("%s: can't get file size for %s", __FUNCTION__, unit->filename);
-+        return -1;
-+    }
-+#endif
-     unit->size = size.QuadPart;
-     CloseHandle(h);
-     if (unit->size) {
-@@ -318,6 +346,8 @@ static int cd_device_open_stream(SpiceCdLU *unit, const char *filename)
-     return 0;
- }
- 
-+#ifdef HAVE_PHYSICAL_CD
-+
- static int cd_device_load(SpiceCdLU *unit, gboolean load)
- {
-     int error = 0;
-@@ -363,6 +393,8 @@ static int cd_device_check(SpiceCdLU *unit)
-     return error;
- }
- 
-+#endif // HAVE_PHYSICAL_CD
-+
- #endif
- 
- static gboolean open_stream(SpiceCdLU *unit, const char *filename)
-@@ -380,6 +412,7 @@ static void close_stream(SpiceCdLU *unit)
- static gboolean load_lun(UsbCd *d, int unit, gboolean load)
- {
-     gboolean b = TRUE;
-+#ifdef HAVE_PHYSICAL_CD
-     if (load && d->units[unit].device) {
-         // there is one possible problem in case our backend is the
-         // local CD device and it is ejected
-@@ -389,6 +422,7 @@ static gboolean load_lun(UsbCd *d, int unit, gboolean load)
-             return FALSE;
-         }
-     }
-+#endif
- 
-     if (load) {
-         CdScsiMediaParameters media_params = { 0 };
--- 
-2.32.0 (Apple Git-132)
-
-From 7b572d38a2d4a32ecdd683cc4672abd00dcc07ff Mon Sep 17 00:00:00 2001
-From: osy <osy@turing.llc>
-Date: Sun, 6 Mar 2022 18:49:34 -0800
-Subject: [PATCH 6/8] gitlab-ci: test disable physical cd
-
----
- .gitlab-ci.yml | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
-index 3d4f533..cdd6575 100644
---- a/.gitlab-ci.yml
-+++ b/.gitlab-ci.yml
-@@ -36,7 +36,7 @@ fedora:
-     - ninja -C build-spice-protocol install
- 
-   script:
--    - meson --buildtype=release build-default --werror
-+    - meson --buildtype=release build-default --werror -Dphysical-cd=disabled
-     # Meson does not update submodules recursively
-     - git submodule update --init --recursive
-     # this fix an issue with Meson dist
-@@ -68,6 +68,6 @@ windows:
-   script:
-     - cd $CI_PROJECT_DIR
-     - mkdir build-win64 && cd build-win64
--    - mingw64-meson --buildtype=release -Dgtk_doc=disabled --werror
-+    - mingw64-meson --buildtype=release -Dgtk_doc=disabled --werror -Dphysical-cd=disabled
-     - ninja install
-     - (cd tests && DISPLAY= WINEPATH=/usr/x86_64-w64-mingw32/sys-root/mingw/bin wine test-coroutine.exe)
--- 
-2.32.0 (Apple Git-132)
-
-From 6069f4abaf26dadb2159ec67e7b362e2485d3652 Mon Sep 17 00:00:00 2001
-From: osy <osy@turing.llc>
-Date: Sun, 6 Mar 2022 18:55:14 -0800
-Subject: [PATCH 7/8] fix windows
-
----
- src/usb-device-cd.c | 6 ++----
- 1 file changed, 2 insertions(+), 4 deletions(-)
-
-diff --git a/src/usb-device-cd.c b/src/usb-device-cd.c
-index 41d2e13..d0cac30 100644
---- a/src/usb-device-cd.c
-+++ b/src/usb-device-cd.c
-@@ -231,8 +231,6 @@ static int cd_device_check(SpiceCdLU *unit)
- 
- #else // G_OS_WIN32
- 
--#ifdef HAVE_PHYSICAL_CD
--
- static gboolean is_device_name(const char *filename)
- {
-     return g_ascii_isalpha(filename[0]) && filename[1] == ':' &&
-@@ -253,6 +251,8 @@ static HANDLE open_file(const char *filename)
-     return h;
- }
- 
-+#ifdef HAVE_PHYSICAL_CD
-+
- static uint32_t ioctl_out(HANDLE h, uint32_t code, void *out_buffer, uint32_t out_size)
- {
-     uint32_t error;
-@@ -294,10 +294,8 @@ static int cd_device_open_stream(SpiceCdLU *unit, const char *filename)
-     }
-     if (!filename) {
-         // reopening the stream on existing file name
--#if defined HAVE_PHYSICAL_CD
-     } else if (is_device_name(filename)) {
-         unit->filename = g_strdup_printf("\\\\.\\%s", filename);
--#endif
-     } else {
-         unit->filename = g_strdup(filename);
-     }
--- 
-2.32.0 (Apple Git-132)
-
-From 394ec4a8d5f1c4df2c21c335a64627ebe31e03b1 Mon Sep 17 00:00:00 2001
-From: osy <osy@turing.llc>
-Date: Fri, 20 May 2022 08:53:53 -0700
-Subject: [PATCH 8/8] usb-backend: remove incorrect logic for detecting root
- hub
-
-There are valid devices (on Darwin) with address 0x1 that were ignored.
----
- src/usb-backend.c | 4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
-
-diff --git a/src/usb-backend.c b/src/usb-backend.c
-index 930ae4e..7c2df7f 100644
---- a/src/usb-backend.c
-+++ b/src/usb-backend.c
-@@ -121,9 +121,7 @@ static gboolean fill_usb_info(SpiceUsbDevice *dev)
-     UsbDeviceInformation *info = &dev->device_info;
-     get_usb_device_info_from_libusb_device(info, dev->libusb_device);
- 
--    if (info->address == 0xff || /* root hub (HCD) */
--        info->address <= 1 || /* root hub or bad address */
--        (info->class == LIBUSB_CLASS_HUB) /*hub*/) {
-+    if (info->class == LIBUSB_CLASS_HUB) /*hub*/ {
-         return FALSE;
-     }
-     return TRUE;
--- 
-2.32.0 (Apple Git-132)
-
-From b3eb04485cf4553b0e588a7ca78f7377e1c4f35e Mon Sep 17 00:00:00 2001
-From: Eli Schwartz <eschwartz93@gmail.com>
-Date: Mon, 27 Jun 2022 01:48:02 -0400
-Subject: [PATCH] fix invalid use of subprojects
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-The keycodemapdb Meson subproject provides a program and a source input.
-Since it is a subproject, Meson wants to sandbox that and requires it to
-be explicitly exported. But this never happened -- instead, we manually
-poked at files using the actual string path "subprojects/......"
-
-This was always a Meson sandbox violation, but Meson 0.63.0 started
-noticing it and erroring out.
-
-Instead, do the right thing. Update the subproject to a version that has
-a meson.build with actually meaningful contents -- namely, a files
-variable and a found program. Then use these in order to run the needed
-custom_target.
-
-In the process, it is also necessary to correct the argument ordering
-when running keymap-gen.
-
-Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
----
- meson.build              | 7 ++++---
- src/meson.build          | 2 +-
- subprojects/keycodemapdb | 2 +-
- 3 files changed, 6 insertions(+), 5 deletions(-)
-
-diff --git a/meson.build b/meson.build
-index dc7b4272..00aff30e 100644
---- a/meson.build
-+++ b/meson.build
-@@ -49,9 +49,10 @@ spice_gtk_config_data.merge_from(spice_common.get_variable('spice_common_config_
- spice_glib_deps += spice_common.get_variable('spice_common_client_dep')
- spice_protocol_version = spice_common.get_variable('spice_protocol_version')
- 
--subproject('keycodemapdb')
--keymapgen = files('subprojects/keycodemapdb/tools/keymap-gen')
--keymapcsv = files('subprojects/keycodemapdb/data/keymaps.csv')
-+keycodemapdb = subproject('keycodemapdb')
-+
-+keymapgen = find_program('keymap-gen')
-+keymapcsv = keycodemapdb.get_variable('keymaps_csv')
- 
- #
- # check for system headers
-diff --git a/src/meson.build b/src/meson.build
-index 961779fc..32574e8e 100644
---- a/src/meson.build
-+++ b/src/meson.build
-@@ -312,7 +312,7 @@ if spice_gtk_has_gtk
-   foreach keymap : keymaps
-     varname = 'keymap_@0@2xtkbd'.format(keymap)
-     target = 'vncdisplay@0@.h'.format(varname)
--    cmd = [python, keymapgen, '--lang', 'glib2', '--varname', varname, 'code-map', keymapcsv, keymap, 'xtkbd']
-+    cmd = [python, keymapgen, 'code-map', '--lang', 'glib2', '--varname', varname, keymapcsv, keymap, 'xtkbd']
-     spice_client_gtk_sources += custom_target(target,
-                                               output : target,
-                                               capture : true,
--- 
-GitLab
-
-From e15649b83a78f89f57205927022115536d2c1698 Mon Sep 17 00:00:00 2001
-From: Eli Schwartz <eschwartz93@gmail.com>
-Date: Tue, 21 Jun 2022 20:18:22 -0400
-Subject: [PATCH] make the meson.build stub a bit more well-rounded by
- exporting files
-
-Provide variables for:
-- the found program keymap-gen
-- the CSV mapping table
-
-and for enhanced convenience, override keymap-gen
-
-This allows grabbing the variables from another Meson project without
-futzing with submodule paths, something that Meson doesn't really
-encourage.
----
- meson.build | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/subprojects/keycodemapdb/meson.build b/subprojects/keycodemapdb/meson.build
-index eb9416b..6d263aa 100644
---- a/subprojects/keycodemapdb/meson.build
-+++ b/subprojects/keycodemapdb/meson.build
-@@ -1 +1,6 @@
--project('keycodemapdb')
-+project('keycodemapdb', meson_version: '>=0.46.0')
-+
-+keymap_gen = find_program('tools/keymap-gen')
-+meson.override_find_program('keymap-gen', keymap_gen)
-+
-+keymaps_csv = files('data/keymaps.csv')
--- 
-GitLab
+2.41.0
 
-From d5dc89146697d075178fa916253e2a69a25964b8 Mon Sep 17 00:00:00 2001
+From f648e0730b8ddbb03f2f9e45c121a5bbcc3ba00f Mon Sep 17 00:00:00 2001
 From: osy <osy@turing.llc>
 Date: Sun, 6 Aug 2023 01:11:31 -0700
 Subject: [PATCH] meson: disable version script
@@ -1445,7 +911,7 @@ Fails to build on Xcode 15
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/src/meson.build b/src/meson.build
-index 961779f..5ef1e0d 100644
+index daff1aa..61e60fa 100644
 --- a/src/meson.build
 +++ b/src/meson.build
 @@ -205,7 +205,7 @@ spice_client_glib_lib = library('spice-client-glib-2.0', spice_client_glib_sourc

+ 5 - 3
scripts/build_dependencies.sh

@@ -208,8 +208,10 @@ generate_meson_cross() {
     echo "[built-in options]" >> $cross
     echo "c_args = [${CFLAGS:+$(meson_quote $CFLAGS)}]" >> $cross
     echo "cpp_args = [${CXXFLAGS:+$(meson_quote $CXXFLAGS)}]" >> $cross
+    echo "objc_args = [${CFLAGS:+$(meson_quote $CFLAGS)}]" >> $cross
     echo "c_link_args = [${LDFLAGS:+$(meson_quote $LDFLAGS)}]" >> $cross
     echo "cpp_link_args = [${LDFLAGS:+$(meson_quote $LDFLAGS)}]" >> $cross
+    echo "objc_link_args = [${LDFLAGS:+$(meson_quote $LDFLAGS)}]" >> $cross
     echo "[binaries]" >> $cross
     echo "c = [$(meson_quote $CC)]" >> $cross
     echo "cpp = [$(meson_quote $CXX)]" >> $cross
@@ -464,7 +466,7 @@ build_qemu_dependencies () {
     build $GETTEXT_SRC --disable-java
     build $PNG_SRC
     build $JPEG_TURBO_SRC
-    meson_build $GLIB_SRC -Dtests=false
+    meson_build $GLIB_SRC -Dtests=false -Ddtrace=disabled
     build $GPG_ERROR_SRC
     build $GCRYPT_SRC
     build $PIXMAN_SRC
@@ -499,9 +501,9 @@ build_spice_client () {
     meson_build $LIBUCONTEXT_REPO -Ddefault_library=static -Dfreestanding=true
     meson_build $JSON_GLIB_SRC -Dintrospection=disabled
     build $XML2_SRC --enable-shared=no --without-python
-    meson_build $SOUP_SRC --default-library static -Dsysprof=disabled -Dtls_check=false -Dintrospection=disabled
+    meson_build $SOUP_SRC -Dsysprof=disabled -Dtls_check=false -Dintrospection=disabled
     meson_build $PHODAV_SRC
-    meson_build $SPICE_CLIENT_SRC -Dcoroutine=libucontext -Dphysical-cd=disabled
+    meson_build $SPICE_CLIENT_SRC -Dcoroutine=libucontext
 }
 
 fixup () {