setup.sh 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300
  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-starfive
  48. bitbake-layers add-layer ../meta-clang
  49. # fix the configuration
  50. echo "Creating auto.conf"
  51. if [ -e $CONFFILE ]; then
  52. rm -rf $CONFFILE
  53. fi
  54. cat <<EOF > $CONFFILE
  55. MACHINE ?= "${MACHINE}"
  56. #IMAGE_FEATURES += "tools-debug"
  57. #IMAGE_FEATURES += "tools-tweaks"
  58. #IMAGE_FEATURES += "dbg-pkgs"
  59. # rootfs for debugging
  60. #IMAGE_GEN_DEBUGFS = "1"
  61. #IMAGE_FSTYPES_DEBUGFS = "tar.gz"
  62. #EXTRA_IMAGE_FEATURES:append = " ssh-server-dropbear"
  63. EXTRA_IMAGE_FEATURES:append = " package-management"
  64. PACKAGECONFIG:append:pn-qemu-native = " sdl"
  65. PACKAGECONFIG:append:pn-nativesdk-qemu = " sdl"
  66. USER_CLASSES ?= "buildstats buildhistory buildstats-summary"
  67. INHERIT += "uninative"
  68. DISTRO_FEATURES:append = " largefile opengl ptest multiarch wayland pam systemd "
  69. #DISTRO_FEATURES:append = " largefile opengl ptest multiarch wayland pam "
  70. DISTRO_FEATURES_BACKFILL_CONSIDERED += "sysvinit"
  71. VIRTUAL-RUNTIME_init_manager = "systemd"
  72. ##VIRTUAL-RUNTIME_initscripts = ""
  73. ##VIRTUAL-RUNTIME_syslog = ""
  74. HOSTTOOLS_NONFATAL:append = " ssh"
  75. DISTRO_NAME = "StarFive Linux SDK"
  76. #DISTRO_VERSION = ""
  77. #DISTRO_CODENAME = ""
  78. EOF
  79. echo "---------------------------------------------------"
  80. echo "Example: MACHINE=${MACHINE} bitbake ${BITBAKEIMAGE}"
  81. echo "---------------------------------------------------"
  82. echo ""
  83. echo "Buildable machine info"
  84. echo "---------------------------------------------------"
  85. echo "* qemuriscv64 : The 64-bit RISC-V machine"
  86. echo "* starfive-dubhe : The StarFive Dubhe machine"
  87. echo "---------------------------------------------------"
  88. # start build
  89. #echo "Starting build"
  90. #bitbake $BITBAKEIMAGE
  91. # Launch build script
  92. # Terminal Style
  93. PURPLE='\E[1;35m'
  94. YELLOW='\E[1;33m'
  95. GREEN='\E[0;32m'
  96. RED='\E[0;31m'
  97. NC='\E[0m'
  98. MARK="\033[0;32m\xE2\x9C\x94\033[0m"
  99. #Function
  100. runprog(){
  101. read -p "Do you want to runqemu?[Y/n]:" RES
  102. case $RES in
  103. [Yy])
  104. MACHINE=starfive-dubhe runqemu nographic $1;;
  105. [Nn])
  106. return;;
  107. *)
  108. echo "Invalid option $RES , [Y/n] only.";;
  109. esac
  110. }
  111. dubhe(){
  112. # Menu script
  113. echo ""
  114. echo -e "${PURPLE}*******************************************************************"
  115. echo "* *"
  116. echo "* StarFive Dubhe Build Menu *"
  117. echo "* *"
  118. echo -e "*******************************************************************${NC}"
  119. echo "";
  120. echo -e "${YELLOW}Description : ";
  121. echo "";
  122. echo "This build script can build three types of image.";
  123. echo "";
  124. echo "1) core-image-minimal";
  125. echo " - QSPI boot firmware with that boots image via TFTP and NFS";
  126. echo " - Generated output : ";
  127. echo " starfive-dubhe-qspi-firmware.bin";
  128. echo " Image";
  129. echo " Image-initramfs-starfive-dubhe.bin";
  130. echo " Image-nfs-starfive-dubhe.tar.gz";
  131. echo " Image-sd-starfive-dubhe.img";
  132. echo -e " dubhe_fpga.dtb${NC}";
  133. echo "";
  134. PS3="Select your action : "
  135. options=("Build core-image-minimal" "Quit")
  136. select opt in "${options[@]}"
  137. do
  138. case $opt in
  139. "Build core-image-minimal")
  140. cur_ter=$(tty);
  141. output=$(MACHINE=starfive-dubhe bitbake core-image-minimal | tee $cur_ter);
  142. if [[ $output != *"ERROR"* ]]; then
  143. echo -e "\U0002705 ${GREEN}Build Complete${NC}"
  144. else echo -e "\U000274C ${RED}Build Failed${NC}"
  145. fi;;
  146. "Quit")
  147. break;;
  148. *)
  149. echo "Invalid option $REPLY. Kindly select choice between menu range."
  150. esac
  151. REPLY=
  152. done
  153. }
  154. vf2(){
  155. # Menu script
  156. echo ""
  157. echo -e "${PURPLE}*******************************************************************"
  158. echo "* *"
  159. echo "* StarFive Visionfive2 Build Menu *"
  160. echo "* *"
  161. echo -e "*******************************************************************${NC}"
  162. echo "";
  163. echo -e "${YELLOW}Description : ";
  164. echo "";
  165. echo "This build script can build two types of image.";
  166. echo "";
  167. echo "1) core-image-minimal";
  168. echo " - Minimal image with ext4 support.";
  169. echo " - Generated output : ";
  170. echo " starfive-visionfive2-core-image-minimal.img";
  171. echo "2) core-image-minimal-xfce";
  172. echo " - Minimal image with XFCE desktop environment.";
  173. echo " - Generated output : ";
  174. echo " starfive-visionfive2-core-image-minimal-xfce.img";
  175. echo -e "3) Quit${NC}";
  176. echo "";
  177. PS3="Select your action : "
  178. options=("Build core-image-minimal" "Build core-image-minimal-xfce" "Quit")
  179. select opt in "${options[@]}"
  180. do
  181. case $opt in
  182. "Build core-image-minimal")
  183. cur_ter=$(tty);
  184. output_min=$(MACHINE=starfive-visionfive2 bitbake core-image-minimal | tee $cur_ter);
  185. if [[ $output_min != *"ERROR"* ]]; then
  186. echo -e "\U0002705 ${GREEN}Build Complete${NC}"
  187. else echo -e "\U000274C ${RED}Build Failed${NC}"
  188. fi;;
  189. "Build core-image-minimal-xfce")
  190. cur_ter=$(tty);
  191. output_min=$(MACHINE=starfive-visionfive2 bitbake core-image-minimal-xfce | tee $cur_ter);
  192. if [[ $output_min != *"ERROR"* ]]; then
  193. echo -e "\U0002705 ${GREEN}Build Complete${NC}"
  194. else echo -e "\U000274C ${RED}Build Failed${NC}"
  195. fi;;
  196. "Quit")
  197. break;;
  198. *)
  199. echo "Invalid option $REPLY. Kindly select choice between menu range."
  200. esac
  201. REPLY=
  202. done
  203. }
  204. jh8100(){
  205. # Menu script
  206. echo ""
  207. echo -e "${PURPLE}*******************************************************************"
  208. echo "* *"
  209. echo "* StarFive JH8100 Build Menu *"
  210. echo "* *"
  211. echo -e "*******************************************************************${NC}"
  212. echo "";
  213. echo -e "${YELLOW}Description : ";
  214. echo "";
  215. echo "This build script can build two types of image.";
  216. echo "";
  217. echo "1) core-image-minimal";
  218. echo " - Minimal image with ext4 support.";
  219. echo " - Generated output : ";
  220. echo " starfive-jh8100-core-image-minimal.img";
  221. echo -e "2) Quit${NC}";
  222. echo "";
  223. PS3="Select your action : "
  224. options=("Build core-image-minimal" "Quit")
  225. select opt in "${options[@]}"
  226. do
  227. case $opt in
  228. "Build core-image-minimal")
  229. cur_ter=$(tty);
  230. output_min=$(MACHINE=starfive-jh8100 bitbake core-image-minimal | tee $cur_ter);
  231. if [[ $output_min != *"ERROR"* ]]; then
  232. echo -e "\U0002705 ${GREEN}Build Complete${NC}"
  233. else echo -e "\U000274C ${RED}Build Failed${NC}"
  234. fi;;
  235. "Quit")
  236. break;;
  237. *)
  238. echo "Invalid option $REPLY. Kindly select choice between menu range."
  239. esac
  240. REPLY=
  241. done
  242. }
  243. # Menu script
  244. echo ""
  245. echo -e "${PURPLE}*******************************************************************"
  246. echo "* *"
  247. echo "* Welcome to StarFive Yocto *"
  248. echo "* *"
  249. echo -e "*******************************************************************${NC}"
  250. echo "";
  251. echo -e "${YELLOW}List below shows machine supported : ";
  252. echo "1) StarFive Dubhe";
  253. echo "2) StarFive JH8100";
  254. echo -e "3) Quit${NC}";
  255. echo "";
  256. PS3="Select machine : "
  257. options=("StarFive Dubhe" "StarFive JH8100" "Quit")
  258. select opt in "${options[@]}"
  259. do
  260. case $opt in
  261. "StarFive Dubhe")
  262. dubhe;;
  263. "StarFive JH8100")
  264. jh8100;;
  265. "Quit")
  266. break;;
  267. *)
  268. echo "Invalid option $REPLY. Kindly select choice between menu range."
  269. esac
  270. REPLY=
  271. done