Guest User

Untitled

a guest
Feb 21st, 2018
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.32 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. # Main loop
  4. while :
  5. do
  6.  
  7. # Screen cleanup
  8. clear
  9.  
  10. # Show menu
  11. echo "LTIB package automation tool v0.2"
  12. echo "================================="
  13. echo " Igor Baklykov (c) 2018"
  14. echo
  15. echo
  16. echo "What action do you want to perform?"
  17. echo
  18. echo " [N] Create New Project"
  19. echo
  20. echo " [R] Rebuild Project Sources in test folder"
  21. echo
  22. echo " [D] Deploy Project to LTIB"
  23. echo
  24. echo " [B] Burn SD Card"
  25. echo
  26. echo " [I] Install to rootfs (Rebuild and Deploy)"
  27. echo
  28. echo " [F] Full cycle (Rebuild, Deploy and Burn)"
  29. echo
  30. echo " [E] Exit"
  31. echo
  32. echo
  33.  
  34. # Wait for input
  35. read -p "Choosed option: " choise
  36.  
  37. # Cases for user input
  38. case "$choise" in
  39.  
  40. # N, n or 1
  41. [nN1] )
  42.  
  43. # Screen cleanup
  44. clear
  45. echo "Creating new project"
  46. echo "--------------------"
  47. echo
  48. echo
  49.  
  50. # Go to Desktop folder
  51. cd ~/Desktop
  52.  
  53. # Getting project name
  54. read -p "Input project name: " projectName
  55.  
  56. # Getting project version
  57. # Major part (wait for integer)
  58. until [[ $projectVersionMajor =~ ^-?[0-9]+$ ]]
  59. do
  60. read -p "Input project major version: " projectVersionMajor
  61. done
  62. # Minor part (wait for integer)
  63. until [[ $projectVersionMinor =~ ^-?[0-9]+$ ]]
  64. do
  65. read -p "Input project minor version: " projectVersionMinor
  66. done
  67.  
  68. # Create new folder "projectName-projectVersionMajor.projectVersionMinor"
  69. projectFolderName="$projectName-$projectVersionMajor.$projectVersionMinor"
  70. echo "Folder name: $projectFolderName"
  71. mkdir -p $projectFolderName
  72.  
  73. # Go to project folder
  74. cd $projectFolderName
  75.  
  76. # Generate Makefile
  77. echo "Generating Makefile..."
  78. cat > Makefile <<EOF
  79. # Compiller here (usualy gcc or g++)
  80. CC = g++
  81. # Compiller flags (GCC)
  82. CFLAGS = -I. -Wall -pedantic -Werror -O3
  83. # Linked libraries (empty in example)
  84. LIBS =
  85. # List of .o object files
  86. OBJ = $projectName.o
  87. # Name of built application
  88. EXE = $projectName
  89. # Folder to place program
  90. prefix = /usr
  91. # Empty - LTIB will do it for us
  92. DESTDIR =
  93.  
  94. # Makes it easy for make
  95. .PHONY: all clean install
  96.  
  97. # Building all .cpp files in current dir to .o files
  98. %.o: %.cpp
  99. \$(CC) -c -o \$@ \$< \$(CFLAGS)
  100.  
  101. # Linking all .o files into application
  102. \$(EXE): \$(OBJ)
  103. \$(CC) -o \$@ \$^ \$(CFLAGS) \$(LIBS)
  104.  
  105. # Dependencies for make
  106. all: \$@ \$(EXE)
  107.  
  108. # Dependencies for make clean
  109. clean:
  110. # Remove .o files and application
  111. rm -rf \$(OBJ) \$(EXE)
  112.  
  113. # Dependencies for make install
  114. install : \$(DESTDIR)/\$(prefix)/bin
  115. # Copy application to rootfs (folder /usr/bin)
  116. cp -a \$(EXE) \$(DESTDIR)/\$(prefix)/bin/
  117.  
  118. # Dependencies for install path
  119. \$(DESTDIR)/\$(prefix)/bin:
  120. # Create folder if needed (/usr/bin)
  121. mkdir -p \$@
  122.  
  123. EOF
  124.  
  125. # Generate simple $projectName.cpp
  126. echo "Generating simple $projectName.cpp..."
  127. cat > $projectName.cpp <<EOF
  128. #include <iostream>
  129.  
  130. int main(int argc, char** argv) {
  131.  
  132. std::cout << "Hello from $projectName!" << std::endl;
  133.  
  134. return 0;
  135.  
  136. }
  137.  
  138.  
  139. EOF
  140.  
  141. ;;
  142.  
  143. # R, r or 2
  144. [rR2] )
  145.  
  146. # Screen cleanup
  147. clear
  148. echo "Rebuilding project sources"
  149. echo "--------------------------"
  150. echo
  151. echo
  152.  
  153. # Go to Desktop folder
  154. cd ~/Desktop
  155.  
  156. # Getting project name
  157. read -p "Input project name: " projectName
  158.  
  159. # Getting project version
  160. # Major part (wait for integer)
  161. until [[ $projectVersionMajor =~ ^-?[0-9]+$ ]]
  162. do
  163. read -p "Input project major version: " projectVersionMajor
  164. done
  165. # Minor part (wait for integer)
  166. until [[ $projectVersionMinor =~ ^-?[0-9]+$ ]]
  167. do
  168. read -p "Input project minor version: " projectVersionMinor
  169. done
  170.  
  171. # Go to folder "projectName-projectVersionMajor.projectVersionMinor"
  172. projectFolderName="$projectName-$projectVersionMajor.$projectVersionMinor"
  173. echo "Folder name: $projectFolderName"
  174. cd $projectFolderName
  175.  
  176. # Make project
  177. make
  178.  
  179. ;;
  180.  
  181. # D, d or 3
  182. [dD3] )
  183.  
  184. # Screen cleanup
  185. clear
  186. echo "Deploying project to LTIB"
  187. echo "-------------------------"
  188. echo
  189. echo
  190.  
  191. # Go to Desktop folder
  192. cd ~/Desktop
  193.  
  194. # Getting project name
  195. read -p "Input project name: " projectName
  196.  
  197. # Getting project version
  198. # Major part (wait for integer)
  199. until [[ $projectVersionMajor =~ ^-?[0-9]+$ ]]
  200. do
  201. read -p "Input project major version: " projectVersionMajor
  202. done
  203. # Minor part (wait for integer)
  204. until [[ $projectVersionMinor =~ ^-?[0-9]+$ ]]
  205. do
  206. read -p "Input project minor version: " projectVersionMinor
  207. done
  208.  
  209. # Get folder "projectName-projectVersionMajor.projectVersionMinor"
  210. projectFolderName="$projectName-$projectVersionMajor.$projectVersionMinor"
  211. echo "Folder name: $projectFolderName"
  212.  
  213. # Packing project to tar.gz archive
  214. tar -zcvf $projectFolderName.tar.gz $projectFolderName
  215.  
  216. # Move archive to LPP (Local Package Pool)
  217. mv $projectFolderName.tar.gz /opt/ltib/pkgs/
  218.  
  219. # Create project directory in /dist/lfs-5.1 folder
  220. mkdir -p ~/logic/Logic_BSPs/Linux_3.0/1027480_LogicPD_Linux_BSP_2.4-4/dist/lfs-5.1/$projectName
  221.  
  222. # Go to created directory
  223. cd ~/logic/Logic_BSPs/Linux_3.0/1027480_LogicPD_Linux_BSP_2.4-4/dist/lfs-5.1/$projectName
  224.  
  225. # Get project params
  226. read -p "Project description/summary: " summary
  227. read -p "Project creator (you): " packager
  228. read -p "Project license: " license
  229. read -p "Project vendor: " vendor
  230. read -p "Project group: " group
  231. until [[ $projectVersionRelease =~ ^-?[0-9]+$ ]]
  232. do
  233. read -p "Input project minor version: " projectVersionRelease
  234. done
  235.  
  236. # Generate specifications
  237. echo "Generating specifications file $projectName.spec..."
  238. cat > $projectName.spec <<EOF
  239. %define pfx /opt/freescale/rootfs/%{_target_cpu}
  240.  
  241. # Project description
  242. Summary : $summary
  243. # Project name (without version)
  244. Name : $projectName
  245. # Project version (same as at the end of package name)
  246. Version : $projectVersionMajor.$projectVersionMinor
  247. # Release number
  248. Release : $projectVersionRelease
  249. # License (usualy GPL or LGPL)
  250. License : $license
  251. # Vendor name
  252. Vendor : $vendor
  253. # Author name
  254. Packager : $packager
  255. # Group name
  256. Group : $group
  257. # Package name
  258. Source : %{name}-%{version}.tar.gz
  259. # Thouse are defaults
  260. BuildRoot : %{_tmppath}/%{name}
  261. Prefix : %{pfx}
  262.  
  263. %Description
  264. %{summary}
  265.  
  266. %Prep
  267. %setup
  268.  
  269. # Build actions
  270. %Build
  271. make
  272.  
  273. # Install actions
  274. %Install
  275. rm -rf \$RPM_BUILD_ROOT
  276. make install DESTDIR=\$RPM_BUILD_ROOT/%{pfx}
  277.  
  278. # Clean-up actions
  279. %Clean
  280. rm -rf \$RPM_BUILD_ROOT
  281.  
  282. # File attributes (those are defaults)
  283. %Files
  284. %defattr(-,root,root)
  285. %{pfx}/*
  286.  
  287. EOF
  288.  
  289. ;;
  290.  
  291. # B, b or 4
  292. [bB4] )
  293.  
  294. # Screen cleanup
  295. clear
  296. echo "Burning to SD card"
  297. echo "------------------"
  298. echo
  299. echo
  300. echo "Please, do not forget to insert SD card!"
  301. echo
  302.  
  303. # Go to LTIB script burn directory
  304. cd ~/logic/Logic_BSPs/Linux_3.0/1027480_LogicPD_Linux_BSP_2.4-4
  305.  
  306. # Burn fatfs to SD card
  307. ./bin/mkLogicFATcard.sh -cy /dev/sdb
  308.  
  309. ;;
  310.  
  311. # I, i or 5
  312. [iI5] )
  313.  
  314. # Screen cleanup
  315. clear
  316. echo "Installing to rootfs (Rebuild and Deploy)"
  317. echo "-----------------------------------------"
  318. echo
  319. echo
  320.  
  321. # Go to LTIB directory
  322. cd ~/logic/Logic_BSPs/Linux_3.0/1027480_LogicPD_Linux_BSP_2.4-4
  323.  
  324. # Getting project name
  325. read -p "Input project name: " projectName
  326.  
  327. # Prepare package
  328. ./ltib -m prep -p $projectName.spec
  329.  
  330. # Build package
  331. ./ltib -m scbuild -p $projectName.spec
  332.  
  333. # Install package
  334. ./ltib -m scinstall -p $projectName.spec
  335.  
  336. # Deploy package
  337. ./ltib -m scdeploy -p $projectName.spec
  338.  
  339. ;;
  340.  
  341. # F, f or 6
  342. [fF6] )
  343.  
  344. # Screen cleanup
  345. clear
  346. echo "Full cycle (Rebuild, Deploy and Burn)"
  347. echo "-------------------------------------"
  348. echo
  349. echo
  350. echo "Please, do not forget to insert SD card!"
  351. echo
  352.  
  353. # Go to LTIB directory
  354. cd ~/logic/Logic_BSPs/Linux_3.0/1027480_LogicPD_Linux_BSP_2.4-4
  355.  
  356. # Getting project name
  357. read -p "Input project name: " projectName
  358.  
  359. # Prepare package
  360. ./ltib -m prep -p $projectName.spec
  361.  
  362. # Build package
  363. ./ltib -m scbuild -p $projectName.spec
  364.  
  365. # Install package
  366. ./ltib -m scinstall -p $projectName.spec
  367.  
  368. # Deploy package
  369. ./ltib -m scdeploy -p $projectName.spec
  370.  
  371. # Burn fatfs to SD card
  372. ./bin/mkLogicFATcard.sh -cy /dev/sdb
  373.  
  374. ;;
  375.  
  376. # E, e, 7 or 0
  377. [eE70] )
  378.  
  379. # Screen cleanup
  380. clear
  381.  
  382. exit 0
  383.  
  384. ;;
  385.  
  386. # Other keys
  387. * )
  388.  
  389. # Screen cleanup
  390. clear
  391. echo "Wrong key! None of options was selected..."
  392. echo
  393. echo
  394.  
  395. ;;
  396.  
  397. esac
  398.  
  399. # Wait for any key
  400. echo
  401. read -rsp $'Press any key to continue...\n' -n1 key
  402.  
  403. done
  404.  
  405. exit 0
Add Comment
Please, Sign In to add comment