The package rpms/freeorion.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/freeorion.git/commit/?id=0bfcee33...
https://src.fedoraproject.org/cgit/rpms/freeorion.git/commit/?id=afdc9076....
Change:
+%ifarch ppc64le
-%ifarch ppc64le
Thanks.
Full change:
============
commit a7df07c336d9d371c9aa7f25ba569c16f1805b6d
Merge: b63edf0 872c93a
Author: Link Dupont <link(a)sub-pop.net>
Date: Thu Jun 28 20:46:19 2018 -0700
Merge branch 'f28' into f27
commit 872c93a76f2ecafdd64b2aecbb5b0cdd6525b6b9
Author: Link Dupont <link(a)sub-pop.net>
Date: Thu Jun 28 20:44:09 2018 -0700
Remove unncessary %define
diff --git a/freeorion.spec b/freeorion.spec
index df1e4a6..9cccd13 100644
--- a/freeorion.spec
+++ b/freeorion.spec
@@ -1,7 +1,6 @@
%global _release_date 2017-09-03
%global _commit0 139ffd9b323ab7e9f9eeae3483a9c2f4eee87fcd
%global _shortcommit0 %(c=%{_commit0}; echo ${c:0:7})
-%define __global_cflags %{__global_cflags} -U_GLIBCXX_ASSERTIONS
Name: freeorion
Version: 0.4.7.1
commit e5e8889ee67a3246b8d481fcc02d584f33584619
Author: Link Dupont <link(a)sub-pop.net>
Date: Wed Jun 27 19:38:05 2018 -0700
Patch set to fix assertion crashes (RHBZ#1575292)
diff --git a/fix-2182_backport-v0.4.7.1.patch b/fix-2182_backport-v0.4.7.1.patch
new file mode 100644
index 0000000..1a5d496
--- /dev/null
+++ b/fix-2182_backport-v0.4.7.1.patch
@@ -0,0 +1,480 @@
+From bcc7bf082abc8ca4aa815a91f1e70475dbeadced Mon Sep 17 00:00:00 2001
+From: D Benage <dbenage.cx(a)gmail.com>
+Date: Tue, 26 Jun 2018 19:12:09 -0500
+Subject: [PATCH 2/5] Safety check empty array in GLClientAndServerBuffer
+
+---
+ GG/src/GLClientAndServerBuffer.cpp | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/GG/src/GLClientAndServerBuffer.cpp b/GG/src/GLClientAndServerBuffer.cpp
+index 3e232c1505..bc11e66666 100644
+--- a/GG/src/GLClientAndServerBuffer.cpp
++++ b/GG/src/GLClientAndServerBuffer.cpp
+@@ -100,7 +100,7 @@ template <class vtype>
+ void GLClientAndServerBufferBase<vtype>::createServerBuffer()
+ {
+ glGenBuffers(1, &b_name);
+- if (!b_name)
++ if (!b_name || b_data.empty())
+ return;
+ glBindBuffer(GL_ARRAY_BUFFER, b_name);
+ glBufferData(GL_ARRAY_BUFFER,
+@@ -135,7 +135,7 @@ void GLRGBAColorBuffer::activate() const
+ glBindBuffer(GL_ARRAY_BUFFER, b_name);
+ glColorPointer(4, GL_UNSIGNED_BYTE, 0, nullptr);
+ glBindBuffer(GL_ARRAY_BUFFER, 0);
+- } else {
++ } else if (!b_data.empty()) {
+ glColorPointer(4, GL_UNSIGNED_BYTE, 0, &b_data[0]);
+ }
+ }
+@@ -170,7 +170,7 @@ void GL2DVertexBuffer::activate() const
+ glBindBuffer(GL_ARRAY_BUFFER, b_name);
+ glVertexPointer(2, GL_FLOAT, 0, nullptr);
+ glBindBuffer(GL_ARRAY_BUFFER, 0);
+- } else {
++ } else if (!b_data.empty()) {
+ glVertexPointer(2, GL_FLOAT, 0, &b_data[0]);
+ }
+ }
+@@ -189,7 +189,7 @@ void GLTexCoordBuffer::activate() const
+ glBindBuffer(GL_ARRAY_BUFFER, b_name);
+ glTexCoordPointer(2, GL_FLOAT, 0, nullptr);
+ glBindBuffer(GL_ARRAY_BUFFER, 0);
+- } else {
++ } else if (!b_data.empty()) {
+ glTexCoordPointer(2, GL_FLOAT, 0, &b_data[0]);
+ }
+ }
+@@ -211,7 +211,7 @@ void GL3DVertexBuffer::activate() const
+ glBindBuffer(GL_ARRAY_BUFFER, b_name);
+ glVertexPointer(3, GL_FLOAT, 0, nullptr);
+ glBindBuffer(GL_ARRAY_BUFFER, 0);
+- } else {
++ } else if (!b_data.empty()) {
+ glVertexPointer(3, GL_FLOAT, 0, &b_data[0]);
+ }
+ }
+@@ -230,7 +230,7 @@ void GLNormalBuffer::activate() const
+ glBindBuffer(GL_ARRAY_BUFFER, b_name);
+ glNormalPointer(GL_FLOAT, 0, nullptr);
+ glBindBuffer(GL_ARRAY_BUFFER, 0);
+- } else {
++ } else if (!b_data.empty()) {
+ glNormalPointer(GL_FLOAT, 0, &b_data[0]);
+ }
+ }
+
+From da7bfef9f5e1e4979a88ce569d01861bb7a6fc76 Mon Sep 17 00:00:00 2001
+From: D Benage <dbenage.cx(a)gmail.com>
+Date: Wed, 27 Jun 2018 22:10:42 -0500
+Subject: [PATCH 3/5] Bounds check vector element access in ListBox::Row
+
+---
+ GG/src/ListBox.cpp | 101 ++++++++++++++++++++++++++++++-----------------------
+ 1 file changed, 57 insertions(+), 44 deletions(-)
+
+diff --git a/GG/src/ListBox.cpp b/GG/src/ListBox.cpp
+index 322ea63999..3ae58ed10c 100644
+--- a/GG/src/ListBox.cpp
++++ b/GG/src/ListBox.cpp
+@@ -250,10 +250,10 @@ Alignment ListBox::Row::RowAlignment() const
+ { return m_row_alignment; }
+
+ Alignment ListBox::Row::ColAlignment(std::size_t n) const
+-{ return m_col_alignments[n]; }
++{ return m_col_alignments.at(n); }
+
+ X ListBox::Row::ColWidth(std::size_t n) const
+-{ return m_col_widths[n]; }
++{ return m_col_widths.at(n); }
+
+ unsigned int ListBox::Row::Margin() const
+ { return m_margin; }
+@@ -279,9 +279,9 @@ void ListBox::Row::push_back(Control* c)
+ auto ii = m_cells.size() - 1;
+ Layout* layout = GetLayout();
+ if (c) {
+- layout->Add(c, 0, ii, m_row_alignment | m_col_alignments[ii]);
+- layout->SetMinimumColumnWidth(ii, m_col_widths.back());
+- layout->SetColumnStretch(ii, m_col_stretches.back());
++ layout->Add(c, 0, ii, m_row_alignment | m_col_alignments.at(ii));
++ layout->SetMinimumColumnWidth(ii, m_col_widths.at(ii));
++ layout->SetColumnStretch(ii, m_col_stretches.at(ii));
+ }
+ }
+
+@@ -306,18 +306,13 @@ void ListBox::Row::resize(std::size_t n)
+ std::size_t old_size = m_cells.size();
+
+ for (std::size_t ii = n; ii < old_size; ++ii) {
+- delete m_cells[ii];
+- m_cells[ii] = nullptr;
++ delete m_cells.at(ii);
++ m_cells.at(ii) = nullptr;
+ }
+ m_cells.resize(n, nullptr);
+- m_col_widths.resize(n);
+- m_col_alignments.resize(n);
+- m_col_stretches.resize(n);
+- for (std::size_t ii = old_size; ii < n; ++ii) {
+- m_col_widths[ii] = old_size ? m_col_widths[old_size - 1] : X(5); // assign new
cells reasonable default widths
+- m_col_alignments[ii] = ALIGN_NONE;
+- m_col_stretches[ii] = 0.0;
+- }
++ m_col_widths.resize(n, old_size ? m_col_widths.at(old_size - 1) : X(5)); // assign
new cells reasonable default widths
++ m_col_alignments.resize(n, ALIGN_NONE);
++ m_col_stretches.resize(n, 0.0);
+
+ DetachChildren();
+ SetLayout(layout);
+@@ -336,37 +331,37 @@ void ListBox::Row::resize(std::size_t n)
+ layout->ResizeLayout(1, m_cells.size());
+ for (std::size_t ii = 0; ii < m_cells.size(); ++ii) {
+ if (!m_col_widths.empty())
+- layout->SetMinimumColumnWidth(ii, m_col_widths[ii]);
++ layout->SetMinimumColumnWidth(ii, m_col_widths.at(ii));
+ if (!m_col_stretches.empty())
+- layout->SetColumnStretch(ii, m_col_stretches[ii]);
+- if (m_cells[ii]) {
++ layout->SetColumnStretch(ii, m_col_stretches.at(ii));
++ if (m_cells.at(ii)) {
+ if (m_col_alignments.empty())
+- layout->Add(m_cells[ii], 0, ii, m_row_alignment);
++ layout->Add(m_cells.at(ii), 0, ii, m_row_alignment);
+ else
+- layout->Add(m_cells[ii], 0, ii, m_row_alignment |
m_col_alignments[ii]);
++ layout->Add(m_cells.at(ii), 0, ii, m_row_alignment |
m_col_alignments.at(ii));
+ }
+ }
+ }
+
+ void ListBox::Row::SetCell(std::size_t n, Control* c)
+ {
+- if (c == m_cells[n])
++ if (c == m_cells.at(n))
+ return;
+
+ Layout* layout = GetLayout();
+
+- if (m_cells.size() > n && m_cells[n]) {
+- layout->Remove(m_cells[n]);
+- delete m_cells[n];
++ if (m_cells.size() > n && m_cells.at(n)) {
++ layout->Remove(m_cells.at(n));
++ delete m_cells.at(n);
+ }
+
+- m_cells[n] = c;
++ m_cells.at(n) = c;
+
+ if (!c)
+ return;
+ if (layout->Columns() <= n)
+ layout->ResizeLayout(1, n + 1);
+- layout->Add(c, 0, n, m_row_alignment | m_col_alignments[n]);
++ layout->Add(c, 0, n, m_row_alignment | m_col_alignments.at(n));
+ }
+
+ Control* ListBox::Row::RemoveCell(std::size_t n)
+@@ -374,9 +369,9 @@ Control* ListBox::Row::RemoveCell(std::size_t n)
+ if (m_cells.size() <= n)
+ return nullptr;
+ Layout* layout = GetLayout();
+- Control* retval = m_cells[n];
++ Control* retval = m_cells.at(n);
+ layout->Remove(retval);
+- m_cells[n] = nullptr;
++ m_cells.at(n) = nullptr;
+ return retval;
+ }
+
+@@ -389,33 +384,33 @@ void ListBox::Row::SetRowAlignment(Alignment align)
+
+ Layout* layout = GetLayout();
+ for (std::size_t ii = 0; ii < m_cells.size(); ++ii) {
+- if (m_cells[ii])
+- layout->Add(m_cells[ii], 0, ii,
++ if (m_cells.at(ii))
++ layout->Add(m_cells.at(ii), 0, ii,
+ (m_row_alignment
+- | (m_col_alignments.empty() ? ALIGN_NONE :
m_col_alignments[ii])));
++ | (m_col_alignments.empty() ? ALIGN_NONE :
m_col_alignments.at(ii))));
+ }
+ }
+
+ void ListBox::Row::SetColAlignment(std::size_t n, Alignment align)
+ {
+ GrowWidthsStretchesAlignmentsTo(n + 1);
+- if (align == m_col_alignments[n])
++ if (align == m_col_alignments.at(n))
+ return;
+
+- m_col_alignments[n] = align;
++ m_col_alignments.at(n) = align;
+ Layout* layout = GetLayout();
+ ValidateLayoutSize(layout, n + 1);
+- if (m_cells[n])
+- layout->SetChildAlignment(m_cells[n], m_row_alignment | align);
++ if (m_cells.at(n))
++ layout->SetChildAlignment(m_cells.at(n), m_row_alignment | align);
+ }
+
+ void ListBox::Row::SetColWidth(std::size_t n, X width)
+ {
+ GrowWidthsStretchesAlignmentsTo(n + 1);
+- if (width == m_col_widths[n])
++ if (width == m_col_widths.at(n))
+ return;
+
+- m_col_widths[n] = width;
++ m_col_widths.at(n) = width;
+
+ Layout* layout = GetLayout();
+ ValidateLayoutSize(layout, n + 1);
+@@ -427,12 +422,18 @@ void ListBox::Row::SetColAlignments(const
std::vector<Alignment>& aligns)
+ if (aligns == m_col_alignments)
+ return;
+
+- m_col_alignments = aligns;
++ m_col_alignments.resize(m_cells.size(), ALIGN_NONE);
++
++ for (std::size_t i = 0; i < m_cells.size(); ++i) {
++ if (i < aligns.size())
++ m_col_alignments.at(i) = aligns.at(i);
++ }
++
+ Layout* layout = GetLayout();
+ ValidateLayoutSize(layout, aligns.size());
+ for (std::size_t ii = 0; ii < m_cells.size(); ++ii) {
+- if (m_cells[ii])
+- layout->SetChildAlignment(m_cells[ii], m_row_alignment |
m_col_alignments[ii]);
++ if (m_cells.at(ii))
++ layout->SetChildAlignment(m_cells.at(ii), m_row_alignment |
m_col_alignments.at(ii));
+ }
+ }
+
+@@ -454,11 +455,17 @@ void ListBox::Row::SetColWidths(const std::vector<X>&
widths)
+ if (widths == m_col_widths)
+ return;
+
+- m_col_widths = widths;
++ m_col_widths.resize(m_cells.size(), X(5));
++
++ for (std::size_t i = 0; i < m_cells.size(); ++i) {
++ if (i < widths.size())
++ m_col_widths.at(i) = widths.at(i);
++ }
++
+ Layout* layout = GetLayout();
+ ValidateLayoutSize(layout, widths.size());
+ for (std::size_t ii = 0; ii < m_cells.size(); ++ii) {
+- layout->SetMinimumColumnWidth(ii, m_col_widths[ii]);
++ layout->SetMinimumColumnWidth(ii, m_col_widths.at(ii));
+ }
+ }
+
+@@ -480,11 +487,17 @@ void ListBox::Row::SetColStretches(const
std::vector<double>& stretches)
+ if (stretches == m_col_stretches)
+ return;
+
+- m_col_stretches = stretches;
++ m_col_stretches.resize(m_cells.size(), 0.0);
++
++ for (std::size_t i = 0; i < m_cells.size(); ++i) {
++ if (i < stretches.size())
++ m_col_stretches.at(i) = stretches.at(i);
++ }
++
+ Layout* layout = GetLayout();
+ ValidateLayoutSize(layout, m_col_stretches.size());
+ for (std::size_t ii = 0; ii < m_cells.size(); ++ii) {
+- layout->SetColumnStretch(ii, m_col_stretches[ii]);
++ layout->SetColumnStretch(ii, m_col_stretches.at(ii));
+ }
+ }
+
+
+From c855e8ae124f49ccab6d7bc968f9b24a148d188f Mon Sep 17 00:00:00 2001
+From: D Benage <dbenage.cx(a)gmail.com>
+Date: Wed, 27 Jun 2018 23:28:05 -0500
+Subject: [PATCH 4/5] Don't call .back() on empty vectors.
+
+---
+ universe/ValueRef.cpp | 24 ++++++++++++------------
+ 1 file changed, 12 insertions(+), 12 deletions(-)
+
+diff --git a/universe/ValueRef.cpp b/universe/ValueRef.cpp
+index a59f950e51..baeec13995 100644
+--- a/universe/ValueRef.cpp
++++ b/universe/ValueRef.cpp
+@@ -468,7 +468,7 @@ if (m_ref_type == EFFECT_TARGET_VALUE_REFERENCE) {
\
+ template <>
+ PlanetSize Variable<PlanetSize>::Eval(const ScriptingContext& context) const
+ {
+- const std::string& property_name = m_property_name.back();
++ const std::string& property_name = m_property_name.empty() ? "" :
m_property_name.back();
+
+ IF_CURRENT_VALUE(PlanetSize)
+
+@@ -500,7 +500,7 @@ PlanetSize Variable<PlanetSize>::Eval(const
ScriptingContext& context) const
+ template <>
+ PlanetType Variable<PlanetType>::Eval(const ScriptingContext& context) const
+ {
+- const std::string& property_name = m_property_name.back();
++ const std::string& property_name = m_property_name.empty() ? "" :
m_property_name.back();
+
+ IF_CURRENT_VALUE(PlanetType)
+
+@@ -538,7 +538,7 @@ PlanetType Variable<PlanetType>::Eval(const
ScriptingContext& context) const
+ template <>
+ PlanetEnvironment Variable<PlanetEnvironment>::Eval(const ScriptingContext&
context) const
+ {
+- const std::string& property_name = m_property_name.back();
++ const std::string& property_name = m_property_name.empty() ? "" :
m_property_name.back();
+
+ IF_CURRENT_VALUE(PlanetEnvironment)
+
+@@ -565,7 +565,7 @@ PlanetEnvironment Variable<PlanetEnvironment>::Eval(const
ScriptingContext& cont
+ template <>
+ UniverseObjectType Variable<UniverseObjectType>::Eval(const ScriptingContext&
context) const
+ {
+- const std::string& property_name = m_property_name.back();
++ const std::string& property_name = m_property_name.empty() ? "" :
m_property_name.back();
+
+ IF_CURRENT_VALUE(UniverseObjectType)
+
+@@ -597,7 +597,7 @@ UniverseObjectType Variable<UniverseObjectType>::Eval(const
ScriptingContext& co
+ template <>
+ StarType Variable<StarType>::Eval(const ScriptingContext& context) const
+ {
+- const std::string& property_name = m_property_name.back();
++ const std::string& property_name = m_property_name.empty() ? "" :
m_property_name.back();
+
+ IF_CURRENT_VALUE(StarType)
+
+@@ -629,7 +629,7 @@ StarType Variable<StarType>::Eval(const ScriptingContext&
context) const
+ template <>
+ double Variable<double>::Eval(const ScriptingContext& context) const
+ {
+- const std::string& property_name = m_property_name.back();
++ const std::string& property_name = m_property_name.empty() ? "" :
m_property_name.back();
+
+ IF_CURRENT_VALUE(float)
+
+@@ -733,7 +733,7 @@ double Variable<double>::Eval(const ScriptingContext&
context) const
+ template <>
+ int Variable<int>::Eval(const ScriptingContext& context) const
+ {
+- const std::string& property_name = m_property_name.back();
++ const std::string& property_name = m_property_name.empty() ? "" :
m_property_name.back();
+
+ IF_CURRENT_VALUE(int)
+
+@@ -925,7 +925,7 @@ int Variable<int>::Eval(const ScriptingContext& context)
const
+ template <>
+ std::vector<std::string>
Variable<std::vector<std::string>>::Eval(const ScriptingContext& context)
const
+ {
+- const std::string& property_name = m_property_name.back();
++ const std::string& property_name = m_property_name.empty() ? "" :
m_property_name.back();
+
+ IF_CURRENT_VALUE(std::vector<std::string>)
+
+@@ -990,7 +990,7 @@ std::vector<std::string>
Variable<std::vector<std::string>>::Eval(const Scriptin
+ template <>
+ std::string Variable<std::string>::Eval(const ScriptingContext& context)
const
+ {
+- const std::string& property_name = m_property_name.back();
++ const std::string& property_name = m_property_name.empty() ? "" :
m_property_name.back();
+
+ IF_CURRENT_VALUE(std::string)
+
+@@ -1472,7 +1472,7 @@ namespace {
+ template <>
+ int ComplexVariable<int>::Eval(const ScriptingContext& context) const
+ {
+- const std::string& variable_name = m_property_name.back();
++ const std::string& variable_name = m_property_name.empty() ? "" :
m_property_name.back();
+
+ // empire properties indexed by strings
+ if (variable_name == "BuildingTypesOwned" ||
+@@ -1756,7 +1756,7 @@ int ComplexVariable<int>::Eval(const ScriptingContext&
context) const
+ template <>
+ double ComplexVariable<double>::Eval(const ScriptingContext& context) const
+ {
+- const std::string& variable_name = m_property_name.back();
++ const std::string& variable_name = m_property_name.empty() ? "" :
m_property_name.back();
+
+ // empire properties indexed by integers
+ if (variable_name == "PropagatedSystemSupplyRange" ||
+@@ -1978,7 +1978,7 @@ namespace {
+ template <>
+ std::string ComplexVariable<std::string>::Eval(const ScriptingContext&
context) const
+ {
+- const std::string& variable_name = m_property_name.back();
++ const std::string& variable_name = m_property_name.empty() ? "" :
m_property_name.back();
+
+ // unindexed empire properties
+ if (variable_name == "LowestCostEnqueuedTech") {
+
+From 73d039694eda7ea8eb2462e567f6092066feef22 Mon Sep 17 00:00:00 2001
+From: geoffthemedio <geoffthemedio(a)gmail.com>
+Date: Sat, 10 Mar 2018 12:03:21 +0100
+Subject: [PATCH 5/5] Safety checks.
+
+---
+ GG/src/Font.cpp | 3 +++
+ GG/src/MultiEdit.cpp | 17 +++++++++++++++--
+ 2 files changed, 18 insertions(+), 2 deletions(-)
+
+diff --git a/GG/src/Font.cpp b/GG/src/Font.cpp
+index 68099f9305..fd4be9b3f2 100644
+--- a/GG/src/Font.cpp
++++ b/GG/src/Font.cpp
+@@ -1306,6 +1306,9 @@ void Font::ProcessTagsBefore(const std::vector<LineData>&
line_data, RenderState
+ double orig_color[4];
+ glGetDoublev(GL_CURRENT_COLOR, orig_color);
+
++ if (line_data.empty())
++ return;
++
+ for (std::size_t i = 0; i <= begin_line; ++i) {
+ const LineData& line = line_data[i];
+ for (CPSize j = CP0;
+diff --git a/GG/src/MultiEdit.cpp b/GG/src/MultiEdit.cpp
+index 2bf22a62a1..7e47c7d644 100644
+--- a/GG/src/MultiEdit.cpp
++++ b/GG/src/MultiEdit.cpp
+@@ -161,16 +161,29 @@ void MultiEdit::Render()
+
+ BeveledRectangle(ul, lr, int_color_to_use, color_to_use, false, BORDER_THICK);
+
++ const auto& lines = GetLineData();
++ if (lines.empty()) {
++ // no text to render
++ return;
++ }
++
+ // clip text to client area
+ BeginScissorClipping(Pt(cl_ul.x - 1, cl_ul.y), cl_lr);
+
+ Font::RenderState state(text_color_to_use);
+ std::size_t first_visible_row = FirstVisibleRow();
+ std::size_t last_visible_row = LastVisibleRow();
+- Flags<TextFormat> text_format = (TextFormat() & ~(FORMAT_TOP |
FORMAT_BOTTOM)) | FORMAT_VCENTER;
+- const std::vector<Font::LineData>& lines = GetLineData();
++
++ // safety checks
++ if (first_visible_row > last_visible_row || (last_visible_row > lines.size()))
{
++ EndScissorClipping();
++ return;
++ }
++
++ // process tags
+ GetFont()->ProcessTagsBefore(lines, state, first_visible_row, CP0);
+
++ Flags<TextFormat> text_format = (TextFormat() & ~(FORMAT_TOP |
FORMAT_BOTTOM)) | FORMAT_VCENTER;
+ for (std::size_t row = first_visible_row; row <= last_visible_row && row
< lines.size(); ++row) {
+ Y row_y_pos = ((m_style & MULTI_TOP) || m_contents_sz.y - ClientSize().y
< 0) ?
+ cl_ul.y + static_cast<int>(row) * GetFont()->Lineskip() -
m_first_row_shown :
diff --git a/freeorion.spec b/freeorion.spec
index f479582..df1e4a6 100644
--- a/freeorion.spec
+++ b/freeorion.spec
@@ -1,10 +1,11 @@
%global _release_date 2017-09-03
%global _commit0 139ffd9b323ab7e9f9eeae3483a9c2f4eee87fcd
%global _shortcommit0 %(c=%{_commit0}; echo ${c:0:7})
+%define __global_cflags %{__global_cflags} -U_GLIBCXX_ASSERTIONS
Name: freeorion
Version: 0.4.7.1
-Release: 8%{?dist}
+Release: 9%{?dist}
Summary: Turn-based space empire and galactic conquest (4X) computer game
Group: Amusements/Games
@@ -14,6 +15,9 @@
Source0:
https://github.com/freeorion/freeorion/releases/download/v%{version}/Fr
Source1: freeorion.appdata.xml
Patch1: fix_boost166.patch
+#
https://github.com/freeorion/freeorion/issues/2182
+Patch2: fix-2182_backport-v0.4.7.1.patch
+
BuildRequires: gcc-c++
BuildRequires: cmake
BuildRequires: python2-devel >= 2.7
@@ -103,6 +107,9 @@ desktop-file-validate %{name}.desktop
%changelog
+* Wed Jun 27 2018 Link Dupont <linkdupont(a)fedoraproject.org> - 0.4.7.1-9
+- Patch set to fix assertion crashes (RHBZ#1575292)
+
* Wed Mar 07 2018 Adam Williamson <awilliam(a)redhat.com> - 0.4.7.1-8
- Rebuild to fix GCC 8 mis-compilation
See
https://da.gd/YJVwk ("GCC 8 ABI change on x86_64")
commit 62c30e904a505dfbd25a0328194596b60185cd1f
Author: Adam Williamson <awilliam(a)redhat.com>
Date: Wed Mar 7 17:14:45 2018 -0800
Rebuild to fix GCC 8 mis-compilation
See
https://da.gd/YJVwk ("GCC 8 ABI change on x86_64")
diff --git a/freeorion.spec b/freeorion.spec
index 20352db..f479582 100644
--- a/freeorion.spec
+++ b/freeorion.spec
@@ -4,7 +4,7 @@
Name: freeorion
Version: 0.4.7.1
-Release: 7%{?dist}
+Release: 8%{?dist}
Summary: Turn-based space empire and galactic conquest (4X) computer game
Group: Amusements/Games
@@ -103,6 +103,10 @@ desktop-file-validate %{name}.desktop
%changelog
+* Wed Mar 07 2018 Adam Williamson <awilliam(a)redhat.com> - 0.4.7.1-8
+- Rebuild to fix GCC 8 mis-compilation
+ See
https://da.gd/YJVwk ("GCC 8 ABI change on x86_64")
+
* Sun Feb 18 2018 Link Dupont <linkdupont(a)fedoraproject.org> - 0.4.7.1-7
- Add missing build dependency on gcc-c++
commit bebdfdcc986ecc855d250cd1be5fb1cf67db8591
Author: Link Dupont <link(a)sub-pop.net>
Date: Thu Feb 22 22:54:24 2018 -0800
Add missing build dependency on gcc-c++
diff --git a/freeorion.spec b/freeorion.spec
index 438d3d2..20352db 100644
--- a/freeorion.spec
+++ b/freeorion.spec
@@ -4,7 +4,7 @@
Name: freeorion
Version: 0.4.7.1
-Release: 6%{?dist}
+Release: 7%{?dist}
Summary: Turn-based space empire and galactic conquest (4X) computer game
Group: Amusements/Games
@@ -14,6 +14,7 @@
Source0:
https://github.com/freeorion/freeorion/releases/download/v%{version}/Fr
Source1: freeorion.appdata.xml
Patch1: fix_boost166.patch
+BuildRequires: gcc-c++
BuildRequires: cmake
BuildRequires: python2-devel >= 2.7
BuildRequires: boost-devel >= 1.47.0
@@ -102,6 +103,9 @@ desktop-file-validate %{name}.desktop
%changelog
+* Sun Feb 18 2018 Link Dupont <linkdupont(a)fedoraproject.org> - 0.4.7.1-7
+- Add missing build dependency on gcc-c++
+
* Sun Feb 18 2018 josef radinger <cheese(a)nosuchhost.net> - 0.4.7.1-6
- Rebuild for new boost (add fix_boost166.patch)
commit 4ba8f84f36880aaec59531a01fa3a708e5d48d84
Author: josef radinger <cheese(a)nosuchhost.net>
Date: Mon Feb 19 20:17:50 2018 +0100
Rebuild for new boost (add fix_boost166.patch)
diff --git a/.gitignore b/.gitignore
index 70d1faa..1bc841a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
/FreeOrion_v0.4.7.1_2017-09-03.139ffd9_Source.tar.gz
+/fix_boost166.patch
diff --git a/fix_boost166.patch b/fix_boost166.patch
new file mode 100644
index 0000000..9b40949
--- /dev/null
+++ b/fix_boost166.patch
@@ -0,0 +1,37 @@
+From c9b5b13fb81b1ed142dee0e843101c6b8832ca95 Mon Sep 17 00:00:00 2001
+From: D Benage <dbenage.cx(a)gmail.com>
+Date: Wed, 13 Dec 2017 18:53:55 -0600
+Subject: [PATCH] Replace use of boost::system::posix_error
+
+First deprecated in boost v1.37
+---
+ GG/src/dialogs/FileDlg.cpp | 2 +-
+ UI/ClientUI.cpp | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/GG/src/dialogs/FileDlg.cpp b/GG/src/dialogs/FileDlg.cpp
+index 9032aee584..17b9232333 100644
+--- a/GG/src/dialogs/FileDlg.cpp
++++ b/GG/src/dialogs/FileDlg.cpp
+@@ -746,7 +746,7 @@ void FileDlg::OpenDirectory()
+ try {
+ SetWorkingDirectory(fs::path(directory + "\\"));
+ } catch (const fs::filesystem_error& e) {
+- if (e.code() == boost::system::posix_error::io_error) {
++ if (e.code() == boost::system::errc::io_error) {
+ m_in_win32_drive_selection = true;
+ m_files_edit->Clear();
+ FilesEditChanged(m_files_edit->Text());
+diff --git a/UI/ClientUI.cpp b/UI/ClientUI.cpp
+index f294e91169..f9709ad4e9 100644
+--- a/UI/ClientUI.cpp
++++ b/UI/ClientUI.cpp
+@@ -1136,7 +1136,7 @@ ClientUI::TexturesAndDist ClientUI::PrefixedTexturesAndDist(const
boost::filesys
+ textures.push_back(ClientUI::GetTexture(*it, mipmap));
+ } catch (const fs::filesystem_error& e) {
+ // ignore files for which permission is denied, and rethrow other
exceptions
+- if (e.code() != boost::system::posix_error::permission_denied)
++ if (e.code() != boost::system::errc::permission_denied)
+ throw;
+ }
+ }
diff --git a/freeorion.spec b/freeorion.spec
index 927ca5c..438d3d2 100644
--- a/freeorion.spec
+++ b/freeorion.spec
@@ -4,7 +4,7 @@
Name: freeorion
Version: 0.4.7.1
-Release: 5%{?dist}
+Release: 6%{?dist}
Summary: Turn-based space empire and galactic conquest (4X) computer game
Group: Amusements/Games
@@ -13,6 +13,7 @@ URL:
http://freeorion.org
Source0:
https://github.com/freeorion/freeorion/releases/download/v%{version}/Free...
Source1: freeorion.appdata.xml
+Patch1: fix_boost166.patch
BuildRequires: cmake
BuildRequires: python2-devel >= 2.7
BuildRequires: boost-devel >= 1.47.0
@@ -52,7 +53,7 @@ Images, sound and game data for %{name}.
%prep
-%autosetup -n src-tarball
+%autosetup -n src-tarball -p1
%build
@@ -101,6 +102,9 @@ desktop-file-validate %{name}.desktop
%changelog
+* Sun Feb 18 2018 josef radinger <cheese(a)nosuchhost.net> - 0.4.7.1-6
+- Rebuild for new boost (add fix_boost166.patch)
+
* Wed Feb 07 2018 Fedora Release Engineering <releng(a)fedoraproject.org> -
0.4.7.1-5
- Rebuilt for
https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
diff --git a/sources b/sources
index 882d286..34ea806 100644
--- a/sources
+++ b/sources
@@ -1 +1,2 @@
SHA512 (FreeOrion_v0.4.7.1_2017-09-03.139ffd9_Source.tar.gz) =
40c2c683c61f7a85e357742daef2d0e23dacc5e24c628072aabbc84af1d7229762620fb6b9452e9f2ecc2ff32dffe1fc11d0c9ab7cc5477c0e23b6b465ff614e
+SHA512 (fix_boost166.patch) =
071981b2323f203bb9d31a3331caf719a91f6012e08d897d8f3218cb71b0bcc9838aab33ab25bfbb47851e35e4c58afdb80618fa3b9d36fd874ab7e318a906a2
commit e6ff95a911777061e0069c1d53543ee1c40ecd6c
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Wed Feb 7 10:09:35 2018 +0000
- Rebuilt for
https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng(a)fedoraproject.org>
diff --git a/freeorion.spec b/freeorion.spec
index b238b72..927ca5c 100644
--- a/freeorion.spec
+++ b/freeorion.spec
@@ -4,7 +4,7 @@
Name: freeorion
Version: 0.4.7.1
-Release: 4%{?dist}
+Release: 5%{?dist}
Summary: Turn-based space empire and galactic conquest (4X) computer game
Group: Amusements/Games
@@ -101,6 +101,9 @@ desktop-file-validate %{name}.desktop
%changelog
+* Wed Feb 07 2018 Fedora Release Engineering <releng(a)fedoraproject.org> -
0.4.7.1-5
+- Rebuilt for
https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
+
* Wed Jan 31 2018 josef radinger <cheese(a)nosuchhost.net> - 0.4.7.1-4
- Rebuild for new boost
commit 763e4a3dccd754b4f279b350590f8ad828219686
Author: josef radinger <cheese(a)nosuchhost.net>
Date: Wed Jan 31 16:44:32 2018 +0100
Rebuild for new boost
diff --git a/freeorion.spec b/freeorion.spec
index dfb6eca..b238b72 100644
--- a/freeorion.spec
+++ b/freeorion.spec
@@ -4,7 +4,7 @@
Name: freeorion
Version: 0.4.7.1
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: Turn-based space empire and galactic conquest (4X) computer game
Group: Amusements/Games
@@ -101,6 +101,9 @@ desktop-file-validate %{name}.desktop
%changelog
+* Wed Jan 31 2018 josef radinger <cheese(a)nosuchhost.net> - 0.4.7.1-4
+- Rebuild for new boost
+
* Thu Jan 11 2018 Igor Gnatenko <ignatenkobrain(a)fedoraproject.org> - 0.4.7.1-3
- Remove obsolete scriptlets
commit 1241d75153ace076ef33bff39190e57adee81ea4
Author: Igor Gnatenko <ignatenkobrain(a)fedoraproject.org>
Date: Thu Jan 11 14:51:53 2018 +0100
Remove obsolete scriptlets
Signed-off-by: Igor Gnatenko <ignatenkobrain(a)fedoraproject.org>
diff --git a/freeorion.spec b/freeorion.spec
index 39962ff..dfb6eca 100644
--- a/freeorion.spec
+++ b/freeorion.spec
@@ -4,7 +4,7 @@
Name: freeorion
Version: 0.4.7.1
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: Turn-based space empire and galactic conquest (4X) computer game
Group: Amusements/Games
@@ -81,20 +81,9 @@ appstream-util validate-relax --nonet
%{buildroot}%{_datadir}/appdata/%{name}.ap
desktop-file-validate %{name}.desktop
-%post
-/bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
-/sbin/ldconfig
-
-%postun
-if [ $1 -eq 0 ] ; then
- /bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null
- /usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
-fi
-/sbin/ldconfig
-
-%posttrans
-/usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
+%post -p /sbin/ldconfig
+%postun -p /sbin/ldconfig
%files
%license default/COPYING GG/COPYING.libgigi
@@ -112,6 +101,9 @@ fi
%changelog
+* Thu Jan 11 2018 Igor Gnatenko <ignatenkobrain(a)fedoraproject.org> - 0.4.7.1-3
+- Remove obsolete scriptlets
+
* Wed Sep 13 2017 Dan Horák <dan[at]danny.cz> - 0.4.7.1-2
- fix build on ppc64le (#1491093)
commit 0bfcee335f64cbdaf3762a6b23c9b19cad47cc34
Author: Dan Horák <dan(a)danny.cz>
Date: Wed Sep 13 10:29:20 2017 +0200
- fix build on ppc64le (#1491093)
diff --git a/freeorion.spec b/freeorion.spec
index 5c63b74..39962ff 100644
--- a/freeorion.spec
+++ b/freeorion.spec
@@ -4,7 +4,7 @@
Name: freeorion
Version: 0.4.7.1
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Turn-based space empire and galactic conquest (4X) computer game
Group: Amusements/Games
@@ -13,8 +13,6 @@ URL:
http://freeorion.org
Source0:
https://github.com/freeorion/freeorion/releases/download/v%{version}/Free...
Source1: freeorion.appdata.xml
-ExcludeArch: ppc64le #
https://bugzilla.redhat.com/show_bug.cgi?id=1491093
-
BuildRequires: cmake
BuildRequires: python2-devel >= 2.7
BuildRequires: boost-devel >= 1.47.0
@@ -58,6 +56,12 @@ Images, sound and game data for %{name}.
%build
+#
https://bugzilla.redhat.com/show_bug.cgi?id=1491093
+# switch to -std=gnu++11 for vector handling
+%ifarch ppc64le
+sed -i 's/CMAKE_CXX_EXTENSIONS OFF/CMAKE_CXX_EXTENSIONS ON/' CMakeLists.txt
+sed -i 's/CMAKE_CXX_EXTENSIONS OFF/CMAKE_CXX_EXTENSIONS ON/' GG/CMakeLists.txt
+%endif
%cmake -DCMAKE_INSTALL_LIBDIR=%{_lib} .
%make_build
@@ -108,6 +112,9 @@ fi
%changelog
+* Wed Sep 13 2017 Dan Horák <dan[at]danny.cz> - 0.4.7.1-2
+- fix build on ppc64le (#1491093)
+
* Tue Sep 12 2017 Link Dupont <linkdupont(a)fedoraproject.org> - 0.4.7.1-1
- New upstream release
commit afdc90762a9b611ab606e822e581b14a6880dd38
Author: Link Dupont <link(a)sub-pop.net>
Date: Tue Sep 12 20:33:46 2017 -0700
exclude ppc64le architecture
diff --git a/freeorion.spec b/freeorion.spec
index 8dbd914..5c63b74 100644
--- a/freeorion.spec
+++ b/freeorion.spec
@@ -13,6 +13,8 @@ URL:
http://freeorion.org
Source0:
https://github.com/freeorion/freeorion/releases/download/v%{version}/Free...
Source1: freeorion.appdata.xml
+ExcludeArch: ppc64le #
https://bugzilla.redhat.com/show_bug.cgi?id=1491093
+
BuildRequires: cmake
BuildRequires: python2-devel >= 2.7
BuildRequires: boost-devel >= 1.47.0
@@ -57,12 +59,7 @@ Images, sound and game data for %{name}.
%build
%cmake -DCMAKE_INSTALL_LIBDIR=%{_lib} .
-# disable parallel builds on ppc64le
-%ifarch ppc64le
-%__make -j1
-%else
%make_build
-%endif
%install
%make_install