public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/mame] f44: Disable GENie command line string escaping
@ 2026-05-30 12:17 Julian Sikorski
0 siblings, 0 replies; only message in thread
From: Julian Sikorski @ 2026-05-30 12:17 UTC (permalink / raw)
To: git-commits
A new commit has been pushed.
Repo : rpms/mame
Branch : f44
Commit : b48b2a624d4bc9a5a6b9deebaa32b8a1e3d966fc
Author : Julian Sikorski <belegdol@fedoraproject.org>
Date : 2026-05-30T11:40:49+02:00
Stats : +63/-0 in 2 file(s)
URL : https://src.fedoraproject.org/rpms/mame/c/b48b2a624d4bc9a5a6b9deebaa32b8a1e3d966fc?branch=f44
Log:
Disable GENie command line string escaping
---
diff --git a/0001-genie-disable-command-line-string-escaping-fixes-131.patch b/0001-genie-disable-command-line-string-escaping-fixes-131.patch
new file mode 100644
index 0000000..a14f34b
--- /dev/null
+++ b/0001-genie-disable-command-line-string-escaping-fixes-131.patch
@@ -0,0 +1,62 @@
+From b4acb19eb68c5a515c7a701dcb77ba6e53462674 Mon Sep 17 00:00:00 2001
+From: Patrick Mackinlay <pmackinlay@hotmail.com>
+Date: Thu, 2 Jan 2025 13:26:11 +0700
+Subject: [PATCH] genie: disable command line string escaping, fixes #13150
+
+(cherry picked from commit e745009c30879e63c628b9c2556a6b6e22c5af17)
+---
+ 3rdparty/genie/src/actions/make/_make.lua | 18 ++++--------------
+ 3rdparty/genie/src/host/scripts.c | 7 +++----
+ 2 files changed, 7 insertions(+), 18 deletions(-)
+
+diff --git a/3rdparty/genie/src/actions/make/_make.lua b/3rdparty/genie/src/actions/make/_make.lua
+index 0f1a4b60519..598c31bab9c 100644
+--- a/3rdparty/genie/src/actions/make/_make.lua
++++ b/3rdparty/genie/src/actions/make/_make.lua
+@@ -36,21 +36,11 @@
+ --
+ -- Escape quoted string so it can be passed as define via command line.
+ --
+-
++-- FIXME: this simplistic function doesn't work properly with embedded escapes
++-- and quoted strings, nor with Windows Command Prompt quoting and escaping
++-- rules. It causes build problems on both Windows and Linux and has been disabled.
+ function _MAKE.escquote(value)
+- local result
+- if (type(value) == "table") then
+- result = { }
+- for _,v in ipairs(value) do
+- table.insert(result, _MAKE.escquote(v))
+- end
+- return result
+- else
+- -- handle simple replacements
+- result = value:gsub(" ", "\\ ")
+- result = result:gsub("\"", "\\\"")
+- return result
+- end
++ return value
+ end
+
+
+diff --git a/3rdparty/genie/src/host/scripts.c b/3rdparty/genie/src/host/scripts.c
+index 10f380bc60c..19e647554ce 100644
+--- a/3rdparty/genie/src/host/scripts.c
++++ b/3rdparty/genie/src/host/scripts.c
+@@ -238,10 +238,9 @@ const char* builtin_scripts[] = {
+ " end\n end\n end\n end\n _p('')\nend",
+
+ /* actions/make/_make.lua */
+- "_MAKE = { }\npremake.make = { }\nlocal make = premake.make\nfunction _MAKE.esc(value)\nlocal result\nif (type(value) == \"table\") then\nresult = { }\nfor _,v in ipairs(value) do\ntable.insert(result, _MAKE.esc(v))\nend\nreturn result\nelse\nresult = value:gsub(\"\\\\\", \"\\\\\\\\\")\nresult = result:gsub(\" \", \"\\\\ \")\nresult = result:gsub(\"%%(\", \"\\\\%(\")\nresult = result:gsub(\"%%)\", \"\\\\%)\")\nresult = result:gsub(\"$\\\\%((.-)\\\\%)\", \"$%(%1%)\")\nreturn result\nend\nend\nfunction _MAKE.escquote(value)\nlocal result\nif (type(value) == \"table\") then\nresult = { }\nfor _,v in ipairs(value) do\ntable.insert(result, _MAKE.escquote(v))\nend\nreturn result\nelse\nresult = value:gsub(\" \", \"\\\\ \")\nresult = result:gsub(\"\\\"\", \"\\\\\\\"\")\nreturn result\nend\nend\nfunction premake.make_copyrule(source, target)\n_p('%s: %s', target, source)\n_p('\\t@echo Copying $(notdir %s)', target)\n_p('\\t-$(call COPY,%s,%s)', source, target)\nend\nfunction premake.make_mkdirrule(var)\n_p('\\t@echo Cr"
+- "eating %s', var)\n_p('\\t-$(call MKDIR,%s)', var)\n_p('')\nend\nfunction make.list(value)\nif #value > 0 then\nreturn \" \" .. table.concat(value, \" \")\nelse\nreturn \"\"\nend\nend\nfunction _MAKE.getmakefilename(this, searchprjs)\nlocal count = 0\nfor sln in premake.solution.each() do\nif (sln.location == this.location) then count = count + 1 end\nif (searchprjs) then\nfor _,prj in ipairs(sln.projects) do\nif (prj.location == this.location) then count = count + 1 end\nend\nend\nend\nif (count == 1) then\nreturn \"Makefile\"\nelse\nreturn this.name .. \".make\"\nend\nend\nfunction _MAKE.getnames(tbl)\nlocal result = table.extract(tbl, \"name\")\nfor k,v in pairs(result) do\nresult[k] = _MAKE.esc(v)\nend\nreturn result\nend\nfunction make.settings(cfg, cc)\nif #cfg.makesettings > 0 then\nfor _, value in ipairs(cfg.makesettings) do\n_p(value)\nend\nend\nlocal toolsettings = cc.platforms[cfg.platform].cfgsettings\nif toolsettings then\n_p(toolsettings)\nend\nend\nnewaction {\ntrigger = \"gmake\",\nshort"
+- "name = \"GNU Make\",\ndescription = \"Generate GNU makefiles for POSIX, MinGW, and Cygwin\",\nvalid_kinds = { \"ConsoleApp\", \"WindowedApp\", \"StaticLib\", \"SharedLib\", \"Bundle\" },\nvalid_languages = { \"C\", \"C++\", \"C#\", \"Vala\", \"Swift\" },\nvalid_tools = {\ncc = { \"gcc\", \"ghs\" },\ndotnet = { \"mono\", \"msnet\", \"pnet\" },\nvalac = { \"valac\" },\nswift = { \"swift\" },\n},\nonsolution = function(sln)\npremake.generate(sln, _MAKE.getmakefilename(sln, false), premake.make_solution)\nend,\nonproject = function(prj)\nlocal makefile = _MAKE.getmakefilename(prj, true)\nif premake.isdotnetproject(prj) then\npremake.generate(prj, makefile, premake.make_csharp)\nelseif premake.iscppproject(prj) then\npremake.generate(prj, makefile, premake.make_cpp)\nelseif premake.isswiftproject(prj) then\npremake.generate(prj, makefile, premake.make_swift)\nelse\npremake.generate(prj, makefile, premake.make_vala)\nend\nend,\noncleansolution = function(sln)\npremake.clean.file(sln, _MAKE.ge"
+- "tmakefilename(sln, false))\nend,\noncleanproject = function(prj)\npremake.clean.file(prj, _MAKE.getmakefilename(prj, true))\nend,\ngmake = {}\n}\n",
++ "_MAKE = { }\npremake.make = { }\nlocal make = premake.make\nfunction _MAKE.esc(value)\nlocal result\nif (type(value) == \"table\") then\nresult = { }\nfor _,v in ipairs(value) do\ntable.insert(result, _MAKE.esc(v))\nend\nreturn result\nelse\nresult = value:gsub(\"\\\\\", \"\\\\\\\\\")\nresult = result:gsub(\" \", \"\\\\ \")\nresult = result:gsub(\"%%(\", \"\\\\%(\")\nresult = result:gsub(\"%%)\", \"\\\\%)\")\nresult = result:gsub(\"$\\\\%((.-)\\\\%)\", \"$%(%1%)\")\nreturn result\nend\nend\nfunction _MAKE.escquote(value)\nreturn value\nend\nfunction premake.make_copyrule(source, target)\n_p('%s: %s', target, source)\n_p('\\t@echo Copying $(notdir %s)', target)\n_p('\\t-$(call COPY,%s,%s)', source, target)\nend\nfunction premake.make_mkdirrule(var)\n_p('\\t@echo Creating %s', var)\n_p('\\t-$(call MKDIR,%s)', var)\n_p('')\nend\nfunction make.list(value)\nif #value > 0 then\nreturn \" \" .. table.concat(value, \" \")\nelse\nreturn \"\"\nend\nend\nfunction _MAKE.getmakefilename(this, searchprjs)\nlocal count = 0\n"
++ "for sln in premake.solution.each() do\nif (sln.location == this.location) then count = count + 1 end\nif (searchprjs) then\nfor _,prj in ipairs(sln.projects) do\nif (prj.location == this.location) then count = count + 1 end\nend\nend\nend\nif (count == 1) then\nreturn \"Makefile\"\nelse\nreturn this.name .. \".make\"\nend\nend\nfunction _MAKE.getnames(tbl)\nlocal result = table.extract(tbl, \"name\")\nfor k,v in pairs(result) do\nresult[k] = _MAKE.esc(v)\nend\nreturn result\nend\nfunction make.settings(cfg, cc)\nif #cfg.makesettings > 0 then\nfor _, value in ipairs(cfg.makesettings) do\n_p(value)\nend\nend\nlocal toolsettings = cc.platforms[cfg.platform].cfgsettings\nif toolsettings then\n_p(toolsettings)\nend\nend\nnewaction {\ntrigger = \"gmake\",\nshortname = \"GNU Make\",\ndescription = \"Generate GNU makefiles for POSIX, MinGW, and Cygwin\",\nvalid_kinds = { \"ConsoleApp\", \"WindowedApp\", \"StaticLib\", \"SharedLib\", \"Bundle\" },\nvalid_languages = { \"C\", \"C++\", \"C#\", \"Val"
++ "a\", \"Swift\" },\nvalid_tools = {\ncc = { \"gcc\", \"ghs\" },\ndotnet = { \"mono\", \"msnet\", \"pnet\" },\nvalac = { \"valac\" },\nswift = { \"swift\" },\n},\nonsolution = function(sln)\npremake.generate(sln, _MAKE.getmakefilename(sln, false), premake.make_solution)\nend,\nonproject = function(prj)\nlocal makefile = _MAKE.getmakefilename(prj, true)\nif premake.isdotnetproject(prj) then\npremake.generate(prj, makefile, premake.make_csharp)\nelseif premake.iscppproject(prj) then\npremake.generate(prj, makefile, premake.make_cpp)\nelseif premake.isswiftproject(prj) then\npremake.generate(prj, makefile, premake.make_swift)\nelse\npremake.generate(prj, makefile, premake.make_vala)\nend\nend,\noncleansolution = function(sln)\npremake.clean.file(sln, _MAKE.getmakefilename(sln, false))\nend,\noncleanproject = function(prj)\npremake.clean.file(prj, _MAKE.getmakefilename(prj, true))\nend,\ngmake = {}\n}\n",
+
+ /* actions/make/make_solution.lua */
+ "function premake.make_solution(sln)\nlocal cc = premake[_OPTIONS.cc]\nlocal platforms = premake.filterplatforms(sln, cc.platforms, \"Native\")\n_p('# %s solution makefile autogenerated by GENie', premake.action.current().shortname)\n_p('# https://github.com/bkaradzic/GENie')\n_p('# Type \"make help\" for usage help')\n_p('')\n_p('ifndef config')\n_p(' config=%s', _MAKE.esc(premake.getconfigname(sln.configurations[1], platforms[1], true)))\n_p('endif')\n_p('export config')\n_p('')\nlocal projects = table.extract(sln.projects, \"name\")\ntable.sort(projects)\n_p('PROJECTS := %s', table.concat(_MAKE.esc(projects), \" \"))\n_p('')\n_p('.PHONY: all clean help $(PROJECTS)')\n_p('')\n_p('all: $(PROJECTS)')\n_p('')\nfor _, prj in ipairs(sln.projects) do\n_p('%s: %s', _MAKE.esc(prj.name), table.concat(_MAKE.esc(table.extract(premake.getdependencies(prj), \"name\")), \" \"))\nif (not sln.messageskip) or (not table.contains(sln.messageskip, \"SkipBuildingMessage\")) then\n_p('\\t@echo \"==== Building %s ($(config)) ===="
+--
+2.54.0
+
diff --git a/mame.spec b/mame.spec
index 50893a7..0b52824 100644
--- a/mame.spec
+++ b/mame.spec
@@ -22,6 +22,7 @@ Source0: https://github.com/mamedev/%{name}/archive/%{name}0%{baseversion
Source1: https://mamedev.org/releases/whatsnew_0%{baseversion}.txt
Patch0: 0001-Ensure-_FORTIFY_SOURCE-define-stays-enabled.patch
Patch1: 0001-Hack-allowing-bgfx-to-initialise-in-absence-of-dx9-s.patch
+Patch2: 0001-genie-disable-command-line-string-escaping-fixes-131.patch
# %%{arm}:
# https://bugzilla.redhat.com/show_bug.cgi?id=1627625
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2026-05-30 12:17 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-05-30 12:17 [rpms/mame] f44: Disable GENie command line string escaping Julian Sikorski
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox