From 9c49f54b629483751d5b78ee9523e5ed65741ae5 Mon Sep 17 00:00:00 2001 From: Nicolas Mailhot Date: May 03 2019 11:49:58 +0000 Subject: Move a lot of code unrelated to srpm creation to srpm macros – workarounds https://github.com/rpm-software-management/rpm/issues/674 – the result is less regular, which strongly hints it’s a code layout mistake --- diff --git a/rpm/lua/rpm/go.lua b/rpm/lua/rpm/go.lua index f05fc89..49f8226 100644 --- a/rpm/lua/rpm/go.lua +++ b/rpm/lua/rpm/go.lua @@ -1,4 +1,4 @@ --- Copyright © 2017-2018 Nicolas Mailhot +-- Copyright © 2017-2019 Nicolas Mailhot -- -- This program is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by @@ -19,30 +19,6 @@ -- The sister file gosrpm.lua deals with srpm and buildroot setup and is more -- restricted. --- Pivot variable definitions for each kind of Go package -local pivot = {devel = "goipaths", alt = "goaltipaths"} - --- Default argument flag for each kind of list -local listflags = {goipaths = "-i", goipathsex = "-t", goextensions = "-e"} - --- Convert a space-separated list of import paths to a table indexed by their --- rpmname version, to handle upstreams that play naming games -local function indexedgoipaths(goipaths, gocid) - local go = require "fedora.srpm.go" - local giptable = {} - for goipath in string.gmatch(rpm.expand(goipaths), "[^%s,]+") do - local key = go.rpmname(goipath, gocid) - if (not string.match(key, "^compat-")) then - key = "compat-" .. key - end - if (giptable[key] == nil) then - giptable[key] = {} - end - table.insert(giptable[key], goipath) - end - return giptable -end - -- The goenv macro main processing function -- See the documentation in the macros.go-rpm file for argument description local function env(suffix, goipath, verbose, usermetadata) @@ -94,140 +70,11 @@ local function env(suffix, goipath, verbose, usermetadata) fedora.explicitset( "currentgoldflags", ldflags, verbose) end --- Create fallbacks to goipath variables if godevelipath variables are missing -local function develenvinit() - local fedora = require "fedora.common" - if (next(fedora.getsuffixes("goipaths")) == nil) then - for _, suffix in pairs(fedora.getsuffixes("goipath")) do - fedora.safeset("goipaths" .. suffix, "%{goipath" .. suffix .. "}") - end - end -end - --- Set rpm variables related to the processing of a golang-*-devel subpackage -local function develenv(suffix, verbose) - local fedora = require "fedora.common" - local go = require "fedora.srpm.go" - local ismain = (suffix == "") or (suffix == "0") - if ismain then - fedora.zalias( {"goipath", "gocid", "gofilelist", - "godevelname", "godevelcid", "godevelfilelist", "godevelsummary", "godeveldescription", - "godevelheader", "goextensions", "gosupfiles", "gosupfilesex", - "goipaths", "goipathsex", "golicenses", "golicensesex", "godocs", "godocsex"}, verbose) - end - for list, flag in pairs(listflags) do - local l = rpm.expand("%{?" .. list .. suffix .. "}") - if (l ~= "") then - l = string.gsub(" " .. l, "%s+%" .. flag .. "%s+", " ") - l = string.gsub(l, "%s+", " ") - l = string.gsub(l, "^ ", "") - l = string.gsub(l, " $", "") - if (list ~= "goipaths") then - l = string.gsub(l, "([^%s]+)", flag .. " %1") - end - fedora.explicitset(list .. suffix, l) - end - end - local goipaths = rpm.expand("%{?goipaths" .. suffix .. "}") - local goipath = string.match(goipaths, "[^%s]+") - fedora.safeset("godevelcid" .. suffix, "%{?gocid" .. suffix .. "}", verbose) - local rpmname = go.rpmname(goipath, "%{?godevelcid" .. suffix .. "}") - fedora.safeset("godevelname" .. suffix, rpmname .. "-devel", verbose) - fedora.safeset("godevelfilelist" .. suffix, rpmname .. "-%{gofilelist}", verbose) - fedora.safeset("godevelsummary" .. suffix, "%{summary}", verbose) - fedora.safeset("godeveldescription" .. suffix, "%{?common_description}", verbose) - local postdescr = "\n\nThis package contains the source code needed for building packages that reference " .. - "the following Go import paths:" - postdescr = postdescr .. string.gsub(goipaths, "([^%s]+)", "\n – %1") - fedora.explicitset("currentgodeveldescription", "%{expand:%{godeveldescription" .. suffix .. "}" .. - postdescr .. "}", verbose) - fedora.setcurrent({"godevelname", "godevelcid", "godevelfilelist", "godevelsummary", - "godevelheader", "goextensions", "gosupfiles", "gosupfilesex", - "goipaths", "goipathsex", "golicenses", "golicensesex", "godocs", "godocsex"}, suffix, verbose) - if ismain then - fedora.zalias( {"godevelname", "godevelcid", "godevelfilelist", "godevelsummary", "godeveldescription"}, verbose) - end -end - --- Set rpm variables related to the processing of a compat-golang-*-devel subpackage -local function altenv(suffix, rpmname, goaltipaths, verbose) - local fedora = require "fedora.common" - local go = require "fedora.srpm.go" - local ismain = (suffix == "") or (suffix == "0") - if ismain then - fedora.zalias( {"goipath", "gocanonipath", - "goaltdescription", "goaltsummary", "goaltheader"}, verbose) - end - fedora.safeset("gocanonipath" .. suffix, "%{goipath" .. suffix .. "}", verbose) - fedora.safeset("goaltsummary" .. suffix, "%{summary}", verbose) - fedora.safeset("goaltdescription" .. suffix, "%{?common_description}", verbose) - fedora.setcurrent( {"gocanonipath", "goaltcid", "goaltsummary"}, suffix, verbose) - local postdescr = "\n\nThis package provides symbolic links that alias the following Go import paths " .. - "to %{currentgocanonipath}:" - local posthead = "" - for _, goaltipath in ipairs(goaltipaths) do - postdescr = postdescr .. "\n – " .. goaltipath - posthead = "\nObsoletes: " .. go.rpmname(goaltipath, "") .. "-devel < %{version}-%{release}" - end - postdescr = postdescr .. - "\n\nAliasing Go import paths via symbolic links or http redirects is fragile. " .. - "If your Go code depends on this package, you should patch it to import " .. - "directly %{currentgocanonipath}." - fedora.explicitset("currentgoaltdescription", "%{expand:%{?goaltdescription" .. suffix .. "}" .. - postdescr .. "}", verbose) - fedora.explicitset("currentgoaltheader", "%{expand:%{?goaltheader" .. suffix .. "}" .. - posthead .. "}", verbose) - fedora.explicitset("currentgoaltname", rpmname .. "-devel", verbose) - fedora.explicitset("currentgoaltfilelist", rpmname .. "-%{gofilelist}", verbose) - if ismain then - fedora.zalias( {"gocanonipath", "goaltsummary", "goaltdescription"}, verbose) - end -end - --- Create a single %package section for a known kind of Go subpackage -local function singlepkg(kind, suffix, verbose) - if (kind == "devel") then - develenv(suffix, verbose) - print(rpm.expand('%__godevelpkg\n')) - elseif (kind == "alt") then - local fedora = require "fedora.common" - local ismain = (suffix == "") or (suffix == "0") - if ismain then - fedora.zalias({"goaltipaths","gocid","goaltcid"}, verbose) - end - fedora.safeset("goaltcid" .. suffix, "%{?gocid" .. suffix .. "}", verbose) - if ismain then - fedora.zalias({"goaltcid"}, verbose) - end - for rpmname, goaltipaths in pairs(indexedgoipaths("%{goaltipaths" .. suffix .. "}", - "%{goaltcid" .. suffix .. "}")) do - altenv(suffix, rpmname, goaltipaths, verbose) - print(rpm.expand('%__goaltpkg\n')) - end - else - rpm.expand("%{error:Unknown kind of Go subpackage: " .. kind .. "}") - end -end - --- Create one or all %package sections for a known kind of go subpackage -local function pkg(kind, suffix, processall, verbose) - local fedora = require "fedora.common" - if (kind == "devel") then - develenvinit() - end - if processall then - for _, suffix in pairs(fedora.getsuffixes(pivot[kind])) do - singlepkg(kind, suffix, verbose) - end - else - singlepkg(kind, suffix, verbose) - end -end - -- Create a single set of %install tasks for a known kind of Go subpackage local function singleinstall(kind, suffix, verbose) + local go = require "fedora.srpm.go" if (kind == "devel") then - develenv(suffix, verbose) + go.develenv(suffix, verbose) for goipath in string.gmatch(rpm.expand("%{currentgoipaths}"), "[^%s]+") do env('', goipath, verbose, {}) local vflag = verbose and " -v" or "" @@ -244,9 +91,9 @@ local function singleinstall(kind, suffix, verbose) if ismain then fedora.zalias({"goaltcid"}, verbose) end - for rpmname, goaltipaths in pairs(indexedgoipaths("%{goaltipaths" .. suffix .. "}", - "%{goaltcid" .. suffix .. "}")) do - altenv(suffix, rpmname, goaltipaths, verbose) + for rpmname, goaltipaths in pairs(go.indexedgoipaths("%{goaltipaths" .. suffix .. "}", + "%{goaltcid" .. suffix .. "}")) do + go.altenv(suffix, rpmname, goaltipaths, verbose) gocanonipath = rpm.expand("%{currentgocanonipath}") for _, goaltipath in ipairs(goaltipaths) do fedora.explicitset("currentgoaltipath", goaltipath) @@ -265,12 +112,13 @@ end -- Create one or all %install tasks for a known kind of go subpackage local function install(kind, suffix, processall, verbose) - local fedora = require "fedora.common" + local fedora = require "fedora.common" + local go = require "fedora.srpm.go" if (kind == "devel") then - develenvinit() + go.develenvinit() end if processall then - for _, suffix in pairs(fedora.getsuffixes(pivot[kind])) do + for _, suffix in pairs(fedora.getsuffixes(go.pivot[kind])) do singleinstall(kind, suffix, verbose) end else @@ -278,52 +126,7 @@ local function install(kind, suffix, processall, verbose) end end --- Create a single %files section for a known kind of Go subpackage -local function singlefiles(kind, suffix, verbose) - if (kind == "devel") then - develenv(suffix, verbose) - print(rpm.expand('%files -n %{currentgodevelname} -f "%{goworkdir}/%{currentgodevelfilelist}"\n')) - elseif (kind == "alt") then - local fedora = require "fedora.common" - local ismain = (suffix == "") or (suffix == "0") - if ismain then - fedora.zalias({"goaltipaths","gocid","goaltcid"}, verbose) - end - fedora.safeset("goaltcid" .. suffix, "%{?gocid" .. suffix .. "}", verbose) - if ismain then - fedora.zalias({"goaltcid"}, verbose) - end - for rpmname, goaltipaths in pairs(indexedgoipaths("%{goaltipaths" .. suffix .. "}", - "%{goaltcid" .. suffix .. "}")) do - altenv(suffix, rpmname, goaltipaths, verbose) - print(rpm.expand('%files -n %{currentgoaltname} -f "%{goworkdir}/%{currentgoaltfilelist}"\n')) - end - else - rpm.expand("%{error:Unknown kind of Go subpackage: " .. kind .. "}") - end -end - --- Create one or all %files sections for a known kind of go subpackage -local function files(kind, suffix, processall, verbose) - local fedora = require "fedora.common" - if (kind == "devel") then - develenvinit() - end - if processall then - for _, suffix in pairs(fedora.getsuffixes(pivot[kind])) do - singlefiles(kind, suffix, verbose) - end - else - singlefiles(kind, suffix, verbose) - end -end - return { - env = env, - develenv = develenv, - altenv = altenv, - pkg = pkg, - install = install, - files = files, + env = env, + install = install, } - diff --git a/rpm/lua/srpm/go.lua b/rpm/lua/srpm/go.lua index f7f1f51..f4597b5 100644 --- a/rpm/lua/srpm/go.lua +++ b/rpm/lua/srpm/go.lua @@ -1,4 +1,4 @@ --- Copyright (c) 2017-2018 Nicolas Mailhot +-- Copyright (c) 2017-2019 Nicolas Mailhot -- -- This program is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by @@ -116,7 +116,208 @@ local function meta(suffix, verbose, informative, silent) end end +-- Pivot variable definitions for each kind of Go package +local pivot = {devel = "goipaths", alt = "goaltipaths"} + +-- Default argument flag for each kind of list +local listflags = {goipaths = "-i", goipathsex = "-t", goextensions = "-e"} + +-- Convert a space-separated list of import paths to a table indexed by their +-- rpmname version, to handle upstreams that play naming games +local function indexedgoipaths(goipaths, gocid) + local go = require "fedora.srpm.go" + local giptable = {} + for goipath in string.gmatch(rpm.expand(goipaths), "[^%s,]+") do + local key = go.rpmname(goipath, gocid) + if (not string.match(key, "^compat-")) then + key = "compat-" .. key + end + if (giptable[key] == nil) then + giptable[key] = {} + end + table.insert(giptable[key], goipath) + end + return giptable +end + +-- Create fallbacks to goipath variables if godevelipath variables are missing +local function develenvinit() + local fedora = require "fedora.common" + if (next(fedora.getsuffixes("goipaths")) == nil) then + for _, suffix in pairs(fedora.getsuffixes("goipath")) do + fedora.safeset("goipaths" .. suffix, "%{goipath" .. suffix .. "}") + end + end +end + +-- Set rpm variables related to the processing of a golang-*-devel subpackage +local function develenv(suffix, verbose) + local fedora = require "fedora.common" + local go = require "fedora.srpm.go" + local ismain = (suffix == "") or (suffix == "0") + if ismain then + fedora.zalias( {"goipath", "gocid", "gofilelist", + "godevelname", "godevelcid", "godevelfilelist", "godevelsummary", "godeveldescription", + "godevelheader", "goextensions", "gosupfiles", "gosupfilesex", + "goipaths", "goipathsex", "golicenses", "golicensesex", "godocs", "godocsex"}, verbose) + end + for list, flag in pairs(listflags) do + local l = rpm.expand("%{?" .. list .. suffix .. "}") + if (l ~= "") then + l = string.gsub(" " .. l, "%s+%" .. flag .. "%s+", " ") + l = string.gsub(l, "%s+", " ") + l = string.gsub(l, "^ ", "") + l = string.gsub(l, " $", "") + if (list ~= "goipaths") then + l = string.gsub(l, "([^%s]+)", flag .. " %1") + end + fedora.explicitset(list .. suffix, l) + end + end + local goipaths = rpm.expand("%{?goipaths" .. suffix .. "}") + local goipath = string.match(goipaths, "[^%s]+") + fedora.safeset("godevelcid" .. suffix, "%{?gocid" .. suffix .. "}", verbose) + local rpmname = go.rpmname(goipath, "%{?godevelcid" .. suffix .. "}") + fedora.safeset("godevelname" .. suffix, rpmname .. "-devel", verbose) + fedora.safeset("godevelfilelist" .. suffix, rpmname .. "-%{gofilelist}", verbose) + fedora.safeset("godevelsummary" .. suffix, "%{summary}", verbose) + fedora.safeset("godeveldescription" .. suffix, "%{?common_description}", verbose) + local postdescr = "\n\nThis package contains the source code needed for building packages that reference " .. + "the following Go import paths:" + postdescr = postdescr .. string.gsub(goipaths, "([^%s]+)", "\n – %1") + fedora.explicitset("currentgodeveldescription", "%{expand:%{godeveldescription" .. suffix .. "}" .. + postdescr .. "}", verbose) + fedora.setcurrent({"godevelname", "godevelcid", "godevelfilelist", "godevelsummary", + "godevelheader", "goextensions", "gosupfiles", "gosupfilesex", + "goipaths", "goipathsex", "golicenses", "golicensesex", "godocs", "godocsex"}, suffix, verbose) + if ismain then + fedora.zalias( {"godevelname", "godevelcid", "godevelfilelist", "godevelsummary", "godeveldescription"}, verbose) + end +end + +-- Set rpm variables related to the processing of a compat-golang-*-devel subpackage +local function altenv(suffix, rpmname, goaltipaths, verbose) + local fedora = require "fedora.common" + local go = require "fedora.srpm.go" + local ismain = (suffix == "") or (suffix == "0") + if ismain then + fedora.zalias( {"goipath", "gocanonipath", + "goaltdescription", "goaltsummary", "goaltheader"}, verbose) + end + fedora.safeset("gocanonipath" .. suffix, "%{goipath" .. suffix .. "}", verbose) + fedora.safeset("goaltsummary" .. suffix, "%{summary}", verbose) + fedora.safeset("goaltdescription" .. suffix, "%{?common_description}", verbose) + fedora.setcurrent( {"gocanonipath", "goaltcid", "goaltsummary"}, suffix, verbose) + local postdescr = "\n\nThis package provides symbolic links that alias the following Go import paths " .. + "to %{currentgocanonipath}:" + local posthead = "" + for _, goaltipath in ipairs(goaltipaths) do + postdescr = postdescr .. "\n – " .. goaltipath + posthead = "\nObsoletes: " .. go.rpmname(goaltipath, "") .. "-devel < %{version}-%{release}" + end + postdescr = postdescr .. + "\n\nAliasing Go import paths via symbolic links or http redirects is fragile. " .. + "If your Go code depends on this package, you should patch it to import " .. + "directly %{currentgocanonipath}." + fedora.explicitset("currentgoaltdescription", "%{expand:%{?goaltdescription" .. suffix .. "}" .. + postdescr .. "}", verbose) + fedora.explicitset("currentgoaltheader", "%{expand:%{?goaltheader" .. suffix .. "}" .. + posthead .. "}", verbose) + fedora.explicitset("currentgoaltname", rpmname .. "-devel", verbose) + fedora.explicitset("currentgoaltfilelist", rpmname .. "-%{gofilelist}", verbose) + if ismain then + fedora.zalias( {"gocanonipath", "goaltsummary", "goaltdescription"}, verbose) + end +end + +-- Create a single %package section for a known kind of Go subpackage +local function singlepkg(kind, suffix, verbose) + if (kind == "devel") then + develenv(suffix, verbose) + print(rpm.expand('%__godevelpkg\n')) + elseif (kind == "alt") then + local fedora = require "fedora.common" + local ismain = (suffix == "") or (suffix == "0") + if ismain then + fedora.zalias({"goaltipaths","gocid","goaltcid"}, verbose) + end + fedora.safeset("goaltcid" .. suffix, "%{?gocid" .. suffix .. "}", verbose) + if ismain then + fedora.zalias({"goaltcid"}, verbose) + end + for rpmname, goaltipaths in pairs(indexedgoipaths("%{goaltipaths" .. suffix .. "}", + "%{goaltcid" .. suffix .. "}")) do + altenv(suffix, rpmname, goaltipaths, verbose) + print(rpm.expand('%__goaltpkg\n')) + end + else + rpm.expand("%{error:Unknown kind of Go subpackage: " .. kind .. "}") + end +end + +-- Create one or all %package sections for a known kind of go subpackage +local function pkg(kind, suffix, processall, verbose) + local fedora = require "fedora.common" + if (kind == "devel") then + develenvinit() + end + if processall then + for _, suffix in pairs(fedora.getsuffixes(pivot[kind])) do + singlepkg(kind, suffix, verbose) + end + else + singlepkg(kind, suffix, verbose) + end +end + +-- Create a single %files section for a known kind of Go subpackage +local function singlefiles(kind, suffix, verbose) + if (kind == "devel") then + develenv(suffix, verbose) + print(rpm.expand('%files -n %{currentgodevelname} -f "%{goworkdir}/%{currentgodevelfilelist}"\n')) + elseif (kind == "alt") then + local fedora = require "fedora.common" + local ismain = (suffix == "") or (suffix == "0") + if ismain then + fedora.zalias({"goaltipaths","gocid","goaltcid"}, verbose) + end + fedora.safeset("goaltcid" .. suffix, "%{?gocid" .. suffix .. "}", verbose) + if ismain then + fedora.zalias({"goaltcid"}, verbose) + end + for rpmname, goaltipaths in pairs(indexedgoipaths("%{goaltipaths" .. suffix .. "}", + "%{goaltcid" .. suffix .. "}")) do + altenv(suffix, rpmname, goaltipaths, verbose) + print(rpm.expand('%files -n %{currentgoaltname} -f "%{goworkdir}/%{currentgoaltfilelist}"\n')) + end + else + rpm.expand("%{error:Unknown kind of Go subpackage: " .. kind .. "}") + end +end + +-- Create one or all %files sections for a known kind of go subpackage +local function files(kind, suffix, processall, verbose) + local fedora = require "fedora.common" + if (kind == "devel") then + develenvinit() + end + if processall then + for _, suffix in pairs(fedora.getsuffixes(pivot[kind])) do + singlefiles(kind, suffix, verbose) + end + else + singlefiles(kind, suffix, verbose) + end +end + return { - rpmname = rpmname, - meta = meta, + rpmname = rpmname, + meta = meta, + pivot = pivot, + indexedgoipaths = indexedgoipaths, + develenvinit = develenvinit, + develenv = develenv, + altenv = altenv, + pkg = pkg, + files = files, } diff --git a/rpm/macros.d/macros.go-rpm b/rpm/macros.d/macros.go-rpm index fa2cbcf..2b6f45c 100644 --- a/rpm/macros.d/macros.go-rpm +++ b/rpm/macros.d/macros.go-rpm @@ -56,41 +56,6 @@ # The default filelist name generated by %goinstall %gofilelist devel.file-list -# Create %package sections for every known kind of go subpackage. Arguments: -# -v be verbose -%gopkg(av) %{expand: -%godevelpkg -a %{-v} -%goaltpkg -a %{-v} -} - -# Create a %package section for a golang-*-devel subpackage. Arguments: -# -z read the zth block of definitions, for example -# %{goipaths} -# -a process all blocks in one go, instead of using separate -# -z calls -# -v be verbose -%godevelpkg(z:av) %{lua: -local go = require "fedora.rpm.go" -local suffix = rpm.expand("%{-z*}") -local processall = (rpm.expand("%{-a}") ~= "") and (rpm.expand("%{-z}") == "") -local verbose = (rpm.expand("%{-v}") ~= "") -go.pkg("devel", suffix, processall, verbose) -} - -# Create a %package section for a compat-golang-*-devel subpackage. Arguments: -# -z read the zth block of definitions, for example -# %{goaltipaths} -# -a process all blocks in one go, instead of using separate -# -z calls -# -v be verbose -%goaltpkg(z:av) %{lua: -local go = require "fedora.rpm.go" -local suffix = rpm.expand("%{-z*}") -local processall = (rpm.expand("%{-a}") ~= "") and (rpm.expand("%{-z}") == "") -local verbose = (rpm.expand("%{-v}") ~= "") -go.pkg("alt", suffix, processall, verbose) -} - # Sets environment variables suitable for a Go source archive. Optional arguments: # -z read the zth block of definitions, for example # %{goipath}, %{commit}… @@ -348,7 +313,6 @@ local verbose = (rpm.expand("%{-v}") ~= "") go.install("alt", suffix, processall, verbose) } - # Run go test with Fedora flags on all subdirectories except for those filtered out # THIS MACRO IS OPT-OUT. # @@ -407,39 +371,3 @@ else process(rpm.expand("%{-z*}")) end } - - -# Create %files sections for every known kind of Go subpackage. Arguments: -# -v be verbose -%gopkgfiles(av) %{expand: -%godevelfiles -a %{-v} -%goaltfiles -a %{-v} -} - -# Create a %files section for a golang-*-devel subpackage. Arguments: -# -z read the zth block of definitions, for example -# %{goipaths} -# -a process all blocks in one go, instead of using separate -# -z calls -# -v be verbose -%godevelfiles(z:av) %{lua: -local go = require "fedora.rpm.go" -local suffix = rpm.expand("%{-z*}") -local processall = (rpm.expand("%{-a}") ~= "") and (rpm.expand("%{-z}") == "") -local verbose = (rpm.expand("%{-v}") ~= "") -go.files("devel", suffix, processall, verbose) -} - -# Create a %files section for a compat-golang-*-devel subpackage. Arguments: -# -z read the zth block of definitions, for example -# %{goaltipaths} -# -a process all blocks in one go, instead of using separate -# -z calls -# -v be verbose -%goaltfiles(z:av) %{lua: -local go = require "fedora.rpm.go" -local suffix = rpm.expand("%{-z*}") -local processall = (rpm.expand("%{-a}") ~= "") and (rpm.expand("%{-z}") == "") -local verbose = (rpm.expand("%{-v}") ~= "") -go.files("alt", suffix, processall, verbose) -} diff --git a/rpm/macros.d/macros.go-rpm.internal b/rpm/macros.d/macros.go-rpm.internal index 5bde43b..e4f6d38 100644 --- a/rpm/macros.d/macros.go-rpm.internal +++ b/rpm/macros.d/macros.go-rpm.internal @@ -18,30 +18,6 @@ # Internal utility macros # Direct use in spec file is not supported -%__godevelpkg() %{expand: -%package -n %{currentgodevelname} -Summary: %{currentgodevelsummary} -BuildRequires: go-rpm-macros -BuildArch: noarch -%{?currentgodevelheader} -%description -n %{currentgodevelname} -%(%reformatdescriptiontext << EOF_DESCR -%{?currentgodeveldescription} -EOF_DESCR) -} - -%__goaltpkg() %{expand: -%package -n %{currentgoaltname} -Summary: %{currentgoaltsummary} -BuildRequires: go-rpm-macros -BuildArch: noarch -%{?currentgoaltheader} -%description -n %{currentgoaltname} -%(%reformatdescriptiontext << EOF_DESCR -%{?currentgoaltdescription} -EOF_DESCR) -} - %__godevelinstall(-i:v) %{expand: ( %define __godevelinstall_ipath %{-i*} diff --git a/rpm/macros.d/macros.go-srpm b/rpm/macros.d/macros.go-srpm index 492e71d..e6a38fb 100644 --- a/rpm/macros.d/macros.go-srpm +++ b/rpm/macros.d/macros.go-srpm @@ -119,3 +119,73 @@ else go.meta(rpm.expand("%{-z*}"),verbose,informative,silent) end } + +# Create %package sections for every known kind of go subpackage. Arguments: +# -v be verbose +%gopkg(av) %{expand: +%godevelpkg -a %{-v} +%goaltpkg -a %{-v} +} + +# Create a %package section for a golang-*-devel subpackage. Arguments: +# -z read the zth block of definitions, for example +# %{goipaths} +# -a process all blocks in one go, instead of using separate +# -z calls +# -v be verbose +%godevelpkg(z:av) %{lua: +local go = require "fedora.srpm.go" +local suffix = rpm.expand("%{-z*}") +local processall = (rpm.expand("%{-a}") ~= "") and (rpm.expand("%{-z}") == "") +local verbose = (rpm.expand("%{-v}") ~= "") +go.pkg("devel", suffix, processall, verbose) +} + +# Create a %package section for a compat-golang-*-devel subpackage. Arguments: +# -z read the zth block of definitions, for example +# %{goaltipaths} +# -a process all blocks in one go, instead of using separate +# -z calls +# -v be verbose +%goaltpkg(z:av) %{lua: +local go = require "fedora.srpm.go" +local suffix = rpm.expand("%{-z*}") +local processall = (rpm.expand("%{-a}") ~= "") and (rpm.expand("%{-z}") == "") +local verbose = (rpm.expand("%{-v}") ~= "") +go.pkg("alt", suffix, processall, verbose) +} + +# Create %files sections for every known kind of Go subpackage. Arguments: +# -v be verbose +%gopkgfiles(av) %{expand: +%godevelfiles -a %{-v} +%goaltfiles -a %{-v} +} + +# Create a %files section for a golang-*-devel subpackage. Arguments: +# -z read the zth block of definitions, for example +# %{goipaths} +# -a process all blocks in one go, instead of using separate +# -z calls +# -v be verbose +%godevelfiles(z:av) %{lua: +local go = require "fedora.srpm.go" +local suffix = rpm.expand("%{-z*}") +local processall = (rpm.expand("%{-a}") ~= "") and (rpm.expand("%{-z}") == "") +local verbose = (rpm.expand("%{-v}") ~= "") +go.files("devel", suffix, processall, verbose) +} + +# Create a %files section for a compat-golang-*-devel subpackage. Arguments: +# -z read the zth block of definitions, for example +# %{goaltipaths} +# -a process all blocks in one go, instead of using separate +# -z calls +# -v be verbose +%goaltfiles(z:av) %{lua: +local go = require "fedora.srpm.go" +local suffix = rpm.expand("%{-z*}") +local processall = (rpm.expand("%{-a}") ~= "") and (rpm.expand("%{-z}") == "") +local verbose = (rpm.expand("%{-v}") ~= "") +go.files("alt", suffix, processall, verbose) +} diff --git a/rpm/macros.d/macros.go-srpm.internal b/rpm/macros.d/macros.go-srpm.internal new file mode 100644 index 0000000..6231b15 --- /dev/null +++ b/rpm/macros.d/macros.go-srpm.internal @@ -0,0 +1,43 @@ +# Copyright © 2018 Nicolas Mailhot +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# SRPM macros for Go packages. +# +# Internal utility macros +# Direct use in spec file is not supported + +%__godevelpkg() %{expand: +%package -n %{currentgodevelname} +Summary: %{currentgodevelsummary} +BuildRequires: go-rpm-macros +BuildArch: noarch +%{?currentgodevelheader} +%description -n %{currentgodevelname} +%(%reformatdescriptiontext << EOF_DESCR +%{?currentgodeveldescription} +EOF_DESCR) +} + +%__goaltpkg() %{expand: +%package -n %{currentgoaltname} +Summary: %{currentgoaltsummary} +BuildRequires: go-rpm-macros +BuildArch: noarch +%{?currentgoaltheader} +%description -n %{currentgoaltname} +%(%reformatdescriptiontext << EOF_DESCR +%{?currentgoaltdescription} +EOF_DESCR) +}