summaryrefslogtreecommitdiff
path: root/games-util/grfcodec
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2022-10-08 19:30:29 +0100
committerV3n3RiX <venerix@koprulu.sector>2022-10-08 19:30:29 +0100
commit541eca7cf7b9950f0adaaf9158f94c76ba0aedc9 (patch)
treeb80d0f20ca0dc04843c819a54cc618cc8baf0479 /games-util/grfcodec
parent4df758340c38fb7f188a6356561aeb4ed2c3f38c (diff)
gentoo auto-resync : 08:10:2022 - 19:30:29
Diffstat (limited to 'games-util/grfcodec')
-rw-r--r--games-util/grfcodec/Manifest3
-rw-r--r--games-util/grfcodec/files/6.0.6_p20210310/0001-Remove-brittle-apWrapper-code.patch144
-rw-r--r--games-util/grfcodec/files/6.0.6_p20210310/0002-Fix-ODR-violations.patch63
-rw-r--r--games-util/grfcodec/grfcodec-6.0.6_p20210310-r1.ebuild40
4 files changed, 250 insertions, 0 deletions
diff --git a/games-util/grfcodec/Manifest b/games-util/grfcodec/Manifest
index 821785c0d597..cd8b737f0147 100644
--- a/games-util/grfcodec/Manifest
+++ b/games-util/grfcodec/Manifest
@@ -1,3 +1,6 @@
+AUX 6.0.6_p20210310/0001-Remove-brittle-apWrapper-code.patch 3501 BLAKE2B 2132586124cfe2232c655f5041a2ef28b46cac8e72acecd2cb9004bece074c915c0f9609455e73f2ce8d95b28c5d1ac7d4739c4264e90e1a570f33d136bd4f9d SHA512 68a7a2329dfeee4ad28562b088948ddd6457e0f6b14a63e6be376041897070c5acc756b14e158dc4631a4fb1e0197f523d8bb76272d7d39c093e49259efa700f
+AUX 6.0.6_p20210310/0002-Fix-ODR-violations.patch 1722 BLAKE2B 941c2c95b7876b8b2be39e623cbff969b0609e50a3c798acd34052f0c13bf048971fe2b07885bcdc2921e66a928ce6d11c2bee71e26602116f104725acf3d04c SHA512 e73f4ee685230128489d47f3d10f296456debd3e6a85b6ccdbecb6ceb550a59cb95cbd37b2a222883b058b15aa319221e9040c4bdda4511e74c05e26a778ea50
DIST grfcodec-6.0.6_p20210310.tar.gz 205795 BLAKE2B 24d803e208b2fc465ae71611c0c0fb2737bfa8c5a28375bc08a6220581d7b07bb2f2a390e2ddb7f4beb8a80951862473919d41bce83364af70b6dc646f0f3f8e SHA512 10f4ec28c69d87e397f0fb5b497dbefce8fcd826731d3a0a864cbbd333b7df188ab0087445644ad245aeff65a8b6563dfdfa657ac1a2248e56e296c01f7d58a8
+EBUILD grfcodec-6.0.6_p20210310-r1.ebuild 993 BLAKE2B 1cb3e7064e2f72b373c4b0dd83d8c3f16a017dddd7a3351328e8ffdddb84f70e3aba7937eb49b47230d74684240cd91873f1434b1bc18bb7c24d08dbaabcb464 SHA512 c69963730921fe1260bb24a90ea78b9b2ea6db788f057586d12eae09f6943144ae6dca2cfec5318ea13fd45b0c83984549f941224af5b0ea23fda8ddd051ff26
EBUILD grfcodec-6.0.6_p20210310.ebuild 983 BLAKE2B 75e40e140c37f55cf355ecb12ec78ff4087d0a8a1646d7652550e137c468a59ce36f0bcaffb7918a9ef0b7235705e2cb8e3fc9edb2c9254c7c9b587ec434345c SHA512 ea2f87fcc530b8d7f09a91bb57f9e5589796879a216f9b4cfcbe47dcb353d9d8865aee3430f6e3331b7baf6ff1457ebd0a8cd1137c167a2b4d15d46351d0a53a
MISC metadata.xml 335 BLAKE2B 32e45cd9e4b4e6a0ae59d41d18ef90ca9a39389016247b71b6b1b7069a6fd1b73c92bc331d10059942aa57693a2405d90915249393e2ee9b515027f97b5fadf4 SHA512 36a58b8b3e9b793b7cc62def166dc87f24c3df029916c3226fe66f5213dcf156038a31707e81c52defbacd0a7e40fc3c5df476c93d9f1380556ac02140ef0fc2
diff --git a/games-util/grfcodec/files/6.0.6_p20210310/0001-Remove-brittle-apWrapper-code.patch b/games-util/grfcodec/files/6.0.6_p20210310/0001-Remove-brittle-apWrapper-code.patch
new file mode 100644
index 000000000000..e702f00160ce
--- /dev/null
+++ b/games-util/grfcodec/files/6.0.6_p20210310/0001-Remove-brittle-apWrapper-code.patch
@@ -0,0 +1,144 @@
+From 9e928c98c8ad0767607bc421b14ac289cdc6e536 Mon Sep 17 00:00:00 2001
+From: David Seifert <soap@gentoo.org>
+Date: Sat, 8 Oct 2022 16:29:43 +0200
+Subject: [PATCH 1/2] Remove brittle `apWrapper` code
+
+* This causes issues on musl, and generally doesn't make the
+ code any simpler, while also creating lots of opportunities
+ for undefined behavior.
+
+Bug: https://bugs.gentoo.org/715910
+---
+ src/messages.cpp | 14 ++++++++++----
+ src/sanity.cpp | 4 +++-
+ src/sanity_defines.h | 23 -----------------------
+ src/strings.cpp | 9 +++++----
+ 4 files changed, 18 insertions(+), 32 deletions(-)
+
+diff --git a/src/messages.cpp b/src/messages.cpp
+index 385f217..3794f66 100644
+--- a/src/messages.cpp
++++ b/src/messages.cpp
+@@ -60,8 +60,11 @@ void ManualConsoleMessages(){
+ }
+
+ string mysprintf(const char*str,...){
+- WrapAp(str);
+- return myvsprintf(str,ap);
++ va_list ap;
++ va_start(ap, str);
++ string result = myvsprintf(str,ap);
++ va_end(ap);
++ return result;
+ }
+
+ #if defined DEBUG || defined _DEBUG
+@@ -69,8 +72,11 @@ static RenumMessageId curMessage;
+ #endif
+
+ string IssueMessage(int minSan,RenumMessageId id,...){
+- WrapAp(id);
+- return vIssueMessage(minSan,id,ap);
++ va_list ap;
++ va_start(ap, id);
++ string result = vIssueMessage(minSan,id,ap);
++ va_end(ap);
++ return result;
+ }
+
+ string vIssueMessage(int minSan,RenumMessageId id,va_list& arg_ptr){
+diff --git a/src/sanity.cpp b/src/sanity.cpp
+index 844d840..0793a63 100644
+--- a/src/sanity.cpp
++++ b/src/sanity.cpp
+@@ -151,13 +151,15 @@ void Before8(int action){
+ }
+
+ bool CheckLength(int alen,int elen,RenumMessageId message,...){
+- WrapAp(message);
++ va_list ap;
++ va_start(ap, message);
+ if(alen<elen){
+ vIssueMessage(FATAL,message,ap);
+ return true;
+ }
+ if(alen>elen)
+ vIssueMessage(WARNING2,message,ap);
++ va_end(ap);
+ return false;
+ }
+
+diff --git a/src/sanity_defines.h b/src/sanity_defines.h
+index d094f21..47f9c5f 100644
+--- a/src/sanity_defines.h
++++ b/src/sanity_defines.h
+@@ -22,7 +22,6 @@
+ #ifndef _RENUM_SANITY_DEFS_H_INCLUDED_
+ #define _RENUM_SANITY_DEFS_H_INCLUDED_
+
+-#include <cstdarg>
+ #include "message_mgr.h"
+
+ bool CheckLength(int,int,RenumMessageId,...);
+@@ -70,26 +69,4 @@ typedef auto_array<uint> Guintp;
+ type&operator[](uint x){return _p[x];}\
+ type operator[](uint x)const{return _p[x];}\
+
+-class apWrapper{
+-private:
+- va_list _ap;
+-public:
+- ~apWrapper(){va_end(_ap);}
+- operator va_list&(){return _ap;}
+- operator const va_list&()const{return _ap;}
+-#ifdef __va_copy
+- va_list&operator=(va_list&ap){
+- __va_copy(_ap,ap);
+- return _ap;
+- }
+-#else
+- va_list const&operator=(va_list const&ap){
+- return _ap=ap;
+- }
+-#endif
+-};
+-#define WrapAp(v)\
+- apWrapper ap;\
+- va_start((va_list&)ap,v);
+-
+ #endif//_RENUM_SANITY_DEFS_H_INCLUDED_
+diff --git a/src/strings.cpp b/src/strings.cpp
+index 2512734..e184825 100644
+--- a/src/strings.cpp
++++ b/src/strings.cpp
+@@ -23,6 +23,7 @@
+ #include<string>
+ #include<cerrno>
+ #include<cstdlib>
++#include<cstdarg>
+
+ using namespace std;
+
+@@ -396,15 +397,15 @@ static const uchar stackSize[]={0,1,2,2,4,2,8};
+
+ string MakeStack(int items,...){
+ string ret;
+- WrapAp(items);
++ va_list ap;
++ va_start(ap, items);
+ uint item;
+ for(int i=0;i<items;i++){
+- item=va_arg(ap.operator va_list&(),uint);
+- // ^^^^^^^^^^^^^^^^^^^
+- // gcc complains without that call.
++ item=va_arg(ap, uint);
+ VERIFY(item&&item<STACK_INVALID,item);
+ ret+=string(stackSize[item],char(item|i<<4));
+ }
++ va_end(ap);
+ return ret;
+ }
+
+--
+2.38.0
+
diff --git a/games-util/grfcodec/files/6.0.6_p20210310/0002-Fix-ODR-violations.patch b/games-util/grfcodec/files/6.0.6_p20210310/0002-Fix-ODR-violations.patch
new file mode 100644
index 000000000000..d76a904efd9a
--- /dev/null
+++ b/games-util/grfcodec/files/6.0.6_p20210310/0002-Fix-ODR-violations.patch
@@ -0,0 +1,63 @@
+From f2e16cca87e8a324ce7ccc9cc2d82235b1e490c1 Mon Sep 17 00:00:00 2001
+From: David Seifert <soap@gentoo.org>
+Date: Sat, 8 Oct 2022 16:29:44 +0200
+Subject: [PATCH 2/2] Fix ODR violations
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+* When compiling with `-flto`, ODR violations pop up:
+
+ src/escapes.h:98:1: error: type ‘struct esc’ violates the C++ One Definition Rule [-Werror=odr]
+ 98 | START_ESCAPES()
+ | ^
+ src/escapes.h:98:1: note: a different type is defined in another translation unit
+ 98 | START_ESCAPES()
+ | ^
+ src/escapes.h:98:1: note: the first difference of corresponding definitions is field ‘additional’
+ 98 | START_ESCAPES()
+ | ^
+ src/escapes.h:98:1: note: a type with different number of fields is defined in another translation unit
+ 98 | START_ESCAPES()
+ | ^
+
+ by wrapping the `struct esc` definitions in unnamed namespaces, we can avoid running afoul of ODR.
+
+Bug: https://bugs.gentoo.org/859310
+---
+ src/escapes.h | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/src/escapes.h b/src/escapes.h
+index 91da82f..d3d2bea 100644
+--- a/src/escapes.h
++++ b/src/escapes.h
+@@ -8,6 +8,7 @@
+ #ifndef GRFCODEC
+
+ #define START_ESCAPES()\
++ namespace {\
+ const struct esc{\
+ char byte;\
+ char*str;\
+@@ -30,6 +31,7 @@
+ #else /* GRFCODEC */
+
+ #define START_ESCAPES()\
++ namespace {\
+ const struct esc{\
+ char byte;\
+ char*str;\
+@@ -59,7 +61,8 @@
+ #endif /* GRFCODEC */
+
+ #define END_ESCAPES() };\
+- static const unsigned int num_esc=sizeof(escapes)/sizeof(escapes[0]);
++ static const unsigned int num_esc=sizeof(escapes)/sizeof(escapes[0]);\
++ }
+
+ #ifdef GRFCODEC
+
+--
+2.38.0
+
diff --git a/games-util/grfcodec/grfcodec-6.0.6_p20210310-r1.ebuild b/games-util/grfcodec/grfcodec-6.0.6_p20210310-r1.ebuild
new file mode 100644
index 000000000000..90d01d7a6794
--- /dev/null
+++ b/games-util/grfcodec/grfcodec-6.0.6_p20210310-r1.ebuild
@@ -0,0 +1,40 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake vcs-snapshot
+
+COMMIT=045774dee7cab1a618a3e0d9b39bff78a12b6efa
+
+DESCRIPTION="A suite of programs to modify openttd/Transport Tycoon Deluxe's GRF files"
+HOMEPAGE="https://github.com/OpenTTD/grfcodec"
+SRC_URI="https://github.com/OpenTTD/grfcodec/archive/${COMMIT}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~x86"
+
+RDEPEND="media-libs/libpng:="
+DEPEND="${RDEPEND}
+ dev-libs/boost"
+
+PATCHES=( "${FILESDIR}"/${PV} )
+
+src_configure() {
+ local mycmakeargs=(
+ # Make sure we don't use git by accident.
+ # Build system does not care much if it's
+ # executed successfully and populates
+ # YEARS / VERSION with empty values.
+ -DGIT_EXECUTABLE=/bin/do-not-use-git-executable
+ )
+
+ cmake_src_configure
+}
+
+src_install() {
+ dobin "${BUILD_DIR}"/{grfcodec,grfid,grfstrip,nforenum}
+ doman docs/*.1
+ dodoc changelog.txt docs/*.txt
+}