Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Conditionally include file in an RPM

How can I conditionally include a file in an .rpm based on a define _foobar being set or not? The define _foobar would contain the absolute path inside the build root. The file is there.

According to the documentation, I expected the following to work (note: there are more files in this %files section, but this is the gist):

%files
%if %{_foobar}
%{_foobar}
%endif

which, however, gives me the error:

error: parse error in expression
error: /path/to/specfile:LINENO: parseExpressionBoolean returns -1

where /path/to/specfile:LINENO is the path to the .spec file and the line number of the line with the %if.

like image 258
0xC0000022L Avatar asked Aug 31 '25 01:08

0xC0000022L


1 Answers

Thanks to this blog post I found a version that works for me:

%files
%if %{?_foobar:1}%{!?_foobar:0}
%{_foobar}
%endif

What this does is to expand to %if 1 if the define is set and %if 0 otherwise.

If someone else has a better solution, please answer. I'll certainly prefer accepting someone else's answer over my own.

like image 93
0xC0000022L Avatar answered Sep 03 '25 11:09

0xC0000022L