summaryrefslogtreecommitdiffstats
path: root/meta-agl-profile-core/recipes-core/distro-build-manifest/distro-build-manifest.bb
blob: e421738889f10f68b4b98ebec3a1047c66efae74 (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
SUMMARY = "Distribution build manifest"
DESCRIPTION = "The /etc/platform-build-info file contains build manifest (SPEC-720)."
LICENSE = "MIT"

# information distributed by the package is machine specific
PACKAGE_ARCH = "${MACHINE_ARCH}"

# dependencies of ${DISTRO_MANIFEST_GENERATOR}
DEPENDS = "coreutils-native bash-native git-native gawk-native sed-native"

# force a rebuild everytime a build is started
do_compile[nostamp] = "1"

do_compilestep1 () {
    rc=99
    outfile=${B}/platform-build-info
    if [ -f "${DISTRO_MANIFEST_GENERATOR}" -a -f "${DISTRO_SETUP_MANIFEST}" ]; then
        ${DISTRO_MANIFEST_GENERATOR} ${DISTRO_SETUP_MANIFEST} deploy >${outfile}-deploy
        rc1=$?
        ${DISTRO_MANIFEST_GENERATOR} ${DISTRO_SETUP_MANIFEST} target >${outfile}-target
        rc2=$?
        ${DISTRO_MANIFEST_GENERATOR} ${DISTRO_SETUP_MANIFEST} sdk >${outfile}-sdk
        rc=$?

        if [ "$rc1" -ne 0 -o "$rc2" -ne 0 -o "$rc3" -ne 0 ]; then
            rc=98
        fi
    fi

    if [ "$rc" -ne  0 ]; then
        echo "distro-build-manifest generation failed."
    fi
    return $rc
}

# borrowed to os-release.bb (output format is very close)
python do_compilestep2 () {
   import shutil
   with open(d.expand('${B}/platform-build-info-deploy'),'a') as f:
      for field in d.getVar('BUILD_MANIFEST_FIELDS_DEPLOY').split():
         value=d.getVar(field)
         if value:
            f.write('DIST_BB_{0}="{1}"\n'.format(field,value))

   with open(d.expand('${B}/platform-build-info-target'),'a') as f:
      for field in d.getVar('BUILD_MANIFEST_FIELDS_TARGET').split():
         value=d.getVar(field)
         if value:
            f.write('DIST_BB_{0}="{1}"\n'.format(field,value))

   with open(d.expand('${B}/platform-build-info-sdk'),'a') as f:
      for field in d.getVar('BUILD_MANIFEST_FIELDS_SDK').split():
         value=d.getVar(field)
         if value:
            f.write('DIST_BB_{0}="{1}"\n'.format(field,value))
}
do_compilestep2[vardeps] += " ${BUILD_MANIFEST_FIELDS_DEPLOY}"
do_compilestep2[vardeps] += " ${BUILD_MANIFEST_FIELDS_TARGET}"
do_compilestep2[vardeps] += " ${BUILD_MANIFEST_FIELDS_SDK}"

# combine the two steps
python do_compile() {
   bb.build.exec_func("do_compilestep1",d)
   bb.build.exec_func("do_compilestep2",d)
}

do_install () {
    # install in target dir
    install -d ${D}${sysconfdir}
    install -m 0644 platform-build-info-target ${D}${sysconfdir}/platform-build-info

    # also copy in deploy dir
    install -d ${DEPLOY_DIR_IMAGE}
    install -m 0644 platform-build-info-deploy ${DEPLOY_DIR_IMAGE}/platform-build-info

    # and copy to nativesdk package
    # TODO
}

# list of variables to add to the various manifests
# smalles one is 'target', then 'deploy' and finally 'sdk'
BUILD_MANIFEST_FIELDS_TARGET = "\
    MACHINE_ARCH \
    MACHINEOVERRIDES \
    MACHINE_FEATURES \
    DISTRO_CODENAME \
    DISTRO_FEATURES \
    DISTRO_BRANCH_VERSION_TAG \
    AGLVERSION \
    AGL_BRANCH \
    AGLRELEASETYPE \
"

BUILD_MANIFEST_FIELDS_DEPLOY = "\
    ${BUILD_MANIFEST_FIELDS_TARGET} \
    DISTRO \
    DISTRO_VERSION \
    DISTROOVERRIDES \
    TUNE_FEATURES \
    TUNE_PKGARCH \
    ALL_MULTILIB_PACKAGE_ARCHS \
"

BUILD_MANIFEST_FIELDS_SDK = "\
    ${BUILD_MANIFEST_FIELDS_DEPLOY} \
    HOST_SYS \
    TARGET_SYS \
    TARGET_VENDOR \
    SDK_ARCH \
    SDK_VENDOR \
    SDK_VERSION \
    SDK_OS \
"

# dont exec useless tasks
do_fetch[noexec] = "1"
do_unpack[noexec] = "1"
do_patch[noexec] = "1"
do_configure[noexec] = "1"