Emerging www-client/firefox-46.0[system-icu] fails when dev-libs/icu version installed is (for example) icu-52.1: In file included from /var/tmp/portage/www-client/firefox-46.0/work/firefox-46.0/ff/js/src/Unified_cpp_js_src1.cpp:38:0: /var/tmp/portage/www-client/firefox-46.0/work/firefox-46.0/js/src/builtin/Intl.cpp: In function 'js::ImmutablePropertyNamePtr JSAtomState::* GetFieldTypeForFormatField(UDateFormatField)': /var/tmp/portage/www-client/firefox-46.0/work/firefox-46.0/js/src/builtin/Intl.cpp:2142:12: error: 'UDAT_RELATED_YEAR_FIELD' was not declared in this scope case UDAT_RELATED_YEAR_FIELD: ^ /var/tmp/portage/www-client/firefox-46.0/work/firefox-46.0/js/src/builtin/Intl.cpp:2145:12: error: 'UDAT_TIME_SEPARATOR_FIELD' was not declared in this scope case UDAT_TIME_SEPARATOR_FIELD: ^ /var/tmp/portage/www-client/firefox-46.0/work/firefox-46.0/js/src/builtin/Intl.cpp: In function 'bool intl_FormatToPartsDateTime(JSContext*, void**, double, JS::MutableHandleValue)': /var/tmp/portage/www-client/firefox-46.0/work/firefox-46.0/js/src/builtin/Intl.cpp:2173:5: error: 'UFieldPositionIterator' was not declared in this scope UFieldPositionIterator* fpositer = ufieldpositer_open(&status); ^ /var/tmp/portage/www-client/firefox-46.0/work/firefox-46.0/js/src/builtin/Intl.cpp:2173:29: error: 'fpositer' was not declared in this scope UFieldPositionIterator* fpositer = ufieldpositer_open(&status); ^ /var/tmp/portage/www-client/firefox-46.0/work/firefox-46.0/js/src/builtin/Intl.cpp:2173:66: error: 'ufieldpositer_open' was not declared in this scope UFieldPositionIterator* fpositer = ufieldpositer_open(&status); ^ /var/tmp/portage/www-client/firefox-46.0/work/firefox-46.0/js/src/builtin/Intl.cpp: In lambda function: /var/tmp/portage/www-client/firefox-46.0/work/firefox-46.0/js/src/builtin/Intl.cpp:2178:80: error: 'ufieldpositer_close' was not declared in this scope auto closeFieldPosIter = MakeScopeExit([&]() { ufieldpositer_close(fpositer); }); ^ /var/tmp/portage/www-client/firefox-46.0/work/firefox-46.0/js/src/builtin/Intl.cpp: In function 'bool intl_FormatToPartsDateTime(JSContext*, void**, double, JS::MutableHandleValue)': /var/tmp/portage/www-client/firefox-46.0/work/firefox-46.0/js/src/builtin/Intl.cpp:2182:47: error: 'udat_formatForFields' was not declared in this scope fpositer, &status); ^ /var/tmp/portage/www-client/firefox-46.0/work/firefox-46.0/js/src/builtin/Intl.cpp:2242:81: error: 'ufieldpositer_next' was not declared in this scope while ((fieldInt = ufieldpositer_next(fpositer, &beginIndexInt, &endIndexInt)) >= 0) { ^ /var/tmp/portage/www-client/firefox-46.0/work/firefox-46.0/config/rules.mk:967: recipe for target 'Unified_cpp_js_src1.o' failed make[4]: *** [Unified_cpp_js_src1.o] Error 1 make[4]: *** Waiting for unfinished jobs.... make[4]: Entering directory '/var/tmp/portage/www-client/firefox-46.0/work/firefox-46.0/ff/config/external/lgpllibs' It looks like UDAT_TIME_SEPARATOR_FIELD was only introduced in icu-55.1 ( http://bugs.icu-project.org/trac/changeset/36897 ), but the ebuild (or rather eclass) dependency is specified as '>=dev-libs/icu-51.1' so any already installed icu version that is >= 51.1 and <55.1 will satisfy the package dependency but fail to build it.
dev-libs/icu-55.1 is the oldest version in tree anyway.
(In reply to Andreas Sturmlechner from comment #1) > dev-libs/icu-55.1 is the oldest version in tree anyway. That wasn't always the case, right?
(In reply to Maciej S. Szmigiero from comment #2) > (In reply to Andreas Sturmlechner from comment #1) > > dev-libs/icu-55.1 is the oldest version in tree anyway. > > That wasn't always the case, right? yes, but it has been for 6 months already, and firefox-46 was released... some time in the past week.
Well(In reply to Alex Xu (Hello71) from comment #3) > (In reply to Maciej S. Szmigiero from comment #2) > > (In reply to Andreas Sturmlechner from comment #1) > > > dev-libs/icu-55.1 is the oldest version in tree anyway. > > > > That wasn't always the case, right? > > yes, but it has been for 6 months already, and firefox-46 was released... > some time in the past week. When I previously reported very similar bug against firefox-24.0 (bug 489838) the policy was "Gentoo strives to keep systems updatable for at least 1 year". Could you please point out where on some Gentoo website it is written that this policy has changed?
(In reply to Maciej S. Szmigiero from comment #4) > > When I previously reported very similar bug against firefox-24.0 (bug > 489838) the policy was "Gentoo strives to keep systems updatable for at > least 1 year". > > Could you please point out where on some Gentoo website it is written that > this policy has changed? That policy hasn't changed. But, if you were performing an 'emerge -uDNav world' then you would get a new system icu installed well before firefox-46 would be installed. Gentoo has -never- so far as I'm aware supported mixing dependencies from a year ago with packages from the latest --sync, if there are newer stable dependencies available. In fact, the number one thing to do when running into any bug is still, so far as i'm aware, 'run emerge -uDNav @world to update all dependencies to latest, and try again'. The one year policy is regarding making sure 'emerge -uDNav world' will still work after not --sync'ing for a year. IE, to make sure the gentoo repo today doesn't require a newer EAPI than what was available in the version of portage that was stable in april of 2015, on the portage package and its various dependencies. Back to the bug at hand, mozilla's build system states that it requires icu 50.1 so even 51.1 is requiring a newer icu than is necessary to pass configure. That said, its possible they've pushed a patch that requires a newer icu and didn't update their dependencies, so I'll look into it.
EDONTCARE from office team
If you feel I have closed your bug and it is still a current issue, please reopen and update it completely. We will not work bugs that have no ebuild in tree any longer or can not be reproduced with a current system. Thank You for your support and understanding The Mozilla Team