From 3565580f40d505636feeab9f5bc32775f2c47c5a Mon Sep 17 00:00:00 2001 From: bbracker Date: Tue, 13 Jul 2021 12:40:14 -0400 Subject: [PATCH] updated buildroot make procedure to incorporate configs more robustly --- .gitignore | 1 + .../linux-testgen/WALLY-README.txt | 41 +++++++++++++------ .../buildroot-config-src/make-buildroot.sh | 3 ++ 3 files changed, 32 insertions(+), 13 deletions(-) create mode 100755 wally-pipelined/linux-testgen/buildroot-config-src/make-buildroot.sh diff --git a/.gitignore b/.gitignore index e5fdb399..353977d1 100644 --- a/.gitignore +++ b/.gitignore @@ -30,5 +30,6 @@ wally-pipelined/linux-testgen/x* !wally-pipelined/linux-testgen/linux-testvectors/tvLinker.sh wally-pipelined/linux-testgen/buildroot/ wally-pipelined/linux-testgen/buildroot-image-output +wally-pipelined/linux-testgen/buildroot-config-src/main.config.old wally-pipelined/regression/slack-notifier/slack-webhook-url.txt diff --git a/wally-pipelined/linux-testgen/WALLY-README.txt b/wally-pipelined/linux-testgen/WALLY-README.txt index d005bb03..5e1228a0 100644 --- a/wally-pipelined/linux-testgen/WALLY-README.txt +++ b/wally-pipelined/linux-testgen/WALLY-README.txt @@ -8,31 +8,46 @@ you'll need to build the new Linux image, simulate it, and parse its output, as described below. *To build a new Linux image: - 1. Git clone the Buildroot repository to ./buildroot. + 1. Git clone the Buildroot repository to ./buildroot: + git clone https://github.com/buildroot/buildroot.git For reference, Wally (*** will) be proven to work on an image built using Buildroot when the following was the most recent commit to the Buildroot repo: commit 4047e10ed6e20492bae572d4929eaa5d67eed746 Author: Gwenhael Goavec-Merou Date: Wed Jun 30 06:27:10 2021 +0200 - 2. Then hard link ./buildroot-config-src/main.config to ./buildroot/.config. - That config file will in turn point to the other config files in ./buildroot-config-src. - - 3. If you wish to modify the configs, then in ./buildroot: + 2. If you wish to modify the configs, then in ./buildroot: a. Run "make menuconfig" or "make linux-menuconfig" or "make busybox-menuconfig". - b. For linux-menuconfig and busybox-menuconfig, use the TUI (terminal UI) to load in - configs from "../../../../buildroot-config-src/.config" - We have to tell make to go back up several dirs because for linux and busybox, - make traverses down to ./buildroot/output/build/. + b. Use the TUI (terminal UI) to load in the existing configs. + + For menuconfig, you can load in the source file from + "../buildroot-config-src/main.config" + + For linux-menuconfig or busybox-menuconfig, load in from + "../../../../buildroot-config-src/.config" + because for linux and busybox, make traverses down to + ./buildroot/output/build/. + + One annoying thing about the TUI is that if it has a path already loaded, + then before you can enter the new path to buildroot-config-src, you need to + delete the existing one from the textbox. Doing so requires more than backspace. + Once you've deleted as much of the existing path as you can see, arrow left to + check if there is more text you need to delete. + c. Likewise, when you are done editing, tell the TUI to save to the same location. - 4. Then finally you can run make. Note that it may be necessary to rerun make twice, - once when main.config asks for an "Image" output, and once when main.config - "vmlinux" output. + 3. Finally go to ./buildroot-config-src and run make-buildroot.sh. + This script copies ./buildroot-config-src/main.config to ./buildroot/.config + and then invokes make. This is clumsy but effective because buildroot + sometimes does weird things to .config, like moving it to .config.old and + making a new .config -- doing so can really mess up symbolic/hard links. + + 4. If you'd like debugging symbols, then reconfigure Buildroot to output "vmlinux" + and run make-buildroot again. *To generate new RAMs and testvectors from a Linux image: 1. sym link ./buildroot-image-output to either your new image in ./buildroot/output/image - or the existing image at /courses/e190ax/buildroot/output/image on Tera. + or the existing image at /courses/e190ax/buildroot-image-output on Tera. This might require first deleting the empty buildroot-image-output directory. 2. Then run ./testvector-generation/logBuildrootMem.sh to generate RAMs. 3. Then run ./testvector-generation/logAllBuildroot.sh to generate testvectors. diff --git a/wally-pipelined/linux-testgen/buildroot-config-src/make-buildroot.sh b/wally-pipelined/linux-testgen/buildroot-config-src/make-buildroot.sh new file mode 100755 index 00000000..841db1ba --- /dev/null +++ b/wally-pipelined/linux-testgen/buildroot-config-src/make-buildroot.sh @@ -0,0 +1,3 @@ +cp main.config ../buildroot/.config +cd ../buildroot +make