microsoft / microsoft/libHttpClient

Consumer-side fallout from #965 (WSC): unconditional Linux deps, missing Apple toggle, silent submodule failures

Aperta
#989 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Lingua principale
C++
Stelle
295
Fork
144
Merge medio
2g 19h
PR unite (30g)
2

Descrizione

Tracking issue for consumer-side fallout from #965 (WebSocket Compression support). Even with compression turned off, consumers must take on new dependencies and submodules. Filing here so the work can be scoped/split.

Gaps identified
  • (fixed by companion PR) Linux CMakeLists.txt:84-86 adds websocketpp_websocket.cpp/.h to LINUX_SOURCE_FILES unconditionally. Consumers building with HC_NOWEBSOCKETS still compile the TU and require External/asio + External/websocketpp submodules to be initialized.
  • (fixed by companion PR) Build/libHttpClient.Linux/install_dependencies.bash installs zlib1g / zlib1g-dev unconditionally. Should honor HC_NOZLIB and HC_NOWEBSOCKETS.
  • Apple has no HC_ENABLE_WEBSOCKET_COMPRESSION toggle. The macro is hard-coded =1 in 4 places in Build/libHttpClient.Apple.C/libHttpClient.xcodeproj/project.pbxproj (iOS/macOS Debug/Release). Other HC_* knobs are exposed as build settings; this one should follow suit.
  • Win32 / GDK silent feature loss when boost-wintls submodule is missing. All WSC-related per-file ClCompile entries in Win32.Shared.vcxitems / GDK.Shared.vcxitems are guarded with Exists('$(HCRoot)\External\boost-wintls\include\wintls.hpp') AND HCEnableWebSocketCompression == 'true'. A consumer who forgets git submodule update --init --recursive gets a working build that silently lacks compression. Suggest emitting an MSBuild <Error> (or at least <Warning>) when HCEnableWebSocketCompression=true and the submodule file is absent.
  • %(PreprocessorDefinitions) inheritance bug sweep. #988 fixes one instance (ASIO_DISABLE_SERIAL_PORT was dropped on the per-file websocketpp_websocket.cpp overrides because shared-items %(PreprocessorDefinitions) doesn't inherit from the consuming project's ItemDefinitionGroup). The same pattern may exist for other per-file overrides added in #965 and should be audited.
Why "turn it off" doesn't free consumers
Platform Issue
Linux websocketpp_websocket.cpp is in the source list unconditionally; External/asio + External/websocketpp are in COMMON_INCLUDE_DIRS unconditionally; install_dependencies.bash installs zlib unconditionally.
Win32/GDK New External/boost-wintls submodule is required for WSC; missing submodule silently disables the feature.
Apple No off switch at all.
Companion PR

A companion PR addresses the first two checklist items. Filing the others here because they involve broader design decisions (Apple build settings; MSBuild error emission; per-file-defines audit) that may warrant author input.

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia suddividendo il lavoro rimanente tra CMakeLists.txt, install_dependencies.bash, l’Apple project.pbxproj, Win32.Shared.vcxitems, GDK.Shared.vcxitems e le definizioni del preprocessore per file di #988. Esamina prima le modifiche complementari esistenti e le protezioni di build elencate. Il lavoro è completato quando le build con la compressione disattivata evitano dipendenze non necessarie, Apple espone l’interruttore, vengono segnalati i sottomoduli Win32/GDK mancanti e l’audit degli override è completo.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
cmake, cpp, git, shell
Ambito
build-system, devtools
Tipo di issue
Bug
Difficoltà
5/5
Tempo stimato
Più di una settimana
Stato di attività
Tranquilla
Chiarezza
Da chiarire
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.