summerofcode2023projects:citestharnessforbootloader

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
summerofcode2023projects:citestharnessforbootloader [2023/05/24 16:20] – SudhanshuKashyapsummerofcode2023projects:citestharnessforbootloader [2023/11/09 18:17] (current) – SudhanshuKashyap
Line 2: Line 2:
   * Student: Sudhanshu Kashyap (smk@freebsd.org)   * Student: Sudhanshu Kashyap (smk@freebsd.org)
   * Mentor:  Warner Losh (imp@bsdimp.com)   * Mentor:  Warner Losh (imp@bsdimp.com)
 +
 +NOTE : This page may not be in latest state and will be essentially a mirror from my personal site: https://books.minetest.in/freebsd/gsoc
  
 ===== Project description ===== ===== Project description =====
-(Two or three paragraphs about your project, the problem you are trying to solve, and any obstacles you may hit.)+ 
 +%%FreeBSD%% supports multiple architectures, file systems, and disk-partitioning schemes. Currently, there is a script named full-test.sh located in src/tools/boot/ that creates several of these environments but does not test all of them. The proposed idea is to rewrite the script in a language such as Python or Lua, which would allow for testing of all the architecture combinations supported in the first and second-tier support, and provide a report on any broken combinations and expected functionality. Additionally, providing Linux Boot support using Linux EFI shim(EDK) II for amd64 and arm64. If time permits, further exploration could be done to integrate the script into the existing build infrastructure (either Jenkins or Github Actions) to generate a comprehensive summary of the test results.
  
 ===== Approach to solving the problem ===== ===== Approach to solving the problem =====
Line 12: Line 15:
 ===== Deliverables ===== ===== Deliverables =====
  
-(List of features you plan to implement)+  * There exists one single main.lua script when invoked will test all the possible arch-interface-file_system-encryption combination 
 +  * Figuring out sane defaults for all config combination : Lots of Work \0-0/ :P 
 +  * You could provide a config.lua to run custom tests rather than sane defaults 
 +  * Try to integrate the script in the existing %%FreeBSD%% Infra (If time permits)
  
 ===== Milestones ===== ===== Milestones =====
Line 24: Line 30:
   * July 10th - July 14th: Mid-term Evaluations #1   * July 10th - July 14th: Mid-term Evaluations #1
   * August 21st - August 28th: Final-term Evaluations #2   * August 21st - August 28th: Final-term Evaluations #2
-  * August 6th: End of coding (soft)+  * September 5th: End of coding (soft)
     * You may wish to use this time to complete documentation etc     * You may wish to use this time to complete documentation etc
-  * August 14th: End of coding (hard)+  * Nov 6th: End of coding (hard)
  
-===== Test Plan =====+===== Weekly Check-in =====
  
