콘텐츠로 이동

환경 서술어

환경 서술어(environment predicate)는 환경에 대한 조건을 서술하는 작은 문법입니다. 선언 파일에서는 moniker 섹션 내 when 필드에서 환경 서술어를 쓸 수 있습니다. 다음은 여러가지 환경 서술어들의 예입니다. 한 줄 당 하나의 서술어입니다.

os = linux
arch = "x86_64"
os in (linux, freebsd, macos)
arch not in (x86, "x86_64")
kernel-release ^= "4.1"
!(os in (linux, freebsd, macos) && arch = "x86_64" || os = openbsd)

좌항

서술 대상이 되는 필드로는 세 가지가 있습니다.

  • os: 운영체제
  • arch: 프로세서 아키텍처
  • kernel: 커널
  • kernel-release: 커널 버전
  • moniker: 모니커

비교 연산자

서술 대상과 비교하기 위해 쓸 수 있는 연산자는 총 네 가지가 있습니다.

  • =: …이다
  • !=: …이지 않다
  • ^=: …으로 시작한다 (kernel-release 필드에만 사용 가능)
  • $=: …으로 끝난다 (kernel-release 필드에만 사용 가능)
  • in: … 중 하나다
  • not in: … 중 어떤 것도 아니다

비교 연산자의 앞쪽에는 언제나 필드가 오고, =, !=, ^=, $= 뒤에는 문자열 리털럴이, innot in 뒤에는 목록이 옵니다.

Note

모든 비교 연산자는 대소문자를 구분하지 않습니다.

우항

문자열 리터럴

문자열 리터럴은 linux, "macos"와 같은 문자열 값을 나타내는 표현으로, 세 종류가 있습니다.

  • 맨 문자열 리터럴: 아무런 따옴표로 묶이지 않는 대신, 알파벳으로 시작되어야 하고 알파벳과 숫자로만 이어질 수 있습니다. linux, windows, aarch64 등 대부분의 값을 이 방식으로 표현할 수 있습니다.
  • 겹따옴표 문자열 리터럴: 겹따옴표 안에 들어간 문자열로, C/Python 스타일의 탈출열 문법(예: \0, \n, \xff, \uffff)을 지원합니다. 홑따옴표는 탈출열 없이 바로 쓸 수 있습니다.
  • 홑따옴표 문자열 리터럴: 홑따옴표 안에 들어간 문자열로, C/Python 스타일의 탈출열 문법(예: \0, \n, \xff, \uffff)을 지원합니다. 겹따옴표는 탈출열 없이 바로 쓸 수 있습니다.

아마도 "x86_64"와 같은 값을 표현할 때를 제외하고는, 대부분의 경우 맨 문자열 리터럴만으로 충분할 것입니다.

목록

목록은 0개 이상의 문자열 리터럴을 담는 표현으로, 괄호 안에 문자열 리터럴들을 쉼표로 구분하여 나열하는 식입니다. 이를테면 ()는 빈 목록이고, ("x86_64", aarch64)는 두 개의 문자열을 담은 목록입니다.

논리 상수

실제로 쓸 일은 없지만, 두 가지 논리 상수 키워드가 있습니다.

  • always: 언제나 그렇다
  • never: 언제나 그렇지 않다

이 논리 상수는 비교 연산자와 함께 쓰이지 않고, 언제나 단독으로 서술어로 기능합니다.

괄호

서술어는 괄호 안에 감싸 연산 우선순위를 조절할 수 있습니다.

논리 연산자

논리 연산자는 세 종류가 있습니다.

  • &&: 이항 연산자로, 양쪽의 서술어가 모두 맞아야 맞습니다.
  • ||: 이항 연산자로, 양쪽의 서술어 중 하나만 맞아도 맞습니다.
  • !: 여는 괄호 바로 앞에서 쓰이는 전항 연산자로, 괄호 안의 서술어를 부정합니다.