Обновление Boost Wave из SVN - PullRequest
       16

Обновление Boost Wave из SVN

2 голосов
/ 22 августа 2009

Я столкнулся с некоторыми ошибками в одном из компонентов буста, который я использую. Немного проанализировав проблему, я обнаружил, что я был не единственным, и автор уже выпустил исправление, которое доступно в улучшенном стволе SVN.

Что было бы лучшим подходом, если бы я хотел обновить только этот компонент и повторно использовать уже созданные библиотеки? Компонент не только заголовок.

  • Компилятор: MSVC 9 с SP1, TR1
  • ОС: Vista
  • Повышение: 1,39 от вычислений BoostPro
  • компонент с ошибками: Boost Wave
  • ошибка: условия гонки. Ошибка была исправлена ​​в мае этого года, но, насколько я могу судить, они не включили ее в какой-либо выпуск.

Что я сделал до сих пор:

  • svn извлечение волнового субдиректора
  • заменен локальный подкаталог
  • сейчас я ищу способ указать, что я хочу построить просто волна

Я немного устал от перестройки всей библиотеки надстроек. Я не знаю, готов ли багажник к производству прямо сейчас.

Ответы [ 3 ]

2 голосов
/ 22 августа 2009

Вот что я в итоге сделал:

  1. Сначала я проверил версию волны lib, в которой проблема была исправлена ​​(53230). Разобрав его в мою локальную копию, я обнаружил следующие изменения:

    - волна повторно использовала реализацию boost.iterator вместо предоставления собственной

    - реализация flex_string была обновлена ​​

    - счетчик ссылок был сделан атомным. Это должно быть исправление

  2. Затем я просто заменил мой дирек-буст / волновой каталог на SVN. Я запустил bootstrap.bat (если вы используете BoostPro, вам нужно будет получить это из zip-кода источников повышения), а затем я запустил bjam:

    bjam --build-directory = набор инструментов для сборки = вариант msvc = отладка | выпускная ссылка = статическая многопоточность = multi-runtime-link = shared - with-wave

    Добавление --with-wave будет создавать только волну и ее зависимости.

  3. В этот момент я получил ошибки компиляции: похоже, что Spirit также был обновлен. Я скачал Spirit (53252) из ​​SVN и переиздал команду bjam.

    Библиотека была аккуратно собрана, и я скопировал две библиотеки в мою папку boost lib.

После выполнения этих шагов я перестраиваю свой проект, и ошибки сбоя исчезли.

1 голос
/ 22 августа 2009

Что ж, вы можете проверить логи и увидеть точную версию, в которой проблема была исправлена, только изменить версию и установить патч вручную.

Не рекомендуется обновлять только один компонент, так как boost многократно использует себя, поэтому при изменении интерфейса вы начнете получать все виды странного поведения. Возможно, если вы укажете компонент и ошибку, мы можем помочь вам в дальнейшем.

1 голос
/ 22 августа 2009

Лучший подход: создайте патч, diff внося изменения в хранилище (например, извлекая часть хранилища и используя svn diff), затем применяя патч к файлам в вашей установке Boost, используя patch (Инструмент Unix).

Для этого может потребоваться Unix-подобная консоль в Windows (например, Cygwin). В качестве альтернативы, вы можете использовать клиент Windows SVN, такой как TortoiseSVN, но я не уверен, что это позволяет вносить исправления в файлы вне контроля версий.

Вы говорите о библиотеке заголовков? Если нет, вам также нужно перестроить эту часть вашей библиотеки Boost, и, к сожалению, я не думаю, что она полностью совместима с установщиком Boost из BoostPro.

...