Bug 26840 - error: 'boost::BOOST_FOREACH' has not been declared
Summary: error: 'boost::BOOST_FOREACH' has not been declared
Status: CLOSED WORKSFORME
Alias: None
Product: Sisyphus
Classification: Development
Component: boost-devel (show other bugs)
Version: unstable
Hardware: all Linux
: P3 normal
Assignee: Ivan A. Melnikov
QA Contact: qa-sisyphus
URL: https://bugzilla.redhat.com/show_bug....
Keywords:
Depends on:
Blocks:
 
Reported: 2012-01-20 15:20 MSK by Vitaly Kuznetsov
Modified: 2019-02-11 15:07 MSK (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Vitaly Kuznetsov 2012-01-20 15:20:00 MSK
Не могу собрать в Сизиф wesnoth, вылезает следующая ошибка:
foreach.hpp:6:17: error: 'boost::BOOST_FOREACH' has not been declared
В RH утверждают https://bugzilla.redhat.com/show_bug.cgi?id=756005 что это апстрим boost, что он уже исправился и у них всё хорошо. 
Очень бы хотелось получить у нас тот же фикс.
Comment 1 Ivan A. Melnikov 2012-01-20 15:37:47 MSK
Z
Comment 2 Repository Robot 2012-01-29 20:54:28 MSK
boost-1:1.48.0-alt2 -> sisyphus:

* Sat Jan 28 2012 Ivan A. Melnikov <iv@altlinux> 1:1.48.0-alt2
- fix compilation when foreach #defined as BOOST_FOREACH (upstream
  ticket 6131) (closes: #26840).
Comment 3 Ivan A. Melnikov 2012-01-29 20:56:52 MSK
Спасибо, и извините, что так долго.
Comment 4 Vitaly Kuznetsov 2012-01-29 22:28:05 MSK
Спасибо!
Comment 5 real@altlinux.org 2012-10-11 08:48:35 MSK
Оно вернулось:

/usr/src/RPM/BUILD/wesnoth-1.10.2/src/foreach.hpp:9:22: error: 'boost::BOOST_FOREACH' has not been declared
Comment 6 Ivan A. Melnikov 2012-10-11 11:04:50 MSK
(In reply to comment #5)
> Оно вернулось:
> 
> /usr/src/RPM/BUILD/wesnoth-1.10.2/src/foreach.hpp:9:22: error:
> 'boost::BOOST_FOREACH' has not been declared

Upstream ticket reference:

https://svn.boost.org/trac/boost/ticket/6131

Исправление, применённое в 1.48.0-alt2 и включенное апстримом 1.49.0, как оказалось, калечит не меньше чем лечит. Поэтому его откатили, и вряд ли эту проблему исправят до 1.53.0.

Так что чинить boost я пока не считаю правильным, пока можно исправлять клиентов.

Есть два варианта исправления: во-первых, определять макрос foreach после включения всех заголовочных файлов (в случае wesnoth -- сделать #include <foreach.hpp> последним, я кажется высылал такой патч в devel@ когда-то). Другой вариант предложил Eric Niebler в комментарии 18 к тикету выше:

  #include <boost/foreach.hpp>

  namespace boost
  {
      namespace BOOST_FOREACH = foreach;
  }

  #define foreach BOOST_FOREACH

Сборке конкретно wesnoth мешают и другие проблемы, попробую их исправить на этой неделе.
Comment 7 Ivan A. Melnikov 2019-02-11 15:07:39 MSK
Уже не актуально.