이 이름의 문제가 되는 부분은 이 이름이 로마 신화에서 유래한 것이며 대부분의 당사 제품처럼 그리스에서 유래한 것이 아니라는 것입니다. 피닉스는 이미 충전기에 잡혔는데...
이 추가 정보에는 소스에서 Venus OS를 컴파일하고 빌드하는 방법이 설명되어 있습니다.
첫째, 그것이 정말로 당신이 원하거나 필요한 것인지 확인하십시오. 컴파일하는 데 몇 시간이 걸리고 많은 디스크 공간이 필요하며 이미 바이너리 swu 및 SDK로 다운로드할 수 있는 이미지와 SDK가 생성됩니다.
Venus OS의 일부(예: 드라이버 또는 GUI) 중 하나를 개발하는 경우에도 소스에서 전체 Venus OS를 빌드할 필요는 없습니다.
먼저 Venus OS 위키를 읽어보세요.
따라서, 만약 당신이 주장한다면, 이 저장소는 Venus를 구축하는 출발점입니다. 여기에는 소스를 가져오고 컴파일하기 위한 bitbake 및 git 주변의 래퍼 함수가 포함되어 있습니다.
완전한 빌드를 위해서는 Victron Energy의 개인 담당자에 대한 액세스 권한이 필요합니다. 오픈소스 패키지만 빌드하는 것도 가능합니다(그러나 현재 자동으로 확인되지는 않습니다).
Venus는 OpenEmbedded를 빌드 시스템으로 사용합니다.
Venus를 구축하려면 Linux가 필요합니다. Victron에서는 이를 위해 Ubuntu를 사용합니다.
# clone this repository
git clone https://github.com/victronenergy/venus.git
cd venus
# install host packages (Debian based)
sudo make prereq
# fetch needed subtrees
# use make fetch-all instead, if you have access to all the private repos.
make fetch
마지막 가져오기 명령은 여러 항목을 ./sources/
디렉터리에 복제했습니다. 우선 OpenEmbedded의 Make-like 빌드 도구 부분인 bitbake가 있습니다. 그 외에도 비너스를 정의하는 레시피와 기타 메타데이터가 포함된 오픈임베디드 코어와 다양한 기타 레이어를 찾을 수 있습니다.
이제 실제로 구축을 시작할 시간입니다(많은 시간이 걸릴 수 있음). 아래 예제 명령 중 하나를 선택하십시오.
# build all, this will take a while though... it builds for all MACHINES as found
# in conf/machines.
make venus-images
# build for a specific machine
make ccgx-venus-image
make beaglebone-venus-image
# build the swu file only
make ccgx-swu
# build from within the bitbake shell.
# this will have the same end result as make ccgx-swu
make ccgx-bb
bitbake venus-swu
위의 시작하기 지침은 배포된 Venus OS에 사용되는 구성을 자동으로 선택합니다. 예를 들어 최신 OE 버전용으로 빌드하기 위해 대체 설정을 사용할 수도 있습니다.
make CONFIG=rocko fetch-all
체크아웃에서 어떤 구성을 사용하고 있는지 확인하려면 ./conf 심볼릭 링크를 살펴보세요. ./configs 디렉터리의 구성 중 하나에 연결됩니다.
각 구성에는 몇 가지 파일이 있습니다.
repos.conf
에는 체크아웃해야 하는 저장소가 포함되어 있습니다. make update-repos.conf
로 다시 빌드할 수 있습니다.metas.whitelist
에는 bblayers.conf에 추가될 메타 디렉토리가 포함되어 있지만 실제로 존재하는 경우에만 해당됩니다.machines
에는 이 구성으로 구축할 수 있는 머신 목록이 포함되어 있습니다. 새 리포지토리를 추가하려면 소스에 넣은 다음 원하는 브랜치를 체크아웃하고 업스트림 브랜치를 설정하세요. make repos.conf
사용하여 결과를 영구적으로 만들 수 있습니다.
새 저장소에서 사용하려는 디렉터리를 Metas.whitelist에 추가하는 것을 잊지 마세요.
repos
명령 사용Repos는 git 하위 모듈 foreach -q git과 비슷하지만 더 짧으므로 다음을 수행할 수 있습니다.
./repos 푸시 원점 ./repos 태그 xyz
모두 푸시하고 모두 태그하는 등의 작업을 수행합니다. 마찬가지로 다음을 사용하여 특정 개정판으로 되돌릴 수 있습니다.
./repos 체크아웃 태그 이름
# patches not in upstream yet
./repos cherry -v
# local changes with respect to upstream
./repos diff @{u}
# local changes with respect to the push branch
./repos diff 'origin/`git rev-parse --abbrev-ref HEAD`'
or if you have git 2.5+ ./repos diff @{push}
./repos log @{u}..upstream/`git rev-parse --abbrev-ref @{u} | grep -o "[a-Z0-9]*$"` --oneline
# rebase your local checkout branches on upstream master
./repos fetch origin
./repos rebase 'origin/$checkout_branch'
# checkout the branches as per used config
./repos checkout '$checkout_branch'
# tag & push venus repo as well as all repos.
git tag v2.21
git push origin v2.21
./repos tag v2.21
./repos push origin v2.21
유지 관리 릴리스의 기반이 되는 기본 분기에는 b
접두사가 붙습니다.
이 예에서는 새 유지 관리 분기를 생성하는 방법을 보여줍니다. 맥락은 마스터가 이미 v2.30에서 작업 중이라는 것입니다. 최신 공식 릴리스는 v2.20이었습니다. 그래서 우리는 첫 번째 릴리스가 v2.21이 될 b2.20이라는 브랜치를 만듭니다. 나중에 다른 유지 관리 릴리스가 필요한 경우 v2.22가 맨 위에 푸시됩니다. 등등.
# clone & make a branch in the venus repo
git clone [email protected]:victronenergy/venus.git venus-b2.20
cd venus-b2.20
git checkout v2.20
git checkout -b b2.20
# fetch all the meta repos
make fetch-all
# clone, prep and push them
./repos checkout v2.20
./repos checkout -b b2.20
./repos push --set-upstream origin b2.20
# update the used config to the new branch
make update-repos.conf
git commit -a -m "pin dunfell branches to b2.20"
# update the raspbian config to the new branch
[
Now manually update the raspbian config file, and commit that as well.
See some earlier branch for example.
]
git commit -a -m "pin raspbian branches to b2.20"
# Update gitlab-ci.yml
[
Now, modify .gitlab-ci.yml. See a previous maintenance branch for
how that is done.
]
git commit -a -m "Don't touch SSTATE cache & build from b2.20"
# Push the new branch and changes to the venus repo
# Note that this causes a (useless) CI build to start on the builder once
# it syncs. Easily cancelled in the gitlab ui.
git push --set-upstream origin b2.20
이제 모든 준비가 완료되었습니다. 체리 따기를 시작할 준비가 되었습니다.
변경 사항을 백포트하는 방법에는 두 가지가 있습니다. 하나는 메타 저장소에서 완전한 커밋을 수행하는 것입니다. 다른 하나는 소스 저장소에서 패치를 추가하는 것입니다. 가능하다면 방법 1을 적용하세요. 그러나 mk2-dbus 또는 gui와 같은 저장소에 많은 커밋이 있는 경우에는 하나만 필요합니다. 그런 다음 패치 만 가져 가야합니다.
변경 사항은 매우 작거나, 잘 테스트되거나, 매우 중요해야 합니다.
git cherry-pick -x
커밋 메시지에 멋진([ref]에서 체리 선택) 줄을 추가합니다.backported from
을 커밋 메시지에 추가하세요.(**backported to v2.22**)
하거나 해당하는 경우 (**backported to v2.22 as a patch**)
추가합니다. 백포트되었습니다.빌드하려면 미러/금성 저장소에 파이프라인을 생성하고 유지 관리 분기에 대해 실행합니다. 변수가 필요하지 않습니다.
다음과 같은 문제가 발생하는 경우:
다음으로 해결할 수 있는 경우: make einstein-bb bitbake -c cleanall packagegroup-machine-base
그런 다음 다시 시도해 보세요.