Commit ffae353cd18217b7b534782a4c6868f0bc42a140

Authored by Eric Lee
1 parent 5ab46bc5e8

Upgrade Meson version to 0.45

Showing 22 changed files with 1363 additions and 0 deletions Inline Diff

conf/machine/smarcimx8m2g.conf
1 #@TYPE: Machine 1 #@TYPE: Machine
2 #@NAME: EMBEDIAN SMARC-iMX8M COMPUTER ON MODULES with 2GB LPDDR4 MEMORY 2 #@NAME: EMBEDIAN SMARC-iMX8M COMPUTER ON MODULES with 2GB LPDDR4 MEMORY
3 #@SOC: i.MX8MQ 3 #@SOC: i.MX8MQ
4 #@DESCRIPTION: Machine configuration for Embedian SMARC-iMX8M 4 #@DESCRIPTION: Machine configuration for Embedian SMARC-iMX8M
5 #@MAINTAINER: Eric Lee <eric.lee@embedian.com> 5 #@MAINTAINER: Eric Lee <eric.lee@embedian.com>
6 # 6 #
7 # http://www.www.embedian.com 7 # http://www.www.embedian.com
8 8
9 MACHINEOVERRIDES =. "mx8:mx8m:mx8mq:" 9 MACHINEOVERRIDES =. "mx8:mx8m:mx8mq:"
10 require conf/machine/include/imx-base.inc 10 require conf/machine/include/imx-base.inc
11 require conf/machine/include/arm/arch-arm64.inc 11 require conf/machine/include/arm/arch-arm64.inc
12 12
13 MACHINE_FEATURES += " usbgadget vfat ext2 alsa serial pci wifi bluetooth" 13 MACHINE_FEATURES += " usbgadget vfat ext2 alsa serial pci wifi bluetooth"
14 14
15 IMAGE_FEATURES += "package-management" 15 IMAGE_FEATURES += "package-management"
16 16
17 # Embedian BSP default providers 17 # Embedian BSP default providers
18 PREFERRED_PROVIDER_virtual/kernel_smarcimx8m2g ?= "linux-smarcimx8m" 18 PREFERRED_PROVIDER_virtual/kernel_smarcimx8m2g ?= "linux-smarcimx8m"
19 PREFERRED_VERSION_linux-smarcimx8m2g_smarcimx8m2g = "4.14.78" 19 PREFERRED_VERSION_linux-smarcimx8m2g_smarcimx8m2g = "4.14.78"
20 20
21 KERNEL_DEVICETREE = " \ 21 KERNEL_DEVICETREE = " \
22 embedian/fsl-smarcimx8mq.dtb \ 22 embedian/fsl-smarcimx8mq.dtb \
23 embedian/fsl-smarcimx8mq-dcss-lvds.dtb \ 23 embedian/fsl-smarcimx8mq-dcss-lvds.dtb \
24 embedian/fsl-smarcimx8mq-lcdif-lvds.dtb \ 24 embedian/fsl-smarcimx8mq-lcdif-lvds.dtb \
25 embedian/fsl-smarcimx8mq-hdmi.dtb \ 25 embedian/fsl-smarcimx8mq-hdmi.dtb \
26 embedian/fsl-smarcimx8mq-dp.dtb \ 26 embedian/fsl-smarcimx8mq-dp.dtb \
27 embedian/fsl-smarcimx8mq-edp.dtb \ 27 embedian/fsl-smarcimx8mq-edp.dtb \
28 embedian/fsl-smarcimx8mq-dual-display.dtb \ 28 embedian/fsl-smarcimx8mq-dual-display.dtb \
29 " 29 "
30 IMAGE_BOOTFILES_DEPENDS += "imx-m4-demos:do_deploy" 30 IMAGE_BOOTFILES_DEPENDS += "imx-m4-demos:do_deploy"
31 IMAGE_BOOTFILES += "imx8mq_m4_TCM_hello_world.bin imx8mq_m4_TCM_rpmsg_lite_pingpong_rtos_linux_remote.bin imx8mq_m4_TCM_rpmsg_lite_str_echo_rtos.bin" 31 IMAGE_BOOTFILES += "imx8mq_m4_TCM_hello_world.bin imx8mq_m4_TCM_rpmsg_lite_pingpong_rtos_linux_remote.bin imx8mq_m4_TCM_rpmsg_lite_str_echo_rtos.bin"
32 32
33 PREFERRED_PROVIDER_u-boot_smarcimx8m2g = "u-boot-smarcimx8m" 33 PREFERRED_PROVIDER_u-boot_smarcimx8m2g = "u-boot-smarcimx8m"
34 PREFERRED_PROVIDER_virtual/bootloader_smarcimx8m2g = "u-boot-smarcimx8m" 34 PREFERRED_PROVIDER_virtual/bootloader_smarcimx8m2g = "u-boot-smarcimx8m"
35 35
36 UBOOT_CONFIG ??= "sd" 36 UBOOT_CONFIG ??= "sd"
37 UBOOT_CONFIG[sd] = "smarcimx8mq_2g_ser3_defconfig,sdcard" 37 UBOOT_CONFIG[sd] = "smarcimx8mq_2g_ser3_defconfig,sdcard"
38 SPL_BINARY = "spl/u-boot-spl.bin" 38 SPL_BINARY = "spl/u-boot-spl.bin"
39 39
40 # Set DDR FIRMWARE 40 # Set DDR FIRMWARE
41 DDR_FIRMWARE_NAME = "lpddr4_pmu_train_1d_imem.bin lpddr4_pmu_train_1d_dmem.bin lpddr4_pmu_train_2d_imem.bin lpddr4_pmu_train_2d_dmem.bin" 41 DDR_FIRMWARE_NAME = "lpddr4_pmu_train_1d_imem.bin lpddr4_pmu_train_1d_dmem.bin lpddr4_pmu_train_2d_imem.bin lpddr4_pmu_train_2d_dmem.bin"
42 42
43 # Set U-Boot DTB 43 # Set U-Boot DTB
44 UBOOT_DTB_NAME = "fsl-smarcimx8mq.dtb" 44 UBOOT_DTB_NAME = "fsl-smarcimx8mq.dtb"
45 45
46 # Set imx-mkimage boot target 46 # Set imx-mkimage boot target
47 IMXBOOT_TARGETS = "flash_evk flash_evk_no_hdmi flash_dp_evk" 47 IMXBOOT_TARGETS = "flash_evk flash_evk_no_hdmi flash_dp_evk"
48 48
49 SERIAL_CONSOLE = "115200 ttymxc0" 49 SERIAL_CONSOLE = "115200 ttymxc0"
50 50
51 IMAGE_BOOTLOADER = "imx-boot" 51 IMAGE_BOOTLOADER = "imx-boot"
52 52
53 BOOT_SPACE = "65536" 53 BOOT_SPACE = "65536"
54 54
55 LOADADDR = "" 55 LOADADDR = ""
56 UBOOT_SUFFIX = "bin" 56 UBOOT_SUFFIX = "bin"
57 UBOOT_MAKE_TARGET = "" 57 UBOOT_MAKE_TARGET = ""
58 IMX_BOOT_SEEK = "33" 58 IMX_BOOT_SEEK = "33"
59 59
60 PREFERRED_RPROVIDER_ptpd = "ptpd" 60 PREFERRED_RPROVIDER_ptpd = "ptpd"
61 PREFERRED_RPROVIDER_ptpd-dev = "ptpd" 61 PREFERRED_RPROVIDER_ptpd-dev = "ptpd"
62 62
63 MACHINE_EXTRA_RDEPENDS += " \ 63 MACHINE_EXTRA_RDEPENDS += " \
64 packagegroup-tools-bluetooth \ 64 packagegroup-tools-bluetooth \
65 pm-utils \ 65 pm-utils \
66 kmod \ 66 kmod \
67 hdparm \ 67 hdparm \
68 gptfdisk \ 68 gptfdisk \
69 lftp \ 69 lftp \
70 vim \ 70 vim \
71 ntp \ 71 ntp \
72 boost \ 72 boost \
73 nodejs \ 73 nodejs \
74 networkmanager \ 74 networkmanager \
75 imx-gpu-viv \
75 " 76 "
76 77
77 BBMASK_prepend = "fsl-image-mfgtool-initramfs " 78 BBMASK_prepend = "fsl-image-mfgtool-initramfs "
78 79
79 # Packages added to all images (including core-image-minimal) 80 # Packages added to all images (including core-image-minimal)
80 IMAGE_INSTALL_append = " \ 81 IMAGE_INSTALL_append = " \
81 firmware-imx-sdma \ 82 firmware-imx-sdma \
82 firmware-imx-epdc \ 83 firmware-imx-epdc \
83 fsl-rc-local \ 84 fsl-rc-local \
84 " 85 "
85 86
86 IMAGE_FSTYPES = "tar.bz2" 87 IMAGE_FSTYPES = "tar.bz2"
87 88
88 # Ship all kernel modules by default 89 # Ship all kernel modules by default
89 MACHINE_EXTRA_RRECOMMENDS = "kernel-modules" 90 MACHINE_EXTRA_RRECOMMENDS = "kernel-modules"
90 91
91 MACHINE_FIRMWARE_append_mx8 = " linux-firmware-ath10k" 92 MACHINE_FIRMWARE_append_mx8 = " linux-firmware-ath10k"
92 93
conf/machine/smarcimx8m4g.conf
1 #@TYPE: Machine 1 #@TYPE: Machine
2 #@NAME: EMBEDIAN SMARC-iMX8M COMPUTER ON MODULES with 2GB LPDDR4 MEMORY 2 #@NAME: EMBEDIAN SMARC-iMX8M COMPUTER ON MODULES with 2GB LPDDR4 MEMORY
3 #@SOC: i.MX8MQ 3 #@SOC: i.MX8MQ
4 #@DESCRIPTION: Machine configuration for Embedian SMARC-iMX8M 4 #@DESCRIPTION: Machine configuration for Embedian SMARC-iMX8M
5 #@MAINTAINER: Eric Lee <eric.lee@embedian.com> 5 #@MAINTAINER: Eric Lee <eric.lee@embedian.com>
6 # 6 #
7 # http://www.www.embedian.com 7 # http://www.www.embedian.com
8 8
9 MACHINEOVERRIDES =. "mx8:mx8m:mx8mq:" 9 MACHINEOVERRIDES =. "mx8:mx8m:mx8mq:"
10 require conf/machine/include/imx-base.inc 10 require conf/machine/include/imx-base.inc
11 require conf/machine/include/arm/arch-arm64.inc 11 require conf/machine/include/arm/arch-arm64.inc
12 12
13 MACHINE_FEATURES += " usbgadget vfat ext2 alsa serial pci wifi bluetooth" 13 MACHINE_FEATURES += " usbgadget vfat ext2 alsa serial pci wifi bluetooth"
14 14
15 IMAGE_FEATURES += "package-management" 15 IMAGE_FEATURES += "package-management"
16 16
17 # Embedian BSP default providers 17 # Embedian BSP default providers
18 PREFERRED_PROVIDER_virtual/kernel_smarcimx8m4g ?= "linux-smarcimx8m" 18 PREFERRED_PROVIDER_virtual/kernel_smarcimx8m4g ?= "linux-smarcimx8m"
19 PREFERRED_VERSION_linux-smarcimx8m_smarcimx8m4g = "4.14.78" 19 PREFERRED_VERSION_linux-smarcimx8m_smarcimx8m4g = "4.14.78"
20 20
21 KERNEL_DEVICETREE = " \ 21 KERNEL_DEVICETREE = " \
22 embedian/fsl-smarcimx8mq.dtb \ 22 embedian/fsl-smarcimx8mq.dtb \
23 embedian/fsl-smarcimx8mq-dcss-lvds.dtb \ 23 embedian/fsl-smarcimx8mq-dcss-lvds.dtb \
24 embedian/fsl-smarcimx8mq-lcdif-lvds.dtb \ 24 embedian/fsl-smarcimx8mq-lcdif-lvds.dtb \
25 embedian/fsl-smarcimx8mq-hdmi.dtb \ 25 embedian/fsl-smarcimx8mq-hdmi.dtb \
26 embedian/fsl-smarcimx8mq-dp.dtb \ 26 embedian/fsl-smarcimx8mq-dp.dtb \
27 embedian/fsl-smarcimx8mq-edp.dtb \ 27 embedian/fsl-smarcimx8mq-edp.dtb \
28 embedian/fsl-smarcimx8mq-dual-display.dtb \ 28 embedian/fsl-smarcimx8mq-dual-display.dtb \
29 " 29 "
30 IMAGE_BOOTFILES_DEPENDS += "imx-m4-demos:do_deploy" 30 IMAGE_BOOTFILES_DEPENDS += "imx-m4-demos:do_deploy"
31 IMAGE_BOOTFILES += "imx8mq_m4_TCM_hello_world.bin imx8mq_m4_TCM_rpmsg_lite_pingpong_rtos_linux_remote.bin imx8mq_m4_TCM_rpmsg_lite_str_echo_rtos.bin" 31 IMAGE_BOOTFILES += "imx8mq_m4_TCM_hello_world.bin imx8mq_m4_TCM_rpmsg_lite_pingpong_rtos_linux_remote.bin imx8mq_m4_TCM_rpmsg_lite_str_echo_rtos.bin"
32 32
33 PREFERRED_PROVIDER_u-boot_smarcimx8m4g = "u-boot-smarcimx8m" 33 PREFERRED_PROVIDER_u-boot_smarcimx8m4g = "u-boot-smarcimx8m"
34 PREFERRED_PROVIDER_virtual/bootloader_smarcimx8m4g = "u-boot-smarcimx8m" 34 PREFERRED_PROVIDER_virtual/bootloader_smarcimx8m4g = "u-boot-smarcimx8m"
35 35
36 UBOOT_CONFIG ??= "sd" 36 UBOOT_CONFIG ??= "sd"
37 UBOOT_CONFIG[sd] = "smarcimx8mq_4g_ser3_defconfig,sdcard" 37 UBOOT_CONFIG[sd] = "smarcimx8mq_4g_ser3_defconfig,sdcard"
38 SPL_BINARY = "spl/u-boot-spl.bin" 38 SPL_BINARY = "spl/u-boot-spl.bin"
39 39
40 # Set DDR FIRMWARE 40 # Set DDR FIRMWARE
41 DDR_FIRMWARE_NAME = "lpddr4_pmu_train_1d_imem.bin lpddr4_pmu_train_1d_dmem.bin lpddr4_pmu_train_2d_imem.bin lpddr4_pmu_train_2d_dmem.bin" 41 DDR_FIRMWARE_NAME = "lpddr4_pmu_train_1d_imem.bin lpddr4_pmu_train_1d_dmem.bin lpddr4_pmu_train_2d_imem.bin lpddr4_pmu_train_2d_dmem.bin"
42 42
43 # Set U-Boot DTB 43 # Set U-Boot DTB
44 UBOOT_DTB_NAME = "fsl-smarcimx8mq.dtb" 44 UBOOT_DTB_NAME = "fsl-smarcimx8mq.dtb"
45 45
46 # Set imx-mkimage boot target 46 # Set imx-mkimage boot target
47 IMXBOOT_TARGETS = "flash_evk flash_evk_no_hdmi flash_dp_evk" 47 IMXBOOT_TARGETS = "flash_evk flash_evk_no_hdmi flash_dp_evk"
48 48
49 SERIAL_CONSOLE = "115200 ttymxc0" 49 SERIAL_CONSOLE = "115200 ttymxc0"
50 50
51 IMAGE_BOOTLOADER = "imx-boot" 51 IMAGE_BOOTLOADER = "imx-boot"
52 52
53 BOOT_SPACE = "65536" 53 BOOT_SPACE = "65536"
54 54
55 LOADADDR = "" 55 LOADADDR = ""
56 UBOOT_SUFFIX = "bin" 56 UBOOT_SUFFIX = "bin"
57 UBOOT_MAKE_TARGET = "" 57 UBOOT_MAKE_TARGET = ""
58 IMX_BOOT_SEEK = "33" 58 IMX_BOOT_SEEK = "33"
59 59
60 PREFERRED_RPROVIDER_ptpd = "ptpd" 60 PREFERRED_RPROVIDER_ptpd = "ptpd"
61 PREFERRED_RPROVIDER_ptpd-dev = "ptpd" 61 PREFERRED_RPROVIDER_ptpd-dev = "ptpd"
62 62
63 MACHINE_EXTRA_RDEPENDS += " \ 63 MACHINE_EXTRA_RDEPENDS += " \
64 packagegroup-tools-bluetooth \ 64 packagegroup-tools-bluetooth \
65 pm-utils \ 65 pm-utils \
66 kmod \ 66 kmod \
67 hdparm \ 67 hdparm \
68 gptfdisk \ 68 gptfdisk \
69 lftp \ 69 lftp \
70 vim \ 70 vim \
71 ntp \ 71 ntp \
72 boost \ 72 boost \
73 nodejs \ 73 nodejs \
74 networkmanager \ 74 networkmanager \
75 imx-gpu-viv \
75 " 76 "
76 77
77 BBMASK_prepend = "fsl-image-mfgtool-initramfs " 78 BBMASK_prepend = "fsl-image-mfgtool-initramfs "
78 79
79 # Packages added to all images (including core-image-minimal) 80 # Packages added to all images (including core-image-minimal)
80 IMAGE_INSTALL_append = " \ 81 IMAGE_INSTALL_append = " \
81 firmware-imx-sdma \ 82 firmware-imx-sdma \
82 firmware-imx-epdc \ 83 firmware-imx-epdc \
83 fsl-rc-local \ 84 fsl-rc-local \
84 " 85 "
85 86
86 IMAGE_FSTYPES = "tar.bz2" 87 IMAGE_FSTYPES = "tar.bz2"
87 88
88 # Ship all kernel modules by default 89 # Ship all kernel modules by default
89 MACHINE_EXTRA_RRECOMMENDS = "kernel-modules" 90 MACHINE_EXTRA_RRECOMMENDS = "kernel-modules"
90 91
91 MACHINE_FIRMWARE_append_mx8 = " linux-firmware-ath10k" 92 MACHINE_FIRMWARE_append_mx8 = " linux-firmware-ath10k"
92 93
recipes-devtools/meson/meson.inc
File was created 1 HOMEPAGE = "http://mesonbuild.com"
2 SUMMARY = "A high performance build system"
3
4 LICENSE = "Apache-2.0"
5 LIC_FILES_CHKSUM = "file://COPYING;md5=3b83ef96387f14655fc854ddc3c6bd57"
6
7 SRC_URI = "https://github.com/mesonbuild/meson/releases/download/${PV}/meson-${PV}.tar.gz \
8 file://0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch \
9 file://0002-gobject-introspection-determine-g-ir-scanner-and-g-i.patch \
10 file://0001-Linker-rules-move-cross_args-in-front-of-output_args.patch \
11 file://0003-native_bindir.patch \
12 file://gi-flags.patch \
13 file://gtkdoc-flags.patch \
14 file://0001-python-module-do-not-manipulate-the-environment-when.patch \
15 file://disable-rpath-handling.patch \
16 "
17 SRC_URI[sha256sum] = "92d8afd921751261e36151643464efd3394162f69efbe8cd53e0a66b1cf395eb"
18 SRC_URI[md5sum] = "31bda3519d8c0eb3438267268a78085e"
19
20 SRC_URI_append_class-native = " \
21 file://0002-Make-CPU-family-warnings-fatal.patch \
22 file://0001-Support-building-allarch-recipes-again.patch \
23 "
24
25 UPSTREAM_CHECK_URI = "https://github.com/mesonbuild/meson/releases"
26
27 inherit setuptools3
28
29 RDEPENDS_${PN} = "ninja python3-core python3-modules"
30
31 FILES_${PN} += "${datadir}/polkit-1"
32
recipes-devtools/meson/meson/0001-Linker-rules-move-cross_args-in-front-of-output_args.patch
File was created 1 From 4676224dbdff0f7107e8cbdbe0eab19c855f1454 Mon Sep 17 00:00:00 2001
2 From: Alexander Kanavin <alex.kanavin@gmail.com>
3 Date: Fri, 17 Nov 2017 13:18:28 +0200
4 Subject: [PATCH] Linker rules: move {cross_args} in front of {output_args}
5
6 The previous order was found to break linking in some cases
7 (e.g. when -no-pic -fno-PIC was present in {cross_args}.
8
9 Upstream-Status: Pending
10 Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
11 ---
12 mesonbuild/backend/ninjabackend.py | 2 +-
13 1 file changed, 1 insertion(+), 1 deletion(-)
14
15 diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py
16 index bb281e1..969b70e 100644
17 --- a/mesonbuild/backend/ninjabackend.py
18 +++ b/mesonbuild/backend/ninjabackend.py
19 @@ -1501,7 +1501,7 @@ int dummy;
20 rspfile_content = $ARGS {output_args} $in $LINK_ARGS {cross_args} $aliasing
21 '''
22 else:
23 - command_template = ' command = {executable} $ARGS {output_args} $in $LINK_ARGS {cross_args} $aliasing\n'
24 + command_template = ' command = {executable} $ARGS {cross_args} {output_args} $in $LINK_ARGS $aliasing\n'
25 command = command_template.format(
26 executable=' '.join(compiler.get_linker_exelist()),
27 cross_args=' '.join(cross_args),
28 --
29 2.15.0
30
31
recipes-devtools/meson/meson/0001-Support-building-allarch-recipes-again.patch
File was created 1 From d80d02a3ca6e21fa3d055c88c05234c2eb4db128 Mon Sep 17 00:00:00 2001
2 From: Peter Kjellerstedt <pkj@axis.com>
3 Date: Thu, 26 Jul 2018 16:32:49 +0200
4 Subject: [PATCH] Support building allarch recipes again
5
6 This registers "allarch" as a known CPU family.
7
8 Upstream-Status: Inappropriate [OE specific]
9 Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
10 ---
11 mesonbuild/environment.py | 1 +
12 1 file changed, 1 insertion(+)
13
14 Index: meson-0.47.2/mesonbuild/environment.py
15 ===================================================================
16 --- meson-0.47.2.orig/mesonbuild/environment.py
17 +++ meson-0.47.2/mesonbuild/environment.py
18 @@ -75,6 +75,7 @@ from .compilers import (
19 build_filename = 'meson.build'
20
21 known_cpu_families = (
22 + 'allarch',
23 'aarch64',
24 'arm',
25 'e2k',
26
recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch
File was created 1 From 3ac4e58c5494bd7e603a325b5b5c2b8075849fee Mon Sep 17 00:00:00 2001
2 From: Alexander Kanavin <alex.kanavin@gmail.com>
3 Date: Fri, 4 Aug 2017 16:16:41 +0300
4 Subject: [PATCH] gtkdoc: fix issues that arise when cross-compiling
5
6 Specifically:
7 1) Make it possible to specify a wrapper for executing binaries
8 (usually, some kind of target hardware emulator, such as qemu)
9 2) Explicitly provide CC and LD via command line, as otherwise gtk-doc will
10 try to guess them, incorrectly.
11 3) If things break down, print the full command with arguments,
12 not just the binary name.
13 4) Correctly determine the compiler/linker executables and cross-options when cross-compiling
14
15 Upstream-Status: Pending
16 Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
17
18 ---
19 mesonbuild/modules/gnome.py | 18 +++++++++++++++---
20 mesonbuild/scripts/gtkdochelper.py | 9 +++++++--
21 2 files changed, 22 insertions(+), 5 deletions(-)
22
23 diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py
24 index cb69641..727eb6a 100644
25 --- a/mesonbuild/modules/gnome.py
26 +++ b/mesonbuild/modules/gnome.py
27 @@ -792,6 +792,10 @@ This will become a hard error in the future.''')
28 '--mode=' + mode]
29 if namespace:
30 args.append('--namespace=' + namespace)
31 + gtkdoc_exe_wrapper = state.environment.cross_info.config["properties"].get('gtkdoc_exe_wrapper', None)
32 + if gtkdoc_exe_wrapper is not None:
33 + args.append('--gtkdoc-exe-wrapper=' + gtkdoc_exe_wrapper)
34 +
35 args += self._unpack_args('--htmlargs=', 'html_args', kwargs)
36 args += self._unpack_args('--scanargs=', 'scan_args', kwargs)
37 args += self._unpack_args('--scanobjsargs=', 'scanobjs_args', kwargs)
38 diff --git a/mesonbuild/scripts/gtkdochelper.py b/mesonbuild/scripts/gtkdochelper.py
39 index 948dc5a..9c5bd19 100644
40 --- a/mesonbuild/scripts/gtkdochelper.py
41 +++ b/mesonbuild/scripts/gtkdochelper.py
42 @@ -45,6 +45,7 @@ parser.add_argument('--ignore-headers', dest='ignore_headers', default='')
43 parser.add_argument('--namespace', dest='namespace', default='')
44 parser.add_argument('--mode', dest='mode', default='')
45 parser.add_argument('--installdir', dest='install_dir')
46 +parser.add_argument('--gtkdoc-exe-wrapper', dest='gtkdoc_exe_wrapper')
47
48 def gtkdoc_run_check(cmd, cwd, library_paths=None):
49 if library_paths is None:
50 @@ -64,7 +65,7 @@ def gtkdoc_run_check(cmd, cwd, library_paths=None):
51 # This preserves the order of messages.
52 p, out = Popen_safe(cmd, cwd=cwd, env=env, stderr=subprocess.STDOUT)[0:2]
53 if p.returncode != 0:
54 - err_msg = ["{!r} failed with status {:d}".format(cmd[0], p.returncode)]
55 + err_msg = ["{!r} failed with status {:d}".format(cmd, p.returncode)]
56 if out:
57 err_msg.append(out)
58 raise MesonException('\n'.join(err_msg))
59 @@ -74,7 +75,7 @@ def gtkdoc_run_check(cmd, cwd, library_paths=None):
60 def build_gtkdoc(source_root, build_root, doc_subdir, src_subdirs,
61 main_file, module,
62 html_args, scan_args, fixxref_args, mkdb_args,
63 - gobject_typesfile, scanobjs_args, ld, cc, ldflags, cflags,
64 + gobject_typesfile, scanobjs_args, gtkdoc_exe_wrapper, ld, cc, ldflags, cflags,
65 html_assets, content_files, ignore_headers, namespace,
66 expand_content_files, mode):
67 print("Building documentation for %s" % module)
68 @@ -135,6 +136,9 @@ def build_gtkdoc(source_root, build_root, doc_subdir, src_subdirs,
69 if gobject_typesfile:
70 scanobjs_cmd = ['gtkdoc-scangobj'] + scanobjs_args + ['--types=' + gobject_typesfile,
71 '--module=' + module,
72 + '--run=' + gtkdoc_exe_wrapper,
73 + '--cc=' + cc,
74 + '--ld=' + ld,
75 '--cflags=' + cflags,
76 '--ldflags=' + ldflags,
77 '--cc=' + cc,
78 @@ -238,6 +242,7 @@ def run(args):
79 mkdbargs,
80 options.gobject_typesfile,
81 scanobjsargs,
82 + options.gtkdoc_exe_wrapper,
83 options.ld,
84 options.cc,
85 options.ldflags,
86
recipes-devtools/meson/meson/0001-python-module-do-not-manipulate-the-environment-when.patch
File was created 1 From 45426f06689a520fc47f81ee29b49d509f11ba58 Mon Sep 17 00:00:00 2001
2 From: Alexander Kanavin <alex.kanavin@gmail.com>
3 Date: Mon, 19 Nov 2018 14:24:26 +0100
4 Subject: [PATCH] python module: do not manipulate the environment when calling
5 pkg-config
6
7 Upstream-Status: Inappropriate [oe-core specific]
8 Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
9 ---
10 mesonbuild/modules/python.py | 14 --------------
11 1 file changed, 14 deletions(-)
12
13 diff --git a/mesonbuild/modules/python.py b/mesonbuild/modules/python.py
14 index 1195d8a..df81da4 100644
15 --- a/mesonbuild/modules/python.py
16 +++ b/mesonbuild/modules/python.py
17 @@ -67,26 +67,12 @@ class PythonDependency(ExternalDependency):
18 if DependencyMethods.PKGCONFIG in self.methods and not python_holder.is_pypy:
19 pkg_version = self.variables.get('LDVERSION') or self.version
20 pkg_libdir = self.variables.get('LIBPC')
21 - old_pkg_libdir = os.environ.get('PKG_CONFIG_LIBDIR')
22 - old_pkg_path = os.environ.get('PKG_CONFIG_PATH')
23 -
24 - os.environ.pop('PKG_CONFIG_PATH', None)
25 -
26 - if pkg_libdir:
27 - os.environ['PKG_CONFIG_LIBDIR'] = pkg_libdir
28
29 try:
30 self.pkgdep = PkgConfigDependency('python-{}'.format(pkg_version), environment, kwargs)
31 except Exception:
32 pass
33
34 - if old_pkg_path is not None:
35 - os.environ['PKG_CONFIG_PATH'] = old_pkg_path
36 -
37 - if old_pkg_libdir is not None:
38 - os.environ['PKG_CONFIG_LIBDIR'] = old_pkg_libdir
39 - else:
40 - os.environ.pop('PKG_CONFIG_LIBDIR', None)
41
42 if self.pkgdep and self.pkgdep.found():
43 self.compile_args = self.pkgdep.get_compile_args()
44
recipes-devtools/meson/meson/0002-Make-CPU-family-warnings-fatal.patch
File was created 1 From 2e8553fc01e62ebc4faa240bf20984a8a0ac7387 Mon Sep 17 00:00:00 2001
2 From: Ross Burton <ross.burton@intel.com>
3 Date: Tue, 3 Jul 2018 13:59:09 +0100
4 Subject: [PATCH] Make CPU family warnings fatal
5
6 Upstream-Status: Inappropriate [OE specific]
7 Signed-off-by: Ross Burton <ross.burton@intel.com>
8
9 ---
10 mesonbuild/environment.py | 6 ++----
11 1 file changed, 2 insertions(+), 4 deletions(-)
12
13 diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py
14 index d29a77f..267acf9 100644
15 --- a/mesonbuild/environment.py
16 +++ b/mesonbuild/environment.py
17 @@ -239,9 +239,7 @@ def detect_cpu_family(compilers):
18 return 'x86_64'
19
20 if trial not in known_cpu_families:
21 - mlog.warning('Unknown CPU family {!r}, please report this at '
22 - 'https://github.com/mesonbuild/meson/issues/new with the'
23 - 'output of `uname -a` and `cat /proc/cpuinfo`'.format(trial))
24 + raise EnvironmentException('Unknown CPU family %s, see https://wiki.yoctoproject.org/wiki/Meson/UnknownCPU for directions.' % trial)
25
26 return trial
27
28 @@ -1014,7 +1012,7 @@ class CrossBuildInfo:
29 raise EnvironmentException('Malformed value in cross file variable %s.' % entry)
30
31 if entry == 'cpu_family' and res not in known_cpu_families:
32 - mlog.warning('Unknown CPU family %s, please report this at https://github.com/mesonbuild/meson/issues/new' % value)
33 + raise EnvironmentException('Unknown CPU family %s, see https://wiki.yoctoproject.org/wiki/Meson/UnknownCPU for directions.' % value)
34
35 if self.ok_type(res):
36 self.config[s][entry] = res
37
recipes-devtools/meson/meson/0002-gobject-introspection-determine-g-ir-scanner-and-g-i.patch
File was created 1 From 0b860cb8a22ae876b6088939dbabca216bc29431 Mon Sep 17 00:00:00 2001
2 From: Alexander Kanavin <alex.kanavin@gmail.com>
3 Date: Fri, 4 Aug 2017 16:18:47 +0300
4 Subject: [PATCH] gobject-introspection: determine g-ir-scanner and
5 g-ir-compiler paths from pkgconfig
6
7 Do not hardcode the name of those binaries; gobject-introspection
8 provides them via pkgconfig, and they can be set to something else
9 (for example when cross-compiling).
10
11 Upstream-Status: Pending
12 Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
13
14 ---
15 mesonbuild/modules/gnome.py | 4 ++--
16 1 file changed, 2 insertions(+), 2 deletions(-)
17
18 diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py
19 index b29bab9..dc4c401 100644
20 --- a/mesonbuild/modules/gnome.py
21 +++ b/mesonbuild/modules/gnome.py
22 @@ -393,8 +393,6 @@ class GnomeModule(ExtensionModule):
23 raise MesonException('Gir takes one argument')
24 if kwargs.get('install_dir'):
25 raise MesonException('install_dir is not supported with generate_gir(), see "install_dir_gir" and "install_dir_typelib"')
26 - giscanner = self.interpreter.find_program_impl('g-ir-scanner')
27 - gicompiler = self.interpreter.find_program_impl('g-ir-compiler')
28 girtarget = args[0]
29 while hasattr(girtarget, 'held_object'):
30 girtarget = girtarget.held_object
31 @@ -405,6 +403,8 @@ class GnomeModule(ExtensionModule):
32 self.gir_dep = PkgConfigDependency('gobject-introspection-1.0',
33 state.environment,
34 {'native': True})
35 + giscanner = os.environ['PKG_CONFIG_SYSROOT_DIR'] + self.gir_dep.get_pkgconfig_variable('g_ir_scanner', {})
36 + gicompiler = os.environ['PKG_CONFIG_SYSROOT_DIR'] + self.gir_dep.get_pkgconfig_variable('g_ir_compiler', {})
37 pkgargs = self.gir_dep.get_compile_args()
38 except Exception:
39 raise MesonException('gobject-introspection dependency was not found, gir cannot be generated.')
40
recipes-devtools/meson/meson/0003-native_bindir.patch
File was created 1 From e762d85c823adfefc27ba6128c7b997aa50166ce Mon Sep 17 00:00:00 2001
2 From: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
3 Date: Wed, 15 Nov 2017 15:05:01 +0100
4 Subject: [PATCH] native_bindir
5
6 Some libraries, like QT, have pre-processors that convert their input
7 files into something that the cross-compiler can process. We find the
8 path of those pre-processors via pkg-config-native instead of
9 pkg-config.
10
11 This path forces the use of pkg-config-native for host_bins arguments.
12
13 There are some discussions upstream to merge this patch, but I presonaly believe
14 that is is OE only. https://github.com/mesonbuild/meson/issues/1849#issuecomment-303730323
15
16 Upstream-Status: Inappropriate [OE specific]
17 Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
18
19 ---
20 mesonbuild/dependencies/base.py | 19 +++++++++++--------
21 mesonbuild/dependencies/ui.py | 6 +++---
22 2 files changed, 14 insertions(+), 11 deletions(-)
23
24 diff --git a/mesonbuild/dependencies/base.py b/mesonbuild/dependencies/base.py
25 index 6d3678f..90fdb80 100644
26 --- a/mesonbuild/dependencies/base.py
27 +++ b/mesonbuild/dependencies/base.py
28 @@ -146,7 +146,7 @@ class Dependency:
29 def need_threads(self):
30 return False
31
32 - def get_pkgconfig_variable(self, variable_name, kwargs):
33 + def get_pkgconfig_variable(self, variable_name, kwargs, use_native=False):
34 raise DependencyException('{!r} is not a pkgconfig dependency'.format(self.name))
35
36 def get_configtool_variable(self, variable_name):
37 @@ -183,7 +183,7 @@ class InternalDependency(Dependency):
38 self.sources = sources
39 self.ext_deps = ext_deps
40
41 - def get_pkgconfig_variable(self, variable_name, kwargs):
42 + def get_pkgconfig_variable(self, variable_name, kwargs, use_native=False):
43 raise DependencyException('Method "get_pkgconfig_variable()" is '
44 'invalid for an internal dependency')
45
46 @@ -523,15 +523,18 @@ class PkgConfigDependency(ExternalDependency):
47 return s.format(self.__class__.__name__, self.name, self.is_found,
48 self.version_reqs)
49
50 - def _call_pkgbin_real(self, args, env):
51 - cmd = self.pkgbin.get_command() + args
52 + def _call_pkgbin_real(self, args, env, use_native=False):
53 + if use_native:
54 + cmd = self.pkgbin.get_command() + "-native" + args
55 + else:
56 + cmd = self.pkgbin.get_command() + args
57 p, out = Popen_safe(cmd, env=env)[0:2]
58 rc, out = p.returncode, out.strip()
59 call = ' '.join(cmd)
60 mlog.debug("Called `{}` -> {}\n{}".format(call, rc, out))
61 return rc, out
62
63 - def _call_pkgbin(self, args, env=None):
64 + def _call_pkgbin(self, args, env=None, use_native=False):
65 if env is None:
66 fenv = env
67 env = os.environ
68 @@ -540,7 +543,7 @@ class PkgConfigDependency(ExternalDependency):
69 targs = tuple(args)
70 cache = PkgConfigDependency.pkgbin_cache
71 if (self.pkgbin, targs, fenv) not in cache:
72 - cache[(self.pkgbin, targs, fenv)] = self._call_pkgbin_real(args, env)
73 + cache[(self.pkgbin, targs, fenv)] = self._call_pkgbin_real(args, env, use_native)
74 return cache[(self.pkgbin, targs, fenv)]
75
76 def _convert_mingw_paths(self, args):
77 @@ -718,7 +721,7 @@ class PkgConfigDependency(ExternalDependency):
78 (self.name, out_raw))
79 self.link_args, self.raw_link_args = self._search_libs(out, out_raw)
80
81 - def get_pkgconfig_variable(self, variable_name, kwargs):
82 + def get_pkgconfig_variable(self, variable_name, kwargs, use_native=False):
83 options = ['--variable=' + variable_name, self.name]
84
85 if 'define_variable' in kwargs:
86 @@ -731,7 +734,7 @@ class PkgConfigDependency(ExternalDependency):
87
88 options = ['--define-variable=' + '='.join(definition)] + options
89
90 - ret, out = self._call_pkgbin(options)
91 + ret, out = self._call_pkgbin(options, use_native=use_native)
92 variable = ''
93 if ret != 0:
94 if self.required:
95 diff --git a/mesonbuild/dependencies/ui.py b/mesonbuild/dependencies/ui.py
96 index 197d22c..c683d21 100644
97 --- a/mesonbuild/dependencies/ui.py
98 +++ b/mesonbuild/dependencies/ui.py
99 @@ -285,7 +285,7 @@ class QtBaseDependency(ExternalDependency):
100 self.bindir = self.get_pkgconfig_host_bins(core)
101 if not self.bindir:
102 # If exec_prefix is not defined, the pkg-config file is broken
103 - prefix = core.get_pkgconfig_variable('exec_prefix', {})
104 + prefix = core.get_pkgconfig_variable('exec_prefix', {}, use_native=True)
105 if prefix:
106 self.bindir = os.path.join(prefix, 'bin')
107
108 @@ -427,7 +427,7 @@ class Qt4Dependency(QtBaseDependency):
109 applications = ['moc', 'uic', 'rcc', 'lupdate', 'lrelease']
110 for application in applications:
111 try:
112 - return os.path.dirname(core.get_pkgconfig_variable('%s_location' % application, {}))
113 + return os.path.dirname(core.get_pkgconfig_variable('%s_location' % application, {}, use_native=True))
114 except MesonException:
115 pass
116
117 @@ -437,7 +437,7 @@ class Qt5Dependency(QtBaseDependency):
118 QtBaseDependency.__init__(self, 'qt5', env, kwargs)
119
120 def get_pkgconfig_host_bins(self, core):
121 - return core.get_pkgconfig_variable('host_bins', {})
122 + return core.get_pkgconfig_variable('host_bins', {}, use_native=True)
123
124 def get_private_includes(self, mod_inc_dir, module):
125 return _qt_get_private_includes(mod_inc_dir, module, self.version)
126
recipes-devtools/meson/meson/disable-rpath-handling.patch
File was created 1 We need to allow our rpaths generated through the compiler flags to make it into
2 our binaries. Therefore disable the meson manipulations of these unless there
3 is a specific directive to do something differently in the project.
4
5 RP 2018/11/23
6
7 Upstream-Status: Submitted [https://github.com/mesonbuild/meson/issues/2567]
8
9 Index: meson-0.47.2/mesonbuild/minstall.py
10 ===================================================================
11 --- meson-0.47.2.orig/mesonbuild/minstall.py
12 +++ meson-0.47.2/mesonbuild/minstall.py
13 @@ -486,8 +486,11 @@ class Installer:
14 printed_symlink_error = True
15 if os.path.isfile(outname):
16 try:
17 - depfixer.fix_rpath(outname, install_rpath, final_path,
18 - install_name_mappings, verbose=False)
19 + if install_rpath:
20 + depfixer.fix_rpath(outname, install_rpath, final_path,
21 + install_name_mappings, verbose=False)
22 + else:
23 + print("RPATH changes at install time disabled")
24 except SystemExit as e:
25 if isinstance(e.code, int) and e.code == 0:
26 pass
27
recipes-devtools/meson/meson/gi-flags.patch
File was created 1 Pass the correct cflags/ldflags to the gobject-introspection tools.
2
3 Upstream-Status: Submitted [https://github.com/mesonbuild/meson/pull/4261]
4 Signed-off-by: Ross Burton <ross.burton@intel.com>
5
6 diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py
7 index cb69641e..bb4449a0 100644
8 --- a/mesonbuild/modules/gnome.py
9 +++ b/mesonbuild/modules/gnome.py
10 @@ -579,7 +579,10 @@ class GnomeModule(ExtensionModule):
11 external_ldflags += list(dep_external_ldflags)
12 scan_command += ['--cflags-begin']
13 scan_command += cflags
14 - scan_command += state.environment.coredata.get_external_args(lang)
15 + if state.environment.is_cross_build():
16 + scan_command += state.environment.cross_info.config["properties"].get(lang + '_args', "")
17 + else:
18 + scan_command += state.environment.coredata.get_external_args(lang)
19 scan_command += ['--cflags-end']
20 # need to put our output directory first as we need to use the
21 # generated libraries instead of any possibly installed system/prefix
22 @@ -614,7 +614,12 @@ class GnomeModule(ExtensionModule):
23 scan_command.append('-L' + d)
24 scan_command += ['--library', libname]
25
26 - for link_arg in state.environment.coredata.get_external_link_args(lang):
27 + if state.environment.is_cross_build():
28 + link_args = state.environment.cross_info.config["properties"].get(lang + '_link_args', "")
29 + else:
30 + link_args = state.environment.coredata.get_external_link_args(lang)
31 +
32 + for link_arg in link_args:
33 if link_arg.startswith('-L'):
34 scan_command.append(link_arg)
35 scan_command += list(external_ldflags)
36
recipes-devtools/meson/meson/gtkdoc-flags.patch
File was created 1 Ensure that in a cross compile only the target flags are passed to gtk-doc, and
2 not the native flags.
3
4 Upstream-Status: Submitted [https://github.com/mesonbuild/meson/pull/4261]
5 Signed-off-by: Ross Burton <ross.burton@intel.com>
6
7 diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py
8 index 4af33304..8751f53c 100644
9 --- a/mesonbuild/modules/gnome.py
10 +++ b/mesonbuild/modules/gnome.py
11 @@ -851,17 +851,30 @@ This will become a hard error in the future.''')
12 if not isinstance(incd.held_object, (str, build.IncludeDirs)):
13 raise MesonException(
14 'Gir include dirs should be include_directories().')
15 +
16 cflags.update(get_include_args(inc_dirs))
17 - cflags.update(state.environment.coredata.get_external_args('c'))
18 + if state.environment.is_cross_build():
19 + cflags.update(state.environment.cross_info.config["properties"].get('c_args', ""))
20 + else:
21 + cflags.update(state.environment.coredata.get_external_args('c'))
22 +
23 ldflags = OrderedSet()
24 ldflags.update(internal_ldflags)
25 - ldflags.update(state.environment.coredata.get_external_link_args('c'))
26 + if state.environment.is_cross_build():
27 + ldflags.update(state.environment.cross_info.config["properties"].get('c_link_args', ""))
28 + else:
29 + ldflags.update(state.environment.coredata.get_external_link_args('c'))
30 ldflags.update(external_ldflags)
31 +
32 if cflags:
33 args += ['--cflags=%s' % ' '.join(cflags)]
34 if ldflags:
35 args += ['--ldflags=%s' % ' '.join(ldflags)]
36 - compiler = state.environment.coredata.compilers.get('c')
37 +
38 + if state.environment.is_cross_build():
39 + compiler = state.environment.coredata.cross_compilers.get('c')
40 + else:
41 + compiler = state.environment.coredata.compilers.get('c')
42 if compiler:
43 args += ['--cc=%s' % ' '.join(compiler.get_exelist())]
44 args += ['--ld=%s' % ' '.join(compiler.get_linker_exelist())]
45
recipes-devtools/meson/meson/meson-setup.py
File was created 1 #!/usr/bin/env python3
2
3 import os
4 import sys
5
6 def bail(msg):
7 print(msg, file=sys.stderr)
8 sys.exit(1)
9
10 _MARKER = '@@'
11 def transform_line(line):
12 # Substitute any special markers of this form:
13 # @@ENV@@
14 # with the value of ENV, split into meson array syntax.
15 start = line.find(_MARKER)
16 if start == -1:
17 return line
18
19 end = line.rfind(_MARKER)
20 if end == start:
21 return line
22
23 # Lookup value of the env var.
24 var = line[start+len(_MARKER):end]
25 try:
26 val = os.environ[var]
27 except KeyError:
28 bail('cannot generate meson.cross; env var %s not set' % var)
29
30 # Transform into meson array.
31 val = ["'%s'" % x for x in val.split()]
32 val = ', '.join(val)
33 val = '[%s]' % val
34
35 before = line[:start]
36 after = line[end+len(_MARKER):]
37
38 return '%s%s%s' % (before, val, after)
39
40 # Make sure this is really an SDK extraction environment.
41 try:
42 sysroot = os.environ['OECORE_NATIVE_SYSROOT']
43 except KeyError:
44 bail('OECORE_NATIVE_SYSROOT env var must be set')
45
46 cross_file = os.path.join(sysroot, 'usr/share/meson/meson.cross')
47 tmp_cross_file = '%s.tmp' % cross_file
48
49 # Read through and transform the current meson.cross.
50 lines = []
51 with open(cross_file, 'r') as f:
52 for line in f:
53 lines.append(transform_line(line))
54
55 # Write the transformed result to a tmp file and atomically rename it. In case
56 # we crash during the file write, we don't want an invalid meson.cross file.
57 with open(tmp_cross_file, 'w') as f:
58 for line in lines:
59 f.write(line)
60 f.flush()
61 os.fdatasync(f.fileno())
62 os.rename(tmp_cross_file, cross_file)
63
recipes-devtools/meson/meson/meson-wrapper
File was created 1 #!/bin/sh
2
3 if [ -z "$OECORE_NATIVE_SYSROOT" ]; then
4 echo "OECORE_NATIVE_SYSROOT not set; are you in a Yocto SDK environment?" >&2
5 fi
6
7 # If these are set to a cross-compile path, meson will get confused and try to
8 # use them as native tools. Unset them to prevent this, as all the cross-compile
9 # config is already in meson.cross.
10 unset CC CXX CPP LD AR NM STRIP
11
12 exec "$OECORE_NATIVE_SYSROOT/usr/bin/meson.real" \
13 --cross-file "$OECORE_NATIVE_SYSROOT/usr/share/meson/meson.cross" \
14 "$@"
15
recipes-devtools/meson/meson_0.47.2.bb
File was created 1 include meson.inc
2
3 BBCLASSEXTEND = "native"
4
recipes-devtools/meson/nativesdk-meson_0.47.2.bb
File was created 1 include meson.inc
2
3 inherit nativesdk
4
5 SRC_URI += "file://meson-setup.py \
6 file://meson-wrapper"
7
8 def meson_array(var, d):
9 return "', '".join(d.getVar(var).split()).join(("'", "'"))
10
11 # both are required but not used by meson
12 MESON_SDK_ENDIAN = "bogus-endian"
13 MESON_TARGET_ENDIAN = "bogus-endian"
14
15 MESON_TOOLCHAIN_ARGS = "${BUILDSDK_CC_ARCH}${TOOLCHAIN_OPTIONS}"
16 MESON_C_ARGS = "${MESON_TOOLCHAIN_ARGS} ${BUILDSDK_CFLAGS}"
17 MESON_CPP_ARGS = "${MESON_TOOLCHAIN_ARGS} ${BUILDSDK_CXXFLAGS}"
18 MESON_LINK_ARGS = "${MESON_TOOLCHAIN_ARGS} ${BUILDSDK_LDFLAGS}"
19
20 # This logic is similar but not identical to that in meson.bbclass, since it's
21 # generating for an SDK rather than a cross-compile. Important differences are:
22 # - We can't set vars like CC, CXX, etc. yet because they will be filled in with
23 # real paths by meson-setup.sh when the SDK is extracted.
24 # - Some overrides aren't needed, since the SDK injects paths that take care of
25 # them.
26 addtask write_config before do_install
27 do_write_config[vardeps] += "MESON_C_ARGS MESON_CPP_ARGS MESON_LINK_ARGS CC CXX LD AR NM STRIP READELF"
28 do_write_config() {
29 # This needs to be Py to split the args into single-element lists
30 cat >${WORKDIR}/meson.cross <<EOF
31 [binaries]
32 c = @@CC@@
33 cpp = @@CXX@@
34 ar = @@AR@@
35 nm = @@NM@@
36 ld = @@LD@@
37 strip = @@STRIP@@
38 pkgconfig = 'pkg-config'
39
40 [properties]
41 needs_exe_wrapper = true
42 c_args = @@CFLAGS@@
43 c_link_args = @@LDFLAGS@@
44 cpp_args = @@CPPFLAGS@@
45 cpp_link_args = @@LDFLAGS@@
46
47 [host_machine]
48 system = '${SDK_OS}'
49 cpu_family = '${SDK_ARCH}'
50 cpu = '${SDK_ARCH}'
51 endian = '${MESON_SDK_ENDIAN}'
52 EOF
53 }
54
55 do_install_append() {
56 install -d ${D}${datadir}/meson
57 install -m 0644 ${WORKDIR}/meson.cross ${D}${datadir}/meson/
58
59 install -d ${D}${SDKPATHNATIVE}/post-relocate-setup.d
60 install -m 0755 ${WORKDIR}/meson-setup.py ${D}${SDKPATHNATIVE}/post-relocate-setup.d/
61
62 # We need to wrap the real meson with a thin env setup wrapper.
63 mv ${D}${bindir}/meson ${D}${bindir}/meson.real
64 install -m 0755 ${WORKDIR}/meson-wrapper ${D}${bindir}/meson
65 }
66
67 RDEPENDS_${PN} += "\
68 nativesdk-ninja \
69 nativesdk-python3-core \
70 nativesdk-python3-misc \
71 nativesdk-python3-modules \
72 "
73
74 FILES_${PN} += "${datadir}/meson ${SDKPATHNATIVE}"
75
scripts/emb_mk_yocto_sdcard/README.txt
File was created 1 How to use the Embedian SD card creation script:
2 =================================================
3
4 This utility is provided on an "AS IS" basis.
5 This is the script we use to create our recovery SD card.
6 For machines with Android support, it is a part of a larger script we use to create our recovery SD card, which also includes Android.
7 It is a good example for using the output of the Yocto build to create a bootable SD card, and use it to flash the target NAND flash/eMMC.
8
9 Note:
10 Before running this script you need to bitbake fsl-image-gui.
11
12
13 Usage:
14 sudo MACHINE=<smarcimx8m2g|smarcimx8m4g> ./emb-create-yocto-sdcard.sh [options] /dev/sdX
15 (Change /dev/sdX to your device name)
16
17 options:
18 -h Display help message
19 -s Only show partition sizes to be written, without actually write them
20 -a Automatically set the rootfs partition size to fill the SD card
21 -r Select alternative rootfs for recovery images (default: build_x11/tmp/deploy/images/<machine name>/fsl-image-validation-imx.tar.bz2)
22
23 If you don't use the '-a' option, a default rootfs size of 3700MiB will be used.
24 The '-r' option allows you to create a bootable sdcard with an alternative image for the installation to NAND flash or eMMC.
25 Example: "-r tmp/deploy/images/<machine name>/fsl-image-qt5-validation-imx" -- selects the "Qt5 image with X11" recovery image
26
27
28 Once the script is done, use the SD card to boot, and then to flash your internal storage/s either use the icons,
29 or the following linux shell script:
30 install_yocto.sh
31
scripts/emb_mk_yocto_sdcard/emb-create-yocto-emmc.sh
File was created 1 #!/bin/bash -e
2
3 blue_underlined_bold_echo()
4 {
5 echo -e "\e[34m\e[4m\e[1m$@\e[0m"
6 }
7
8 blue_bold_echo()
9 {
10 echo -e "\e[34m\e[1m$@\e[0m"
11 }
12
13 red_bold_echo()
14 {
15 echo -e "\e[31m\e[1m$@\e[0m"
16 }
17
18 IMGS_PATH=/opt/images/Yocto
19 UBOOT_IMAGE=imx-boot-sd.bin
20 KERNEL_IMAGE=Image
21 ROOTFS_IMAGE=rootfs.tar.bz2
22 BOOTLOADER_RESERVED_SIZE=2
23 PART1_SIZE=48
24 BOOTLOADER_OFFSET=33
25 DISPLAY=-hdmi
26 PART=p
27 BOOTPART=1
28 ROOTFSPART=2
29 BOOTDIR=/boot
30
31 check_board()
32 {
33 if grep -q "i.MX8M" /sys/devices/soc0/soc_id; then
34 BOARD=smarc-imx8m
35 DTB_PREFIX=fsl-smarcimx8mq
36 BLOCK=mmcblk0
37
38 if [[ $DISPLAY != "-lvds" && $DISPLAY != "-hdmi" && \
39 $DISPLAY != "-dual-display" && $DISPLAY != "" ]]; then
40 red_bold_echo "ERROR: invalid display, should be lvds, hdmi, dual-display or empty"
41 exit 1
42 fi
43 else
44 red_bold_echo "ERROR: Unsupported board"
45 exit 1
46 fi
47
48
49 if [[ ! -b /dev/${BLOCK} ]] ; then
50 red_bold_echo "ERROR: Can't find eMMC device (/dev/${BLOCK})."
51 red_bold_echo "Please verify you are using the correct options for your SMARC Module."
52 exit 1
53 fi
54 }
55
56 check_images()
57 {
58 if [[ ! -f $IMGS_PATH/$UBOOT_IMAGE ]] ; then
59 red_bold_echo "ERROR: \"$IMGS_PATH/$UBOOT_IMAGE\" does not exist"
60 exit 1
61 fi
62
63 if [[ ! -f $IMGS_PATH/$KERNEL_IMAGE ]] ; then
64 red_bold_echo "ERROR: \"$IMGS_PATH/$KERNEL_IMAGE\" does not exist"
65 exit 1
66 fi
67
68 if [[ ! -f $IMGS_PATH/${DTB_PREFIX}${DISPLAY}.dtb ]] ; then
69 red_bold_echo "ERROR: \"$IMGS_PATH/${DTB_PREFIX}${DISPLAY}.dtb\" does not exist"
70 exit 1
71 fi
72
73 if [[ ! -f $IMGS_PATH/uEnv.txt ]] ; then
74 red_bold_echo "ERROR: \"$IMGS_PATH/uEnv.txt\" does not exist"
75 exit 1
76 fi
77
78 if [[ ! -f $IMGS_PATH/$ROOTFS_IMAGE ]] ; then
79 red_bold_echo "ERROR: \"$IMGS_PATH/$ROOTFS_IMAGE\" does not exist"
80 exit 1
81 fi
82 }
83
84 delete_emmc()
85 {
86 echo
87 blue_underlined_bold_echo "Deleting current partitions"
88
89 umount /dev/${BLOCK}${PART}* 2>/dev/null || true
90
91 for ((i=1; i<=16; i++)); do
92 if [[ -e /dev/${BLOCK}${PART}${i} ]]; then
93 dd if=/dev/zero of=/dev/${BLOCK}${PART}${i} bs=1M count=1 2>/dev/null || true
94 fi
95 done
96 sync
97
98 dd if=/dev/zero of=/dev/${BLOCK} bs=1M count=${BOOTLOADER_RESERVED_SIZE}
99
100 sync; sleep 1
101 }
102
103 create_emmc_parts()
104 {
105 echo
106 blue_underlined_bold_echo "Creating new partitions"
107
108 SECT_SIZE_BYTES=`cat /sys/block/${BLOCK}/queue/hw_sector_size`
109 PART1_FIRST_SECT=$(($BOOTLOADER_RESERVED_SIZE * 1024 * 1024 / $SECT_SIZE_BYTES))
110 PART1_END_SECT=$((($BOOTLOADER_RESERVED_SIZE + $PART1_SIZE) * 1024 * 1024 / $SECT_SIZE_BYTES))
111 PART2_FIRST_SECT=`expr ${PART1_END_SECT} + 1`
112
113 (echo n; echo p; echo $BOOTPART; echo $PART1_FIRST_SECT; \
114 echo $PART1_END_SECT; echo n; echo p; echo $ROOTFSPART; \
115 echo $PART2_FIRST_SECT; echo; \
116 echo p; echo w) | fdisk -u /dev/${BLOCK} > /dev/null
117
118 sync; sleep 1
119 fdisk -u -l /dev/${BLOCK}
120 }
121
122 format_emmc_parts()
123 {
124 echo
125 blue_underlined_bold_echo "Formatting partitions"
126
127 mkfs.vfat -F 16 /dev/${BLOCK}${PART}${BOOTPART} -n boot
128 mkfs.ext4 /dev/${BLOCK}${PART}${ROOTFSPART} -L rootfs
129
130 sync; sleep 1
131 }
132
133 install_bootloader_to_emmc()
134 {
135 echo
136 blue_underlined_bold_echo "Installing booloader"
137
138 dd if=${IMGS_PATH}/${UBOOT_IMAGE} of=/dev/${BLOCK} bs=1K seek=${BOOTLOADER_OFFSET}
139 sync
140 }
141
142 install_kernel_to_emmc()
143 {
144 echo
145 blue_underlined_bold_echo "Installing kernel"
146
147 MOUNTDIR=/run/media/${BLOCK}${PART}${BOOTPART}
148 mkdir -p ${MOUNTDIR}
149 mount /dev/${BLOCK}${PART}${BOOTPART} ${MOUNTDIR}
150 mkdir -p ${MOUNTDIR}/dtbs/
151 cp -v ${IMGS_PATH}/${KERNEL_IMAGE} ${MOUNTDIR}
152 cp -v ${IMGS_PATH}/${DTB_PREFIX}${DISPLAY}.dtb ${MOUNTDIR}/dtbs/fsl-smarcimx8mq.dtb
153 cp -v ${IMGS_PATH}/uEnv.txt ${MOUNTDIR}
154
155 echo
156 sync
157
158 umount ${MOUNTDIR}
159 }
160
161 install_rootfs_to_emmc()
162 {
163 echo
164 blue_underlined_bold_echo "Installing rootfs"
165
166 MOUNTDIR=/run/media/${BLOCK}${PART}${ROOTFSPART}
167 mkdir -p ${MOUNTDIR}
168 mount /dev/${BLOCK}${PART}${ROOTFSPART} ${MOUNTDIR}
169
170 printf "Extracting files"
171 tar --warning=no-timestamp -jxvf ${IMGS_PATH}/${ROOTFS_IMAGE} -C ${MOUNTDIR} --checkpoint=.1200
172
173 # Create DTB symlink
174 (cd ${MOUNTDIR}/${BOOTDIR}; ln -fs ${DTB_PREFIX}${DISPLAY}.dtb ${DTB_PREFIX}.dtb)
175
176 echo
177 sync
178
179 umount ${MOUNTDIR}
180 }
181
182 stop_udev()
183 {
184 if [ -f /lib/systemd/system/systemd-udevd.service ]; then
185 systemctl -q mask --runtime systemd-udevd
186 systemctl -q stop systemd-udevd
187 fi
188 }
189
190 start_udev()
191 {
192 if [ -f /lib/systemd/system/systemd-udevd.service ]; then
193 systemctl -q unmask --runtime systemd-udevd
194 systemctl -q start systemd-udevd
195 fi
196 }
197
198 usage()
199 {
200 echo
201 echo "This script installs Yocto Rootfs on the SMARC-iMX8M's internal eMMC storage device"
202 echo
203 echo " Usage: $(basename $0) <option>"
204 echo
205 echo " options:"
206 echo " -h show help message"
207 echo " -d <lvds|hdmi|dual-display> set display type, default is lvds"
208 echo
209 }
210
211 finish()
212 {
213 echo
214 blue_bold_echo "Yocto Sumo installed successfully"
215 exit 0
216 }
217
218 #################################################
219 # Execution starts here #
220 #################################################
221
222 if [[ $EUID != 0 ]] ; then
223 red_bold_echo "This script must be run with super-user privileges"
224 exit 1
225 fi
226
227 blue_underlined_bold_echo "*** Embedian SMARC-iMX8M on-module eMMC Recovery ***"
228 echo
229
230 while getopts d:h OPTION;
231 do
232 case $OPTION in
233 d)
234 DISPLAY=$OPTARG
235 ;;
236 h)
237 usage
238 exit 0
239 ;;
240 *)
241 usage
242 exit 1
243 ;;
244 esac
245 done
246
247 printf "Board: "
248 blue_bold_echo $BOARD
249
250 printf "Installing to internal storage device: "
251 blue_bold_echo eMMC
252
253 check_board
254 check_images
255 stop_udev
256 delete_emmc
257 create_emmc_parts
258 format_emmc_parts
259 install_bootloader_to_emmc
260 install_kernel_to_emmc
261 install_rootfs_to_emmc
262 start_udev
263 finish
264
scripts/emb_mk_yocto_sdcard/emb-create-yocto-sdcard.sh
File was created 1 #!/bin/bash
2 set -e
3
4 #### Script version ####
5 SCRIPT_NAME=${0##*/}
6 readonly SCRIPT_VERSION="0.7"
7
8 #### Exports Variables ####
9 #### global variables ####
10 readonly ABSOLUTE_FILENAME=`readlink -e "$0"`
11 readonly ABSOLUTE_DIRECTORY=`dirname ${ABSOLUTE_FILENAME}`
12 readonly SCRIPT_POINT=${ABSOLUTE_DIRECTORY}
13 readonly SCRIPT_START_DATE=`date +%Y%m%d`
14
15 readonly YOCTO_ROOT="${SCRIPT_POINT}/../../../../"
16
17 readonly BSP_TYPE="YOCTO"
18 readonly YOCTO_BUILD=${YOCTO_ROOT}/imx8m-build-qt5wayland
19 readonly YOCTO_DEFAULT_IMAGE=fsl-image-qt5-validation-imx
20
21 readonly YOCTO_SCRIPTS_PATH=${SCRIPT_POINT}
22 readonly YOCTO_IMGS_PATH=${YOCTO_BUILD}/tmp/deploy/images/${MACHINE}
23
24 ## display (one of "-hdmi", "-lcdif-lvds", "-dp", "-dcss-lvds", "-dual-display", "-edp")
25 readonly DISPLAY="-hdmi"
26
27 # $1 -- block device
28 # $2 -- output images dir
29 readonly LPARAM_BLOCK_DEVICE=${1}
30 readonly LPARAM_OUTPUT_DIR=${2}
31 readonly P1_MOUNT_DIR="${G_TMP_DIR}/p1"
32 readonly P2_MOUNT_DIR="${G_TMP_DIR}/p2"
33
34 readonly BOOTLOAD_RESERVE_SIZE=2
35 readonly PART1_SIZE=48
36 readonly BOOTPART=1
37 readonly ROOTFSPART=2
38 readonly SPARE_SIZE=4
39
40 # Sizes are in MiB
41 BOOTLOADER_OFFSET=33
42
43 AUTO_FILL_SD=0
44 LOOP_MAJOR=7
45
46 # This function performs sanity check to verify that the target device is removable devise of proper size
47 function check_device()
48 {
49 # Check that parameter is a valid block device
50 if [ ! -b "$1" ]; then
51 echo "$1 is not a valid block device, exiting"
52 exit 1
53 fi
54
55 local dev=$(basename $1)
56
57 # Check that /sys/block/$dev exists
58 if [ ! -d /sys/block/$dev ]; then
59 echo "Directory /sys/block/${dev} missing, exiting"
60 exit 1
61 fi
62
63 # Get device parameters
64 local removable=$(cat /sys/block/${dev}/removable)
65 local size_bytes=$((512*$(cat /sys/class/block/${dev}/size)))
66 local size_gb=$((size_bytes/1000000000))
67
68 # Non-removable SD card readers require additional check
69 if [ "${removable}" != "1" ]; then
70 local drive=$(udisksctl info -b /dev/${dev}|grep "Drive:"|cut -d"'" -f 2)
71 local mediaremovable=$(gdbus call --system --dest org.freedesktop.UDisks2 \
72 --object-path ${drive} --method org.freedesktop.DBus.Properties.Get \
73 org.freedesktop.UDisks2.Drive MediaRemovable)
74 if [[ "${mediaremovable}" = *"true"* ]]; then
75 removable=1
76 fi
77 fi
78
79 # Check that device is either removable or loop
80 if [ "$removable" != "1" -a $(stat -c '%t' /dev/$dev) != ${LOOP_MAJOR} ]; then
81 echo "$1 is not a removable device, exiting"
82 exit 1
83 fi
84
85 # Check that device is attached
86 if [ ${size_bytes} -eq 0 ]; then
87 echo "$1 is not attached, exiting"
88 exit 1
89 fi
90
91 # Check that device has a valid size
92 echo "Detected removable device $1, size=${size_gb}GB"
93 }
94
95 YOCTO_RECOVERY_ROOTFS_PATH=${YOCTO_IMGS_PATH}
96
97 echo "================================================"
98 echo "= Embedian recovery SD card creation script ="
99 echo "================================================"
100
101 help() {
102 bn=`basename $0`
103 echo " Usage: MACHINE=<smarcimx8m2g|smarcimx8m4g> $bn <options> device_node"
104 echo
105 echo " options:"
106 echo " -h display this Help message"
107 echo " -s only Show partition sizes to be written, without actually write them"
108 echo " -a Automatically set the rootfs partition size to fill the SD card (leaving spare ${SPARE_SIZE}MiB)"
109 echo " -r ROOTFS_NAME select an alternative Rootfs for recovery images"
110 echo " (default: \"${YOCTO_RECOVERY_ROOTFS_PATH}/${YOCTO_DEFAULT_IMAGE}\")"
111 echo " -n TEXT_FILE add a release Notes text file"
112 echo
113 }
114
115 if [[ $EUID -ne 0 ]] ; then
116 echo "This script must be run with super-user privileges"
117 exit 1
118 fi
119
120 if [[ $MACHINE != "smarcimx8m2g" && $MACHINE != "smarcimx8m4g" ]] ; then
121 help
122 exit 1
123 fi
124
125
126 # Parse command line
127 moreoptions=1
128 node="na"
129 cal_only=0
130
131 while [ "$moreoptions" = 1 -a $# -gt 0 ]; do
132 case $1 in
133 -h) help; exit 3 ;;
134 -s) cal_only=1 ;;
135 -a) AUTO_FILL_SD=1 ;;
136 -r) shift;
137 YOCTO_RECOVERY_ROOTFS_MASK_PATH=`readlink -e "${1}.tar.bz2"`;
138 YOCTO_RECOVERY_ROOTFS_PATH=`dirname ${YOCTO_RECOVERY_ROOTFS_MASK_PATH}`
139 YOCTO_RECOVERY_ROOTFS_BASE_IN_NAME=`basename ${1}`
140 ;;
141 -n) shift;
142 RELEASE_NOTES_FILE=${1}
143 ;;
144 *) moreoptions=0;;
145 esac
146 [ "$moreoptions" = 0 ] && [ $# -gt 1 ] && help && exit 1
147 [ "$moreoptions" = 1 ] && shift
148 done
149
150 part=""
151 if [ `echo ${LPARAM_BLOCK_DEVICE} | grep -c mmcblk` -ne 0 ]; then
152 part="p"
153 fi
154
155 # allow only removable/loopback devices, to protect host PC
156 echo "MACHINE=${MACHINE}"
157 echo "SD card rootfs: ${YOCTO_DEFAULT_IMAGE}"
158 echo "Recovery rootfs: ${YOCTO_DEFAULT_IMAGE}"
159 echo "================================================"
160 check_device ${LPARAM_BLOCK_DEVICE}
161 echo "================================================"
162 read -p "Press Enter to continue"
163
164 function delete_device
165 {
166 echo
167 echo "Deleting current partitions"
168 for ((i=0; i<10; i++))
169 do
170 if [ `ls ${LPARAM_BLOCK_DEVICE}${part}$i 2> /dev/null | grep -c ${LPARAM_BLOCK_DEVICE}${part}$i` -ne 0 ]; then
171 dd if=/dev/zero of=${LPARAM_BLOCK_DEVICE}${part}$i bs=512 count=1024
172 fi
173 done
174 sync
175
176 ((echo d; echo 1; echo d; echo 2; echo d; echo 3; echo d; echo w) | fdisk ${LPARAM_BLOCK_DEVICE} &> /dev/null) || true
177 sync
178
179 dd if=/dev/zero of=${LPARAM_BLOCK_DEVICE} bs=1M count=${BOOTLOAD_RESERVE_SIZE}
180 sync; sleep 1
181 }
182
183 function ceildiv
184 {
185 local num=$1
186 local div=$2
187 echo $(( (num + div - 1) / div ))
188 }
189
190 function create_parts
191 {
192 echo
193 echo "Creating new partitions"
194 # Get total card size
195 TOTAL_SIZE=`fdisk -s ${LPARAM_BLOCK_DEVICE}`
196 TOTAL_SIZE=`expr ${TOTAL_SIZE} / 1024`
197 ROOTFS_SIZE=`expr ${TOTAL_SIZE} - ${BOOTLOAD_RESERVE_SIZE} - ${PART1_SIZE} - ${SPARE_SIZE}`
198
199 echo "ROOT SIZE=${ROOTFS_SIZE} TOTAl SIZE=${TOTAL_SIZE}"
200
201 BLOCK=`echo ${LPARAM_BLOCK_DEVICE} | cut -d "/" -f 3`
202 SECT_SIZE_BYTES=`cat /sys/block/${BLOCK}/queue/physical_block_size`
203
204 BOOTLOAD_RESERVE_SIZE_BYTES=$((BOOTLOAD_RESERVE_SIZE * 1024 * 1024))
205 PART1_SIZE_BYTES=$((PART1_SIZE * 1024 * 1024))
206 PART1_END_BYTES=`expr ${BOOTLOAD_RESERVE_SIZE_BYTES} + ${PART1_SIZE_BYTES}`
207 ROOTFS_SIZE_BYTES=$((ROOTFS_SIZE * 1024 * 1024))
208
209 PART1_FIRST_SECT=`ceildiv ${BOOTLOAD_RESERVE_SIZE_BYTES} ${SECT_SIZE_BYTES}`
210 PART1_END_SECT=`ceildiv ${PART1_END_BYTES} ${SECT_SIZE_BYTES}`
211 PART2_FIRST_SECT=`expr ${PART1_END_SECT} + 1 `
212
213 (echo n; echo p; echo $BOOTPART; echo $PART1_FIRST_SECT; \
214 echo $PART1_END_SECT; echo n; echo p; echo $ROOTFSPART; \
215 echo $PART2_FIRST_SECT; echo; echo p; echo w) | fdisk -u ${LPARAM_BLOCK_DEVICE} > /dev/null
216
217 sleep 2; sync;
218 fdisk -l ${LPARAM_BLOCK_DEVICE}
219
220 sleep 2; sync;
221 }
222
223 function format_parts
224 {
225 echo
226 echo "Formatting partitions"
227 mkfs.vfat -F 16 ${LPARAM_BLOCK_DEVICE}${part}1 -n boot
228 mkfs.ext4 ${LPARAM_BLOCK_DEVICE}${part}2 -L rootfs
229 sync; sleep 1
230 }
231
232 function install_bootloader
233 {
234 echo
235 echo "Installing U-Boot"
236 dd if=${YOCTO_IMGS_PATH}/imx-boot-${MACHINE}-sd.bin-flash_evk of=${LPARAM_BLOCK_DEVICE} bs=1K seek=${BOOTLOADER_OFFSET}; sync
237 }
238
239 function mount_parts
240 {
241 mkdir -p ${P1_MOUNT_DIR}
242 mkdir -p ${P2_MOUNT_DIR}
243 sync
244
245 mount ${LPARAM_BLOCK_DEVICE}${part}1 ${P1_MOUNT_DIR}
246 mount ${LPARAM_BLOCK_DEVICE}${part}2 ${P2_MOUNT_DIR}
247 sleep 2; sync;
248 }
249
250 function unmount_parts
251 {
252 umount ${P1_MOUNT_DIR}
253 umount ${P2_MOUNT_DIR}
254
255 rm -rf ${P1_MOUNT_DIR}
256 rm -rf ${P2_MOUNT_DIR}
257 }
258
259 function install_yocto
260 {
261 echo
262 echo "Flashing \"Image, device tree and uEnv.txt\" partition"
263 cp -v ${YOCTO_IMGS_PATH}/Image ${P1_MOUNT_DIR}/
264 mkdir -p ${P1_MOUNT_DIR}/dtbs/
265 cp -v ${YOCTO_IMGS_PATH}/fsl-smarcimx8mq${DISPLAY}.dtb ${P1_MOUNT_DIR}/dtbs/fsl-smarcimx8mq.dtb
266 cp -v ${YOCTO_SCRIPTS_PATH}/uEnv.txt ${P1_MOUNT_DIR}/
267
268 echo
269 echo "Installing Yocto Root File System"
270 tar jxvf ${YOCTO_IMGS_PATH}/${YOCTO_DEFAULT_IMAGE}-${MACHINE}.tar.bz2 -C ${P2_MOUNT_DIR}/
271 sync
272 }
273
274 function copy_images
275 {
276 echo
277 echo "Copying Yocto images to /opt/images/"
278 mkdir -p ${P2_MOUNT_DIR}/opt/images/Yocto
279
280 # Copy image for eMMC
281 if [ -f ${YOCTO_IMGS_PATH}/${YOCTO_DEFAULT_IMAGE}-${MACHINE}.tar.bz2 ]; then
282 pv ${YOCTO_IMGS_PATH}/${YOCTO_DEFAULT_IMAGE}-${MACHINE}.tar.bz2 > ${P2_MOUNT_DIR}/opt/images/Yocto/rootfs.tar.bz2
283 else
284 echo "rootfs.tar.gz file is not present. Installation on \"eMMC\" will not be supported."
285 fi
286
287 echo
288 echo "Copying Kernel Images to /opt/images/"
289 cp ${YOCTO_IMGS_PATH}/Image ${P2_MOUNT_DIR}/opt/images/Yocto/Image
290
291 echo
292 echo "Copying Kernel Device Tree Blob to /opt/images/"
293 cp -v ${YOCTO_IMGS_PATH}/*.dtb ${P2_MOUNT_DIR}/opt/images/Yocto/
294
295 echo
296 echo "Copying Kernel Parameter uEnv.txt to /opt/images/"
297 cp -v ${YOCTO_SCRIPTS_PATH}/uEnv_emmc.txt ${P2_MOUNT_DIR}/opt/images/Yocto/uEnv.txt
298
299 if [[ $MACHINE = "smarcimx8m2g" || ${MACHINE} = "smarcimx8m4g" ]]; then
300 cp ${YOCTO_IMGS_PATH}/imx-boot-${MACHINE}-sd.bin-* ${P2_MOUNT_DIR}/opt/images/Yocto
301 (cd ${P2_MOUNT_DIR}/opt/images/Yocto; ln -fs imx-boot-${MACHINE}-sd.bin-flash_evk imx-boot-sd.bin)
302 else
303 cp ${YOCTO_IMGS_PATH}/imx-boot-${MACHINE}-sd.bin ${P2_MOUNT_DIR}/opt/images/Yocto/imx-boot-sd.bin
304 fi
305 }
306
307 function copy_scripts
308 {
309 echo
310 echo "Copying scripts"
311
312 cp ${YOCTO_SCRIPTS_PATH}/emb-create-yocto-emmc.sh ${P2_MOUNT_DIR}/usr/bin/
313 }
314
315 umount ${LPARAM_BLOCK_DEVICE}${part}* 2> /dev/null || true
316
317 delete_device
318 create_parts
319 format_parts
320
321 mount_parts
322 install_yocto
323 copy_images
324 copy_scripts
325
326 echo
327 echo "Syncing"
328 sync | pv -t
329
330 unmount_parts
331
332 install_bootloader
333
334 echo
335 echo "Done"
336 echo "========Flash to SD card Completed!========="
337
338 exit 0
339
scripts/emb_mk_yocto_sdcard/uEnv.txt
File was created 1 optargs="video=HDMI-A-1:1920x1080-32@60 consoleblank=0"
2 #optargs="video=HDMI-A-1:3840x2160-32@30 consoleblank=0"
3 #optargs="video=HDMI-A-1:3840x2160-32@60 consoleblank=0"
4 #console port SER3
5 console=ttymxc0,115200 earlycon=ec_imx6q,0x30860000,115200
6 #console port SER2
7 #console=ttymxc1,115200 earlycon=ec_imx6q,0x30890000,115200
8 #console port SER1
9 #console=ttymxc2,115200 earlycon=ec_imx6q,0x30880000,115200
10 #console port SER0
11 #console=ttymxc3,115200 earlycon=ec_imx6q,0x30A60000,115200
12 mmcdev=1
13 mmcpart=1
14 image=Image
15 loadaddr=0x40480000
16 fdt_addr=0x43000000
17 mmcroot=/dev/mmcblk1p2 rw
18 usbroot=/dev/sda2 rw
19 mmcrootfstype=ext4 rootwait fixrtc
20 netdev=eth0
21 ethact=FEC0
22 ipaddr=192.168.1.150
23 serverip=192.168.1.53
24 gatewayip=192.168.1.254
25 mmcargs=setenv bootargs console=${console} root=${mmcroot} rootfstype=${mmcrootfstype} ${optargs}
26 uenvcmd=run loadimage; run loadfdt; run mmcboot
27 # USB Boot
28 #usbargs=setenv bootargs console=${console} root=${usbroot} rootfstype=${mmcrootfstype} ${optargs}
29 #uenvcmd=run loadusbimage; run loadusbfdt; run usbboot
30
scripts/emb_mk_yocto_sdcard/uEnv_emmc.txt
File was created 1 optargs="video=HDMI-A-1:1920x1080-32@60 consoleblank=0"
2 #optargs="video=HDMI-A-1:3840x2160-32@30 consoleblank=0"
3 #optargs="video=HDMI-A-1:3840x2160-32@60 consoleblank=0"
4 #console port SER3
5 console=ttymxc0,115200 earlycon=ec_imx6q,0x30860000,115200
6 #console port SER2
7 #console=ttymxc1,115200 earlycon=ec_imx6q,0x30890000,115200
8 #console port SER1
9 #console=ttymxc2,115200 earlycon=ec_imx6q,0x30880000,115200
10 #console port SER0
11 #console=ttymxc3,115200 earlycon=ec_imx6q,0x30A60000,115200
12 mmcdev=0
13 mmcpart=1
14 image=Image
15 loadaddr=0x40480000
16 fdt_addr=0x43000000
17 mmcroot=/dev/mmcblk0p2 rw
18 usbroot=/dev/sda2 rw
19 mmcrootfstype=ext4 rootwait fixrtc
20 netdev=eth0
21 ethact=FEC0
22 ipaddr=192.168.1.150
23 serverip=192.168.1.53
24 gatewayip=192.168.1.254
25 mmcargs=setenv bootargs console=${console} root=${mmcroot} rootfstype=${mmcrootfstype} ${optargs}
26 uenvcmd=run loadimage; run loadfdt; run mmcboot
27 # USB Boot
28 #usbargs=setenv bootargs console=${console} root=${usbroot} rootfstype=${mmcrootfstype} ${optargs}
29 #uenvcmd=run loadusbimage; run loadusbfdt; run usbboot
30