37.18. 증축 건물 인프라

당신이 배포에 대해 생각하고 있다면포스트그레SQL토토 모듈을 위한 휴대용 빌드 시스템을 설정하는 것은 상당히 어려울 수 있습니다. 그러므로포스트그레SQL설치는 토토을 위한 빌드 인프라를 제공합니다.PGXS, 이미 설치된 서버에 대해 간단한 토토 모듈을 간단히 구축할 수 있습니다.PGXS는 순수 SQL 토토에도 사용할 수 있지만 주로 C 코드를 포함하는 토토을 위한 것입니다. 참고하세요PGXS인터페이스하는 소프트웨어를 빌드하는 데 사용할 수 있는 범용 빌드 시스템 프레임워크가 아닙니다.포스트그레SQL; 단순한 서버 토토 모듈에 대한 공통 빌드 규칙을 자동화할 뿐입니다. 더 복잡한 패키지의 경우 자체 빌드 시스템을 작성해야 할 수도 있습니다.

다음을 사용하려면PGXS토토을 위한 인프라를 구축하려면 간단한 makefile을 작성해야 합니다. makefile에서 일부 변수를 설정하고 전역 변수를 포함해야 합니다.PGXSmakefile. 다음은라는 토토 모듈을 빌드하는 예입니다.isbn_issn, 일부 C 코드, 토토 제어 파일, SQL 스크립트, 포함 파일(다른 모듈이 SQL을 통하지 않고 토토 기능에 액세스해야 하는 경우에만 필요함) 및 문서 텍스트 파일을 포함하는 공유 라이브러리로 구성됩니다.

모듈 = isbn_issn
토토 = isbn_issn
데이터 = isbn_issn--1.0.sql
DOCS = README.isbn_issn
HEADERS_isbn_issn = isbn_issn.h

PG_CONFIG = pg_config
PGXS := $(쉘 $(PG_CONFIG) --pgxs)
$(PGXS) 포함

마지막 세 줄은 항상 동일해야 합니다. 파일 앞부분에서 변수를 할당하거나 사용자 정의를 추가합니다.만들다규칙.

빌드되는 항목을 지정하려면 다음 세 가지 변수 중 하나를 설정하십시오.

모듈

동일한 줄기를 가진 소스 파일에서 빌드할 공유 라이브러리 개체 목록(이 목록에 라이브러리 접미사를 포함하지 않음)

MODULE_big

여러 소스 파일에서 빌드하기 위한 공유 라이브러리(객체 파일 나열OBJS)

프로그램

빌드할 실행 가능한 프로그램(객체 파일 나열OBJS)

다음 변수도 설정할 수 있습니다:

토토

토토자 이름; 각 이름에 대해 다음을 제공해야 합니다.토토.control다음에 설치될 파일접두사/공유/토토

MODULEDIR

하위 디렉토리접두사/공유DATA 및 DOCS 파일을 설치해야 하는 위치(설정되지 않은 경우 기본값은토토if토토설정되었거나기여그렇지 않은 경우)

129PostgreSQL: 문서: 13: 37.18. 증축 건물 인프라49

설치할 임의의 파일접두사/share/$MODULEDIR

DATA_build

설치할 임의의 파일접두사/share/$MODULEDIR, 먼저 빌드해야 함

DATA_TSEARCH

아래에 설치할 임의 파일접두사/share/tsearch_data

문서

아래에 설치할 임의 파일접두사/doc/$MODULEDIR

헤더
HEADERS_build

아래에 (선택적으로 빌드 및 설치할) 파일접두사/include/서버/$MODULEDIR/$MODULE_big.

달리DATA_build, 파일HEADERS_build다음에 의해 제거되지 않습니다.깨끗함목표; 제거하려면 다음에도 추가하세요.EXTRA_CLEAN또는 이를 수행하려면 자신만의 규칙을 추가하세요.

HEADERS_$MODULE
HEADERS_build_$MODULE

설치할 파일(지정된 경우 빌드 후)접두사/include/서버/$MODULEDIR/$MODULE, 여기서$MODULE다음에서 사용되는 모듈 이름이어야 합니다.모듈또는MODULE_big.

달리DATA_build, 파일HEADERS_build_$MODULE다음에 의해 제거되지 않습니다.깨끗함목표; 제거하려면 다음에도 추가하세요.EXTRA_CLEAN또는 이를 수행하려면 자신만의 규칙을 추가하세요.

동일한 모듈에 두 변수를 모두 사용하거나 두 개의 모듈 이름이 없는 한 어떤 조합으로든 사용할 수 있습니다.모듈접두사의 존재 여부만 다른 목록build_, 이는 모호함을 야기합니다. 그런 경우에는(아마도 그럴 가능성이 낮지만), 다음과 같은 경우에만 사용해야 합니다.HEADERS_build_$MODULE변수.

스크립트

설치할 스크립트 파일(바이너리 아님)접두사/bin

SCRIPTS_build

설치할 스크립트 파일(바이너리 아님)접두사/bin, 먼저 빌드해야 함

회귀

회귀 테스트 사례 목록(접미사 없음), 아래 참조

REGRESS_OPTS

전달할 추가 스위치pg_regress

격리

격리 테스트 사례 목록, 자세한 내용은 아래 참조

ISOLATION_OPTS

전달할 추가 스위치pg_isolation_regress

TAP_TESTS

TAP 테스트를 실행해야 하는지 정의하는 스위치, 아래 참조

NO_INSTALLCHECK

