[Rpm-maint] [rpm] #866: %include macros.foo
Vít Ondruch
vondruch at redhat.com
Tue Feb 4 15:42:30 UTC 2014
Dne 28.1.2014 08:12, Vít Ondruch napsal(a):
>
>
> #866: %include macros.foo
> ----------------------+-----------------------------------------------------
>
> Reporter: vo.x | Owner: RpmTickets
> Type: defect | Status: closed
> Priority: major | Milestone:
> Component: rpm | Version: RPM Development
> Resolution: invalid | Keywords:
> ----------------------+-----------------------------------------------------
>
> Changes (by pmatilai):
>
> * status: new => closed
> * resolution: => invalid
>
> Comment:
>
> Replying to [ticket:866 vo.x]:
> > If the package provides macros.foo rpm macros, it would be cool if I
> could include these macros into the .spec file for internal use. For
> example, in macros.ruby, we have defined constants, which are needed for
> configuration of Ruby package itself and later, they are shipped in
> ruby-
> devel for build of other packages, which depends on Ruby.
> >
> > The regular %include macro can be used just inside of other blocks,
> such
> as %prep, %build, etc,
>
> Um, no. %include works anywhere in a spec.
>
> so I have come up with following snippet:
> >
> > {{{
> > Source4: macros.ruby
> >
> > %{lua:
> >
> > for line in io.lines(rpm.expand("%{SOURCE4}")) do
> > if line:sub(1, 1) == "%" then
> > rpm.define(line:sub(2, -1))
> > end
> > end
> >
> > }
> > }}}
> >
> > The issue with this is that the %{SOURCE4} have to be declared prior
> this snippet, while I would like to include the macros on the top of the
> .spec file in company of other global definitions.
> >
> > Is there some better solution? Could RPM provide some functionality
> along these lines?
>
> Its possible to pass arguments to macros, see
> http://rpm.org/wiki/PackagerDocs/Macros
>
> I dont see any bugs here... questions are better asked on the mailing
> lists.
>
Hi,
This was originally reported as [1]. I'll just continue here, since this
issue might get more attention.
Ok, so %include works everywhere, but it expects spec file syntax then,
which differs from macro file syntax.
This [2] is the original source of the script in the original issue [1]
and the macro file [3] I'd like to "include", which is later installed
into %{_sysconfdir}/rpm/macros.ruby. But I cannot use plain %include,
since all the macros defined in macros.ruby would need to be preceded by
%global.
This is what I tried to follow your suggestion:
$ git diff
diff --git a/ruby.spec b/ruby.spec
index 5436e1f..280d5b6 100644
--- a/ruby.spec
+++ b/ruby.spec
@@ -110,11 +110,13 @@ function source_macros(file)
end
end
-source_macros(rpm.expand("%{SOURCE4}"))
+--source_macros(rpm.expand("%{SOURCE4}"))
source_macros(rpm.expand("%{SOURCE5}"))
}
+%expand %include %{SOURCE4}
+
# http://bugs.ruby-lang.org/issues/7807
Patch0:
ruby-2.1.0-Prevent-duplicated-paths-when-empty-version-string-i.patch
# Allows to override libruby.so placement. Hopefully we will be able to
return
and it fails with:
error: line 1: Unknown tag: %ruby_libdir /usr/share/ruby
error: query of specfile
/home/vondruch/fedora-scm/maintain/ruby/ruby.spec failed, can't parse
Could not execute srpm: need more than 0 values to unpack
In other words, I'd be glad if you can suggest how to replace the LUA
script by something like %include, which will work or accept my LUA
script upstream.
Thanks
Vít
[1] http://http://rpm.org/ticket/866
[2] http://pkgs.fedoraproject.org/cgit/ruby.git/tree/ruby.spec
[3] http://pkgs.fedoraproject.org/cgit/ruby.git/tree/macros.ruby
More information about the Rpm-maint
mailing list