2014-03-24 1 views
1

CentOS 6.5에 PostgreSQL extension Multicorn을 설치하려고합니다. 내가 가지고있는 문제는 CentOS에서 Python의 기본 버전이 2.6이고 Multicorn이 2.7 또는 3.3이 필요하다는 것입니다. 나는 this tutorial를 사용하여 Multicorn를 컴파일하기 위해 노력하고있어,하지만 약간 구식이고 파이썬 버전이 변경되는 단계는 더 이상 작동하지 않습니다메이크 파일에서 파이썬 버전을 변경하는 방법 - Multicorn (PostgreSQL FDW extension) 컴파일

sed -i 's/^PYEXEC = python$/PYEXEC = python2.7/' Makefile 

누군가가 다시 위의 명령 작업을하는 데 도움이, 또는 표시 할 수 있습니다 내가 파이썬의 버전을 변경하는 makefile을 편집하는 방법? python2.7 명령 줄에서 python 버전 2.7을 호출 할 수 있습니다. 버전 2.6은 단지 python과 함께 호출됩니다. 분명히 CentOS를 위반하지 않고 변경할 수는 없습니다.

MODULE_big = multicorn 
OBJS   = src/errors.o src/python.o src/query.o src/multicorn.o 


DATA   = $(filter-out $(wildcard sql/*--*.sql),$(wildcard sql/*.sql)) 

DOCS   = $(wildcard doc/*.md) 

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

all: preflight-check sql/$(EXTENSION)--$(EXTVERSION).sql 

install: python_code 

sql/$(EXTENSION)--$(EXTVERSION).sql: sql/$(EXTENSION).sql 
    cp $< [email protected] 

preflight-check: 
    ./preflight-check.sh 


python_code: setup.py 
    cp ./setup.py ./setup--$(EXTVERSION).py 
    sed -i -e "s/__VERSION__/$(EXTVERSION)-dev/g" ./setup--$(EXTVERSION).py 
    $(PYTHON) ./setup--$(EXTVERSION).py install 
    rm ./setup--$(EXTVERSION).py 

release-zip: all 
    git archive --format zip --prefix=multicorn-$(EXTVERSION)/ --output ./multicorn-$(EXTVERSION).zip HEAD 
    unzip ./multicorn-$(EXTVERSION).zip 
    rm ./multicorn-$(EXTVERSION).zip 
    sed -i -e "s/__VERSION__/$(EXTVERSION)/g" ./multicorn-$(EXTVERSION)/META.json ./multicorn-$(EXTVERSION)/setup.py ./multicorn-$(EXTVERSION)/python/multicorn/__init__.py 
    zip -r ./multicorn-$(EXTVERSION).zip ./multicorn-$(EXTVERSION)/ 
    rm ./multicorn-$(EXTVERSION) -rf 

coverage: 
    lcov -d . -c -o lcov.info 
    genhtml --show-details --legend --output-directory=coverage --title=PostgreSQL --num-spaces=4 --prefix=./src/ `find . -name lcov.info -print` 

DATA = sql/$(EXTENSION)--$(EXTVERSION).sql 
EXTRA_CLEAN = sql/$(EXTENSION)--$(EXTVERSION).sql ./multicorn-$(EXTVERSION).zip 
PG_CONFIG ?= pg_config 
PGXS := $(shell $(PG_CONFIG) --pgxs) 
REGRESS  = virtual_tests 

include $(PGXS) 

with_python_no_override = no 

ifeq ($(with_python),yes) 
    with_python_no_override = yes 
endif 

ifdef PYTHON_OVERRIDE 
    with_python_no_override = no 
endif 


ifeq ($(with_python_no_override),yes) 
    SHLIB_LINK = $(python_libspec) $(python_additional_libs) $(filter -lintl,$(LIBS)) 
    override CPPFLAGS := -I. -I$(srcdir) $(python_includespec) $(CPPFLAGS) 
    override PYTHON = python${python_version} 
else 
    ifdef PYTHON_OVERRIDE 
     override PYTHON = ${PYTHON_OVERRIDE} 
    endif 

    ifeq (${PYTHON},) 
     override PYTHON = python 
    endif 


    python_version = $(shell ${PYTHON} --version 2>&1 | cut -d ' ' -f 2 | cut -d '.' -f 1-2) 
    PYTHON_CONFIG ?= python${python_version}-config 

    PY_LIBSPEC = $(shell ${PYTHON_CONFIG} --libs) 
    PY_INCLUDESPEC = $(shell ${PYTHON_CONFIG} --includes) 
    PY_CFLAGS = $(shell ${PYTHON_CONFIG} --cflags) 
    PY_LDFLAGS = $(shell ${PYTHON_CONFIG} --ldflags) 
    SHLIB_LINK = $(PY_LIBSPEC) $(PY_LDFLAGS) $(PY_ADDITIONAL_LIBS) $(filter -lintl,$(LIBS)) 
    override PG_CPPFLAGS := $(PY_INCLUDESPEC) $(PG_CPPFLAGS) 
    override CPPFLAGS := $(PG_CPPFLAGS) $(CPPFLAGS) 
endif 


PYTHON_TEST_VERSION ?= $(python_version) 
PG_TEST_VERSION ?= $(MAJORVERSION) 
SUPPORTS_WRITE=$(shell expr ${PG_TEST_VERSION} \>= 9.3) 

TESTS  = $(wildcard test-$(PYTHON_TEST_VERSION)/sql/multicorn*.sql) 
ifeq (${SUPPORTS_WRITE}, 1) 
    TESTS += $(wildcard test-$(PYTHON_TEST_VERSION)/sql/write*.sql) 
endif 
REGRESS  = $(patsubst test-$(PYTHON_TEST_VERSION)/sql/%.sql,%,$(TESTS)) 
REGRESS_OPTS = --inputdir=test-$(PYTHON_TEST_VERSION) --load-language=plpgsql 

$(info Python version is $(python_version)) 

답변

1

가장 좋은 방법은 당신은 컴파일이 볼 수, 당신은 당신의 Makefile의 라인 (26)에 대해 살펴 경우

PYTHON=python2.7 make 

make을 실행하는 것입니다 :

은 메이크입니다 환경에서 설정하여 재정의 할 수있는 $ (PYTHON) 변수에 지정된 실행 파일에 의해 호출되는 setup.py 스크립트에 의해 처리됩니다. (여러 빌드하고 싶지 예를 들어, 경우)이 작업을 수행하는 또 다른 방법은 이것이다 : 환경 변수 또는 명령 행 인수에 의해

export PYTHON=python2.7 
make 

변경 스크립트 동작이 더 합리적이고 스크립트 소스 자체를 패치하는 것보다 종종 더 간단합니다.

Makefile 변수에 대한 추가 정보 : http://ftp.gnu.org/old-gnu/Manuals/make-3.79.1/html_chapter/make_6.html#SEC68