<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>26296</bug_id>
          
          <creation_ts>2011-09-14 14:28:48 +0400</creation_ts>
          <short_desc>xulrunner не определяет char16_t</short_desc>
          <delta_ts>2012-03-05 17:06:48 +0400</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>xulrunner-devel</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>WORKSFORME</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>26066</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="viy">viy</reporter>
          <assigned_to name="Andrey Cherepanov">cas</assigned_to>
          <cc>ldv</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>125241</commentid>
    <comment_count>0</comment_count>
    <who name="viy">viy</who>
    <bug_when>2011-09-14 14:28:48 +0400</bug_when>
    <thetext>On Wed, Sep 14, 2011 at 11:08:48AM +0300, Igor Vlasenko wrote:
&gt; 
&gt; В новом стандарте c++ char16_t превратился во встроенный тип и keyword,
&gt; http://en.cppreference.com/w/cpp/keywords/char16_t
&gt; в результате чего, например, новый xulrunner уже не определяет char16_t,
&gt; и сборка с помощью gcc45 оканчивается неудачей:

     [exec] //usr/include/xulrunner/nsStringAPI.h:1101:3: error: &apos;char16_t&apos; was not declared in this scope
     [exec] make: *** [xpcomxul.o] Error 1

Значит, новый xulrunner неправильно собран, поскольку сам по себе
он поддерживает системы как с HAVE_CPP_CHAR16_T, так и без них, см.
/usr/include/xulrunner/xpcom-config.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125245</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2011-09-14 14:53:45 +0400</bug_when>
    <thetext>HAVE_CPP_CHAR16_T был выставлен в xpcom-config.h в момент сборки, когда char16_t был доступен. Если положить xpcom-config.h не заполненный (дефолтный), то всем кто будет использовать хэдеры xulrunner предётся заполнять его самостоятельно.

Я не вижу способов как это исправить.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125247</commentid>
    <comment_count>2</comment_count>
    <who name="viy">viy</who>
    <bug_when>2011-09-14 15:12:00 +0400</bug_when>
    <thetext>Если я правильно понял Дмитрия, 
то в нашем gcc45 нет встроенного char16_t, поэтому 
HAVE_CPP_CHAR16_T был выставлен в xpcom-config.h в момент сборки некорректно.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125248</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2011-09-14 15:29:48 +0400</bug_when>
    <thetext>(В ответ на комментарий №2)
&gt; Если я правильно понял Дмитрия, 

Не будьте испорченным телефоном.

&gt; то в нашем gcc45 нет встроенного char16_t, поэтому 
&gt; HAVE_CPP_CHAR16_T был выставлен в xpcom-config.h в момент сборки некорректно.

xulrruner сам использует xpcom-config.h при сборке.

Вот проверка:

http://git.altlinux.org/people/legion/packages/xulrunner.git?p=xulrunner.git;a=blob;f=mozilla/configure.in;h=3447605ecaca93a0e54d718789dfcb4bfd09987e;hb=307c4eaefdad49e73914662be088ab0ebc43e105#l3005</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125249</commentid>
    <comment_count>4</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2011-09-14 15:41:40 +0400</bug_when>
    <thetext>Встроенный тип char16_t доступен только при компиляции в режиме C++0x (g++ -std=c++0x и g++ -std=gnu++0x).

The default, if no C++ language dialect options are given, is `-std=gnu++98&apos;

Так что использовать заголовки xulrunner можно только в случае если компилятор используется в том же режиме что и во время статической проверки на тип char16_t во время сборки самого xulrunner.

Объезд для клиентов xulrunner:
export CXX=&apos;g++ -std=gnu++0x&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125250</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2011-09-14 15:56:22 +0400</bug_when>
    <thetext>(В ответ на комментарий №4)
&gt; Встроенный тип char16_t доступен только при компиляции в режиме C++0x (g++
&gt; -std=c++0x и g++ -std=gnu++0x).

Если этот тип появляется только при определённых условиях, то разумеется необходимо из воспроизводить при сборке.

Можно конечно для страждущих добавить эту опцию в в pkg-файлы, но это мягко говоря ...</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>