Domanda

Ho incontrato alcuni bug in uno dei boost componenti che sto usando.Dopo aver analizzato il problema un po', ho scoperto che non ero l'unico, e l'autore aveva già rilasciato un fix che è disponibile per il boost trunk SVN.

Quale sarebbe il migliore approccio se volevo aggiornare solo questo componente e il riutilizzo di tutte le librerie che sono già costruito?Il componente non è solo nell'intestazione.

  • Compilatore:MSVC 9 con SP1, TR1
  • OS:Vista
  • Boost:1.39 da BoostPro computing
  • buggy componente: Boost Onda
  • bug:condizioni di gara.Il bug è stato risolto nel maggio di quest'anno, ma non hanno incluso in ogni versione, per quanto posso dire.

Quello che ho fatto finora:

  • svn checkout dell'onda subdir
  • sostituito locale subdir
  • ora sto cercando un modo per specificare che voglio costruire solo onda

Io sono un po ' stanco di ricostruzione dell'intera boost lib.Non so se il tronco è pronto per la produzione ora.

È stato utile?

Soluzione

Ecco cosa ho fatto io:

  1. Prima ho controllato la versione del wave lib dove il problema è stato risolto (53230).Dopo diffing a mia copia locale, ho trovato le seguenti modifiche:

    - wave è il riutilizzo di una spinta.iteratore di attuazione, invece di garantire la propria

    - il flex_string attuazione è stata aggiornata

    - un contatore di ref è stata fatta atomica.Questo dovrebbe essere il bugfix

  2. Poi ho semplicemente sostituito il mio boost/onda dir con quello da SVN.Ho eseguito il bootstrap.bat (se si utilizza BoostPro si dovrà ottenere questo da la spinta fonti zip) e poi mi sono imbattuto bjam:

    bjam --build-directory=creazione di un set di strumenti=msvc variante=debug|release link=statico filettatura=multi runtime-link=condivisi --con-wave

    Aggiungendo-con-onda sarà solo costruire onda e le sue dipendenze.

  3. A questo punto mi sono errori di compilazione:sembra che lo Spirito è stato anche aggiornato.Ho scaricato Spirito (53252) da SVN e ristampato il bjam comando.

    La libreria di costruire in modo pulito e ho copiato le due librerie per il mio boost cartella lib.

Dopo aver fatto questi passaggi, ho ricompilato il mio progetto e il fragore errori erano andati.

Altri suggerimenti

Approccio migliore:costruire una patch diffing cambiamenti nel repository (ad es.controllando una parte del repository e l'utilizzo di svn diff), poi applicare la patch per il file nel vostro Spinta di installazione utilizzando patch (Unix strumento).

Questo potrebbe richiedere un Unix-like, la console di Windows (ad es.Cygwin).In alternativa, è possibile sfruttare Windows client SVN come TortoiseSVN, ma non sono sicuro che questo permette la patch file al di fuori del controllo di versione.

Stai parlando di un header di libreria?Se non, è necessario anche per ricostruire quella parte della tua libreria Boost e purtroppo non credo che questo è del tutto compatibile con la Spinta installer da BoostPro.

Beh, è possibile controllare i log e vedere l'esatto numero di revisione che il problema è stato risolto, diff solo quello di revisione e applicare manualmente la patch.

Non è consigliabile che è aggiornata solo una componente, come aumentare pesantemente riutilizza la stessa, quindi se l'interfaccia cambia devi iniziare a ricevere tutti i tipi di strani comportamenti.Forse se si specificare i componenti e i bug ci potrebbe aiutare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top