Masalah dengan nama ini adalah bahwa nama ini berasal dari mitologi Romawi dan bukan, seperti kebanyakan produk kami, yang berasal dari Yunani. Phoenix sudah diambil oleh pengisi daya...
Readme ini mendokumentasikan cara mengkompilasi dan membangun Venus OS dari sumber.
Pertama, pastikan itu benar-benar yang Anda inginkan atau butuhkan. Dibutuhkan beberapa jam untuk mengkompilasi, banyak ruang disk dan menghasilkan gambar dan SDK yang keduanya sudah tersedia untuk diunduh sebagai binari swu dan SDK.
Bahkan ketika Anda mengembangkan salah satu bagian Venus OS, misalnya salah satu drivernya, atau gui, tetap tidak perlu membuat Venus OS lengkap dari sumbernya.
Pastikan untuk membaca wiki Venus OS terlebih dahulu.
Jadi, jika Anda bersikeras: repo ini adalah titik awal pembangunan Venus. Ini berisi fungsi pembungkus di sekitar bitbake dan git untuk mengambil, dan mengkompilasi sumber.
Untuk pembangunan yang lengkap, Anda perlu memiliki akses ke perwakilan pribadi Victron Energy. Hanya membuat paket sumber terbuka juga dimungkinkan (tetapi saat ini tidak dicentang secara otomatis).
Venus menggunakan OpenEmbedded sebagai sistem pembangunan.
Membangun Venus membutuhkan Linux. Di Victron kami menggunakan Ubuntu untuk ini.
# 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
Perintah pengambilan terakhir telah mengkloning beberapa hal ke dalam direktori ./sources/
. Pertama-tama ada bitbake, yang merupakan bagian alat pembuatan seperti OpenEmbedded. Selain itu, Anda akan menemukan inti tertanam terbuka dan berbagai lapisan lain yang berisi resep dan metadata lain yang mendefinisikan Venus.
Sekarang waktunya untuk mulai membangun (yang bisa memakan waktu berjam-jam). Pilih salah satu dari contoh perintah di bawah ini:
# 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
Petunjuk Memulai di atas akan secara otomatis memilih konfigurasi yang digunakan untuk Venus OS yang didistribusikan. Penyiapan alternatif juga dapat digunakan, misalnya untuk membuat versi OE yang lebih baru:
make CONFIG=rocko fetch-all
Untuk melihat konfigurasi mana yang digunakan checkout Anda, lihat symlink ./conf. Ini akan terhubung ke salah satu konfigurasi di direktori ./configs.
Untuk setiap konfigurasi ada beberapa file:
repos.conf
berisi repositori yang perlu diperiksa. Itu dapat dibangun kembali dengan make update-repos.conf
.metas.whitelist
berisi direktori meta yang akan ditambahkan ke bblayers.conf, tetapi hanya jika direktori tersebut benar-benar ada.machines
berisi daftar mesin yang dapat dibuat dalam konfigurasi ini Untuk menambahkan repositori baru, letakkan di sumber, lalu checkout cabang yang Anda inginkan dan atur cabang upstream. Hasilnya bisa dibuat permanen dengan: make repos.conf
.
Jangan lupa untuk menambahkan direktori yang ingin Anda gunakan dari repositori baru ke metas.whitelist.
repos
Repos sama seperti git submodule foreach -q git, tetapi lebih pendek, sehingga Anda dapat melakukan:
./repos dorong asal ./repos tag xyz
Ini akan mendorong semua, menandai semua, dll. Anda juga dapat kembali ke revisi tertentu dengan:
./repos nama tag pembayaran
# 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
Cabang dasar yang menjadi dasar rilis pemeliharaan harus diawali dengan a b
.
Contoh ini menunjukkan cara membuat cabang pemeliharaan baru. Konteksnya adalah master sudah mengerjakan v2.30. Rilis resmi terbaru adalah v2.20. Jadi kita membuat cabang bernama b2.20 yang rilis pertamanya adalah v2.21; nanti jika rilis pemeliharaan lain diperlukan, v2.22 akan didorong ke atas; dan sebagainya.
# 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
Sekarang Anda sudah siap; dan siap untuk mulai memetik ceri.
Sadarilah bahwa ada dua cara untuk mendukung perubahan. Salah satunya adalah mengambil komitmen lengkap dari repositori meta; dan yang lainnya adalah menambahkan patch dari repositori sumber. Jika memungkinkan, terapkan metode pertama. Namun jika repositori, misalnya mk2-dbus atau gui, memiliki banyak komitmen dan Anda hanya memerlukan satu komitmen; maka Anda harus mengambil patchnya saja.
Perubahan harus benar-benar kecil, teruji dengan baik, atau sangat penting
git cherry-pick -x
menambahkan baris Nice (dipilih dari [ref]) ke pesan komitbackported from
seperti ini ke pesan komit(**backported to v2.22**)
atau jika berlaku (**backported to v2.22 as a patch**)
ke setiap patch dan versi yang ada telah di-backport.Untuk membangun, buat saluran pipa di mirror/repo Venus, dan jalankan untuk cabang pemeliharaan. Tidak diperlukan variabel.
Jika Anda menemui masalah seperti ini:
jika dapat diperbaiki dengan: make einstein-bb bitbake -c cleanall packagegroup-machine-base
dan setelah itu coba lagi