모듈 세트 파일 문법
JHBuild는 모듈간 의존성을 설명할 때 XML 파일을 활용합니다. RELAX-NG 스키마와 문서 형 정의는 modulesets/ 디렉터리에 있습니다. RELAX-NG 스키마는 이맥스의 nxml-mode로 모듈 세트 파일을 편집할 때 사용합니다.
모듈 세트 파일의 최정점에 있는 요소는 moduleset 요소입니다. 어떤 XML 이름 공간도 사용하지 않습니다. 최상단 바로 아래 요소로는 모듈 소스, 지정 설정, 모듈 정의 형식이 따라옵니다.
moduleset 파일의 내용은 경우에 따라 조건에 따른 내용을 감싸는 <if> 태그를 사용한 부분이 들어있을 수 있습니다.현재 <if condition-set='cond'> 또는 <if condition-unset='cond'> 를사용하여 일부 조건 플래그를 설정했는 지에 따라서만 포함 여부를 단정할 수 있습니다. 조건은 운영체제 기반으로 기본 설정이지만, jhbuildrc에서 conditions 변수를 쓰거나 --conditions= 명령행 인자 값을 넘겨 반영할 수 있습니다.
- 7.1. 모듈 소스
- 7.2. 기타 모듈 세트 설정
- 7.3. 모듈 정의
- 7.4. 오래된 요소
7.1. 모듈 소스
모든 모듈에 대해 완전한 위치를 보여주기보단 모듈 세트에서 "모듈 소스"를 보여주며, 모듈 정의에서 이름으로 참조합니다. 모듈 세트 여러 군데에 있는 중복 정보를 줄이듯, 해당 모듈의 대체 소스를 사용자가 쉽게 지정할 수 있습니다(CVS와 서브버전의 경우 개발자, 사용자에게 다른 저장소 접근 방식을 제공하는게 일반적입니다).
repository 요소에서는 모든 저장소 형식을 지정합니다. branch 요소에서는 추가 설정을 지정할 때 모듈 정의 내에서 사용합니다.
<repository name="name" type="type" [ default="default" ] [ password="password" ] [ cvsroot="cvsroot" ] [ archive="archive" ] [ href="href" ] [ server="server" ] [ database="database" ] [ defbranch="defbranch" ] [ trunk-template="trunk-template" ] [ branches-template="branches-template" ] [ tags-template="tags-template" ] [ developer-href-example="developer-href-example" ] />
name 속성은 저장소 유일 식별자를 지정합니다.
default 속성은 저장소가 모듈세트의 기본 소스인지 여부를 지정합니다.
type 속성은 저장소 형식을 지정합니다. bzr, cvs, darcs, fossil, git, hg, mnt, svn, tarball 중 하나가 될 수 있습니다. type과 branch 모두에 따라 다른 속성을 모듈 정의 내에서 사용하기도 합니다. 아래 저장소 형식 하위 섹션에서 해당 속성의 활용을 설명하겠습니다.
developer-href-example 속성은 개발자가 사용하는 저장소의 URL 형식을 지정합니다. 정보 제공용일 뿐입니다.
branch 요소는 모듈 정의내에서 사용합니다.
<branch [ repo="repository" ] [ module="module name" ] [ checkoutdir="checkoutdir" ] [ revision="revision" ] [ tag="tag" ] [ update-new-dirs="update-new-dirs" ] [ override-checkoutdir="override-checkoutdir" ] [ subdir="subdir" ] [ branch="branch" ] [ version="version" ] [ size="size" ] [ source-subdir="source-subdir" ] [ hash="hash" ]/>
모든 속성은 타당한 기본 값을 가지고 있으며 모듈과 저장소 정의에 따릅니다. 일반 속성의 자세한 설명은 아래에 있습니다.
repo 속성은 기본이 아닌 저장소 이름을 지정합니다.
module 속성은 저장소에서 가져올 모듈 이름을 정의합니다. 기본 값은 모듈 ID 입니다.
checkoutdir 속성은 소스트리를 가져올 디렉터리 이름을 지정합니다. 기본값은 모듈 ID 입니다.
다른 속성은 아래에 설명하도록 하겠습니다
7.1.1. Bazaar
이 저장소 형식은 바자르 저장소 성격을 정의합니다. 바자르 1.16 이상 사용을 추천합니다.
<repository type="bzr" name="launchpad.net" href="lp:"/>
추가 속성으로 trunk-template (기본값 "%(module)s")과 branches-template (기본값 "%(module)s/%(branch)s")이 있습니다. 이 속성은 URL을 구성하는 템플릿을 지정합니다. 모듈 정의에서 branch 요소는 branch속성과 user속성을 지정할 수 있습니다. 이 값은 템플릿으로 따로 둘 수 있습니다. 모두를 지정하면 branches-template 을 사용하며, 그렇지 않으면 trunk-template을 사용합니다. 이 방식으로 개인 브랜치에서 모듈을 빌드하거나 비표준 레이아웃을 가진 저장소에서 여러 모듈을 빌드할 경우 저장소를 대체할 수 있습니다.
추가 branch 요소에서는 revspec 속성을 수용하여 다른 일부 리비전과 연결합니다. 유효한 어떤 값이든 bzr revspec 에서 받아들이는데, 유효한 값을 예로 들자면, date:yesterday, -5, tag:0.1이며, 어제로부터 첫번째 리비전, 최근 커밋으로부터 5 커밋 이전, 또는 태그 "0.1"을 가져옵니다. 가능한 모든 값은 bzr help revisionspec 명령을 참고하십시오.
template 속성을 지정한 저장소의 경우:
<repository type="bzr" name="launchpad.net" href="lp:" trunk-template="~bzr-pqm/%(module)s/bzr.dev" branches-template="~bzr-pqm/%(module)s/%(branch)s"/>
위 저장소에 대한 branch 요소 예제는 다음과 같습니다:
<branch repo="launchpad.net" module="bzr" checkoutdir="bzr-next"/>
<branch repo="launchpad.net" module="bzr" branch="2.2" checkoutdir="bzr-beta"/>
7.1.2. CVS
이 저장소 형식은 CVS 저장소 성격을 정의합니다.
password 속성은 저장소 암호를 지정합니다.
cvsroot 속성은 저장소 루트를 지정합니다.
<repository type="cvs" name="tango.freedesktop.org" cvsroot=":pserver:anoncvs@anoncvs.freedesktop.org:/cvs/tango" password=""/>
추가 속성으로 revision, update-new-dirs, override-checkoutdir이 있습니다.
7.1.3. Darcs
이 저장소 형식은 Darcs 저장소 성격을 정의합니다.
<repository type="darcs" name="telepathy.freedesktop.org" href="http://projects.collabora.co.uk/darcs/telepathy/"/>
7.1.4. Git
이 저장소 형식은 깃 저장소 성격을 정의합니다.
<repository type="git" name="git.freedesktop.org" href="git://anongit.freedesktop.org/git/"/>
branch 요소에서 다음 속성을 사용할 수 있습니다:
revision 속성으로 업데이트 단계에서 전환할 로컬 또는 원격 추적 브랜치를 지정합니다. 기본값은 'master' 입니다. branches 설정 변수로 대신 우선 적용할 수 있습니다. 현재 브랜치가 원격 브랜치를 추적하고 있지만 여러분의 진행 작업에 지장을 주지 않을 경우에만 전환 동작을 수행합니다.
tag 속성은 업데이트 단계에서 무조건적인 체크 아웃을 수행할 리비전을 지정합니다. revision 속성에 우선합니다.
<branch repo="git.freedesktop.org" module="swfdec/swfdec" checkoutdir="swfdec" revision="local-or-remote-branch" tag="tree-ish"/>
7.1.5. Mercurial
이 저장소 형식은 머큐리얼 저장소 성격을 정의합니다.
<repository type="hg" name="hg.gtk-vnc" href="http://gtk-vnc.codemonkey.ws/hg/" />
<branch repo="hg.gtk-vnc" module="outgoing.hg" checkoutdir="gtk-vnc"/>
7.1.6. Monotone
이 저장소 형식은 모노톤 저장소 성격을 정의합니다.
server 속성은 저장소 서버를 지정합니다.
database 속성은 저장소에서 사용할 데이터베이스를 지정합니다.
defbranch 속성은 사용할 저장소의 브랜치를 지정합니다.
<repository type="mtn" name="pidgin.im" server="pidgin.im" database="pidgin.im.mtn" defbranch="im.pidgin.pidgin"/>
7.1.7. Subversion
이 저장소 형식은 서브버전 저장소 성격을 정의합니다.
<repository type="svn" name="svn.gnome.org" default="yes" href="http://svn.gnome.org/svn/"/>
branch 요소에서 revision 속성을 쓸 수 있습니다. 이 속성은 체크아웃할 브랜치, 또는 숫자일 경우 체크아웃할 대상 리비전을 지정합니다.
<branch revision="gnome-2-20"/>
trunk-template(기본값 "%(module)s/trunk"), branches-template (기본값 "%(module)s/branches/%(branch)s"), tags-template (기본값 "%(module)s/tags/%(tag)s") 속성으로 개별 svn 레이아웃을 지정할 수 있습니다.
7.1.8. System
이 저장소 형식은 모조 시스템 저장소 성격을 정의합니다. 시스템 저장소는 systemmodules을 만들 때 필요합니다.
<repository type="system" name="system"/>
7.1.9. Tarballs
이 저장소 형식은 타르볼 저장소 성격을 정의합니다.
<repository type="tarball" name="dbus/dbus-python" href="http://dbus.freedesktop.org/releases/dbus-python/"/>
branch 요소에서 다음 속성을 사용할 수 있습니다:
module 속성은 다운로드하고 컴파일 할 파일을 지정하며, version 속성은 모듈 버전을 지정합니다.
size and hash, 그리고 오래된 md5sum 속성은 선택입니다. 이 속성이 보이면 소스 패키지를 제대로 다운로드했는지 확인할 때 활용합니다.
원본 이름이 다른 모듈 이름과 겹칠 경우, 타르볼 파일을 다운로드할 때 rename-tarball 속성을 사용하여 이름을 바꿀 수 있습니다.
몇가지 patch 요소는 branch 요소 안에 계층 구조로 겹칩니다. 이 패치는 패키지를 해제한 후 소스트리에 순서대로 반영합니다. file 속성은 패치 파일 이름을, strip 속성은 패치를 적용할 때 쳐낼 디렉터리 단계 수를 지정합니다.
JHBuild에 실어둔 모듈 세트에 대한 패치 파일은 jhbuild/patches/ 디렉터리에 있습니다. URI로 참조하는 모듈 세트에 대해 패치 파일은 moduleset 파일과 동일한 디렉터리를 찾아보거나 patches/ 하위 디렉터리를 검색합니다. file 속성에 URI를 지정하여 해당 위치로 다운로드할 수도 있습니다.
<branch module="dbus-python-0.80.2.tar.gz" version="0.80.2" repo="dbus/dbus-python" hash="md5:2807bc85215c995bd595e01edd9d2077" size="453499"> <patch file="dbus-glib-build.patch" strip="1" /> </branch>
타르볼의 branch 요소는 quilt 요소도 들어있기도 한데, 이 요소에는 하위 계층으로 가져올 branch를 지정합니다.
7.2. 기타 모듈 세트 설정
JHBuild에서는 어떤 모듈 세트에 include 요소의 참조로 다른 내용을 include 할 수 있습니다.
<include href="uri"/>
href는 포함할 모듈 세트의 URI 참조이며, include 요소가 들어있는 파일에 상대적인 위치입니다.
참조한 모듈 세트에서 모듈 정의만을 가져옵니다. 모듈 소스는 아닙니다. 다중 포함 레벨은 허용하지만 include 루프는 허용하지 않습니다(해당 시점에 루프를 처리할 어떤 코드도 없습니다).
7.3. 모듈 정의
모듈 세트 파일에서 사용할 수 있는 다양한 형식의 모듈 정의가 있으며, 해당 목록을 쉽게 확장할 수 있습니다. 주로 사용하는 모듈만 언급하도록 하겠습니다.
기본적으로 branch 요소를 통해 모듈을 가져오는 방법을 설명하고, dependencies, suggests, after 요소를 통해 모듈 의존 관계를 설명합니다.
dependencies 요소에 있는 모듈중 포함하지 않았을 경우 jhbuild build 명령에서 사용할 모듈 목록으로 추가하며, 해당 모듈을 먼저 빌드했는지 확인합니다.
모듈 목록을 만들고 나면 suggests 요소에 언급한 모듈을 모듈 목록 정렬에 사용합니다(더 많은 모듈을 끌어오지 않겠지만 말이죠). 다른 모듈에 추가로 의존하는 모듈에만 해당합니다.
- 7.3.1. autotools
- 7.3.2. cmake
- 7.3.3. Meson
- 7.3.4. distutils
- 7.3.5. linux
- 7.3.6. perl
- 7.3.7. systemmodule
- 7.3.8. waf
- 7.3.9. testmodule
- 7.3.10. metamodule
7.3.1. autotools
autotools 요소는 GNU Autotools 빌드 시스템으로 컴파일한 모듈을 지정합니다.
<autotools id="id" [ autogenargs="autogenargs" ] [ makeargs="makeargs" ] [ makeinstallargs="makeinstallargs" ] [ autogen-sh="autogen-sh" ] [ makefile="makefile" ] [ skip-autogen="skip-autogen" ] [ skip-install="skip-install" ] [ uninstall-before-install="uninstall-before-install" ] [ autogen-template="autogen-template" ] [ check-target="check-target" ] [ supports-non-srcdir-builds="supports-non-srcdir-builds" ] [ force-non-srcdir-builds="force-non-srcdir-builds" ] [ supports-unknown-configure-options="supports-unknown-configure-options" ] [ supports-static-analyzer="supports-static-analyzer" ]> <branch [ ... ] > [...] </branch> <dependencies> <dep package="modulename"/> ... </dependencies> <after> <dep package="modulename"/> ... </after> </autotools>
autogenargs, makeargs, makeinstallargs 속성은 각각 autogen.sh, make, make install 명령에 전달할 추가 인자 값을 지정합니다.
autogen-sh 속성은 실행할 autogen.sh 스크립트의 이름을 지정합니다. autoreconf 값은 모듈에 autogen.sh 스크립트와 동일한 그 무엇이 없을 경우 활용할 수 있습니다. 이 경우 JHBuild에서는 autoreconf -fi를 실행하고, 다시 이에 맞는 configure 명령을 실행합니다. skip-autogen 속성은 autogen.sh 스크립트 실행 여부를 선택하는데 JHBuild에 autogen.sh 명령을 무조건 실행하지 말라는 never 추가 값이 있습니다. skip-install 속성 형식은 부울린이며 모듈에 대해 make install 명령을 건너뛸 지 여부를 지정합니다. makefile 속성은 사용할 makefile의 파일 이름을 지정합니다.
uninstall-before-install 속성은 설치 단계를 진행하기 전 모듈에서 오래된 설치 파일의 제거여부를 지정합니다. libtool에서 어떤 라이브러리를 링크할 때 설치할 모듈을 다른 라이브러리로 링크하려는데 jhbuild는 DESTDIR 변수를 사용하므로 대신 예전에 설치한 라이브러리를 찾아, 발생하는 문제를 해결하는데 이 속성을 활용할 수 있습니다. 사용자가 모듈로 설치한 파일을 기반으로 코드를 실행하고 있을 경우, 이 속성을 설정하면 (오히려) 문제가 나타날 수 있습니다.
supports-non-srcdir-builds 속성은 개별 소스 디렉터리로 깔끔하게 빌드할 수 없는 모듈을 표시합니다.
force-non-srcdir-builds 속성은 소스 디렉터리에서 깔끔하게 빌드할 수 없지만, 그 외의 위치에서 가능한 모듈을 표시합니다.
autogen-template 속성은 autogen 명령행을 통해 세밀한 설정을 할 경우에 사용할 수 있습니다. srcdir, autogen-sh, prefix, libdir, autogenargs 변수로 나뉘는 파이썬 형식 문자열입니다. 예로, 기본 autogen-template을 보여드리도록 하겠습니다:
%(srcdir)s/%(autogen-sh)s --prefix %(prefix)s --libdir %(libdir)s %(autogenargs)s
check-target 속성은 make check 대상이 없는 모듈에 (false를 값으로) 지정해야 합니다.
supports-static-analyzer 속성은 scan-build와 같은 정적 분석 도구를 사용하여 빌드하지 않은 모듈에 (false 값으로) 지정해야합니다.
supports-unknown-configure-options 속성은 알 수 없는 옵션을 configure 로 전달할 경우 오류를 표시하도록 모듈에 대해 설정합니다. 전역 configure 옵션에서는 해당 모듈을 사용하지 않습니다.
7.3.2. cmake
cmake 요소는 CMake 빌드 시스템으로 빌드할 모듈을 정의합니다.
<cmake id="modulename" [ cmakeargs="cmakeargs" ] [ ninjaargs="ninjaargs" ] [ makeargs="makeargs" ] [ skip-install="skip-install" ] [ cmakedir="cmakedir" ] [ use-ninja="use-ninja" ] [ force-non-srcdir-builds="force-non-srcdir-builds" ]> <branch [ ... ] > [...] </branch> <dependencies> <dep package="modulename"/> ... </dependencies> <after> <dep package="modulename"/> ... </after> </cmake>
cmakeargs 속성은 cmake 명령에 전달할 추가 인자 값을 지정합니다.
ninjaargs 속성은 ninja 명령에 전달할 추가 인자 값을 지정합니다.
makeargs 속성은 make 명령에 전달할 추가 인자 값을 지정합니다.
cmakedir 속성은 srcdir 중심의 상대 경로상에서 cmake를 실행할 하위 디렉터리를 지정합니다.
force-non-srcdir-builds 속성은 소스 디렉터리에서 깔끔하게 빌드할 수 없지만, 그 외의 위치에서 가능한 모듈을 표시합니다.
use-ninja 속성은 Make 백엔드 대신 cmake의 닌자 백엔드로 빌드할 모듈을 표시합니다. 기본 값은 닌저 백엔드 사용입니다.
7.3.3. Meson
meson 요소는 메존 빌드 시스템으로 설정하고 닌자 빌드 도구로 빌드하는 모듈을 정의합니다.
<meson id="modulename" [ mesonargs="mesonargs" ] [ ninjaargs="ninjaargs" ] [ skip-install="skip-install" ]> <branch [ ... ] > [...] </branch> <dependencies> <dep package="modulename"/> ... </dependencies> <after> <dep package="modulename"/> ... </after> </meson>
mesonargs 속성은 meson 명령으로 전달할 추가 인자 값을 지정합니다.
ninjaargs 속성은 ninja 명령에 전달할 추가 인자 값을 지정합니다.
7.3.4. distutils
distutils 요소는 파이썬 distutils로 빌드할 모듈을 정의합니다.
<distutils id="modulename" [ supports-non-srcdir-builds="yes|no" ]> <branch [ ... ] > [...] </branch> <dependencies> <dep package="modulename"/> ... </dependencies> <after> <dep package="modulename"/> ... </after> </distutils>
7.3.5. linux
linux 요소는 리눅스 커널을 빌드할 때 사용할 모듈을 정의합니다. 추가로, kconfig 하위 요소를 활용하면 별개 커널 설정을 선택할 수 있습니다.
<linux id="id" [ makeargs="makeargs" ]> <branch [ ... ] > [...] </branch> <dependencies> <dep package="modulename"/> ... </dependencies> <after> <dep package="modulename"/> ... </after> <kconfig [ repo="repo" ] version="version" [ module="module" ] [ config="config" ] /> </linux>
7.3.6. perl
perl 요소는 펄 모듈 빌드에 사용합니다.
makeargs 속성은 make 명령에 전달할 추가 인자 값을 지정합니다.
<perl id="modulename" [ makeargs="makeargs" ]> <branch [ ... ] > [...] </branch> <dependencies> <dep package="modulename"/> ... </dependencies> <after> <dep package="modulename"/> ... </after> </perl>
7.3.7. systemmodule
systemmodule 요소는 시스템에서 제공해야 하는 모듈을 지정할 때 사용합니다. 모듈은 배포판 패키지 관리 시스템으로 설치해야합니다.
<systemmodule id="modulename"> <pkg-config>pkg-config.pc</pkg-config> <branch repo="system" version="version" /> </systemmodule>
시스템 모듈에서 pkg-config 파일을 제공하지 않으면, systemdependencies 태그를 사용하여 의존성을 명시할 수 있습니다. dep 태그의 type 속성에서 두 값을 지원합니다:
-
path 값. 일치하는 프로그램 이름을 검색할 경로입니다.
-
c_include 값. C include 경로는 일치하는 헤더 이름을 검색할 때 사용합니다. name은 하위 디렉터리가 들어갑니다. cflags 또는 module_autogenargs 설정 변수에서 CPPFLAGS 변수를 설정하면 C include 검색 경로를 수정할 수 있습니다.
<systemmodule id="modulename"> <branch repo="system" version="version" /> <systemdependencies> <dep type="path" name="executable-name" /> </systemdependencies> </systemmodule> <systemmodule id="modulename"> <branch repo="system" version="version" /> <systemdependencies> <dep type="c_include" name="header-name" /> </systemdependencies> </systemmodule>
시스템 모듈을 다른 위치에 설치하거나 다른 배포판에서 다른 이름으로 설치할 경우, 대체 위치 또는 대체 이름을 설정할 목적으로 altdep 태그를 dep 태그의 하위 요소처럼 사용할 수 있습니다. altdep 태그는 dep 태그의 역할과 동일한 속성을 지원합니다.
<systemmodule id="modulename"> <branch repo="system" version="version" /> <systemdependencies> <dep type="path" name="executable-name"> <altdep type="path" name="alternative-executable-name-1" /> <altdep type="path" name="alternative-executable-name-2" /> ... <dep> </systemdependencies> </systemmodule> <systemmodule id="modulename"> <branch repo="system" version="version" /> <systemdependencies> <dep type="c_include" name="header-name"> <altdep type="c_include" name="alternative-header-name-1" /> <altdep type="c_include" name="alternative-header-name-2" /> ... <dep> </systemdependencies> </systemmodule>
7.3.8. waf
waf 요소는 waf 빌드 시스템으로 어떤 모듈을 빌드할 지 정의합니다.
waf-command 속성은 사용할 waf 명령 스크립트를 지정합니다. 기본값은 waf 입니다.
python-command 속성은 사용할 파이썬 실행 명령을 지정합니다. 기본값은 python 입니다. 파이썬 3 버전으로 모듈을 빌드할 때 쓸만합니다.
<waf id="modulename"> [ python-command="python-command" ] [ waf-command="waf-command" ]> <branch [ ... ] > [...] </branch> <dependencies> <dep package="modulename"/> ... </dependencies> <after> <dep package="modulename"/> ... </after> </waf>
7.3.9. testmodule
testmodule 요소는 LDTP 또는 Dogtail로 테스트 여건을 실행하는 모듈을 만듭니다.
<testmodule id="id" type="type"> <branch [ ... ] > [...] </branch> <dependencies> <dep package="modulename"/> ... </dependencies> <after> <dep package="modulename"/> ... </after> <testedmodules> <tested package="package" /> </testedmodules> </testmodule>
type 속성은 모듈에서 실행할 테스트 형식입니다. 'dogtail' 값을 지정하면 모든 .py 파일을 실행합니다. 'ldtp' 값은 'ldtprunner run.xml' 명령을 실행합니다.
noxvfb 옵션 값을 설정하기까지는, 테스트를 실행할 환경으로서 xvfb 서버를 시작합니다.
7.3.10. metamodule
metamodule 요소는 실제로는 아무것도 하지 않는 모듈을 정의합니다. 이 형식을 갖춘 모듈의 존재 목적은 의존성때문입니다.
예를 들면, meta-gnome-desktop은 그놈 데스크톱의 모든 핵심 구성 요소에 의존하기에, 실제로는 JHBuild로 하여금 데스크톱 전체 패키지를 설치하게 합니다.
<metamodule id="modulename"> <dependencies> <dep package="modulename"/> ... </dependencies> <suggests> <dep package="modulename"/> ... </suggests> </metamodule>
id 속성은 모듈의 이름이며, 하위 요소는 autotools의 요소처럼 취급합니다.
7.4. 오래된 요소
7.4.1. 모듈 소스
7.4.1.1. cvsroot
cvsroot 요소는 오래됐습니다. repository 요소를 대신 사용하십시오.
cvsroot 요소는 CVS 저장소를 설명합니다.
<cvsroot name="rootname" [ default="yes|no" ] root="anon-cvsroot" password="anon-password"/>
name 모듈은 CVS 저장소의 유일 식별자입니다.
default 속성은 이 모듈 세트 파일에 대한 기본 모듈 소스 여부를 언급합니다.
root 속성은 이 저장소 익명 접근에 사용할 CVS 루트 목록을 지정하고, password 속성은 익명 접근시 사용할 암호를 설정합니다.
7.4.2. 오래된 모듈 형식
이 장에서는 오래된 요소를 설명하며, 기존 모듈 세트에선 쓸 수 있지만 더 이상 안쓰기를 권장합니다.
- 7.4.2.1. tarball
7.4.2.1. tarball
이 오래된 요소는 autotools 모듈 형식과 tarball 저장소 형식을 감싸는 단순 래퍼입니다.
tarball 은 타르볼에서 빌드할 모듈을 정의합니다.
<tarball id="modulename" [ version="version" ] [ checkoutdir="checkoutdir" ] [ autogenargs="autogenargs" ] [ makeargs="makeargs" ] [ autogen-sh="autogen-sh" ] [ supports-non-srcdir-builds="yes|no" ]> <source href="source-url" [ size="source-size" ] [ hash="source-algo:source-hash" ] [ md5sum="source-md5sum" ]/> <patches> <patch file="filename" strip="level"/> ... </patches> <dependencies> <dep package="modulename"/> ... </dependencies> <suggests> <dep package="modulename"/> ... </suggests> </tarball>
id 와 version 속성으로 모듈을 식별합니다.
source 요소는 다운로드하고 컴파일 할 파일을 지정합니다. href 속성은 필수이며, size, hash, 그리고 오래된 md5sum 속성은 선택 사항입니다. 후자로 언급한 2개 속성 값은, 소스 패키지를 올바르게 다운로드했는지 검사할 때 사용합니다.
patches 요소는 패키지 해제 후 소스트리에 반영할 하나 이상의 패치를 지정하고, file 속성은 패치 파일 이름을 지정하며, strip 속성에서는 패치를 적용할 때 쳐낼 디렉터리 단계 수를 지정합니다.
JHBuild에 실어둔 모듈 세트에 대한 패치 파일은 jhbuild/patches/ 디렉터리에 있습니다. URI로 참조하는 모듈 세트에 대해 패치 파일은 moduleset 파일과 동일한 디렉터리를 찾아보거나 patches/ 하위 디렉터리를 검색합니다. file 속성에 URI를 지정하여 해당 위치로 다운로드할 수도 있습니다.
다른 속성과 dependencies, suggests, after 요소는 autotools와 동일하게 처리합니다.