Browse Source

build: updated SPICE dependencies

pull/6825/head
osy 9 months ago
parent
commit
38521a32e7
  1. 54
      UTM.xcodeproj/project.pbxproj
  2. 114
      patches/libsoup-2.74.2.patch
  3. 255
      patches/libsoup-3.6.0.patch
  4. 135
      patches/phodav-2.5.patch
  5. 27
      patches/phodav-3.0.patch
  6. 12
      patches/sources
  7. 562
      patches/spice-gtk-0.42.patch
  8. 8
      scripts/build_dependencies.sh

54
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 */,

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

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

12
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"

562
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

8
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 () {

Loading…
Cancel
Save