2016-10-04 2 views
0

나는 PGXN의 지시에 따르는 SQL 확장을 썼다, 그러나 나는 항상 make가 다음과 같은 오류를 설치 얻을 : 다음과 같은PostgreSQL을 확장 메이크 반환 오류

/bin/mkdir -p '/usr/share/postgresql/9.5/extension' 
/bin/mkdir -p '/usr/share/postgresql/9.5/extension' 
/bin/mkdir -p '/usr/share/doc/postgresql-doc-9.5/extension' 
/usr/bin/install -c -m 644 .//myextname.control '/usr/share/postgresql/9.5/extension/' 
/usr/bin/install -c -m 644 .//sql/myextname--1.0.0.sql .//sql/myextname--1.0.0.sql '/usr/share/postgresql/9.5/extension/' 
/usr/bin/install: will not overwrite just-created ‘/usr/share/postgresql/9.5/extension/myextname--1.0.0.sql’ with ‘.//sql/myextname--1.0.0.sql’ 
make: *** [install] Error 1 

내 메이크 파일은 다음과 같습니다

EXTENSION = myextname 
EXTVERSION = $(shell grep default_version $(EXTENSION).control | \ 
       sed -e "s/default_version[[:space:]]*=[[:space:]]*'\([^']*\)'/\1/") 

DATA   = $(filter-out $(wildcard sql/*--*.sql),$(wildcard sql/*.sql)) 
TESTS  = $(wildcard test/sql/*.sql) 
REGRESS  = $(patsubst test/sql/%.sql,%,$(TESTS)) 
REGRESS_OPTS = --inputdir=test 
DOCS   = $(wildcard doc/*.md) 
MODULES  = $(patsubst %.c,%,$(wildcard src/*.c)) 
PG_CONFIG = pg_config 
PG91   = $(shell $(PG_CONFIG) --version | grep -qE " 8\\.| 9\\.0" && echo no || echo yes) 

ifeq ($(PG91),yes) 
all: sql/$(EXTENSION)--$(EXTVERSION).sql 

sql/$(EXTENSION)--$(EXTVERSION).sql: $(strip sql/tables.sql \ 
     sql/types.sql \ 
     sql/domains.sql \ 
    ) 
    cat $^ > [email protected] 

DATA   = $(wildcard sql/*--*.sql) sql/$(EXTENSION)--$(EXTVERSION).sql 
EXTRA_CLEAN = sql/$(EXTENSION)--$(EXTVERSION).sql 
endif 

PGXS := $(shell $(PG_CONFIG) --pgxs) 
include $(PGXS) 

This blog은이 오류가이 줄에서 발생했다고 표시합니다.

DATA = $(wildcard sql/*--*.sql) sql/$(EXTENSION)--$(EXTVERSION).sql 

은 동일한 파일 이름을 두 번 평가합니다 (/ usr/bin/install은 파일의 첫 번째 인스턴스를 덮어 쓰지 않습니다).

하지만 어떻게 해결할 수 있습니까?

답변

1

PGXN에서 Makefile을 복사 한 것으로 보입니다. 필요한 것보다 훨씬 복잡 할 것 같습니다.

예를 들어, 9.1 미만의 PostgreSQL 버전을 대상으로합니까?

당신은이 같은 Makefile 맞는 작은, 간단한 정의와 떨어져 더 나은 수 있습니다 :

MODULES = src/myextname 
EXTENSION = myextname 
DATA = sql/myextname--1.0.sql 
DOCS = doc/myextname.md 
REGRESS = myextname 
REGRESS_OPTS = --inputdir=test 

PG_CONFIG = pg_config 
PGXS := $(shell $(PG_CONFIG) --pgxs) 
include $(PGXS) 

PGXN에 의해 ​​제안 된 파일 조직과이 (테스트되지 않은) Makefile 스틱.