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=0bfcee335f6... https://src.fedoraproject.org/cgit/rpms/freeorion.git/commit/?id=afdc90762a9....
Change: +%ifarch ppc64le -%ifarch ppc64le
Thanks.
Full change: ============
commit a7df07c336d9d371c9aa7f25ba569c16f1805b6d Merge: b63edf0 872c93a Author: Link Dupont link@sub-pop.net Date: Thu Jun 28 20:46:19 2018 -0700
Merge branch 'f28' into f27
commit 872c93a76f2ecafdd64b2aecbb5b0cdd6525b6b9 Author: Link Dupont link@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@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@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@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@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::vectorstd::string Variable<std::vectorstd::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::vectorstd::string) + +@@ -990,7 +990,7 @@ std::vectorstd::string Variable<std::vectorstd::string>::Eval(const Scriptin + template <> + std::string Variablestd::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 ComplexVariablestd::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@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::vectorFont::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%%7Bversion%7D/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@fedoraproject.org - 0.4.7.1-9 +- Patch set to fix assertion crashes (RHBZ#1575292) + * Wed Mar 07 2018 Adam Williamson awilliam@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@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@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@fedoraproject.org - 0.4.7.1-7 - Add missing build dependency on gcc-c++
commit bebdfdcc986ecc855d250cd1be5fb1cf67db8591 Author: Link Dupont link@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%%7Bversion%7D/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@fedoraproject.org - 0.4.7.1-7 +- Add missing build dependency on gcc-c++ + * Sun Feb 18 2018 josef radinger cheese@nosuchhost.net - 0.4.7.1-6 - Rebuild for new boost (add fix_boost166.patch)
commit 4ba8f84f36880aaec59531a01fa3a708e5d48d84 Author: josef radinger cheese@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@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%%7Bversion%7D/Fre... 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@nosuchhost.net - 0.4.7.1-6 +- Rebuild for new boost (add fix_boost166.patch) + * Wed Feb 07 2018 Fedora Release Engineering releng@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@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@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@fedoraproject.org - 0.4.7.1-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + * Wed Jan 31 2018 josef radinger cheese@nosuchhost.net - 0.4.7.1-4 - Rebuild for new boost
commit 763e4a3dccd754b4f279b350590f8ad828219686 Author: josef radinger cheese@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@nosuchhost.net - 0.4.7.1-4 +- Rebuild for new boost + * Thu Jan 11 2018 Igor Gnatenko ignatenkobrain@fedoraproject.org - 0.4.7.1-3 - Remove obsolete scriptlets
commit 1241d75153ace076ef33bff39190e57adee81ea4 Author: Igor Gnatenko ignatenkobrain@fedoraproject.org Date: Thu Jan 11 14:51:53 2018 +0100
Remove obsolete scriptlets
Signed-off-by: Igor Gnatenko ignatenkobrain@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@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@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%%7Bversion%7D/Fre... 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@fedoraproject.org - 0.4.7.1-1 - New upstream release
commit afdc90762a9b611ab606e822e581b14a6880dd38 Author: Link Dupont link@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%%7Bversion%7D/Fre... 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
arch-excludes@lists.fedoraproject.org