Skip to content

Commit f03e6ea

Browse files
committed
linux: add --linux-source-dir to have custom linux source dir
1 parent 38ba2b8 commit f03e6ea

File tree

3 files changed

+31
-22
lines changed

3 files changed

+31
-22
lines changed

README.adoc

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -561,7 +561,7 @@ To modify the Linux kernel, build and use it as usual:
561561
For gem5, do:
562562
563563
....
564-
git submodule update --init --depth 1 "$(./getvar linux_src_dir)"
564+
git submodule update --init --depth 1 "$(./getvar linux_source_dir)"
565565
sudo apt-get install qemu-utils
566566
./build-gem5
567567
./run --gem5 --prebuilt
@@ -3491,14 +3491,14 @@ Overview: https://stackoverflow.com/questions/50364863/how-to-get-graphical-gui-
34913491
More concretely:
34923492

34933493
....
3494-
git -C "$(./getvar linux_src_dir)" fetch https://gem5.googlesource.com/arm/linux gem5/v4.15:gem5/v4.15
3495-
git -C "$(./getvar linux_src_dir)" checkout gem5/v4.15
3494+
git -C "$(./getvar linux_source_dir)" fetch https://gem5.googlesource.com/arm/linux gem5/v4.15:gem5/v4.15
3495+
git -C "$(./getvar linux_source_dir)" checkout gem5/v4.15
34963496
./build-linux \
34973497
--arch arm \
3498-
--custom-config-file "$(./getvar linux_src_dir)/arch/arm/configs/gem5_defconfig" \
3498+
--custom-config-file "$(./getvar linux_source_dir)/arch/arm/configs/gem5_defconfig" \
34993499
--linux-build-id gem5-v4.15 \
35003500
;
3501-
git -C "$(./getvar linux_src_dir)" checkout -
3501+
git -C "$(./getvar linux_source_dir)" checkout -
35023502
./run --arch arm --gem5 --linux-build-id gem5-v4.15
35033503
....
35043504

@@ -3566,15 +3566,15 @@ Tested on: link:http://github.com/cirosantilli/linux-kernel-module-cheat/commit/
35663566
For `aarch64` we also need to configure the kernel with link:linux_config/display[]:
35673567

35683568
....
3569-
git -C "$(./getvar linux_src_dir)" fetch https://gem5.googlesource.com/arm/linux gem5/v4.15:gem5/v4.15
3570-
git -C "$(./getvar linux_src_dir)" checkout gem5/v4.15
3569+
git -C "$(./getvar linux_source_dir)" fetch https://gem5.googlesource.com/arm/linux gem5/v4.15:gem5/v4.15
3570+
git -C "$(./getvar linux_source_dir)" checkout gem5/v4.15
35713571
./build-linux \
35723572
--arch aarch64 \
35733573
--config-fragment linux_config/display \
3574-
--custom-config-file "$(./getvar linux_src_dir)/arch/arm64/configs/gem5_defconfig" \
3574+
--custom-config-file "$(./getvar linux_source_dir)/arch/arm64/configs/gem5_defconfig" \
35753575
--linux-build-id gem5-v4.15 \
35763576
;
3577-
git -C "$(./getvar linux_src_dir)" checkout -
3577+
git -C "$(./getvar linux_source_dir)" checkout -
35783578
./run --arch aarch64 --gem5 --linux-build-id gem5-v4.15
35793579
....
35803580

@@ -3590,15 +3590,15 @@ The key option to enable support in Linux is `DRM_MALI_DISPLAY=y` which we enabl
35903590

35913591
....
35923592
./build-linux
3593-
git -C "$(./getvar linux_src_dir)" fetch https://gem5.googlesource.com/arm/linux gem5/v4.15:gem5/v4.15
3594-
git -C "$(./getvar linux_src_dir)" checkout gem5/v4.15
3593+
git -C "$(./getvar linux_source_dir)" fetch https://gem5.googlesource.com/arm/linux gem5/v4.15:gem5/v4.15
3594+
git -C "$(./getvar linux_source_dir)" checkout gem5/v4.15
35953595
./build-linux \
35963596
--arch aarch64 \
35973597
--config-fragment linux_config/display \
3598-
--custom-config-file "$(./getvar linux_src_dir)/arch/arm64/configs/gem5_defconfig" \
3598+
--custom-config-file "$(./getvar linux_source_dir)/arch/arm64/configs/gem5_defconfig" \
35993599
--linux-build-id gem5-v4.15 \
36003600
;
3601-
git -C "$(./getvar linux_src_dir)" checkout -
3601+
git -C "$(./getvar linux_source_dir)" checkout -
36023602
./run --arch aarch64 --dp650 --gem5 --linux-build-id gem5-v4.15
36033603
....
36043604

