为expand所困

%{?dist: %{expand: %%define %dist 1}}
%{?fc1:%define _without_xorg 1}
%{?el3:%define _without_xorg 1}
第一次看到fedora RPM SPEC描述,似乎可以以一种非常简单的方法来针对特定系统打包,当在~/.rpmmacros为turbolinux fuji也定义一个宏参数
%dist tl11时,
%{?dist: %{expand: %%define %dist 1}}
%{?fc1:%define _without_xorg 1}
%{?el3:%define _without_xorg 1}
%{?tl11:%define _without_xorg 1}
%{?tl11:BuildRequires:libselinux-devel}
看起来真的非常简单,但是将%{?dist: %{expand: %%define %dist 1}}注释掉依然可以运行就奇怪了。那么这个dist和下面到底是怎样的一种映射关系
/usr/lib/rpm/macros有类似的描述
# Check if symbol is defined.
# Example usage: %if %{defined with_foo} && %{undefined with_bar} …
%defined()%{expand:%%{?%{1}:1}%%{!?%{1}:0}}
%undefined()%{expand:%%{?%{1}:0}%%{!?%{1}:1}}
从google的资料来看expand应该是定义一个隐藏的变量对应设置的宏应该就是
%{expand: %%define %dist 1}
%define tl11 1
%{?dist:1}
天啊头都大了,那么它是怎么和设定的值关联,最最关键的是为什么注释掉仍然可以运行。

About: dato


发表评论

邮箱地址不会被公开。 必填项已用*标注