setup.sh 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365
  1. #!/bin/bash
  2. # Bootstrapper for buildbot slave
  3. DIR="build"
  4. MACHINE="starfive-dubhe"
  5. CONFFILE="conf/auto.conf"
  6. BITBAKEIMAGE="virtual/kernel"
  7. # clean up the output dir
  8. #echo "Cleaning build dir"
  9. #rm -rf $DIR
  10. # make sure sstate is there
  11. #echo "Creating sstate directory"
  12. #mkdir -p ~/sstate/$MACHINE
  13. # fix permissions set by buildbot
  14. #echo "Fixing permissions for buildbot"
  15. #umask -S u=rwx,g=rx,o=rx
  16. #chmod -R 755 .
  17. # Reconfigure dash on debian-like systems
  18. which aptitude > /dev/null 2>&1
  19. ret=$?
  20. if [ "$(readlink /bin/sh)" = "dash" -a "$ret" = "0" ]; then
  21. sudo aptitude install expect -y
  22. expect -c 'spawn sudo dpkg-reconfigure -freadline dash; send "n\n"; interact;'
  23. elif [ "${0##*/}" = "dash" ]; then
  24. echo "dash as default shell is not supported"
  25. return
  26. fi
  27. # bootstrap OE
  28. if [[ ":$PATH:" != *":$PWD/meta-starfive:"* ]]; then
  29. export PATH=$PATH:$PWD/meta-starfive
  30. fi
  31. echo "Init OE"
  32. export BASH_SOURCE="poky/oe-init-build-env"
  33. source poky/oe-init-build-env
  34. # Symlink the cache
  35. #echo "Setup symlink for sstate"
  36. #ln -s ~/sstate/${MACHINE} sstate-cache
  37. # add the missing layers
  38. echo "Adding layers"
  39. bitbake-layers add-layer ../meta-openembedded/meta-oe
  40. bitbake-layers add-layer ../meta-openembedded/meta-python
  41. bitbake-layers add-layer ../meta-openembedded/meta-multimedia
  42. bitbake-layers add-layer ../meta-openembedded/meta-filesystems
  43. bitbake-layers add-layer ../meta-openembedded/meta-networking
  44. bitbake-layers add-layer ../meta-openembedded/meta-gnome
  45. bitbake-layers add-layer ../meta-openembedded/meta-xfce
  46. bitbake-layers add-layer ../meta-openembedded/meta-webserver
  47. bitbake-layers add-layer ../meta-riscv
  48. bitbake-layers add-layer ../meta-starfive
  49. bitbake-layers add-layer ../meta-clang
  50. # fix the configuration
  51. echo "Creating auto.conf"
  52. if [ -e $CONFFILE ]; then
  53. rm -rf $CONFFILE
  54. fi
  55. cat <<EOF > $CONFFILE
  56. MACHINE ?= "${MACHINE}"
  57. #IMAGE_FEATURES += "tools-debug"
  58. #IMAGE_FEATURES += "tools-tweaks"
  59. #IMAGE_FEATURES += "dbg-pkgs"
  60. # rootfs for debugging
  61. #IMAGE_GEN_DEBUGFS = "1"
  62. #IMAGE_FSTYPES_DEBUGFS = "tar.gz"
  63. #EXTRA_IMAGE_FEATURES:append = " ssh-server-dropbear"
  64. EXTRA_IMAGE_FEATURES:append = " package-management"
  65. PACKAGECONFIG:append:pn-qemu-native = " sdl"
  66. PACKAGECONFIG:append:pn-nativesdk-qemu = " sdl"
  67. USER_CLASSES ?= "buildstats buildhistory buildstats-summary"
  68. INHERIT += "uninative"
  69. DISTRO_FEATURES:append = " largefile opengl ptest multiarch wayland pam systemd "
  70. #DISTRO_FEATURES:append = " largefile opengl ptest multiarch wayland pam "
  71. DISTRO_FEATURES_BACKFILL_CONSIDERED += "sysvinit"
  72. VIRTUAL-RUNTIME_init_manager = "systemd"
  73. ##VIRTUAL-RUNTIME_initscripts = ""
  74. ##VIRTUAL-RUNTIME_syslog = ""
  75. HOSTTOOLS_NONFATAL:append = " ssh"
  76. DISTRO_NAME = "StarFive Linux SDK"
  77. #DISTRO_VERSION = ""
  78. #DISTRO_CODENAME = ""
  79. EOF
  80. echo "---------------------------------------------------"
  81. echo "Example: MACHINE=${MACHINE} bitbake ${BITBAKEIMAGE}"
  82. echo "---------------------------------------------------"
  83. echo ""
  84. echo "Buildable machine info"
  85. echo "---------------------------------------------------"
  86. echo "* qemuriscv64 : The 64-bit RISC-V machine"
  87. echo "* starfive-dubhe : The StarFive Dubhe machine"
  88. echo "---------------------------------------------------"
  89. # start build
  90. #echo "Starting build"
  91. #bitbake $BITBAKEIMAGE
  92. # Launch build script
  93. # Terminal Style
  94. PURPLE='\E[1;35m'
  95. YELLOW='\E[1;33m'
  96. GREEN='\E[0;32m'
  97. RED='\E[0;31m'
  98. NC='\E[0m'
  99. MARK="\033[0;32m\xE2\x9C\x94\033[0m"
  100. #Function
  101. runprog(){
  102. read -p "Do you want to runqemu?[Y/n]:" RES
  103. case $RES in
  104. [Yy])
  105. MACHINE=starfive-dubhe runqemu nographic $1;;
  106. [Nn])
  107. return;;
  108. *)
  109. echo "Invalid option $RES , [Y/n] only.";;
  110. esac
  111. }
  112. updatecfg(){
  113. cfg=("ENABLE_INIT" "ENABLE_EXT4" "ENABLE_UBI" "ENABLE_NFS")
  114. for cfgname in ${cfg[@]}; do
  115. if [[ $1 == ${cfgname} ]]; then
  116. if ! grep -q $1 ./conf/local.conf; then
  117. echo $1="\"1"\" >> ./conf/local.conf;
  118. else sed -i "s/$1=\"0\"/$1=\"1\"/g" ./conf/local.conf;
  119. fi;
  120. else
  121. if ! grep -q ${cfgname} ./conf/local.conf; then
  122. echo ${cfgname}="\"0"\" >> ./conf/local.conf;
  123. else sed -i "s/${cfgname}=\"1\"/${cfgname}=\"0\"/g" ./conf/local.conf;
  124. fi;
  125. fi;
  126. done
  127. }
  128. dubhe(){
  129. # Menu script
  130. echo ""
  131. echo -e "${PURPLE}*******************************************************************"
  132. echo "* *"
  133. echo "* StarFive Dubhe Build Menu *"
  134. echo "* *"
  135. echo -e "*******************************************************************${NC}"
  136. echo "";
  137. echo -e "${YELLOW}Description : ";
  138. echo "";
  139. echo "This build script can build three types of image.";
  140. echo "";
  141. echo "1) QSPI-Image";
  142. echo " - QSPI image that boots image via TFTP";
  143. echo " - Generated output : ";
  144. echo " starfive-dubhe-qspi-tftpboot.bin";
  145. echo " Image-initramfs-starfive-dubhe.bin";
  146. echo " dubhe80_fpga.dtb"
  147. echo -e " dubhe90_fpga.dtb${NC}";
  148. #echo "2) Dubhe-Image-Minimal";
  149. #echo " - Minimal image with ext4 support.";
  150. #echo " - Generated output : ";
  151. #echo " QSPI-EXT4-Image.bin";
  152. #echo " SD-Image.img";
  153. #echo "3) QSPI-Ubifs-Image";
  154. #echo " - Minimal image with ubifs support.";
  155. #echo " - Generated output : ";
  156. #echo -e " QSPI-Ubifs-Image.bin";
  157. #echo "4) QSPI-NFS-Image";
  158. #echo " - NFS config has been enabled.";
  159. #echo " - Generated output : ";
  160. #echo -e " QSPI-NFS-Image.bin${NC}";
  161. echo "";
  162. PS3="Select your action : "
  163. options=("Build qspi-image" "Quit")
  164. select opt in "${options[@]}"
  165. do
  166. case $opt in
  167. "Build qspi-image")
  168. updatecfg ENABLE_INIT;
  169. cur_ter=$(tty);
  170. output=$(MACHINE=starfive-dubhe bitbake qspi-image | tee $cur_ter);
  171. if [[ $output != *"ERROR"* ]]; then
  172. echo -e "\U0002705 ${GREEN}Build Complete${NC}"
  173. runprog dubhe-image-initramfs;
  174. else echo -e "\U000274C ${RED}Build Failed${NC}"
  175. fi;;
  176. # "Build dubhe-image-minimal")
  177. # updatecfg ENABLE_EXT4
  178. # cur_ter=$(tty);
  179. # output_min=$(MACHINE=starfive-dubhe bitbake dubhe-image-minimal | tee $cur_ter);
  180. # if [[ $output_min != *"ERROR"* ]]; then
  181. # echo -e "\U0002705 ${GREEN}Build Complete${NC}"
  182. # runprog console-image-minimal;
  183. # else echo -e "\U000274C ${RED}Build Failed${NC}"
  184. # fi;;
  185. # "Build qs#pi-ubifs-image")
  186. # updatecfg ENABLE_UBI
  187. # cur_ter=$(tty);
  188. # output=$(MACHINE=starfive-dubhe bitbake qspi-ubifs-image | tee $cur_ter);
  189. # if [[ $output != *"ERROR"* ]]; then
  190. # echo -e "\U0002705 ${GREEN}Build Complete${NC}"
  191. # else echo -e "\U000274C ${RED}Build Failed${NC}"
  192. # fi;;
  193. # "Build qspi-nfs-image")
  194. # sed -n 47p ../meta-starfive/recipes-kernel/linux/linux-starfive-dev_6.1.20.bb;
  195. # read -p "Kindly confirm boot argument such as nfs path and ip address before build (/meta-starfive/recipes-kernel/linux/linux-starfive-dev_6.1.20). Proceed to build?[Y/n]:" RES;
  196. # case $RES in
  197. # [Yy])
  198. # updatecfg ENABLE_NFS
  199. # cur_ter=$(tty);
  200. # output_min=$(MACHINE=starfive-dubhe bitbake qspi-nfs-image | tee $cur_ter);
  201. # if [[ $output_min != *"ERROR"* ]]; then
  202. # echo -e "\U0002705 ${GREEN}Build Complete${NC}"
  203. # else echo -e "\U000274C ${RED}Build Failed${NC}"
  204. # fi;;
  205. # [Nn])
  206. # return;;
  207. # *)
  208. # echo "Invalid option $RES , [Y/n] only.";
  209. # esac;;
  210. "Quit")
  211. break;;
  212. *)
  213. echo "Invalid option $REPLY. Kindly select choice between menu range."
  214. esac
  215. REPLY=
  216. done
  217. }
  218. vf2(){
  219. # Menu script
  220. echo ""
  221. echo -e "${PURPLE}*******************************************************************"
  222. echo "* *"
  223. echo "* StarFive Visionfive2 Build Menu *"
  224. echo "* *"
  225. echo -e "*******************************************************************${NC}"
  226. echo "";
  227. echo -e "${YELLOW}Description : ";
  228. echo "";
  229. echo "This build script can build two types of image.";
  230. echo "";
  231. echo "1) core-image-minimal";
  232. echo " - Minimal image with ext4 support.";
  233. echo " - Generated output : ";
  234. echo " starfive-visionfive2-core-image-minimal.img";
  235. echo "2) core-image-minimal-xfce";
  236. echo " - Minimal image with XFCE desktop environment.";
  237. echo " - Generated output : ";
  238. echo " starfive-visionfive2-core-image-minimal-xfce.img";
  239. echo -e "3) Quit${NC}";
  240. echo "";
  241. PS3="Select your action : "
  242. options=("Build core-image-minimal" "Build core-image-minimal-xfce" "Quit")
  243. select opt in "${options[@]}"
  244. do
  245. case $opt in
  246. "Build core-image-minimal")
  247. cur_ter=$(tty);
  248. output_min=$(MACHINE=starfive-visionfive2 bitbake core-image-minimal | tee $cur_ter);
  249. if [[ $output_min != *"ERROR"* ]]; then
  250. echo -e "\U0002705 ${GREEN}Build Complete${NC}"
  251. else echo -e "\U000274C ${RED}Build Failed${NC}"
  252. fi;;
  253. "Build core-image-minimal-xfce")
  254. cur_ter=$(tty);
  255. output_min=$(MACHINE=starfive-visionfive2 bitbake core-image-minimal-xfce | tee $cur_ter);
  256. if [[ $output_min != *"ERROR"* ]]; then
  257. echo -e "\U0002705 ${GREEN}Build Complete${NC}"
  258. else echo -e "\U000274C ${RED}Build Failed${NC}"
  259. fi;;
  260. "Quit")
  261. break;;
  262. *)
  263. echo "Invalid option $REPLY. Kindly select choice between menu range."
  264. esac
  265. REPLY=
  266. done
  267. }
  268. jh8100(){
  269. # Menu script
  270. echo ""
  271. echo -e "${PURPLE}*******************************************************************"
  272. echo "* *"
  273. echo "* StarFive JH8100 Build Menu *"
  274. echo "* *"
  275. echo -e "*******************************************************************${NC}"
  276. echo "";
  277. echo -e "${YELLOW}Description : ";
  278. echo "";
  279. echo "This build script can build two types of image.";
  280. echo "";
  281. echo "1) core-image-minimal";
  282. echo " - Minimal image with ext4 support.";
  283. echo " - Generated output : ";
  284. echo " starfive-jh8100-core-image-minimal.img";
  285. echo -e "2) Quit${NC}";
  286. echo "";
  287. PS3="Select your action : "
  288. options=("Build core-image-minimal" "Quit")
  289. select opt in "${options[@]}"
  290. do
  291. case $opt in
  292. "Build core-image-minimal")
  293. cur_ter=$(tty);
  294. output_min=$(MACHINE=starfive-jh8100 bitbake core-image-minimal | tee $cur_ter);
  295. if [[ $output_min != *"ERROR"* ]]; then
  296. echo -e "\U0002705 ${GREEN}Build Complete${NC}"
  297. else echo -e "\U000274C ${RED}Build Failed${NC}"
  298. fi;;
  299. "Quit")
  300. break;;
  301. *)
  302. echo "Invalid option $REPLY. Kindly select choice between menu range."
  303. esac
  304. REPLY=
  305. done
  306. }
  307. # Menu script
  308. echo ""
  309. echo -e "${PURPLE}*******************************************************************"
  310. echo "* *"
  311. echo "* Welcome to StarFive Yocto *"
  312. echo "* *"
  313. echo -e "*******************************************************************${NC}"
  314. echo "";
  315. echo -e "${YELLOW}List below shows machine supported : ";
  316. echo "1) StarFive Dubhe";
  317. echo "2) StarFive JH8100";
  318. echo -e "3) Quit${NC}";
  319. echo "";
  320. PS3="Select machine : "
  321. options=("StarFive Dubhe" "StarFive JH8100" "Quit")
  322. select opt in "${options[@]}"
  323. do
  324. case $opt in
  325. "StarFive Dubhe")
  326. dubhe;;
  327. "StarFive JH8100")
  328. jh8100;;
  329. "Quit")
  330. break;;
  331. *)
  332. echo "Invalid option $REPLY. Kindly select choice between menu range."
  333. esac
  334. REPLY=
  335. done