Borrow some code from fonts-rpm-macros, to drop a dependant code to generate srpm
This commit is contained in:
parent
d8db67095e
commit
7aea53ad43
@ -514,8 +514,106 @@ local function genfcconf(table)
|
||||
_fcconfbuild = (_fcconfbuild ~= '' and _fcconfbuild .. "\n" or '') .. "cat<<_EOL_>" .. table.fcconf .. "\\\n" .. xml .. "\n_EOL_\\"
|
||||
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 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 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 = [[
|
||||
@ -528,7 +626,7 @@ local function genmetainfo(table)
|
||||
<name>Noto ]] .. table.family .. [[</name>\
|
||||
<summary><![CDATA[Noto ]] .. table.summary .. [[\]\]></summary>\
|
||||
<description>\
|
||||
]] .. fonts.txt2xml(table.description) .. "\\\n" .. [[
|
||||
]] .. txt2xml(table.description) .. "\\\n" .. [[
|
||||
</description>\
|
||||
<updatecontact>]] .. rpm.expand("%{fontcontact}") .. [[</updatecontact>\
|
||||
<url type=\"homepage\">]] .. rpm.expand("%{url}") .. [[</url>\
|
||||
|
Loading…
Reference in New Issue
Block a user