@@ -4139,7 +4139,7 @@ cat /proc/version
41394139
or in the source:
41404140

41414141
....
4142-
cd "$(./getvar linux_src_dir)"
4142+
cd "$(./getvar linux_source_dir)"
41434143
git log | grep -E ' Linux [0-9]+\.' | head
41444144
....
41454145

@@ -11415,12 +11415,12 @@ If you want to keep two builds around, one for the latest Linux version, and the
1141511415
./build-linux
1141611416
1141711417
# Build another branch.
11418-
git -C "$(./getvar linux_src_dir)" fetch --tags --unshallow
11419-
git -C "$(./getvar linux_src_dir)" checkout v4.16
11418+
git -C "$(./getvar linux_source_dir)" fetch --tags --unshallow
11419+
git -C "$(./getvar linux_source_dir)" checkout v4.16
1142011420
./build-linux --linux-build-id v4.16
1142111421
1142211422
# Restore master.
11423-
git -C "$(./getvar linux_src_dir)" checkout -
11423+
git -C "$(./getvar linux_source_dir)" checkout -
1142411424
1142511425
# Run master.
1142611426
./run
@@ -11921,7 +11921,7 @@ This example is based on the Linux kernel, for which we used to have patches, bu
1192111921
# Last point before out patches.
1192211922
last_mainline_revision=v4.15
1192311923
next_mainline_revision=v4.16
11924-
cd "$(./getvar linux_src_dir)"
11924+
cd "$(./getvar linux_source_dir)"
1192511925
1192611926
# Create a branch before the rebase in case things go wrong.
1192711927
git checkout -b "lkmc-${last_mainline_revision}"

build-linux

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ Configure the kernel, but don't build it.
5858
gcc = common.get_toolchain_tool(tool)
5959
prefix = gcc[:-len(tool)]
6060
common_args = {
61-
'cwd': common.linux_src_dir,
61+
'cwd': common.linux_source_dir,
6262
}
6363
ccache = shutil.which('ccache')
6464
if ccache is not None:
@@ -99,7 +99,7 @@ Configure the kernel, but don't build it.
9999
)
100100
common.run_cmd(
101101
[
102-
os.path.join(common.linux_src_dir, 'scripts', 'kconfig', 'merge_config.sh'), common.Newline,
102+
os.path.join(common.linux_source_dir, 'scripts', 'kconfig', 'merge_config.sh'), common.Newline,
103103
'-m', common.Newline,
104104
'-O', build_dir, common.Newline,
105105
os.path.join(build_dir, '.config'), common.Newline,

common.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,8 @@
4848
buildroot_src_dir = os.path.join(submodules_dir, 'buildroot')
4949
crosstool_ng_src_dir = os.path.join(submodules_dir, 'crosstool-ng')
5050
crosstool_ng_supported_archs = set(['arm', 'aarch64'])
51-
linux_src_dir = os.path.join(submodules_dir, 'linux')
5251
linux_config_dir = os.path.join(common.root_dir, 'linux_config')
5352
rootfs_overlay_dir = os.path.join(common.root_dir, 'rootfs_overlay')
54-
extract_vmlinux = os.path.join(linux_src_dir, 'scripts', 'extract-vmlinux')
5553
qemu_src_dir = os.path.join(submodules_dir, 'qemu')
5654
parsec_benchmark_src_dir = os.path.join(submodules_dir, 'parsec-benchmark')
5755
ccache_dir = os.path.join('/usr', 'lib', 'ccache')
@@ -316,6 +314,12 @@ def get_argparse(default_args=None, argparse_args=None):
316314
'--linux-build-dir',
317315
help='Select the directory that contains the Linux kernel build. Overrides linux-build-id.'
318316
)
317+
parser.add_argument(
318+
'--linux-source-dir',
319+
help='''\
320+
Use the given directory as the Linux source tree.
321+
'''
322+
)
319323
parser.add_argument(
320324
'--machine',
321325
help='''Machine type.
@@ -859,6 +863,11 @@ def setup(parser):
859863
common.run_cmd_file = os.path.join(common.run_dir, 'run.sh')
860864

861865
# Linux
866+
if args.linux_source_dir is None:
867+
common.linux_source_dir = os.path.join(submodules_dir, 'linux')
868+
else:
869+
common.linux_source_dir = args.linux_source_dir
870+
common.extract_vmlinux = os.path.join(linux_source_dir, 'scripts', 'extract-vmlinux')
862871
common.linux_buildroot_build_dir = os.path.join(common.buildroot_build_build_dir, 'linux-custom')
863872
if args.linux_build_dir is None:
864873
common.linux_build_dir = os.path.join(common.out_dir, 'linux', args.linux_build_id, args.arch)

0 commit comments

Comments
 (0)