--- rpm-4.8.0/macros.in.orig 2016-02-08 17:41:22.623170570 +0100 +++ rpm-4.8.0/macros.in 2016-02-08 17:42:06.889599411 +0100 @@ -1200,6 +1200,97 @@ %__urlhelper_proxyopts %{?_httpproxy:--proxy %{_httpproxy}%{?_httpport::%{_httpport}}}%{!?_httpproxy:%{nil}} %_urlhelper %{__urlhelpercmd} %{?__urlhelper_localopts} %{?__urlhelper_proxyopts} %{__urlhelperopts} +#------------------------------------------------------------------------------ +# Macros for further automated spec %setup and patch application + +# default to plain patch +%__scm patch +# meh, figure something saner +%__scm_username rpm-build +%__scm_usermail +%__scm_author %{__scm_username} %{__scm_usermail} + +# Plain patch (-m is unused) +%__scm_setup_patch(q) %{nil} +%__scm_apply_patch(qp:m:)\ +%{__patch} %{-p:-p%{-p*}} %{-q:-s} + +# Mercurial (aka hg) +%__scm_setup_hg(q)\ +%{__hg} init %{-q} .\ +%{__hg} add %{-q} .\ +%{__hg} commit %{-q} --user "%{__scm_author}" -m "%{name}-%{version} base" + +%__scm_apply_hg(qp:m:)\ +%{__hg} import - %{-p:-p%{-p*}} %{-q} -m %{-m*} --user "%{__scm_author}" + +# Git +%__scm_setup_git(q)\ +%{__git} init %{-q}\ +%{__git} config user.name "%{__scm_username}"\ +%{__git} config user.email "%{__scm_usermail}"\ +%{__git} add .\ +%{__git} commit %{-q} -a\\\ + --author "%{__scm_author}" -m "%{name}-%{version} base" + +%__scm_apply_git(qp:m:)\ +%{__git} apply --index %{-p:-p%{-p*}} -\ +%{__git} commit %{-q} -m %{-m*} --author "%{__scm_author}" + +# Git, using "git am" (-m is unused) +%__scm_setup_git_am(q)\ +%{expand:%__scm_setup_git %{-q}} + +%__scm_apply_git_am(qp:m:)\ +%{__git} am %{-q} %{-p:-p%{-p*}} + +# Quilt +%__scm_setup_quilt(q) %{nil} +%__scm_apply_quilt(qp:m:)\ +%{__quilt} import %{-p:-p%{-p*}} %{1} && %{__quilt} push + +# Bzr +%__scm_setup_bzr(q)\ +%{__bzr} init %{-q}\ +%{__bzr} whoami --branch "%{__scm_author}"\ +%{__bzr} add .\ +%{__bzr} commit %{-q} -m "%{name}-%{version} base" + +# bzr doesn't seem to have its own command to apply patches? +%__scm_apply_bzr(qp:m:)\ +%{__patch} %{-p:-p%{-p*}} %{-q:-s}\ +%{__bzr} commit %{-q} -m %{-m*} + +# Single patch application +%apply_patch(qp:m:)\ +%{lua:\ +local file = rpm.expand("%{1}")\ +if posix.access(file, "r") then\ + local options = rpm.expand("%{-q} %{-p:-p%{-p*}} %{-m:-m%{-m*}}")\ + local scm_apply = rpm.expand("%__scm_apply_%{__scm}")\ + print(rpm.expand("%{uncompress:"..file.."} | "..scm_apply.." "..options.."\\n"))\ +else\ + print("echo 'Cannot read "..file.."'; exit 1;".."\\n")\ +end} + +# Automatically apply all patches +%autopatch(vp:)\ +%{lua:\ +local options = rpm.expand("%{!-v:-q} %{-p:-p%{-p*}} ")\ +for i, p in ipairs(patches) do\ + print(rpm.expand("%apply_patch -m %{basename:"..p.."} "..options..p.."\\n"))\ +end} + +# One macro to (optionally) do it all. +# -S Sets the used patch application style, eg '-S git' enables +# usage of git repository and per-patch commits. +# -N Disable automatic patch application +# -p Use -p for patch application +%autosetup(a:b:cDn:TvNS:p:)\ +%setup %{-a} %{-b} %{-c} %{-D} %{-n} %{-T} %{!-v:-q}\ +%{-S:%global __scm %{-S*}}\ +%{-S:%{expand:%__scm_setup_%{-S*} %{!-v:-q}}}\ +%{!-N:%autopatch %{-v} %{-p:-p%{-p*}}} # \endverbatim #*/