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 |
+} |