4.4. RPM 조건
RPM 조건부를 사용하면 SPEC 파일의 다양한 섹션을 조건부로 포함할 수 있습니다.
일반적으로 조건부 포함은 다음을 처리합니다.
- 아키텍처별 섹션
- 운영 체제별 섹션
- 다양한 운영 체제 버전 간의 호환성 문제
- 매크로의 존재 및 정의
4.4.1. RPM 조건 구문
RPM 조건의 경우 다음 구문을 사용합니다.
expression 이 true이면 몇 가지 작업을 수행합니다.
%if expression … %endif
expression 이 true인 경우 다른 경우에는 다른 작업을 수행합니다.
%if expression … %else … %endif
4.4.2. RPM 조건 예
이 섹션에서는 RPM 조건의 여러 예를 제공합니다.
4.4.2.1. %if 조건
예 4.3. 8 및 기타 운영 체제 간의 호환성을 처리하기 위해 %if 조건을 사용
%if 0%{?rhel} == 8
sed -i '/AS_FUNCTION_DESCRIBE/ s/^//' configure.in sed -i '/AS_FUNCTION_DESCRIBE/ s/^//' acinclude.m4
%endif
이 조건은 AS_FUNCTION_DESCRIBE 매크로 지원 측면에서 RHEL 8과 기타 운영 체제 간의 호환성을 처리합니다. RHEL용으로 패키지를 빌드하면 %rhel
매크로가 정의되고 RHEL 버전으로 확장됩니다. 값이 8이면 RHEL 8에 대한 패키지가 빌드되는 것을 나타내는 경우 RHEL 8에서 지원하지 않는 AS_FUNCTION_DESCRIBE에 대한 참조가 autoconfig 스크립트에서 삭제됩니다.
예 4.4. 매크로 정의를 처리하기 위해 %if 조건을 사용
%define ruby_archive %{name}-%{ruby_version} %if 0%{?milestone:1}%{?revision:1} != 0 %define ruby_archive %{ruby_archive}-%{?milestone}%{?!milestone:%{?revision:r%{revision}}} %endif
이 조건부에서는 매크로에 대한 정의를 처리합니다. %milestone
또는 %revision
매크로가 설정되면 업스트림 tarball의 이름을 정의하는 %ruby_archive
매크로가 다시 정의됩니다.
4.4.2.2. %if 조건의 특수 변형
%ifarch
조건, %ifnarch
조건 및 %ifos
조건부는 %if
조건의 특수 변형입니다. 이러한 변형은 일반적으로 사용되며, 따라서 자체 매크로가 있습니다.
4.4.2.2.1. %ifarch 조건
%ifarch
조건은 아키텍처별 SPEC 파일 블록을 시작하는 데 사용됩니다. 그런 다음 각각 쉼표 또는 공백으로 구분된 하나 이상의 아키텍처 licenses가 있습니다.
예 4.5. %ifarch 조건 사용 예
%ifarch i386 sparc … %endif
%ifarch
와 %endif
사이의 SPEC 파일의 모든 내용은 32비트 AMD 및 Intel 아키텍처 또는 SunECDHE 기반 시스템에서만 처리됩니다.
4.4.2.2.2. %ifnarch 조건
%ifnarch
조건에는 %ifarch
조건보다 역방향 논리가 있습니다.
예 4.6. %ifnarch 조건 사용 예
%ifnarch alpha … %endif
%ifnarch
와 %endif
사이의 SPEC 파일의 모든 내용은 디지털 알파/AXP 기반 시스템에서 수행되지 않은 경우에만 처리됩니다.
4.4.2.2.3. %ifos 조건
%ifos
조건은 빌드의 운영 체제에 따라 처리를 제어하는 데 사용됩니다. 그런 다음 하나 이상의 운영 체제 이름을 지정할 수 있습니다.
예 4.7. %ifos 조건 사용 예
%ifos linux … %endif
%ifos
와 %endif
사이의 SPEC 파일의 모든 내용은 Linux 시스템에서 빌드가 수행된 경우에만 처리됩니다.