Borrow some code from fonts-rpm-macros, to drop a dependant code to generate srpm

This commit is contained in:
Akira TAGOH 2021-04-19 14:23:16 +09:00
parent d8db67095e
commit 7aea53ad43

View File

@ -514,8 +514,106 @@ local function genfcconf(table)
_fcconfbuild = (_fcconfbuild ~= '' and _fcconfbuild .. "\n" or '') .. "cat<<_EOL_>" .. table.fcconf .. "\\\n" .. xml .. "\n_EOL_\\" _fcconfbuild = (_fcconfbuild ~= '' and _fcconfbuild .. "\n" or '') .. "cat<<_EOL_>" .. table.fcconf .. "\\\n" .. xml .. "\n_EOL_\\"
end end
-- Borrowed from fonts-rpm-macros
-- koji doesn't sasisfy BR during generating srpm yet.
-- We can't add a dependant code to fonts-rpm-macros at this stage.
-- https://github.com/rpm-software-management/rpm/issues/566
-- Reformat a text intended to be used used in a package description, removing
-- rpm macro generation artefacts.
-- remove leading and ending empty lines
-- trim intermediary empty lines to a single line
-- fold on spaces
-- Should really be a %%{wordwrap:…} verb
local function wordwrap(text)
text = rpm.expand(text .. "\n")
text = string.gsub(text, "\t", " ")
text = string.gsub(text, "\r", "\n")
text = string.gsub(text, " +\n", "\n")
text = string.gsub(text, "\n+\n", "\n\n")
text = string.gsub(text, "^\n", "")
text = string.gsub(text, "\n( *)[-*][  ]+", "\n%1 ")
output = ""
for line in string.gmatch(text, "[^\n]*\n") do
local pos = 0
local advance = ""
for word in string.gmatch(line, "%s*[^%s]*\n?") do
local wl, bad = utf8.len(word)
if not wl then
print("%{warn:Invalid UTF-8 sequence detected in:}" ..
"%{warn:" .. word .. "}" ..
"%{warn:It may produce unexpected results.}")
wl = bad
end
if (pos == 0) then
advance, n = string.gsub(word, "^(%s* ).*", "%1")
if (n == 0) then
advance = string.gsub(word, "^(%s*).*", "%1")
end
advance = string.gsub(advance, " ", " ")
pos = pos + wl
elseif (pos + wl < 81) or
((pos + wl == 81) and string.match(word, "\n$")) then
pos = pos + wl
else
word = advance .. string.gsub(word, "^%s*", "")
output = output .. "\n"
pos = utf8.len(word)
end
output = output .. word
if pos > 80 then
pos = 0
if not string.match(word, "\n$") then
output = output .. "\n"
end
end
end
end
output = string.gsub(output, "\n*$", "\n")
return output
end
-- Reformat some text into something that can be included in an AppStream
-- XML description
local function txt2xml(text)
local text = wordwrap(text)
local output = ""
local oldtag = nil
local oldadvance = nil
local newtag = nil
text = string.gsub(text, "^\n*", "")
text = string.gsub(text, "\n*$", "\n")
for line in string.gmatch(text, "[^\n]*\n") do
local change = true
local advance, n = string.gsub(line, "^(%s* ).*", "%1")
if (n == 1) then
newtag = "li"
else
advance = string.gsub(line, "^(%s*).*", "%1")
if (line == "\n") then
newtag = nil
elseif (advance ~= oldadvance) then
newtag = "p"
else
change = false
end
end
local result = ""
if change then
result = string.gsub(line, "^" .. advance, switchtag(oldtag,newtag))
oldtag = newtag
oldadvance = string.gsub(advance, " ", " ")
else
result = string.gsub(line, "^" .. advance, " ")
end
result = string.gsub(result, "\n$", "")
output = output .. result
end
output = output .. closetag(oldtag, nil)
return output
end
local function genmetainfo(table) local function genmetainfo(table)
local fonts = require "fedora.rpm.fonts"
local xmlfontname = '$(cmd=$(for f in %{buildroot}' .. table.filename .. '; do fc-scan "$f" -f "echo \\\\\" <font>%{fullname[0]}</font>\\\\\";"; done); if test x"$cmd" != x; then echo "echo \\\\\" <provides>\\\\\"; $cmd echo \\\\\" </provides>\\\\\""|sh; fi|grep -v "font></font")' local xmlfontname = '$(cmd=$(for f in %{buildroot}' .. table.filename .. '; do fc-scan "$f" -f "echo \\\\\" <font>%{fullname[0]}</font>\\\\\";"; done); if test x"$cmd" != x; then echo "echo \\\\\" <provides>\\\\\"; $cmd echo \\\\\" </provides>\\\\\""|sh; fi|grep -v "font></font")'
local xmlfontlang = '$(cmd=$(for f in %{buildroot}' .. table.filename .. '; do fc-scan "$f" -f "%{[]lang{echo \\\\\" <lang>%{lang}</lang>\\\\\";}}"; done); if test x"$cmd" != x; then echo "echo \\\\\" <languages>\\\\\"; ($cmd)|sort -u; echo \\\\\" </languages>\\\\\""|sh; fi)' local xmlfontlang = '$(cmd=$(for f in %{buildroot}' .. table.filename .. '; do fc-scan "$f" -f "%{[]lang{echo \\\\\" <lang>%{lang}</lang>\\\\\";}}"; done); if test x"$cmd" != x; then echo "echo \\\\\" <languages>\\\\\"; ($cmd)|sort -u; echo \\\\\" </languages>\\\\\""|sh; fi)'
local xml = [[ local xml = [[
@ -528,7 +626,7 @@ local function genmetainfo(table)
<name>Noto ]] .. table.family .. [[</name>\ <name>Noto ]] .. table.family .. [[</name>\
<summary><![CDATA[Noto ]] .. table.summary .. [[\]\]></summary>\ <summary><![CDATA[Noto ]] .. table.summary .. [[\]\]></summary>\
<description>\ <description>\
]] .. fonts.txt2xml(table.description) .. "\\\n" .. [[ ]] .. txt2xml(table.description) .. "\\\n" .. [[
</description>\ </description>\
<updatecontact>]] .. rpm.expand("%{fontcontact}") .. [[</updatecontact>\ <updatecontact>]] .. rpm.expand("%{fontcontact}") .. [[</updatecontact>\
<url type=\"homepage\">]] .. rpm.expand("%{url}") .. [[</url>\ <url type=\"homepage\">]] .. rpm.expand("%{url}") .. [[</url>\