From a378d6e101a83e3ff7a385f0ea5baecf593c2e0c Mon Sep 17 00:00:00 2001 From: Scott Talbert Date: Jan 28 2022 00:55:18 +0000 Subject: Fix FTBFS with GCC 12 (#2047123) --- diff --git a/28b84a1e96a3f061f4ba56d64829206dbd0628c0.patch b/28b84a1e96a3f061f4ba56d64829206dbd0628c0.patch new file mode 100644 index 0000000..3e8f920 --- /dev/null +++ b/28b84a1e96a3f061f4ba56d64829206dbd0628c0.patch @@ -0,0 +1,27 @@ +From 28b84a1e96a3f061f4ba56d64829206dbd0628c0 Mon Sep 17 00:00:00 2001 +From: Vadim Zeitlin +Date: Thu, 27 Jan 2022 15:30:22 +0100 +Subject: [PATCH] Avoid gcc 12 -Warith-conversion in + wxImageHistogram::MakeKey() + +Explicitly convert the operands to unsigned because we do actually want +the result to be unsigned here. + +Co-Authored-By: Scott Talbert +--- + include/wx/image.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/include/wx/image.h b/include/wx/image.h +index 682e952f69be..35fd263e201d 100644 +--- a/include/wx/image.h ++++ b/include/wx/image.h +@@ -210,7 +210,7 @@ class wxImageHistogram : public wxImageHistogramBase + unsigned char g, + unsigned char b) + { +- return (r << 16) | (g << 8) | b; ++ return ((unsigned)r << 16) | ((unsigned)g << 8) | (unsigned)b; + } + + // find first colour that is not used in the image and has higher diff --git a/37a4bf86937e4e18c5cce70913b6b90e39df20cc.patch b/37a4bf86937e4e18c5cce70913b6b90e39df20cc.patch new file mode 100644 index 0000000..26df986 --- /dev/null +++ b/37a4bf86937e4e18c5cce70913b6b90e39df20cc.patch @@ -0,0 +1,141 @@ +From 37a4bf86937e4e18c5cce70913b6b90e39df20cc Mon Sep 17 00:00:00 2001 +From: Vadim Zeitlin +Date: Thu, 27 Jan 2022 15:46:42 +0100 +Subject: [PATCH] Add wxColour::Get{Red,Green,Blue,Alpha}() to avoid gcc 12 + warnings + +These functions return the colour components as unsigned int and so +promote to this type in arithmetic expressions, unlike unsigned char +returned by the existing accessors without the "Get" prefix, which +promotes to (signed) int and results in gcc 12 -Warith-conversion +warnings when the result is then converted to unsigned, as it happened +in our own wxColour::GetRGB() and GetRGBA() functions and would probably +happen in a lot of code outside wx, which could also be updated to use +the new functions instead of inserting casts. +--- + include/wx/colour.h | 11 ++++++++-- + interface/wx/colour.h | 51 +++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 60 insertions(+), 2 deletions(-) + +diff --git a/include/wx/colour.h b/include/wx/colour.h +index 4e9e0a185407..22a145ab22d1 100644 +--- a/include/wx/colour.h ++++ b/include/wx/colour.h +@@ -125,6 +125,13 @@ class WXDLLIMPEXP_CORE wxColourBase : public + virtual ChannelType Alpha() const + { return wxALPHA_OPAQUE ; } + ++ // These getters return the values as unsigned int, which avoids promoting ++ // them to (signed) int in arithmetic expressions, unlike the ones above. ++ unsigned int GetRed() const { return Red(); } ++ unsigned int GetGreen() const { return Green(); } ++ unsigned int GetBlue() const { return Blue(); } ++ unsigned int GetAlpha() const { return Alpha(); } ++ + virtual bool IsSolid() const + { return true; } + +@@ -147,10 +154,10 @@ class WXDLLIMPEXP_CORE wxColourBase : public + } + + wxUint32 GetRGB() const +- { return Red() | (Green() << 8) | (Blue() << 16); } ++ { return GetRed() | (GetGreen() << 8) | (GetBlue() << 16); } + + wxUint32 GetRGBA() const +- { return Red() | (Green() << 8) | (Blue() << 16) | (Alpha() << 24); } ++ { return GetRed() | (GetGreen() << 8) | (GetBlue() << 16) | (GetAlpha() << 24); } + + #if !wxCOLOUR_IS_GDIOBJECT + virtual bool IsOk() const= 0; +diff --git a/interface/wx/colour.h b/interface/wx/colour.h +index 32424f1123c7..9cc0ac7c9dec 100644 +--- a/interface/wx/colour.h ++++ b/interface/wx/colour.h +@@ -34,6 +34,20 @@ const unsigned char wxALPHA_OPAQUE = 0xff; + + You can retrieve the current system colour settings with wxSystemSettings. + ++ ++ @section colour_accessors Channel Accessor Functions ++ ++ Note that this class provides pairs of functions for each of the colour ++ channels, i.e. red, green, blue and alpha values. The one word functions ++ Red(), Green(), Blue() and Alpha() return the values of type @c unsigned @c ++ char, while GetRed(), GetGreen(), GetBlue() and GetAlpha() returns the same ++ value as @c unsigned @c int. According to the C++ integer promotion rules, ++ the result of any arithmetic expression involving the former will be ++ (signed) @c int, while that of the latter will be @c unsigned, which is ++ what would be commonly expected, so the latter family of functions should ++ be typically preferred (but they are only available since wxWidgets 3.1.6). ++ ++ + @library{wxcore} + @category{gdi} + +@@ -94,14 +108,47 @@ class wxColour : public wxObject + /** + Returns the alpha value, on platforms where alpha is not yet supported, this + always returns wxALPHA_OPAQUE. ++ ++ @see GetAlpha() + */ + virtual unsigned char Alpha() const; + + /** + Returns the blue intensity. ++ ++ @see GetBlue() + */ + virtual unsigned char Blue() const; + ++ /** ++ Returns the alpha value, on platforms where alpha is not yet supported, this ++ always returns wxALPHA_OPAQUE. ++ ++ @since 3.1.6 ++ */ ++ unsigned int GetAlpha() const; ++ ++ /** ++ Returns the blue intensity as unsigned int. ++ ++ @since 3.1.6 ++ */ ++ unsigned int GetBlue() const; ++ ++ /** ++ Returns the green intensity as unsigned int. ++ ++ @since 3.1.6 ++ */ ++ unsigned int GetGreen() const; ++ ++ /** ++ Returns the red intensity as unsigned int. ++ ++ @since 3.1.6 ++ */ ++ unsigned int GetRed() const; ++ + /** + Converts this colour to a wxString using the given flags. + +@@ -184,6 +231,8 @@ class wxColour : public wxObject + + /** + Returns the green intensity. ++ ++ @see GetGreen() + */ + virtual unsigned char Green() const; + +@@ -195,6 +244,8 @@ class wxColour : public wxObject + + /** + Returns the red intensity. ++ ++ @see GetRed() + */ + virtual unsigned char Red() const; + diff --git a/wxGTK.spec b/wxGTK.spec index 28f9b8d..89705bd 100644 --- a/wxGTK.spec +++ b/wxGTK.spec @@ -5,7 +5,7 @@ Name: wxGTK Version: 3.1.5 -Release: 4%{?dist} +Release: 5%{?dist} Summary: GTK port of the wxWidgets GUI library License: wxWidgets URL: https://www.wxwidgets.org/ @@ -22,6 +22,8 @@ Patch3: gcc11_1.patch Patch4: gcc11_2.patch Patch5: gcc11_3.patch Patch6: https://github.com/wxWidgets/wxWidgets/commit/d68c3709e49b967272b0794b0dd30e57e46326e8.patch +Patch7: https://github.com/wxWidgets/wxWidgets/commit/28b84a1e96a3f061f4ba56d64829206dbd0628c0.patch +Patch8: https://github.com/wxWidgets/wxWidgets/commit/37a4bf86937e4e18c5cce70913b6b90e39df20cc.patch BuildRequires: make BuildRequires: gcc-c++ @@ -305,6 +307,9 @@ fi %doc html %changelog +* Fri Jan 28 2022 Scott Talbert - 3.1.5-5 +- Fix FTBFS with GCC 12 (#2047123) + * Sat Jan 22 2022 Fedora Release Engineering - 3.1.5-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild