RPM spec file - Is it possible to dynamically populate a spec file variable
rpm, rpm-spec, rpmbuild
Solution
You can define rpmbuild variables with `%(cmd)` at the top of the spec file. Notice the command is in parenthesis, not curly brackets. An example:
%define whoami %(whoami)
And elsewhere in the spec file, such as a script or the build/install sections, use the variable as normal in the curly brackets like this:
echo "The user that built this is %{whoami}"
The `cmd` can be anything, including your cat command. Be careful - when another user rebuilds the spec file it may not find the file. So it'll be preferable to use the %{sourcedir} macro like this:
%define path %(cat %{sourcedir}/path_file)
And make sure that `path_file` is in the source directory and included as a source in the spec file.
Problem
I have a spec file. I need to %define a spec variable that gets its value from a one line file on the system. For example ``` %define path `cat /home/user/path_file` ``` and in path_file is one line ``` /var/www/html/hosts ``` This partially works. I say that begins in the RPM BUILD output sometimes the value of `${path}` is literally my command `cat /home/user/path_file` and sometimes the value is the line in the path_file (/var/www/html/hosts) as it should be?