2016-11-10 10 views
1

나는 매크로로 전 세계적으로 정의한 경우 :조건부 rpm 매크로로 정의 된 매크로는 언제 확장됩니까?

%{!?patch_file_list: %global patch_file_list %(pfl=$(mktemp -t); ls %{_topdir}/SOURCES/*.patch | sort > $pfl; echo $pfl)} 

%prep 섹션에 사용, 그것은 %{patch_file_list}mktemp -t에 의해 반환 된 파일의 이름을 포함하고 파일이 패치의 목록을 포함 안심입니다 파일?

언제 %global patch_file_list ...에 정의 된 매크로가 확장됩니까? 전체적으로 또는 %prep 섹션에서 처음 사용할 때 ?

답변

1

조건 매크로 확장은 테스트 매크로가 정의 된 경우 (즉, % {nil}에 대한 정의가 유효한 정의 임) 본문을 확장합니다 (즉, 콜론을 따라 일치하는 오른쪽 중괄호까지).

매크로가 발생하면 즉시 확장됩니다. 이 경우 % prep 섹션을 실행하기 전에 spec 파일을 구문 분석 할 때입니다.

조건부 확장이 테스트중인 동일한 매크로 이름을 정의한다는 점이 혼동 스러울 수 있습니다.