summaryrefslogtreecommitdiffstats
path: root/agl-documentation/sdk-devkit/docs/part-1/1_5-Build-image-Porter.md
blob: a13e9d3284f3a4b468cddea755fd5f3eac6b5181 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
# Build an image for Porter board

In this section, we will go on the image compilation for the Porter
board within the Docker container.

## Download Renesas proprietary drivers

For the Porter board, we first need to download the proprietary drivers
from Renesas web site. The evaluation version of these drivers can be
found here:

[http://www.renesas.com/secret/r_car_download/rcar_demoboard.jsp](http://www.renesas.com/secret/r_car_download/rcar_demoboard.jsp)

under the **Target hardware: R-Car H2, M2 and E2** section:

![renesas download](pictures/renesas_download.jpg)

Note that you have to register with a free account on MyRenesas and
accept the license conditions before downloading them. The operation is
fast and simple but nevertheless mandatory to access evaluation of non
open-source drivers for free.

Once you register, you can download two zip files: store them in a
directory visible from the container, for example in the directory
`$MIRRORDIR/proprietary-renesas-r-car` (`$MIRRORDIR` was created
previously in section [Start the container](#anchor-start-container) and adjust
the permissions. The zip files should then be visible from the inside of the
container in `/home/devel/mirror`:

```bash
$ chmod +r /home/devel/mirror/proprietary-renesas-r-car/*.zip
$ ls -l /home/devel/mirror/proprietary-renesas-r-car/
total 8220
-rw-r--r-- 1 1000 1000 6047383 Jul 11 11:03 R-Car_Series_Evaluation_Software_Package_for_Linux-20151228.zip
-rw-r--r-- 1 1000 1000 2394750 Jul 11 11:03 R-Car_Series_Evaluation_Software_Package_of_Linux_Drivers-20151228.zip
```

## Setup the build environment

We should first prepare the environment to build images.

This can be easily done thanks to a helper script named `prepare_meta`.
This script does the following:

- check for an updated version at
  [https://github.com/iotbzh/agl-manifest](https://github.com/iotbzh/agl-manifest)
- pull Yocto layers from git repositories, following a snapshot manifest
- setup build configuration (build/conf files)

The following options are available:

```bash
devel@bsp-devkit:~$ prepare_meta -h
prepare_meta [options]

Options:
 -f|--flavour <flavour[/tag_or_revision]>
   what flavour to us
   default: 'iotbzh'
   possible values: 'stable','unstable','testing', 'iotbzh' ... see agl-manifest git repository
 -o|--outputdir <destination_dir>
   output directory where subdirectories will be created: meta, build, ...
    default: current directory (.)
 -l|--localmirror <directory>
   specifies a local mirror directory to initialize meta, download_dir or sstate-cache
    default: none
 -r|--remotemirror <url>
   specifies a remote mirror directory to be used at build time for download_dir or sstate-cache
    default: none
 -p|--proprietary <directory>
   Directory containing Renesas proprietary drivers for RCar platform (2 zip files)
    default: none
 -e|--enable <option>
   enable a specific option
    available options: ccache, upgrade
 -d|--disable <option>
   disable a specific option
    available options: ccache, upgrade
 -t|--target <name>
   target platform
    default: porter
    valid options: intel-corei7-64, qemux86, qemux86-64, wandboard
 -h|--help
   get this help

Example:
  prepare_meta -f iotbzh/master -o /tmp/xdt -l /ssd/mirror -p /vol/xdt/proprietary-renesas-rcar/ -t porter
```

In our case, we can start it with the following arguments:

- build in `/xdt` (-o /xdt)
- build for porter board (`-t porter`)
- build the 'iotbzh' flavour (`-f iotbzh`), which contains the standard
  AGL layers + security and app framework. Flavours are stored in the
  agl-manifest repository.
- Use a local mirror (`-l <mirror path>`). This directory may
  contain some directories generated in a previous build: `downloads`,
  `sstate-cache`, `ccache`, `meta`. If found, the mirror directories
  will be specified in configuration files.
- specify proprietary drivers location (`-p <drivers path>`)

So we can run the helper script:

```bash
devel@bsp-devkit:~$ prepare_meta -o /xdt -t porter -f rel2.0 -l /home/devel/mirror/ -p /home/devel/mirror/proprietary-renesas-r-car/ -e wipeconfig
[...]
=== setup build for porter
Using proprietary Renesas drivers for target porter
=== conf: build.conf
=== conf: download caches
=== conf: sstate caches
=== conf: local.conf
=== conf: bblayers.conf.inc -> bblayers.conf
=== conf: porter_bblayers.conf.inc -> bblayers.conf
=== conf: bblayers_proprietary.conf.inc is empty
=== conf: porter_bblayers_proprietary.conf.inc is empty
=== conf: local.conf.inc is empty
=== conf: porter_local.conf.inc is empty
=== conf: local_proprietary.conf.inc is empty
=== conf: porter_local_proprietary.conf.inc is empty
=====================================================================

Build environment is ready. To use it, run:

# source /xdt/meta/poky/oe-init-build-env /xdt/build

then

# bitbake agl-demo-platform
```

Now, the container shell is ready to build an image for Porter.

## Launch the build

To start the build, we can simply enter the indicated commands:

```bash
devel@bsp-devkit:~$ . /xdt/build/agl-init-build-env
### Shell environment set up for builds. ###

You can now run 'bitbake <target>'

Common target are:

 agl-demo-platform

devel@bsp-devkit:/xdt/build$ bitbake agl-demo-platform
[snip]
NOTE: Tasks Summary: Attempted 5108 tasks of which 4656 didn't need to
be rerun and all succeeded.

Summary: There were 19 WARNING messages shown.
```

Without mirror, it will take a few hours to build all the required
component of the AGL distribution, depending on: your host machine CPU,
disk drives types and internet connection.

## Updating the local mirror

Optionally, at the end of the build, some directories may be synced to
the mirror dir, for future usage:

- `/xdt/meta`: contains all layers used to build AGL
- `/xdt/downloads`: download cache (avoid fetching source from remote sites)
- `/xdt/sstate-cache`: binary build results (avoid recompiling sources)

This can be done with the following command:

```bash
$ for x in meta downloads sstate-cache; do rsync -Pav \
   --delete /xdt/$x /home/devel/mirror/$x; done
```