"pkglibexecdir"은 합법적인 디렉터리가 아닙니다.

"pkglibexecdir"은 합법적인 디렉터리가 아닙니다.

독점, 비공개 소스, 지원되지 않는 레거시 코드를 컴파일하기 위해 오래된 지침을 따르고 있습니다. 일반적인 셸 세션은 다음과 같습니다.

$ autoreconf -fi

src/Makefile.am:7: error: 'pkglibexecdir' is not a legitimate directory for 'PYTHON'
autoreconf: automake failed with exit status: 1


$ cat src/Makefile.am

pkglibexecdir = $(libexecdir)/packagename

nobase_pkglibexec_PYTHON = \
        python_module_1.py
        python_module_2.py
        [...]

MAINTAINERCLEANFILES = Makefile.in
BUILT_SOURCES = some_source

some_source:
    ln -s ../lib/python/some_source some_source

저는 GNU Autoconf 버전 2.69를 사용하고 있습니다. 같은 프로젝트의 다른 패키지에서도 비슷한 문제가 있습니다. 나는 이 문제에 대한 빠른 해결책이 있다고 가정하고 있지만 자동 도구에는 그다지 익숙하지 않으며 Google을 통해 찾은 대부분의 내용은 나에게 별로 의미가 없습니다.

답변1

경찰의 감독을 피하려면 몇 가지 트릭을 사용해야 합니다 automake. 바라보다https://www.gnu.org/software/automake/manual/html_node/Uniform.html:

이 기능은 의심되는 디렉토리/메인 쌍을 진단하기 위해 Automake가 수행하는 온전성 검사를 무시하는 데에도 사용할 수 있습니다(드문 경우에는 이러한 검사가 필요하지 않고 실제로 수행 중인 작업을 알고 있는 경우). 예를 들어 Automake는 다음 입력에 대해 오류를 발생시킵니다.

# Forbidden directory combinations, automake will error out on this.
pkglib_PROGRAMS = foo
doc_LIBRARIES = libquux.a

그러나 성공할 것입니다:

# Work around forbidden directory combinations.  Do not use this
# without a very good reason!
my_execbindir = $(pkglibdir)
my_doclibdir = $(docdir)

my_execbin_PROGRAMS = foo
my_doclib_LIBRARIES = libquux.a

관련 정보