-(List of steps you plan to use to test your work, as discussed with your mentor)+* Week 1 (29 May) 
 +  * Successfully deployed a %%FreeBSD%% server and established build system on Racknerd VPS. 
 +  * Acquired foundation knowledge of Lua programming and explored the design principles of the project, including module systems. 
 +  * Deliberated and finalized the syntax for the project, as well as devised a robust approach to process user inputs effectively and efficiently. 
 + 
 +* Week 2 (4 Jun) 
 +  * Developed ''%%combination.lua%%'', a script that computes and parses regex strings in the specified format: ''%%<arch>-<file-system>-<boot-partition>-<encryption>%%'' 
 +  * Implemented ''%%optparse%%'' for the ''%%main.lua%%'' file, enabling efficient command-line option parsing and handling. 
 +  * Created ''%%parser.lua%%'' to significantly improve accuracy of parsing of ''%%input.conf%%'', ensuring correct and reliable data extraction. 
 + 
 +* Week 3 (12 Jun) 
 +  * Configured ''%%ntfy%%'' on Warner’s Server to enable seamless notifications for build events. 
 +  * Successfully built the ''%%freebsd-src%%'' on the server, ensuring a smooth and error-free process. 
 +  * Established a streamlined development workflow, optimizing collaboration and productivity. 
 + 
 +* Week 4 (19 Jun) 
 +  * Successfully finalized the ''%%build.lua%%'' script, incorporating extensive design and significant rewrites of the previous code. 
 +  * Achieved comprehensive functionality through careful planning and meticulous execution. 
 + 
 +* Week 5 (26 Jun) 
 +  * Successfully configured luarocks on %%FreeBSD%% Server. 
 +  * Conducted a smoke test on the “amd64:amd64-gpt-ufs-none” architecture combination to ensure smooth functionality. 
 + 
 +* Week 6 (3 July) 
 +  * Wrote ''%%test.lua%%'' script, ensuring its successful design and completion. 
 +  * Evaluated and streamlined the concise reporting process for all build runs. 
 +  * Substantially progressed with the coding tasks, meeting expected milestones. 
 + 
 +* Week 7 (10 July) - [[/MidTerm|MidTerm]] Evaluations [Week Off Work] 
 + 
 +* Week 8 (17 July) 
 +  * Enhanced code styling and resolved potential design issues to improve the overall script. 
 +  * Conducted in-depth testing to ensure robustness of the script and addressed several small issues. 
 + 
 +* Week 9 (24 July) 
 +  * Start working on externalising as much as freebsd related stuff to a ''%%freebsd-util%%'' script while generalising the functionality of ''%%build%%'' script. 
 +  * Above decision will allow me to easily integrate support for all remaining architectures. 
 +  * Start working on collecting qemu recipes for different architectures. 
 + 
 +* Week 10 (31 July) 
 +  * first script end to end works correct 
 + 
 +* Week 11 (7 Aug) 
 +  * all amd64 combination work correctly 
 +  * encountered issues in running arm64 on qemu Synchronous Exception Faults 
 + 
 +* Week 12 (14 Aug) 
 +  * fixing up issues in various parts of the script 
 +  * fixing a critical overwrite flaw in the script 
 + 
 +* Week 13 (21 Aug) - Final Evaluations 
 +  * peformed several formalities related to program 
 + 
 +Extension for 4 weeks 
 + 
 +* Week 14 (28 Aug) 
 +  * trying to get the riscv64 boot up using openSBI 
 + 
 +* Week 15 (4 Sept) 
 +  * riscv64-zfs-gpt-none(encryption) & riscv64-ufs-gpt-none(encryption) works fine and builds successfully. 
 + 
 +* Week 16 (11 Sept) 
 +  * blocked due to not able to get the arm sd image to extract correctly 
 +  * consulted with kyle evans with suggestion to look at mounting the partitions of image 
 + 
 +* Week 17 (18 Sept) [Kinda Busy week at work \0-0/] 
 + 
 +* Week 18 (25 Sept) 
 +  * worked on creating a custom image for arm image and host it somewhere. 
 + 
 +* Final Tasks 
 +  * Work on armv7 image 
 +  * Try to run tests parallely using python 
 +  * Integration with CI 
 +  * Work on powerpc, powerpc64
  
 ===== The Code ===== ===== The Code =====
  
-(Link to your code, for example https://svnweb.freebsd.org/socsvn/soc2018/username/ or a Github URL etc)+Github URL : https://github.com/mightyjoe781/freebsd-src/tree/bootloader-smk
  
 ===== Notes ===== ===== Notes =====
Line 42: Line 122:
 ===== Useful links ===== ===== Useful links =====
  
-(Links to any external resources, work, research etc which may be useful to you or to anybody wanting to understand your work)+* site: https://books.minetest.in/freebsd/gsoc 
 + 
 +* freebsd on m1 mac: https://books.minetest.in/freebsd/freebsd_m1/
  
  • summerofcode2023projects/citestharnessforbootloader.1684945250.txt.gz
  • Last modified: 2023/05/24 16:20
  • by SudhanshuKashyap