From 38521a32e7c0114579ebdbb77d09cc8694b17c88 Mon Sep 17 00:00:00 2001 From: osy <50960678+osy@users.noreply.github.com> Date: Wed, 13 Nov 2024 16:19:45 -0800 Subject: [PATCH] build: updated SPICE dependencies --- UTM.xcodeproj/project.pbxproj | 54 +- patches/libsoup-2.74.2.patch | 114 ---- patches/libsoup-3.6.0.patch | 255 ++++++++ patches/phodav-2.5.patch | 135 ----- patches/phodav-3.0.patch | 27 + patches/sources | 12 +- ...ce-gtk-0.40.patch => spice-gtk-0.42.patch} | 562 +----------------- scripts/build_dependencies.sh | 8 +- 8 files changed, 343 insertions(+), 824 deletions(-) delete mode 100644 patches/libsoup-2.74.2.patch create mode 100644 patches/libsoup-3.6.0.patch delete mode 100644 patches/phodav-2.5.patch create mode 100644 patches/phodav-3.0.patch rename patches/{spice-gtk-0.40.patch => spice-gtk-0.42.patch} (65%) diff --git a/UTM.xcodeproj/project.pbxproj b/UTM.xcodeproj/project.pbxproj index 5f2e09525..75b685157 100644 --- a/UTM.xcodeproj/project.pbxproj +++ b/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 = ""; }; CE056CA4242454100004B68A /* VMDisplayMetalViewController+Touch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "VMDisplayMetalViewController+Touch.h"; sourceTree = ""; }; CE056CA5242454100004B68A /* VMDisplayMetalViewController+Touch.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "VMDisplayMetalViewController+Touch.m"; sourceTree = ""; }; - 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 = ""; }; + 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 = ""; }; CE059DC3243BFA3200338317 /* UTMLegacyQemuConfiguration+Sharing.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "UTMLegacyQemuConfiguration+Sharing.h"; sourceTree = ""; }; CE059DC4243BFA3200338317 /* UTMLegacyQemuConfiguration+Sharing.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "UTMLegacyQemuConfiguration+Sharing.m"; sourceTree = ""; }; CE059DC6243E9E3400338317 /* UTMLocationManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UTMLocationManager.h; sourceTree = ""; }; @@ -2015,6 +2027,7 @@ CECF02562B706ADD00409FC0 /* UTMRemoteConnectInterface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UTMRemoteConnectInterface.h; sourceTree = ""; }; CECF02572B70909900409FC0 /* Info-Remote.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-Remote.plist"; sourceTree = ""; }; CED234EC254796E500ED0A57 /* NumberTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NumberTextField.swift; sourceTree = ""; }; + 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 = ""; }; CED779E42C78C82A00EB82AE /* UTMTips.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UTMTips.swift; sourceTree = ""; }; CED779E92C7938D500EB82AE /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Localizable.strings; sourceTree = ""; }; CED814E824C79F070042F0F1 /* VMConfigDriveCreateView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VMConfigDriveCreateView.swift; sourceTree = ""; }; @@ -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 */, diff --git a/patches/libsoup-2.74.2.patch b/patches/libsoup-2.74.2.patch deleted file mode 100644 index dae2f76ea..000000000 --- a/patches/libsoup-2.74.2.patch +++ /dev/null @@ -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 ', 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) - diff --git a/patches/libsoup-3.6.0.patch b/patches/libsoup-3.6.0.patch new file mode 100644 index 000000000..3a3858a41 --- /dev/null +++ b/patches/libsoup-3.6.0.patch @@ -0,0 +1,255 @@ +From 95102597efaddede487bd03c191fa0a08b70e3b6 Mon Sep 17 00:00:00 2001 +From: osy +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 ', 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 +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 ', 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 ', 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 + diff --git a/patches/phodav-2.5.patch b/patches/phodav-2.5.patch deleted file mode 100644 index 460a35399..000000000 --- a/patches/phodav-2.5.patch +++ /dev/null @@ -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) - diff --git a/patches/phodav-3.0.patch b/patches/phodav-3.0.patch new file mode 100644 index 000000000..ad9627ede --- /dev/null +++ b/patches/phodav-3.0.patch @@ -0,0 +1,27 @@ +From ddca2a3c7a5cabf19ae94e4a6482457cb5fa1b30 Mon Sep 17 00:00:00 2001 +From: osy +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 + diff --git a/patches/sources b/patches/sources index 69f89f75d..9497c75a7 100644 --- a/patches/sources +++ b/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" diff --git a/patches/spice-gtk-0.40.patch b/patches/spice-gtk-0.42.patch similarity index 65% rename from patches/spice-gtk-0.40.patch rename to patches/spice-gtk-0.42.patch index a38ecbfad..d5997f285 100644 --- a/patches/spice-gtk-0.40.patch +++ b/patches/spice-gtk-0.42.patch @@ -1,134 +1,7 @@ -From 2f16f6d4b0d6dde0d1d518f61c01f5f972caa008 Mon Sep 17 00:00:00 2001 -From: osy -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 -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 --#include - #include - - #include "continuation.h" - -+#ifdef HAVE_LIBUCONTEXT -+#include -+#define ucontext_t libucontext_ucontext_t -+#define getcontext libucontext_getcontext -+#define setcontext libucontext_setcontext -+#define swapcontext libucontext_swapcontext -+#define makecontext libucontext_makecontext -+#else -+#include -+#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 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 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 -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 -+#ifdef HAVE_PHYSICAL_CD - #include - #include -+#endif // HAVE_PHYSICAL_CD - #else - #include - #include -+#ifdef HAVE_PHYSICAL_CD - #ifdef __APPLE__ - #include - #include -@@ -44,6 +47,7 @@ - #include - #include - #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 -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 -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 -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 -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 ---- - 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 -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 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 diff --git a/scripts/build_dependencies.sh b/scripts/build_dependencies.sh index 6732e6885..01b96eda7 100755 --- a/scripts/build_dependencies.sh +++ b/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 () {