시작하기
JHBuild는 프로그램을 빌드하기 전 몇가지 설정 과정 실행이 필요합니다. JHBuild에서는 몇가지 미리 준비할 프로그램이 필요하며, 프로그램 모듈을 구하고 빌드할 사전 준비 도구를 설치해야 합니다.
- 2.1. JHBuild 설치
- 2.2. JHBuild 설정
- 2.3. 빌드 준비사항
- 2.4. JHBuild 활용법
2.1. JHBuild 설치
JHBuild는 파이썬 런타임이 필요합니다. 파이썬 2.3 이상을 설치했는지 확인하십시오.
JHBuild를 다운로드하는 가장 좋은 방법은 git 버전 관리 시스템을 활용하는 방법입니다. 다음 명령으로 진행할 수 있습니다. ~/jhbuild/checkout.와 같이 모든 소스 코드를 설치할 새 디렉터리에서 명령을 실행하시는게 좋습니다.
$ git clone https://gitlab.gnome.org/GNOME/jhbuild.git ... $
이 명령은 현재 디렉터리에서 jhbuild 폴더를 새로 만들어 이 폴더에 JHBuild를 다운로드합니다. 이제 JHBuild를 빌드하고 설치해보겠습니다:
$ cd jhbuild $ ./autogen.sh ... $ make ... $ make install ... $
gnome-common, yelp-tools, autotools 프로그램이 이미 있다면, autogen.sh 스크립트는 autotools로 앞으로 설치할 JHBuild 빌드를 설정합니다. gnome-common, yelp-tools and autotools 프로그램이 없다면 Makefile을 활용하여 앞으로 설치할 JHBuild를 설정합니다. Makefile 방식만을 늘 사용하려면 autogen.sh 스크립트에 --simple-install 옵션을 전달하십시오.
위 단계를 제대로 끝냈다면, JHBuild를 시작할 간단한 스크립트가 ~/.local/bin 디렉터리에 들어갔을 것입니다. PATH 환경 변수에 ~/.local/bin 경로를 추가하십시오:
$ PATH=$PATH:~/.local/bin $
PATH 환경 변수에 ~/.local/bin 경로를 완전히 추가하려면, 다음 명령을 실행하십시오:
$ echo 'PATH=$PATH:~/.local/bin' >> ~/.bashrc $
2.2. JHBuild 설정
JHBuild는 설정 파일로 빌드 조건을 설정할 수 있습니다. 기본 위치는 ~/.config/jhbuildrc입니다. 설정 파일이 없으면 기본 설정 파일을 활용합니다. 설정 파일에서는 파이썬 문법을 활용합니다. 제공해드리는 examples/sample.jhbuildrc 예제 파일을 살펴보시지요. 필요할 때마다 examples/sample.jhbuildrc 파일을 ~/.config/jhbuildrc 위치에 복사해 넣으시고 원하는대로 설정하시면 됩니다.
JHBuild는 예제 빌드 설정 파일로 meta-gnome-core 모듈과 meta-gnome-apps-tested 모듈, gnome-apps 모듈셋의 의존 요소를 빌드합니다. JHBuild는 소스 트리를 ~/jhbuild/checkout/ 위치에 패키징 해제한 후 모든 파일을 ~/jhbuild/install/ 위치의 하위 디렉터리에 설치합니다. 두 디렉터리는 기록 가능하도록 권한을 설정해두어야 합니다.
설정 변수내용은 6항 ― 설정 파일 참고 문서에 있습니다. 대부분 사용하는 변수는 다음과 같습니다:
- repos
-
일부 저장소에 대한 대체 저장소 위치를 지정할 때 사용하는 딕셔너리입니다. 이 설정 변수는 모듈 개발자가 쓰기에 좋습니다. 기본적으로 JHBuild는 익명 저장소 위치를 활용하여 저장소에서 코드를 가져옵니다. 딕셔너리 키는 짧은 저장소 이름이며 값은 애체 저장소 위치 문자열입니다. 예를 들면:
repos['git.gnome.org'] = 'ssh://username@git.gnome.org/git/'
- moduleset
-
활용할 모듈 세트 이름을 지정하는 문자열, 문자열 목록입니다. (경로와 확장을 뺀) JHBuild에 들어간 모듈 세트의 파일 이름이거나 모듈 세트를 외부에서 관리하는 전체 HTTP URL일 수 있습니다. HTTP URL 모듈 세트는 로컬에 캐싱할 수 있습니다. 동일한 이름을 지닌 모듈이 모듈 세트에 한번 이상 나타나면 가장 마지막에 나타난 모듈을 우선 활용합니다. JHBuild에서 제공하는 모듈 세트는 현재 그놈 개발 출시 주기에 맞춰 업데이트합니다.
- modules
-
빌드할 모듈을 지정하는 문자열 목록입니다. 모듈 목록은 실제로 buildone 명령을 사용하기까지 모든 의존 요소를 넣으려 재귀적으로 확장합니다. 기본 값은 ['meta-gnome-desktop'] 입니다.
- checkoutroot
-
소스 트리의 패키징을 해제할 대상 디렉터리를 지정하는 문자열입니다. buildroot 설정 값이 None이면 이 위치로 빌드합니다. 기본 값은 ~/jhbuild/checkout 입니다.
- prefix
-
모듈 설치 경로를 지정하는 문자열입니다. prefix는 절대 경로여야합니다. 이 디렉터리에 기록할 수 있어야합니다. 기본 값은 '~/jhbuild/install/' 입니다.
- autogenargs
-
모든 모듈의 autogen.sh 스크립트에 전달할 인자 값 문자열입니다. module_autogenargs 딕셔너리를 활용하여 일부 모듈에 대해 중복 적용할 수 있습니다.
- cmakeargs
-
모든 모듈에서 cmake를 실행할 때 전달할 인자 값 문자열입니다. module_cmakeargs 딕셔너리를 활용하여 일부 모듈에 중복 적용할 수 있습니다.
- makeargs
-
make 명령에 전달할 추가 인자 값 목록 문자열입니다. JHBuild에서는 가용 CPU 코어 수에 따라 자동으로 병렬 실행 옵션(-j)을 붙입니다. 기본값은 ''입니다.
- mesonargs
-
모든 모듈에 대해 meson 명령을 실행할 때 전달할 인자 값 문자열입니다. module_mesonargs 딕셔너리를 활용하여 일부 모듈에 중복 적용할 수 있습니다.
- ninjaargs
-
ninja 명령에 전달할 추가 인자 값 목록 문자열입니다. 기본값은 ''입니다.
2.3. 빌드 준비사항
어떤 모듈을 빌드할 수 있기 전에, 몇가지 빌드 도구를 설치해야 합니다. 어떤 모듈을 빌드하느냐에 따라 GNU Autotools(autoconf, automake, libtool and gettext), GNU 툴체인[(binutils, gcc, g++), make, pkg-config, 파이썬 등의 일반 빌드 도구가 필요합니다.
JHBuild는 sanitycheck 명령으로 도구를 설치했는지 확인할 수 있습니다:
$ jhbuild sanitycheck
이 명령에서 어떤 메시지가 나타난다면 배포판 저장소에서 필요한 패키지를 받아 설치하십시오. 그놈 위키에는 다양한 배포판에 따라 관리하는 패키지 이름 목록이 있습니다. 배포판의 패키지를 설치한 후 sanitycheck 명령을 다시 실행하여 필요한 도구 이름이 나타나는지 다시 확인하십시오.
2.4. JHBuild 활용법
설치 과정이 끝나면, JHBuild로 프로그램을 빌드할 수 있습니다. ~/.config/jhbuildrc 파일에서 선택한 모든 모듈을 빌드하려면 다음 명령을 실행하십시오:
$ jhbuild build
JHBuild에서는 각 모듈을 다운로드, 빌드 설정, 컴파일, 설치합니다. 어떤 과정에서 오류가 나타나면 JHBuild에서는 어떻게 할 지 묻는 메뉴를 나타냅니다. 오류 수정을 목적으로 셸로 진입하거나 다양한 단계에서 빌드를 다시 실행하거나, 모듈을 포기하거나, 오류를 무시하고 계속 진행하는 등의 여러가지 선택지가 있습니다.
모듈을 포기하면 해당 모듈이 필요한 다른 모듈을 빌드하지 못할 수 있습니다.
아래는 화면에 나타나는 메뉴의 예시입니다:
[1] Rerun phase build
[2] Ignore error and continue to install
[3] Give up on module
[4] Start shell
[5] Reload configuration
[6] Go to phase "wipe directory and start over"
[7] Go to phase "configure"
[8] Go to phase "clean"
[9] Go to phase "distclean"
choice:
build 명령에 인자값 형식으로 모듈 이름을 전달하여 다른 모듈 모음과 관련 모듈을 빌드하게 할 수 있습니다. 예를 들어 gtk+를 빌드한다고 하면:
$ jhbuild build gtk+
빌드 과정 중간에 JHBuild 동작을 취소하더라도 취소한 부분으로부터 --start-at 옵션을 활용하여 일부 모듈 빌드를 다시 빌드할 수 있습니다:
$ jhbuild build --start-at=pango
JHBuild에는 관련 요소를 무시하고 하나 이상의 모듈을 빌드하는 용도로 쓰이는 buildone 명령이 있습니다. buildone 명령을 제대로 끝내려면 모든 관련 요소를 빌드하고 설치하거나 배포판에서 제공하는 관련 패키지를 설치해야합니다.
$ jhbuild buildone gtk+
모듈을 개발 중일 경우 개발은 (보통) 소스 작업 디렉터리에서 진행합니다. make 명령은 빌드 시스템을 실행하고 모듈 설치를 진행합니다. 또한 이 명령은 편집-컴파일-설치-테스트 주기의 핵심 부분이기도 합니다.
$ jhbuild make
JHBuild에서 빌드할 모듈과 관련 모듈 목록을 빌드 순으로 가져오려면, list 명령을 사용하십시오:
$ jhbuild list
일부 모듈 정보만 가져오려면, info 명령을 사용하시면 됩니다:
$ jhbuild info gtk+
빌드하지 않고 모든 프로그램 소스코드를 다운로드하고 업데이트하려면 update 명령을 사용하십시오. update 명령은 빌드하기 전 소스를 수정할 기회를 주며, 인터넷 대역폭이 출렁이는 경우 쓸만합니다.
$ jhbuild update
이후, JHBuild는 소스코드를 다운로드하거나 업데이트하지 않고도 모든 요소를 빌드할 수 있습니다:
$ jhbuild build --no-network
JHBuild에서 동일한 조건으로 일부 명령을 실행하려면, run 명령을 활용해보십시오:
$ jhbuild run program
JHBuild에서 사용하는 동일한 환경으로 셸을 시작하려면 shell 명령을 사용해보십시오:
$ jhbuild shell