정의하지 마세요설치확인대상, 예를 들어 테스트에 특별한 구성이 필요하거나 사용하지 않는 경우 유용함pg_regress

EXTRA_CLEAN

제거할 추가 파일깨끗하게 만드세요

PG_CPPFLAGS

앞에 추가됩니다CPPFLAGS

PG_CFLAGS

다음에 추가됩니다CFLAGS

PG_CXXFLAGS

다음에 추가됩니다CXXFLAGS

PG_LDFLAGS

앞에 추가됩니다LDFLAGS

PG_LIBS

다음에 추가됩니다프로그램링크 라인

SHLIB_LINK

다음에 추가됩니다MODULE_big링크 라인

PG_CONFIG

경로pg_config다음을 위한 프로그램PostgreSQL빌드 대상 설치(일반적으로 그냥pg_config첫 번째 것을 사용하려면경로)

이 메이크파일을 다음과 같이 넣으세요메이크파일당신의 토토 기능이 있는 디렉토리에. 그럼 할 수 있어만들다컴파일한 다음설치하기모듈을 설치합니다. 기본적으로 토토은 다음을 위해 컴파일되고 설치됩니다.PostgreSQL첫 번째에 해당하는 설치pg_config귀하의 프로그램에서 발견됨PATH. 설정하여 다른 설치를 사용할 수 있습니다.PG_CONFIG그것을 가리킨다pg_config프로그램, makefile 내에서 또는만들다명령줄.

당신은 또한 달릴 수 있습니다만들다빌드 디렉토리를 별도로 유지하려는 경우 토토의 소스 트리 외부 디렉토리에 있습니다. 이 절차는 a라고도 합니다.VPATH빌드. 방법은 다음과 같습니다.

mkdir build_dir
CD 빌드_디렉터리
make -f /path/to/extension/source/tree/Makefile
make -f /path/to/extension/source/tree/Makefile 설치

또는 핵심 코드에 대해 수행되는 방법과 유사한 방식으로 VPATH 빌드에 대한 디렉토리를 설정할 수 있습니다. 이를 수행하는 한 가지 방법은 핵심 스크립트를 사용하는 것입니다.config/prep_buildtree. 이 작업이 완료되면 다음을 설정하여 빌드할 수 있습니다.만들다변수VPATH이렇게:

VPATH=/path/to/extension/source/tree 만들기
VPATH=/path/to/extension/source/tree install을 만드세요.

이 절차는 다양한 디렉토리 레이아웃에서 작동할 수 있습니다.

다음에 나열된 스크립트는회귀변수는 다음으로 호출할 수 있는 모듈의 회귀 테스트에 사용됩니다.설치 확인 수행하고 난 후설치하기. 이것이 작동하려면 실행이 필요합니다.포스트그레SQL서버. 에 나열된 스크립트 파일회귀다음 이름의 하위 디렉토리에 나타나야 합니다.sql/토토 프로그램 디렉토리에 있습니다. 이 파일에는 토토자가 있어야 합니다..sql, 이는에 포함되어서는 안 됩니다.회귀메이크파일에 나열하세요. 각 테스트마다 이름이 지정된 하위 디렉터리에 예상 출력이 포함된 파일도 있어야 합니다.예상됨/, 줄기와 토토자가 동일함.out. 설치 확인 수행다음을 사용하여 각 테스트 스크립트를 실행합니다.psql, 결과 출력을 일치하는 예상 파일과 비교합니다. 차이점이 있으면 파일에 기록됩니다.regression.diffsdiff -c형식. 예상 파일이 누락된 테스트를 실행하려고 하면 다음과 같이 보고됩니다.문제, 예상되는 파일이 모두 있는지 확인하세요.

다음에 나열된 스크립트는격리변수는 다음으로 호출할 수 있는 모듈과의 동시 세션 동작을 강조하는 테스트에 사용됩니다.설치 확인 수행하고 난 후설치하기. 이것이 작동하려면 실행이 필요합니다.포스트그레SQL서버. 에 나열된 스크립트 파일격리다음 이름의 하위 디렉토리에 나타나야 합니다.사양/토토 프로그램 디렉토리에 있습니다. 이 파일에는 토토자가 있어야 합니다..spec, 이는에 포함되어서는 안 됩니다.격리메이크파일에 나열하세요. 각 테스트마다 이름이 지정된 하위 디렉터리에 예상 출력이 포함된 파일도 있어야 합니다.예상/, 줄기와 토토자가 동일함.out. 설치 확인 수행각 테스트 스크립트를 실행하고 결과 출력을 일치하는 예상 파일과 비교합니다. 차이점이 있으면 파일에 기록됩니다.output_iso/regression.diffsindiff -c형식. 예상 파일이 누락된 테스트를 실행하려고 하면 다음과 같이 보고됩니다.문제, 예상되는 파일이 모두 있는지 확인하세요.

TAP_TESTSTAP 테스트 사용을 활성화합니다. 각 실행의 데이터는라는 하위 디렉터리에 있습니다.tmp_check/. 또한 참조하세요PostgreSQL : 문서 : 13 : 32.4. 탭 범퍼카 토토자세한 내용은.

예상 파일을 생성하는 가장 쉬운 방법은 빈 파일을 생성한 다음 테스트 실행을 수행하는 것입니다(물론 차이점이 보고됩니다). 에서 발견된 실제 결과 파일을 검사합니다.결과/디렉토리(테스트용회귀) 또는output_iso/결과/디렉토리(테스트용격리), 그런 다음 복사하여예상됨/테스트에서 기대한 것과 일치하는 경우.

수정사항 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.