Gentoo Archives: gentoo-commits

From: Andreas Sturmlechner <asturm@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: games-strategy/hedgewars/files/, games-strategy/hedgewars/
Date: Thu, 29 Mar 2018 18:57:06
Message-Id: 1522349800.2bc30a2ca0454d4c93ae8e7b88775b14dbe36841.asturm@gentoo
1 commit: 2bc30a2ca0454d4c93ae8e7b88775b14dbe36841
2 Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
3 AuthorDate: Thu Mar 29 18:36:21 2018 +0000
4 Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
5 CommitDate: Thu Mar 29 18:56:40 2018 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2bc30a2c
7
8 games-strategy/hedgewars: Fix settings saving w/ Qt-5.9
9
10 Thanks-to: Quentin R. <gentoo <AT> retornaz.com>
11 Closes: https://bugs.gentoo.org/651810
12 Package-Manager: Portage-2.3.26, Repoman-2.3.7
13
14 .../files/hedgewars-0.9.23-settings-saving.patch | 134 +++++++++++++++++++++
15 .../hedgewars/hedgewars-0.9.23-r3.ebuild | 94 +++++++++++++++
16 2 files changed, 228 insertions(+)
17
18 diff --git a/games-strategy/hedgewars/files/hedgewars-0.9.23-settings-saving.patch b/games-strategy/hedgewars/files/hedgewars-0.9.23-settings-saving.patch
19 new file mode 100644
20 index 00000000000..3997ac37649
21 --- /dev/null
22 +++ b/games-strategy/hedgewars/files/hedgewars-0.9.23-settings-saving.patch
23 @@ -0,0 +1,134 @@
24 +From f8e302e5ac5033c1b7ac5d83d6d8df3f15eb6178 Mon Sep 17 00:00:00 2001
25 +From: Wuzzy <Wuzzy2@××××.ru>
26 +Date: Tue, 27 Mar 2018 17:32:23 +0200
27 +Subject: [PATCH] Fix team files and settings not saving properly, and remove
28 + FileEngine stuff from DLC
29 +
30 +This is done by using absolute paths and removing physfs://
31 +---
32 + QTfrontend/game.cpp | 4 ++--
33 + QTfrontend/team.cpp | 10 +++++-----
34 + QTfrontend/ui/page/pagedata.cpp | 6 ------
35 + QTfrontend/util/DataManager.cpp | 4 ++--
36 + 4 files changed, 9 insertions(+), 15 deletions(-)
37 +
38 +diff --git a/QTfrontend/game.cpp b/QTfrontend/game.cpp
39 +index 224c38350..f071ef734 100644
40 +--- a/QTfrontend/game.cpp
41 ++++ b/QTfrontend/game.cpp
42 +@@ -536,7 +536,7 @@ void HWGame::abort()
43 + void HWGame::sendCampaignVar(const QByteArray &varToSend)
44 + {
45 + QString varToFind = QString::fromUtf8(varToSend);
46 +- QSettings teamfile(QString("physfs://Teams/%1.hwt").arg(campaignTeam), QSettings::IniFormat, 0);
47 ++ QSettings teamfile(QString(cfgdir->absolutePath() + "/Teams/%1.hwt").arg(campaignTeam), QSettings::IniFormat, 0);
48 + teamfile.setIniCodec("UTF-8");
49 + QString varValue = teamfile.value("Campaign " + campaign + "/" + varToFind, "").toString();
50 + QByteArray command;
51 +@@ -553,7 +553,7 @@ void HWGame::writeCampaignVar(const QByteArray & varVal)
52 + QString varToWrite = QString::fromUtf8(varVal.left(i));
53 + QString varValue = QString::fromUtf8(varVal.mid(i + 1));
54 +
55 +- QSettings teamfile(QString("physfs://Teams/%1.hwt").arg(campaignTeam), QSettings::IniFormat, 0);
56 ++ QSettings teamfile(QString(cfgdir->absolutePath() + "/Teams/%1.hwt").arg(campaignTeam), QSettings::IniFormat, 0);
57 + teamfile.setIniCodec("UTF-8");
58 + teamfile.setValue("Campaign " + campaign + "/" + varToWrite, varValue);
59 + }
60 +diff --git a/QTfrontend/team.cpp b/QTfrontend/team.cpp
61 +index 0586e622a..740697b7f 100644
62 +--- a/QTfrontend/team.cpp
63 ++++ b/QTfrontend/team.cpp
64 +@@ -171,7 +171,7 @@ HWTeam & HWTeam::operator = (const HWTeam & other)
65 +
66 + bool HWTeam::loadFromFile()
67 + {
68 +- QSettings teamfile(QString("physfs://Teams/%1.hwt").arg(DataManager::safeFileName(m_name)), QSettings::IniFormat, 0);
69 ++ QSettings teamfile(QString(cfgdir->absolutePath() + "/Teams/%1.hwt").arg(DataManager::safeFileName(m_name)), QSettings::IniFormat, 0);
70 + teamfile.setIniCodec("UTF-8");
71 + m_name = teamfile.value("Team/Name", m_name).toString();
72 + m_grave = teamfile.value("Team/Grave", "Statue").toString();
73 +@@ -204,7 +204,7 @@ bool HWTeam::loadFromFile()
74 +
75 + bool HWTeam::fileExists()
76 + {
77 +- QFile f(QString("physfs://Teams/%1.hwt").arg(DataManager::safeFileName(m_name)));
78 ++ QFile f(QString(cfgdir->absolutePath() + "/Teams/%1.hwt").arg(DataManager::safeFileName(m_name)));
79 + return f.exists();
80 + }
81 +
82 +@@ -220,7 +220,7 @@ bool HWTeam::deleteFile()
83 + {
84 + if(m_isNetTeam)
85 + return false;
86 +- QFile cfgfile(QString("physfs://Teams/%1.hwt").arg(DataManager::safeFileName(m_name)));
87 ++ QFile cfgfile(QString(cfgdir->absolutePath() + "/Teams/%1.hwt").arg(DataManager::safeFileName(m_name)));
88 + cfgfile.remove();
89 + return true;
90 + }
91 +@@ -229,12 +229,12 @@ bool HWTeam::saveToFile()
92 + {
93 + if (OldTeamName != m_name)
94 + {
95 +- QFile cfgfile(QString("physfs://Teams/%1.hwt").arg(DataManager::safeFileName(OldTeamName)));
96 ++ QFile cfgfile(QString(cfgdir->absolutePath() + "/Teams/%1.hwt").arg(DataManager::safeFileName(OldTeamName)));
97 + cfgfile.remove();
98 + OldTeamName = m_name;
99 + }
100 +
101 +- QString fileName = QString("physfs://Teams/%1.hwt").arg(DataManager::safeFileName(m_name));
102 ++ QString fileName = QString(cfgdir->absolutePath() + "/Teams/%1.hwt").arg(DataManager::safeFileName(m_name));
103 + DataManager::ensureFileExists(fileName);
104 + QSettings teamfile(fileName, QSettings::IniFormat, 0);
105 + teamfile.setIniCodec("UTF-8");
106 +diff --git a/QTfrontend/ui/page/pagedata.cpp b/QTfrontend/ui/page/pagedata.cpp
107 +index ccdea5ac4..cc7d17b2a 100644
108 +--- a/QTfrontend/ui/page/pagedata.cpp
109 ++++ b/QTfrontend/ui/page/pagedata.cpp
110 +@@ -31,8 +31,6 @@
111 + #include "pagedata.h"
112 + #include "databrowser.h"
113 + #include "hwconsts.h"
114 +-#include "DataManager.h"
115 +-#include "FileEngine.h"
116 +
117 + QLayout * PageDataDownload::bodyLayoutDefinition()
118 + {
119 +@@ -197,9 +195,6 @@ void PageDataDownload::fileDownloaded()
120 + out.write(reply->readAll());
121 +
122 + out.close();
123 +-
124 +- // now mount it
125 +- FileEngineHandler::mount(fileName);
126 + }
127 + }
128 +
129 +@@ -229,7 +224,6 @@ void PageDataDownload::onPageLeave()
130 + if (m_contentDownloaded)
131 + {
132 + m_contentDownloaded = false;
133 +- //DataManager::instance().reload();
134 + }
135 + }
136 +
137 +diff --git a/QTfrontend/util/DataManager.cpp b/QTfrontend/util/DataManager.cpp
138 +index 3d69931cf..5c8aa4cc5 100644
139 +--- a/QTfrontend/util/DataManager.cpp
140 ++++ b/QTfrontend/util/DataManager.cpp
141 +@@ -172,11 +172,11 @@ QString DataManager::settingsFileName()
142 + {
143 + if(m_settingsFileName.isEmpty())
144 + {
145 +- QFile settingsFile("physfs://settings.ini");
146 ++ QFile settingsFile(cfgdir->absoluteFilePath("settings.ini"));
147 +
148 + if(!settingsFile.exists())
149 + {
150 +- QFile oldSettingsFile("physfs://hedgewars.ini");
151 ++ QFile oldSettingsFile(cfgdir->absoluteFilePath("hedgewars.ini"));
152 +
153 + settingsFile.open(QFile::WriteOnly);
154 + settingsFile.close();
155 +--
156 +2.16.1
157 +
158
159 diff --git a/games-strategy/hedgewars/hedgewars-0.9.23-r3.ebuild b/games-strategy/hedgewars/hedgewars-0.9.23-r3.ebuild
160 new file mode 100644
161 index 00000000000..2c30a518ab0
162 --- /dev/null
163 +++ b/games-strategy/hedgewars/hedgewars-0.9.23-r3.ebuild
164 @@ -0,0 +1,94 @@
165 +# Copyright 1999-2018 Gentoo Foundation
166 +# Distributed under the terms of the GNU General Public License v2
167 +
168 +EAPI=6
169 +
170 +CMAKE_MAKEFILE_GENERATOR=emake
171 +inherit cmake-utils desktop xdg-utils
172 +
173 +MY_P=${PN}-src-${PV}
174 +DEB_PATCH_VER=7
175 +
176 +DESCRIPTION="A turn-based strategy, artillery, action and comedy game"
177 +HOMEPAGE="https://www.hedgewars.org/"
178 +SRC_URI="https://www.hedgewars.org/download/releases/${MY_P}.tar.bz2
179 + mirror://debian/pool/main/h/${PN}/${PN}_0.9.22-dfsg-${DEB_PATCH_VER}.debian.tar.xz"
180 +
181 +LICENSE="GPL-2 Apache-2.0 FDL-1.3"
182 +SLOT="0"
183 +KEYWORDS="~amd64 ~x86"
184 +IUSE="libav"
185 +
186 +QA_FLAGS_IGNORED="/usr/bin/hwengine" # pascal sucks
187 +QA_PRESTRIPPED="/usr/bin/hwengine" # pascal sucks
188 +
189 +# qtcore:5= - depends on private header
190 +CDEPEND="
191 + >=dev-games/physfs-3.0.1
192 + dev-lang/lua:0=
193 + dev-qt/qtcore:5=
194 + dev-qt/qtgui:5
195 + dev-qt/qtnetwork:5
196 + dev-qt/qtwidgets:5
197 + media-libs/libpng:0=
198 + media-libs/libsdl2:=
199 + media-libs/sdl2-image:=
200 + media-libs/sdl2-mixer:=[vorbis]
201 + media-libs/sdl2-net:=
202 + media-libs/sdl2-ttf:=
203 + sys-libs/zlib:=
204 + libav? ( media-video/libav:= )
205 + !libav? ( media-video/ffmpeg:= )"
206 +DEPEND="${CDEPEND}
207 + >=dev-lang/fpc-2.4
208 + dev-qt/linguist-tools:5"
209 +RDEPEND="${CDEPEND}
210 + app-arch/xz-utils
211 + >=media-fonts/dejavu-2.28
212 + media-fonts/wqy-zenhei"
213 +
214 +S="${WORKDIR}"/${MY_P}
215 +
216 +PATCHES=(
217 + "${FILESDIR}"/${PN}-0.9.22-rpath-fix.patch
218 + "${FILESDIR}"/${P}-qt5-{1,2}.patch # bug 645504
219 + "${FILESDIR}"/${P}-settings-saving.patch # bug 651810
220 +)
221 +
222 +src_configure() {
223 + local mycmakeargs=(
224 + -DMINIMAL_FLAGS=ON
225 + -DDATA_INSTALL_DIR="${EPREFIX}/usr/share/${PN}"
226 + -Dtarget_binary_install_dir="${EPREFIX}/usr/bin"
227 + -Dtarget_library_install_dir="${EPREFIX}/usr/$(get_libdir)"
228 + -DNOSERVER=TRUE
229 + -DCMAKE_VERBOSE_MAKEFILE=TRUE
230 + -DPHYSFS_SYSTEM=ON
231 + # Need to tell the build system where the fonts are located
232 + # as it uses PhysFS' symbolic link protection mode which
233 + # prevents us from symlinking the fonts into the right directory
234 + # https://hg.hedgewars.org/hedgewars/rev/76ad55807c24
235 + # https://icculus.org/physfs/docs/html/physfs_8h.html#aad451d9b3f46f627a1be8caee2eef9b7
236 + -DFONTS_DIRS="${EPREFIX}/usr/share/fonts/wqy-zenhei;${EPREFIX}/usr/share/fonts/dejavu"
237 + # upstream sets RPATH that leads to weird breakage
238 + # https://bugzilla.redhat.com/show_bug.cgi?id=1200193
239 + -DCMAKE_SKIP_RPATH=ON
240 + )
241 + cmake-utils_src_configure
242 +}
243 +
244 +src_install() {
245 + cmake-utils_src_install
246 +
247 + doicon misc/hedgewars.png
248 + make_desktop_entry ${PN} Hedgewars
249 + doman man/${PN}.6
250 +}
251 +
252 +pkg_postinst() {
253 + xdg_desktop_database_update
254 +}
255 +
256 +pkg_postrm() {
257 + xdg_desktop_database_update
258 +}