summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHao Chen <chenhaosjtuacm@google.com>2020-08-27 20:16:49 -0700
committerHao Chen <chenhaosjtuacm@google.com>2020-09-21 14:56:10 -0700
commit195571e8483105246507a1c39b8efc7b0791ac4c (patch)
tree98ed2cd3f65c449f32f5f632cab1b0686cf4fd4f
parent81bc9bdc646feb8278dd91697b0295d10aca3e3c (diff)
downloaddevice_google_trout-195571e8483105246507a1c39b8efc7b0791ac4c.tar.gz
device_google_trout-195571e8483105246507a1c39b8efc7b0791ac4c.tar.bz2
device_google_trout-195571e8483105246507a1c39b8efc7b0791ac4c.zip
Simulate repo manifest by Bitbake unpack rule
Because of b/165933540, we cannot use repo:// to fetch code Test: build Bug: 155491613 Change-Id: If9679784b7d725ceb51cddcb7fd279f92be40f61
-rw-r--r--agl_services_build/yocto-layer/meta-google/README.md11
-rw-r--r--agl_services_build/yocto-layer/meta-google/recipes-trout/agl-services/common.inc25
-rw-r--r--agl_services_build/yocto-layer/meta-google/recipes-trout/agl-services/sources.inc49
3 files changed, 64 insertions, 21 deletions
diff --git a/agl_services_build/yocto-layer/meta-google/README.md b/agl_services_build/yocto-layer/meta-google/README.md
index 566a845..1fdd9ca 100644
--- a/agl_services_build/yocto-layer/meta-google/README.md
+++ b/agl_services_build/yocto-layer/meta-google/README.md
@@ -15,16 +15,5 @@ First copy this directory to `ROOT_OF_AGL_BSP/apps/apps_proc`
bitbake-layers add-layer meta-clang meta-google
```
-### Copying AGL Services Source Code
-
-This step should be removed in the future. For testing now, the source code of AGL services needs to be manually packed and put to `meta-google/recipes-trout/agl-services/files/google-trout-agl-services.tar.gz`. The package can be generated by
-
-```
-PATH_TO_ANDROID_SRCROOT/device/google/trout/agl_services_build/newrepo.sh YOUR_AGL_SRC_PATH
-cd YOUR_AGL_SRC_PATH
-mv repo google-trout-agl-services
-tar -czf google-trout-agl-services.tar.gz google-trout-agl-services/
-```
-
### Build
`bitbake google-trout-agl-services`
diff --git a/agl_services_build/yocto-layer/meta-google/recipes-trout/agl-services/common.inc b/agl_services_build/yocto-layer/meta-google/recipes-trout/agl-services/common.inc
index 249e059..7c2304f 100644
--- a/agl_services_build/yocto-layer/meta-google/recipes-trout/agl-services/common.inc
+++ b/agl_services_build/yocto-layer/meta-google/recipes-trout/agl-services/common.inc
@@ -1,12 +1,12 @@
-# TODO(chenhaosjtuacm): set it to the correct license, license file is needed
-LICENSE = "CLOSED"
+require sources.inc
-# TODO(chenhaosjtuacm): Set to a public-available manifest repository
-SRC_URI = "\
- file://google-trout-agl-services.tar.gz \
-"
+S = "${WORKDIR}/${FETCH_CODE_PREFIX}"
-S = "${WORKDIR}/google-trout-agl-services"
+def force_create_symlink(src, dst):
+ src = os.path.relpath(src, os.path.dirname(dst))
+ tmplink = '{}.templink'.format(dst)
+ os.symlink(src, tmplink)
+ os.rename(tmplink, dst)
def trout_compile_targets(d):
install_entries = d.getVar('TROUT_target_install').split()
@@ -21,9 +21,7 @@ def trout_do_install(d):
for entry in install_entries:
if ':' in entry:
src, dst = entry.split(':')
- tmplink = '{}.templink'.format(dst)
- os.symlink(src, tmplink)
- os.rename(tmplink, dst)
+ force_create_symlink(src, dst)
else:
dst = entry
os.system('install -m 0755 {} {}'.format(dst, install_dir))
@@ -32,6 +30,13 @@ OECMAKE_TARGET_COMPILE = "${@trout_compile_targets(d)}"
inherit pkgconfig cmake
+python do_unpack_append() {
+ os.chdir(d.getVar('S'))
+ linkfile_rules = d.getVar('SRC_SYMLINKS').split()
+ for src, dst in map(lambda x: x.split(':'), linkfile_rules):
+ force_create_symlink(src, dst)
+}
+
python do_install() {
trout_do_install(d)
}
diff --git a/agl_services_build/yocto-layer/meta-google/recipes-trout/agl-services/sources.inc b/agl_services_build/yocto-layer/meta-google/recipes-trout/agl-services/sources.inc
new file mode 100644
index 0000000..99fbb35
--- /dev/null
+++ b/agl_services_build/yocto-layer/meta-google/recipes-trout/agl-services/sources.inc
@@ -0,0 +1,49 @@
+# TODO(chenhaosjtuacm): set it to the correct license, license file is needed
+LICENSE = "CLOSED"
+
+# Since repo is not working correctly in our case (b/165933540), we simulate
+# the behavior of device/google/trout/agl_services_build/repo_manifest.xml
+# in the unpacking task.
+
+ANDROID_REMOTE = "git://partner-android.googlesource.com"
+BORINGSSL_REMOTE = "git://boringssl.googlesource.com"
+GITHUB_REMOTE = "git://github.com"
+
+FETCH_CODE_PREFIX = "src"
+
+# Pull the source from git server remote/name to path
+def trout_git_uri(d, remote, name, path, revision):
+ return '{}/{};protocol=https;nobranch=1;' \
+ 'destsuffix={}/{};rev={}'.format(
+ d.getVar(remote), name,
+ d.getVar('FETCH_CODE_PREFIX'), path, revision)
+
+# Non-Trout Android code revisions are matching those in Trout R QPR1 PDK
+# Except hardware/interfaces (TODO: chenhaosjtuacm, 166706927)
+# TODO (chenhaosjtuacm): generate SRC_URI from the manifest
+
+SRC_URI = "\
+ ${@trout_git_uri(d, 'ANDROID_REMOTE', 'device/google/trout', 'device/google/trout', 'rvc-qpr-dev')} \
+ ${@trout_git_uri(d, 'ANDROID_REMOTE', 'platform/external/fmtlib', 'third_party/fmtlib', 'aa6fa3aa882afe47f7af990b0c6d747a01cd6104')} \
+ ${@trout_git_uri(d, 'ANDROID_REMOTE', 'platform/external/grpc-grpc', 'third_party/grpc-grpc', '75bfcd05212333d0f4247865e3a61eaf6092d932')} \
+ ${@trout_git_uri(d, 'ANDROID_REMOTE', 'platform/external/jsoncpp', 'third_party/jsoncpp', 'ceed690fefd71a34154781da01b3bb0294a486eb')} \
+ ${@trout_git_uri(d, 'ANDROID_REMOTE', 'platform/external/protobuf', 'third_party/protobuf', '2305946dc587fb5766d207c7e3981375b2aaf5ce')} \
+ ${@trout_git_uri(d, 'ANDROID_REMOTE', 'platform/hardware/interfaces', 'hardware/interfaces', '1eb933123b52d6b1f69acfd87d3aeceb45f6ef1b')} \
+ ${@trout_git_uri(d, 'ANDROID_REMOTE', 'platform/system/core', 'third_party/android/system_core', 'b1ee3a99d1fc3d41606555e29da484df8a66ed71')} \
+ ${@trout_git_uri(d, 'BORINGSSL_REMOTE', 'boringssl', 'third_party/boringssl', '0b710a305b42b67522003a314dea3e3868485665')} \
+ ${@trout_git_uri(d, 'GITHUB_REMOTE', 'c-ares/c-ares', 'third_party/cares', '3be1924221e1326df520f8498d704a5c4c8d0cce')} \
+ ${@trout_git_uri(d, 'GITHUB_REMOTE', 'gflags/gflags', 'third_party/gflags', '28f50e0fed19872e0fd50dd23ce2ee8cd759338e')} \
+ ${@trout_git_uri(d, 'GITHUB_REMOTE', 'madler/zlib', 'third_party/zlib', 'cacf7f1d4e3d44d871b605da3b647f07d718623f')} \
+"
+
+SRC_SYMLINKS = "\
+ device/google/trout/agl_services_build/build.sh:build.sh \
+ device/google/trout/agl_services_build/CMakeLists.txt:CMakeLists.txt \
+ device/google/trout/agl_services_build/cmake:cmake \
+ device/google/trout/agl_services_build/toolchain:toolchain \
+ device/google/trout/hal/audiocontrol/2.0:audiocontrol \
+ device/google/trout/hal/dumpstate/1.1:dumpstate_server \
+ device/google/trout/hal/vehicle/2.0:vehicle_hal_server \
+ device/google/trout/hal/common/agl/watchdog:watchdog_test_server \
+ hardware/interfaces/automotive/vehicle/2.0/default:third_party/default_native_vehicle_hal \
+"