ส่วนที่เป็นปัญหาของชื่อนี้คือว่ามันมาจากเทพนิยายโรมัน และไม่ได้มาจากกรีก เช่นเดียวกับผลิตภัณฑ์ส่วนใหญ่ของเรา Phoenix โดนชาร์จไปแล้ว...
Readme นี้บันทึกวิธีการคอมไพล์และสร้าง Venus OS จากแหล่งที่มา
ขั้นแรก ตรวจสอบให้แน่ใจว่านั่นคือสิ่งที่คุณต้องการหรือจำเป็นจริงๆ การคอมไพล์ใช้เวลาหลายชั่วโมง พื้นที่ดิสก์จำนวนมากและผลลัพธ์เป็นรูปภาพและ sdk ซึ่งทั้งคู่พร้อมให้ดาวน์โหลดแล้วในรูปแบบไบนารี swu และ sdk
แม้ว่าคุณกำลังพัฒนาบนส่วนหนึ่งของ Venus OS เช่น หนึ่งในไดรเวอร์หรือ GUI แต่ก็ยังไม่จำเป็นต้องสร้าง Venus OS เต็มรูปแบบจากแหล่งที่มา
อย่าลืมอ่านวิกิ Venus OS ก่อน
ดังนั้น หากคุณยืนกรานว่า Repo นี้คือจุดเริ่มต้นในการสร้างดาวศุกร์ มันมีฟังก์ชัน wrapper รอบ ๆ 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/
/ ก่อนอื่นเลย มี bitbake ซึ่งเป็นส่วนเครื่องมือสร้างที่เหมือนจริงของ OpenEmbedded นอกจากนั้น คุณจะพบกับ openembedded-core และเลเยอร์อื่น ๆ อีกมากมายที่มีสูตรอาหารและข้อมูลเมตาอื่น ๆ ที่กำหนด Venus
ตอนนี้ถึงเวลาที่จะเริ่มสร้างจริง (ซึ่งอาจใช้เวลาหลายชั่วโมง) เลือกหนึ่งในคำสั่งตัวอย่างด้านล่าง:
# 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 submodule foreach -q git แต่สั้นกว่า ดังนั้นคุณจึงทำสิ่งต่อไปนี้ได้
./repos push origin ./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
ตัวอย่างนี้แสดงวิธีการสร้างสาขาการบำรุงรักษาใหม่ บริบทคือต้นแบบกำลังทำงานในเวอร์ชัน 2.30 อยู่แล้ว การเปิดตัวอย่างเป็นทางการล่าสุดคือเวอร์ชัน 2.20 ดังนั้นเราจึงสร้างสาขาชื่อ b2.20 ซึ่งรุ่นแรกจะเป็น v2.21; ในภายหลังหากจำเป็นต้องปล่อยการบำรุงรักษาอื่น 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
ตอนนี้คุณพร้อมแล้ว และพร้อมที่จะเริ่มเก็บเชอร์รี่
โปรดทราบว่ามีสองวิธีในการสนับสนุนการเปลี่ยนแปลง หนึ่งคือการคอมมิตที่สมบูรณ์จากที่เก็บเมตา และอีกอันคือการเพิ่มแพตช์จากแหล่งเก็บข้อมูลต้นทาง ในกรณีที่คุณสามารถทำได้ ให้ใช้วิธีที่หนึ่ง แต่ในกรณีที่พื้นที่เก็บข้อมูล เช่น mk2-dbus หรือ gui มีการคอมมิตจำนวนมาก ซึ่งคุณต้องการเพียงอันเดียวเท่านั้น ถ้าอย่างนั้นคุณต้องเอาแค่แผ่นแปะ
การเปลี่ยนแปลงจะต้องมีขนาดเล็กมาก ผ่านการทดสอบมาอย่างดีหรือสำคัญมาก
git cherry-pick -x
ต่อท้ายบรรทัด nice (cherry-picked from [ref]) ต่อท้ายข้อความคอมมิตbackported from
บันทึกย่อเช่นเดียวกับข้อความนี้ในข้อความคอมมิต(**backported to v2.22**)
หรือตามความเหมาะสม (**backported to v2.22 as a patch**)
ให้กับแต่ละแพตช์และเวอร์ชันนั้น ได้รับการแบ็คพอร์ตแล้วหากต้องการสร้าง ให้สร้างไปป์ไลน์บน repo มิเรอร์/วีนัส และรันสำหรับสาขาการบำรุงรักษา ไม่จำเป็นต้องมีตัวแปร
หากคุณพบปัญหาเช่นนี้:
หากสามารถแก้ไขได้ด้วย: make einstein-bb bitbake -c cleanall packagegroup-machine-base
และหลังจากนั้นลองอีกครั้ง