diff --git a/README.adoc b/README.adoc index c837804..a7e2cd4 100644 --- a/README.adoc +++ b/README.adoc @@ -539,8 +539,7 @@ You have to checkout to the latest tag to ensure that the scripts match the rele Be saner and use our custom built QEMU instead: .... -git submodule update --init --recursive "$(./getvar qemu_source_dir)" -./build-qemu +./build --download-dependencies qemu ./run .... @@ -549,7 +548,8 @@ This also allows you to <> if you're into that To build the kernel modules as in <> do: .... -./build-linux -- modules_prepare +git submodule update --depth 1 --init --recursive "$(./getvar linux_source_dir)" +./build-linux --no-modules-install -- modules_prepare ./build-modules ./run .... @@ -561,6 +561,7 @@ This command automatically falls back to the Ubuntu packaged GCC since you don't To modify the Linux kernel, build and use it as usual: .... +git submodule update --depth 1 --init --recursive "$(./getvar linux_source_dir)" ./build-linux ./run .... diff --git a/build b/build index 9f2cd79..ba59888 100755 --- a/build +++ b/build @@ -246,7 +246,7 @@ so looping over all of them would waste time. **gem5_deps ), 'linux': _Component( - self._build_file('build-linux', gem5_build_type='fast'), + self._build_file('build-linux'), dependencies={'buildroot'}, submodules_shallow={'linux'}, apt_get_pkgs={ diff --git a/build-linux b/build-linux index 0ef3424..9f56951 100755 --- a/build-linux +++ b/build-linux @@ -26,6 +26,12 @@ configs. Takes precedence over any config files. help='''\ Also use the given kernel configuration fragment file. Pass multiple times to use multiple fragment files. +''' + ) + self.add_argument( + '--config-only', default=False, + help='''\ +Configure the kernel, but don't build it. ''' ) self.add_argument( @@ -44,9 +50,9 @@ Ignore --custom-config-file. ''' ) self.add_argument( - '--config-only', default=False, + '--modules-install', default=True, help='''\ -Configure the kernel, but don't build it. +Run `make modules_install` after `make`. ''' ) self.add_argument( @@ -138,19 +144,20 @@ Configure the kernel, but don't build it. }, **common_args ) - self.sh.run_cmd( - ( - common_make_args + - [ - 'INSTALL_MOD_PATH={}'.format(self.env['out_rootfs_overlay_dir']), LF, - 'modules_install', LF, - ] - ), - **common_args - ) - # TODO: remove build and source https://stackoverflow.com/questions/13578618/what-does-build-and-source-link-do-in-lib-modules-kernel-version - # TODO Basically all kernel modules also basically leak full host paths. Just terrible. Buildroot deals with that stuff nicely for us. - # self.rmrf() + if self.env['modules_install']: + self.sh.run_cmd( + ( + common_make_args + + [ + 'INSTALL_MOD_PATH={}'.format(self.env['out_rootfs_overlay_dir']), LF, + 'modules_install', LF, + ] + ), + **common_args + ) + # TODO: remove build and source https://stackoverflow.com/questions/13578618/what-does-build-and-source-link-do-in-lib-modules-kernel-version + # TODO Basically all kernel modules also basically leak full host paths. Just terrible. Buildroot deals with that stuff nicely for us. + # self.rmrf() def get_build_dir(self): return self.env['linux_build_dir']