Hello community, here is the log from the commit of package yast2-core for openSUSE:Factory checked in at 2016-06-07 23:44:10 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/yast2-core (Old) and /work/SRC/openSUSE:Factory/.yast2-core.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-core" Changes: -------- --- /work/SRC/openSUSE:Factory/yast2-core/yast2-core.changes 2016-03-04 19:30:10.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.yast2-core.new/yast2-core.changes 2016-06-07 23:44:12.000000000 +0200 @@ -1,0 +2,7 @@ +Thu Jun 2 13:46:02 UTC 2016 - mvid...@suse.com + +- Optionally build with Clang instead of GCC (via bcond_with clang) +- Fixed most of Clang warnings (bsc#982942) +- 3.1.23 + +------------------------------------------------------------------- Old: ---- yast2-core-3.1.22.tar.bz2 New: ---- yast2-core-3.1.23.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ yast2-core.spec ++++++ --- /var/tmp/diff_new_pack.WfJBG7/_old 2016-06-07 23:44:13.000000000 +0200 +++ /var/tmp/diff_new_pack.WfJBG7/_new 2016-06-07 23:44:13.000000000 +0200 @@ -16,6 +16,10 @@ # +# Optionally build with llvm-clang instead of gcc +# because we are interested in the warnings it gives. +%bcond_with clang + # Optionally treat C/C++ warnings as errors. # It is off by default so that it will not block mass tests of new GCC # but we want to enable it in a side repo @@ -23,7 +27,7 @@ %bcond_with werror Name: yast2-core -Version: 3.1.22 +Version: 3.1.23 Release: 0 Url: https://github.com/yast/yast-core @@ -32,7 +36,11 @@ # obviously BuildRequires: boost-devel +%if %{with clang} +BuildRequires: llvm-clang +%else BuildRequires: gcc-c++ +%endif BuildRequires: libtool # we have a parser BuildRequires: bison @@ -103,6 +111,14 @@ export CXXFLAGS="${RPM_OPT_FLAGS} -Werror" %endif +%if %{with clang} +export CC=clang CXX=clang++ + +# warning/error: argument unused during compilation +CFLAGS="${CFLAGS/-grecord-gcc-switches/}" +CXXFLAGS="${CXXFLAGS/-grecord-gcc-switches/}" +%endif + %yast_build %install ++++++ yast2-core-3.1.22.tar.bz2 -> yast2-core-3.1.23.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-core-3.1.22/agent-ini/src/IniFile.h new/yast2-core-3.1.23/agent-ini/src/IniFile.h --- old/yast2-core-3.1.22/agent-ini/src/IniFile.h 2016-03-03 13:08:08.000000000 +0100 +++ new/yast2-core-3.1.23/agent-ini/src/IniFile.h 2016-06-03 09:31:47.000000000 +0200 @@ -200,7 +200,7 @@ enum IniType { VALUE, SECTION,}; -struct IniContainerElement; +class IniContainerElement; typedef list<IniContainerElement> IniContainer; typedef IniContainer::iterator IniIterator; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-core-3.1.22/agent-ini/src/IniParser.cc new/yast2-core-3.1.23/agent-ini/src/IniParser.cc --- old/yast2-core-3.1.22/agent-ini/src/IniParser.cc 2016-03-03 13:08:08.000000000 +0100 +++ new/yast2-core-3.1.23/agent-ini/src/IniParser.cc 2016-06-03 09:31:47.000000000 +0200 @@ -1023,6 +1023,9 @@ return 0; } +std::string format (const char * format, ...) + __attribute__ ((format (printf, 1, 2))); + /** sprintf to a std::string, throwing runtime_error on OOM */ std::string format (const char * format, ...) { // copied from y2util/stringutil.h but added the throw diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-core-3.1.22/libscr/src/include/scr/Y2AgentComponent.h new/yast2-core-3.1.23/libscr/src/include/scr/Y2AgentComponent.h --- old/yast2-core-3.1.22/libscr/src/include/scr/Y2AgentComponent.h 2016-03-03 13:08:09.000000000 +0100 +++ new/yast2-core-3.1.23/libscr/src/include/scr/Y2AgentComponent.h 2016-06-03 09:31:47.000000000 +0200 @@ -16,6 +16,7 @@ #include <ycp/YCPCode.h> #include <ycp/YCPVoid.h> #include <ycp/YCPTerm.h> +#include <ycp/YCPPath.h> class SCRAgent; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-core-3.1.22/liby2/src/include/y2/Y2PluginComponent.h new/yast2-core-3.1.23/liby2/src/include/y2/Y2PluginComponent.h --- old/yast2-core-3.1.22/liby2/src/include/y2/Y2PluginComponent.h 2016-03-03 13:08:09.000000000 +0100 +++ new/yast2-core-3.1.23/liby2/src/include/y2/Y2PluginComponent.h 2016-06-03 09:31:47.000000000 +0200 @@ -62,7 +62,12 @@ /** * The component level the plugin was started in. */ +#ifdef __clang__ + int level __attribute__((__unused__)); + // 'level' can be removed for SLE13; now keeping it for ABI. +#else int level; +#endif /** * Handle of the dynamic loaded library. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-core-3.1.22/liby2util-r/src/MemUsage.cc new/yast2-core-3.1.23/liby2util-r/src/MemUsage.cc --- old/yast2-core-3.1.22/liby2util-r/src/MemUsage.cc 2016-03-03 13:08:09.000000000 +0100 +++ new/yast2-core-3.1.23/liby2util-r/src/MemUsage.cc 2016-06-03 09:31:47.000000000 +0200 @@ -51,11 +51,12 @@ ie = m_mu_instances->end (); for (; ii != ie; ++ii) { - const char * name = typeid (**ii).name (); + MemUsage * tracked_ptr = *ii; + const char * name = typeid (*tracked_ptr).name (); std::string dename = demangle (name); if (m_mu_size.find (dename) == m_mu_size.end()) { - m_mu_size[dename] = (**ii).mem_size(); + m_mu_size[dename] = (*tracked_ptr).mem_size(); } ++ m_mu_count[dename]; } @@ -83,7 +84,8 @@ ie = m_mu_instances->end (); for (; ii != ie; ++ii) { - std::string dname = demangle (typeid (**ii).name ()); + MemUsage * tracked_ptr = *ii; + std::string dname = demangle (typeid (*tracked_ptr).name ()); if (dname == aname) { fprintf (stderr, "p *(%s *)%p\n", aname, *ii); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-core-3.1.22/liby2util-r/src/include/y2util/stringutil.h new/yast2-core-3.1.23/liby2util-r/src/include/y2util/stringutil.h --- old/yast2-core-3.1.22/liby2util-r/src/include/y2util/stringutil.h 2016-03-03 13:08:09.000000000 +0100 +++ new/yast2-core-3.1.23/liby2util-r/src/include/y2util/stringutil.h 2016-06-03 09:31:47.000000000 +0200 @@ -46,6 +46,9 @@ TRIM = (L_TRIM|R_TRIM) }; +inline std::string vform( const char * format, va_list ap ) + __attribute__ ((format (printf, 1, 0))); + inline std::string vform( const char * format, va_list ap ) { char * buf = 0; std::string val; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-core-3.1.22/liby2util-r/src/y2log.cc new/yast2-core-3.1.23/liby2util-r/src/y2log.cc --- old/yast2-core-3.1.22/liby2util-r/src/y2log.cc 2016-03-03 13:08:09.000000000 +0100 +++ new/yast2-core-3.1.23/liby2util-r/src/y2log.cc 2016-06-03 09:31:47.000000000 +0200 @@ -173,6 +173,10 @@ */ string y2_logfmt_common(bool simple, const string& component, const char *file, const int line, const char *function, const char *format, va_list ap) + __attribute__ ((format (printf, 6, 0))); + +string y2_logfmt_common(bool simple, const string& component, const char *file, + const int line, const char *function, const char *format, va_list ap) { /* Prepare the log text */ string logtext = stringutil::vform(format, ap); @@ -265,6 +269,10 @@ void y2_vlogger_function(loglevel_t level, const string& component, const char *file, + const int line, const char *function, const char *format, va_list ap) + __attribute__ ((format (printf, 6, 0))); + +void y2_vlogger_function(loglevel_t level, const string& component, const char *file, const int line, const char *function, const char *format, va_list ap) { string common = y2_logfmt_common (log_simple, @@ -287,6 +295,10 @@ void y2_vlogger_blanik(loglevel_t level, const string& component, const char *file, const int line, const char *function, const char *format, va_list ap) + __attribute__ ((format (printf, 6, 0))); + +void y2_vlogger_blanik(loglevel_t level, const string& component, const char *file, + const int line, const char *function, const char *format, va_list ap) { string common = y2_logfmt_common (log_simple, component, file, line, function, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-core-3.1.22/libycp/src/YBlock.cc new/yast2-core-3.1.23/libycp/src/YBlock.cc --- old/yast2-core-3.1.22/libycp/src/YBlock.cc 2016-03-03 13:08:09.000000000 +0100 +++ new/yast2-core-3.1.23/libycp/src/YBlock.cc 2016-06-03 09:31:47.000000000 +0200 @@ -481,7 +481,7 @@ { // first, create reverse map of cases int statementcount = statementCount (); - YCPValue values[statementcount]; + YCPValue * values = new YCPValue[statementcount]; for (int i = 0; i < statementcount; i++) values[i] = YCPNull (); @@ -514,6 +514,7 @@ stmt = stmt->next; index++; } + delete[] values; s += "\n}\n"; return s; @@ -525,7 +526,8 @@ { // first, create reverse map of cases int statementcount = statementCount (); - vector<YCPValue> values[statementcount]; + + vector<YCPValue> * values = new vector<YCPValue>[statementcount]; for (map<YCPValue, int, ycp_less>::iterator it = cases.begin (); it != cases.end (); it++ ) @@ -566,6 +568,7 @@ index++; } str << closing_tag; + delete[] values; return str; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-core-3.1.22/libycp/src/YCPBuiltinString.cc new/yast2-core-3.1.23/libycp/src/YCPBuiltinString.cc --- old/yast2-core-3.1.22/libycp/src/YCPBuiltinString.cc 2016-03-03 13:08:09.000000000 +0100 +++ new/yast2-core-3.1.23/libycp/src/YCPBuiltinString.cc 2016-06-03 09:31:47.000000000 +0200 @@ -299,28 +299,28 @@ if (s->isAscii()) { string ss = s->value (); - string::size_type start = i1->value(); + long long start = i1->value(); - if (start < 0 || start > ss.size()) + if (start < 0 || start > (long long)ss.size()) { ycp2error("Substring index out of range"); return YCPString (""); } - return YCPString(ss.substr(start, string::npos)); + return YCPString(ss.substr((string::size_type) start, string::npos)); } else { wstring ss = s->wvalue(); - wstring::size_type start = i1->value(); + long long start = i1->value(); - if (start < 0 || start > ss.size()) + if (start < 0 || start > (long long)ss.size()) { ycp2error("Substring index out of range"); return YCPString(""); } - return YCPString(ss.substr(start, wstring::npos)); + return YCPString(ss.substr((wstring::size_type) start, wstring::npos)); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-core-3.1.22/libycp/src/YCPMap.cc new/yast2-core-3.1.23/libycp/src/YCPMap.cc --- old/yast2-core-3.1.22/libycp/src/YCPMap.cc 2016-03-03 13:08:09.000000000 +0100 +++ new/yast2-core-3.1.23/libycp/src/YCPMap.cc 2016-06-03 09:31:47.000000000 +0200 @@ -178,7 +178,7 @@ { // equal length ==> pairwise comparison for( YCPMap::const_iterator pos_this = begin(), pos_m = m->begin(); - pos_this != end(), pos_m != m->end(); + pos_this != end(); ++pos_this, ++pos_m ) { // compare keys diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-core-3.1.22/libycp/src/YExpression.cc new/yast2-core-3.1.23/libycp/src/YExpression.cc --- old/yast2-core-3.1.22/libycp/src/YExpression.cc 2016-03-03 13:08:09.000000000 +0100 +++ new/yast2-core-3.1.23/libycp/src/YExpression.cc 2016-06-03 09:31:47.000000000 +0200 @@ -3126,7 +3126,7 @@ } } - YCPValue evaluated_params [m_next_param_id]; + YCPValue* evaluated_params = new YCPValue[m_next_param_id]; for (unsigned int p = 0; p < m_next_param_id ; p++) { @@ -3137,6 +3137,7 @@ if (value.isNull()) { ycp2error ("Parameter eval failed (%s)", m_parameters[p]->toString().c_str()); + delete[](evaluated_params); return value; } @@ -3160,6 +3161,7 @@ if (YaST::ee.endlessRecursion()) { ycp2error ("Returning nil instead of calling the function."); + delete[](evaluated_params); return YCPVoid (); } @@ -3172,6 +3174,8 @@ YaST::ee.setFilename(filename); YaST::ee.popframe(); + // FIXME: did the frame need ep to exist? otherwise we could delete it before evaluateCall + delete[](evaluated_params); #if DO_DEBUG y2debug("evaluate done (%s) = '%s'", qualifiedName ().c_str(), value.isNull() ? "NULL" : value->toString().c_str()); @@ -3266,7 +3270,7 @@ // FIXME: this could fail m_functioncall->reset (); - YCPValue m_params [m_next_param_id]; + YCPValue * m_params = new YCPValue[m_next_param_id]; for (unsigned int p = 0; p < m_next_param_id ; p++) { @@ -3277,6 +3281,7 @@ if (value.isNull()) { ycp2error ("Parameter eval failed (%s)", m_parameters[p]->toString().c_str()); + delete[] m_params; return value; } @@ -3292,6 +3297,7 @@ { m_functioncall->attachParameter (m_params[p], p); } + delete[] m_params; // can now already? why no frame push? // save the context info int linenumber = YaST::ee.linenumber(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-core-3.1.22/libycp/src/include/ycp/Parser.h new/yast2-core-3.1.23/libycp/src/include/ycp/Parser.h --- old/yast2-core-3.1.22/libycp/src/include/ycp/Parser.h 2016-03-03 13:08:09.000000000 +0100 +++ new/yast2-core-3.1.23/libycp/src/include/ycp/Parser.h 2016-06-03 09:31:47.000000000 +0200 @@ -29,9 +29,9 @@ #include "ycp/YCode.h" class Scanner; -class blockstack_t; -class scannerstack_t; -class switchstack_t; +struct blockstack_t; +struct scannerstack_t; +struct switchstack_t; class YBlock; /** diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-core-3.1.22/libycp/src/include/ycp/YCPMap.h new/yast2-core-3.1.23/libycp/src/include/ycp/YCPMap.h --- old/yast2-core-3.1.22/libycp/src/include/ycp/YCPMap.h 2016-03-03 13:08:09.000000000 +0100 +++ new/yast2-core-3.1.23/libycp/src/include/ycp/YCPMap.h 2016-06-03 09:31:47.000000000 +0200 @@ -30,7 +30,7 @@ // Only for backwards compatibility. See mail from aschnell on yast-devel on // 2009-01-07. http://lists.opensuse.org/yast-devel/2009-01/msg00016.html typedef map<YCPValue, YCPValue, ycp_less> YCPValueYCPValueMap; -class YCPMapIterator; +struct YCPMapIterator; /** diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-core-3.1.22/libycp/src/scanner.ll new/yast2-core-3.1.23/libycp/src/scanner.ll --- old/yast2-core-3.1.22/libycp/src/scanner.ll 2016-03-03 13:08:09.000000000 +0100 +++ new/yast2-core-3.1.23/libycp/src/scanner.ll 2016-06-03 09:31:47.000000000 +0200 @@ -19,6 +19,12 @@ %{ +#ifdef __clang__ +// There are many "register" variables declared in generated flex code +// which we cannot affect, but Clang warns about them. Shut that up. +#pragma clang diagnostic ignored "-Wdeprecated-register" +#endif + #include <list> #include <string> #include <sstream> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-core-3.1.22/libycp/testsuite/tests/builtin/Builtin-String.err new/yast2-core-3.1.23/libycp/testsuite/tests/builtin/Builtin-String.err --- old/yast2-core-3.1.22/libycp/testsuite/tests/builtin/Builtin-String.err 2016-03-03 13:08:09.000000000 +0100 +++ new/yast2-core-3.1.23/libycp/testsuite/tests/builtin/Builtin-String.err 2016-06-03 09:31:47.000000000 +0200 @@ -128,36 +128,53 @@ [Interpreter] tests/builtin/Builtin-String.ycp:59 Substring index out of range Parsed: ---------------------------------------------------------------------- +substring ("some text", -1) +---------------------------------------------------------------------- +[Interpreter] tests/builtin/Builtin-String.ycp:61 Substring index out of range +Parsed: +---------------------------------------------------------------------- +substring ("some text", 5, 0) +---------------------------------------------------------------------- +Parsed: +---------------------------------------------------------------------- +substring ("some text", 5, 42) +---------------------------------------------------------------------- +Parsed: +---------------------------------------------------------------------- +substring ("some text", 5, -42) +---------------------------------------------------------------------- +Parsed: +---------------------------------------------------------------------- "** lsubstring **" ---------------------------------------------------------------------- -[Parser] tests/builtin/Builtin-String.ycp:64 Warning: lsubstring(...) is deprecated, please fix +[Parser] tests/builtin/Builtin-String.ycp:68 Warning: lsubstring(...) is deprecated, please fix Parsed: ---------------------------------------------------------------------- lsubstring ("some text", 5) ---------------------------------------------------------------------- -[Parser] tests/builtin/Builtin-String.ycp:65 Warning: lsubstring(...) is deprecated, please fix +[Parser] tests/builtin/Builtin-String.ycp:69 Warning: lsubstring(...) is deprecated, please fix Parsed: ---------------------------------------------------------------------- lsubstring ("some text", 42) ---------------------------------------------------------------------- -[Interpreter] tests/builtin/Builtin-String.ycp:65 Substring index out of range -[Parser] tests/builtin/Builtin-String.ycp:66 Warning: lsubstring(...) is deprecated, please fix +[Interpreter] tests/builtin/Builtin-String.ycp:69 Substring index out of range +[Parser] tests/builtin/Builtin-String.ycp:70 Warning: lsubstring(...) is deprecated, please fix Parsed: ---------------------------------------------------------------------- lsubstring ("ěščřžýáí", 5) ---------------------------------------------------------------------- -[Parser] tests/builtin/Builtin-String.ycp:68 Warning: lsubstring(...) is deprecated, please fix +[Parser] tests/builtin/Builtin-String.ycp:72 Warning: lsubstring(...) is deprecated, please fix Parsed: ---------------------------------------------------------------------- lsubstring ("some text", 5, 2) ---------------------------------------------------------------------- -[Parser] tests/builtin/Builtin-String.ycp:69 Warning: lsubstring(...) is deprecated, please fix +[Parser] tests/builtin/Builtin-String.ycp:73 Warning: lsubstring(...) is deprecated, please fix Parsed: ---------------------------------------------------------------------- lsubstring ("some text", 42, 2) ---------------------------------------------------------------------- -[Interpreter] tests/builtin/Builtin-String.ycp:69 Substring index out of range -[Parser] tests/builtin/Builtin-String.ycp:70 Warning: lsubstring(...) is deprecated, please fix +[Interpreter] tests/builtin/Builtin-String.ycp:73 Substring index out of range +[Parser] tests/builtin/Builtin-String.ycp:74 Warning: lsubstring(...) is deprecated, please fix Parsed: ---------------------------------------------------------------------- lsubstring ("ěščřžýáí", 5, 2) @@ -174,9 +191,9 @@ ---------------------------------------------------------------------- mergestring (["abc", "dev", "ghi", ""], "/") ---------------------------------------------------------------------- -[Parser] tests/builtin/Builtin-String.ycp:77 No match for 'mergestring : <unspec> (list, string)' -[Parser] tests/builtin/Builtin-String.ycp:77 Please fix parameter types to match one of: -[Parser] tests/builtin/Builtin-String.ycp:77 'mergestring : string (const list <string>, string)' -[Parser] tests/builtin/Builtin-String.ycp:77 Wrong parameters in call to mergestring(...) -[Parser] tests/builtin/Builtin-String.ycp:77 Expected '(const list <string>, string)', seen '(list, string)'. +[Parser] tests/builtin/Builtin-String.ycp:81 No match for 'mergestring : <unspec> (list, string)' +[Parser] tests/builtin/Builtin-String.ycp:81 Please fix parameter types to match one of: +[Parser] tests/builtin/Builtin-String.ycp:81 'mergestring : string (const list <string>, string)' +[Parser] tests/builtin/Builtin-String.ycp:81 Wrong parameters in call to mergestring(...) +[Parser] tests/builtin/Builtin-String.ycp:81 Expected '(const list <string>, string)', seen '(list, string)'. runycp: parser error diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-core-3.1.22/libycp/testsuite/tests/builtin/Builtin-String.out new/yast2-core-3.1.23/libycp/testsuite/tests/builtin/Builtin-String.out --- old/yast2-core-3.1.22/libycp/testsuite/tests/builtin/Builtin-String.out 2016-03-03 13:08:09.000000000 +0100 +++ new/yast2-core-3.1.23/libycp/testsuite/tests/builtin/Builtin-String.out 2016-06-03 09:31:47.000000000 +0200 @@ -27,6 +27,10 @@ ("") ("te") ("") +("") +("") +("text") +("text") ("** lsubstring **") ("text") ("") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-core-3.1.22/libycp/testsuite/tests/builtin/Builtin-String.ycp new/yast2-core-3.1.23/libycp/testsuite/tests/builtin/Builtin-String.ycp --- old/yast2-core-3.1.22/libycp/testsuite/tests/builtin/Builtin-String.ycp 2016-03-03 13:08:09.000000000 +0100 +++ new/yast2-core-3.1.23/libycp/testsuite/tests/builtin/Builtin-String.ycp 2016-06-03 09:31:47.000000000 +0200 @@ -58,6 +58,10 @@ (substring ("some text", 5, 2)) (substring ("some text", 42, 2)) +(substring ("some text", -1)) +(substring ("some text", 5, 0)) +(substring ("some text", 5, 42)) +(substring ("some text", 5, -42)) ("** lsubstring **") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-core-3.1.22/package/yast2-core.changes new/yast2-core-3.1.23/package/yast2-core.changes --- old/yast2-core-3.1.22/package/yast2-core.changes 2016-03-03 13:08:09.000000000 +0100 +++ new/yast2-core-3.1.23/package/yast2-core.changes 2016-06-03 09:31:47.000000000 +0200 @@ -1,4 +1,11 @@ ------------------------------------------------------------------- +Thu Jun 2 13:46:02 UTC 2016 - mvid...@suse.com + +- Optionally build with Clang instead of GCC (via bcond_with clang) +- Fixed most of Clang warnings (bsc#982942) +- 3.1.23 + +------------------------------------------------------------------- Thu Mar 3 12:36:06 CET 2016 - g...@suse.de - Add missing newline to error messages (bsc#969236) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-core-3.1.22/package/yast2-core.spec new/yast2-core-3.1.23/package/yast2-core.spec --- old/yast2-core-3.1.22/package/yast2-core.spec 2016-03-03 13:08:09.000000000 +0100 +++ new/yast2-core-3.1.23/package/yast2-core.spec 2016-06-03 09:31:47.000000000 +0200 @@ -15,6 +15,9 @@ # Please submit bugfixes or comments via http://bugs.opensuse.org/ # +# Optionally build with llvm-clang instead of gcc +# because we are interested in the warnings it gives. +%bcond_with clang # Optionally treat C/C++ warnings as errors. # It is off by default so that it will not block mass tests of new GCC @@ -23,7 +26,7 @@ %bcond_with werror Name: yast2-core -Version: 3.1.22 +Version: 3.1.23 Release: 0 Url: https://github.com/yast/yast-core @@ -32,7 +35,11 @@ # obviously BuildRequires: boost-devel +%if %{with clang} +BuildRequires: llvm-clang +%else BuildRequires: gcc-c++ +%endif BuildRequires: libtool # we have a parser BuildRequires: bison @@ -103,6 +110,14 @@ export CXXFLAGS="${RPM_OPT_FLAGS} -Werror" %endif +%if %{with clang} +export CC=clang CXX=clang++ + +# warning/error: argument unused during compilation +CFLAGS="${CFLAGS/-grecord-gcc-switches/}" +CXXFLAGS="${CXXFLAGS/-grecord-gcc-switches/}" +%endif + %yast_build %install