From 335b4be114b32515a38191729b41ecef3789bd19 Mon Sep 17 00:00:00 2001 From: Ciro Santilli Date: Wed, 28 Jun 2017 22:27:50 +0100 Subject: [PATCH] Uber easy arch swap --- README.md | 5 ----- run | 6 +++--- runqemu | 2 +- setoutarch | 10 ++++++++++ 4 files changed, 14 insertions(+), 9 deletions(-) create mode 100755 setoutarch diff --git a/README.md b/README.md index 419015a..eb23aa4 100644 --- a/README.md +++ b/README.md @@ -225,11 +225,6 @@ And then tell GDB where the module was loaded with: The portability of the kernel and toolchains is amazing. -If you already have an x86 build present, first: - - cd buildroot - mv output output.x86~ - First ARM build: ./run -a arm diff --git a/run b/run index 64614be..adbb299 100755 --- a/run +++ b/run @@ -1,6 +1,5 @@ #!/usr/bin/env bash set -e -cd buildroot arch='x86_64' while getopts a: OPT > /dev/null 2>&1; do case "$OPT" in @@ -19,6 +18,9 @@ case "$arch" in defconfig=qemu_arm_versatile_defconfig ;; esac + +./setoutarch "$arch" +cd buildroot for p in $(find '../buildroot_patches/' -maxdepth 1 -name '*.patch' -print); do patch -N -r - -p 1 <"$p" || : done @@ -26,7 +28,6 @@ make BR2_EXTERNAL="$(pwd)/../kernel_module" "$defconfig" # TODO Can't get rid of this for now. # http://stackoverflow.com/questions/44078245/is-it-possible-to-use-config-fragments-with-buildroots-config cat ../buildroot_config_fragment >> .config - # HOST_QEMU_OPTS is a hack that happens to work because the QEMU package luckly uses += at all times. # It shouldn't be necessary in the first place: https://bugs.busybox.net/show_bug.cgi?id=9936 # Even if were an autotools package, there is no general way currently to pass extra configs to it: @@ -43,6 +44,5 @@ env \ kernel_module-rebuild \ all \ ; - cd .. ./runqemu "$@" diff --git a/runqemu b/runqemu index c112630..25b0f2f 100755 --- a/runqemu +++ b/runqemu @@ -43,6 +43,7 @@ done shift "$(($OPTIND - 1))" extra_flags="$extra_flags $@" +./setoutarch "$arch" buildroot_out_dir='./buildroot/output' images_dir="$buildroot_out_dir/images" qemu_common="\ @@ -83,7 +84,6 @@ case "$arch" in " ;; esac -echo "$cmd" if "$debug" && ! "$nographic" && [ ! "$arch" = 'arm' ]; then eval "$cmd" &>/dev/null & # TODO: Ctrl +C gets sent to QEMU? Why? Does not happen if I run diff --git a/setoutarch b/setoutarch new file mode 100755 index 0000000..a0c0d39 --- /dev/null +++ b/setoutarch @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +# Maintain different buildroot/output archs with symlinks. +if [ "$#" -ne 1 ]; then + exit 1 +fi +arch="$1" +dst="output.${arch}~" +src='buildroot/output' +mkdir -p "buildroot/$dst" +ln -fns "$dst" "$src"