diff options
Diffstat (limited to 'recipes-sota/aktualizr')
-rw-r--r-- | recipes-sota/aktualizr/aktualizr-auto-prov-creds.bb | 2 | ||||
-rw-r--r-- | recipes-sota/aktualizr/aktualizr-auto-prov.bb | 2 | ||||
-rw-r--r-- | recipes-sota/aktualizr/aktualizr-ca-implicit-prov-creds.bb | 6 | ||||
-rw-r--r-- | recipes-sota/aktualizr/aktualizr-ca-implicit-prov.bb | 5 | ||||
-rw-r--r-- | recipes-sota/aktualizr/aktualizr-hsm-prov.bb | 2 | ||||
-rw-r--r-- | recipes-sota/aktualizr/aktualizr-uboot-env-rollback.bb | 4 | ||||
-rwxr-xr-x | recipes-sota/aktualizr/aktualizr_git.bb | 80 | ||||
-rw-r--r-- | recipes-sota/aktualizr/files/10-resource-control.conf | 6 | ||||
-rwxr-xr-x | recipes-sota/aktualizr/files/run-ptest | 18 | ||||
-rw-r--r-- | recipes-sota/aktualizr/garage-sign-version.inc | 36 |
10 files changed, 108 insertions, 53 deletions
diff --git a/recipes-sota/aktualizr/aktualizr-auto-prov-creds.bb b/recipes-sota/aktualizr/aktualizr-auto-prov-creds.bb index 0628a61..6b2dd27 100644 --- a/recipes-sota/aktualizr/aktualizr-auto-prov-creds.bb +++ b/recipes-sota/aktualizr/aktualizr-auto-prov-creds.bb | |||
@@ -3,6 +3,8 @@ SECTION = "base" | |||
3 | LICENSE = "MPL-2.0" | 3 | LICENSE = "MPL-2.0" |
4 | LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MPL-2.0;md5=815ca599c9df247a0c7f619bab123dad" | 4 | LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MPL-2.0;md5=815ca599c9df247a0c7f619bab123dad" |
5 | 5 | ||
6 | inherit allarch | ||
7 | |||
6 | DEPENDS = "aktualizr-native zip-native" | 8 | DEPENDS = "aktualizr-native zip-native" |
7 | ALLOW_EMPTY_${PN} = "1" | 9 | ALLOW_EMPTY_${PN} = "1" |
8 | 10 | ||
diff --git a/recipes-sota/aktualizr/aktualizr-auto-prov.bb b/recipes-sota/aktualizr/aktualizr-auto-prov.bb index f506cab..585fe71 100644 --- a/recipes-sota/aktualizr/aktualizr-auto-prov.bb +++ b/recipes-sota/aktualizr/aktualizr-auto-prov.bb | |||
@@ -5,6 +5,8 @@ SECTION = "base" | |||
5 | LICENSE = "MPL-2.0" | 5 | LICENSE = "MPL-2.0" |
6 | LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MPL-2.0;md5=815ca599c9df247a0c7f619bab123dad" | 6 | LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MPL-2.0;md5=815ca599c9df247a0c7f619bab123dad" |
7 | 7 | ||
8 | inherit allarch | ||
9 | |||
8 | DEPENDS = "aktualizr-native zip-native" | 10 | DEPENDS = "aktualizr-native zip-native" |
9 | RDEPENDS_${PN}_append = "${@' aktualizr-auto-prov-creds' if d.getVar('SOTA_DEPLOY_CREDENTIALS', True) == '1' else ''}" | 11 | RDEPENDS_${PN}_append = "${@' aktualizr-auto-prov-creds' if d.getVar('SOTA_DEPLOY_CREDENTIALS', True) == '1' else ''}" |
10 | PV = "1.0" | 12 | PV = "1.0" |
diff --git a/recipes-sota/aktualizr/aktualizr-ca-implicit-prov-creds.bb b/recipes-sota/aktualizr/aktualizr-ca-implicit-prov-creds.bb index 7420983..da17d77 100644 --- a/recipes-sota/aktualizr/aktualizr-ca-implicit-prov-creds.bb +++ b/recipes-sota/aktualizr/aktualizr-ca-implicit-prov-creds.bb | |||
@@ -3,6 +3,12 @@ SECTION = "base" | |||
3 | LICENSE = "MPL-2.0" | 3 | LICENSE = "MPL-2.0" |
4 | LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MPL-2.0;md5=815ca599c9df247a0c7f619bab123dad" | 4 | LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MPL-2.0;md5=815ca599c9df247a0c7f619bab123dad" |
5 | 5 | ||
6 | inherit allarch | ||
7 | |||
8 | # WARNING: it is NOT a production solution. The secure way to provision devices | ||
9 | # is to create certificate request directly on the device (either with HSM/TPM | ||
10 | # or with software) and then sign it with a CA stored on a disconnected machine. | ||
11 | |||
6 | DEPENDS = "aktualizr aktualizr-native" | 12 | DEPENDS = "aktualizr aktualizr-native" |
7 | ALLOW_EMPTY_${PN} = "1" | 13 | ALLOW_EMPTY_${PN} = "1" |
8 | 14 | ||
diff --git a/recipes-sota/aktualizr/aktualizr-ca-implicit-prov.bb b/recipes-sota/aktualizr/aktualizr-ca-implicit-prov.bb index 5893ed2..0d1c860 100644 --- a/recipes-sota/aktualizr/aktualizr-ca-implicit-prov.bb +++ b/recipes-sota/aktualizr/aktualizr-ca-implicit-prov.bb | |||
@@ -1,14 +1,13 @@ | |||
1 | SUMMARY = "Aktualizr configuration for implicit provisioning with CA" | 1 | SUMMARY = "Aktualizr configuration for implicit provisioning with CA" |
2 | DESCRIPTION = "Configuration for implicitly provisioning Aktualizr using externally provided or generated CA" | 2 | DESCRIPTION = "Configuration for implicitly provisioning Aktualizr using externally provided or generated CA" |
3 | 3 | ||
4 | # WARNING: it is NOT a production solution. The secure way to provision devices is to create certificate request directly on the device | ||
5 | # (either with HSM/TPM or with software) and then sign it with a CA stored on a disconnected machine | ||
6 | |||
7 | HOMEPAGE = "https://github.com/advancedtelematic/aktualizr" | 4 | HOMEPAGE = "https://github.com/advancedtelematic/aktualizr" |
8 | SECTION = "base" | 5 | SECTION = "base" |
9 | LICENSE = "MPL-2.0" | 6 | LICENSE = "MPL-2.0" |
10 | LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MPL-2.0;md5=815ca599c9df247a0c7f619bab123dad" | 7 | LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MPL-2.0;md5=815ca599c9df247a0c7f619bab123dad" |
11 | 8 | ||
9 | inherit allarch | ||
10 | |||
12 | DEPENDS = "aktualizr aktualizr-native openssl-native" | 11 | DEPENDS = "aktualizr aktualizr-native openssl-native" |
13 | RDEPENDS_${PN}_append = "${@' aktualizr-ca-implicit-prov-creds' if d.getVar('SOTA_DEPLOY_CREDENTIALS', True) == '1' else ''}" | 12 | RDEPENDS_${PN}_append = "${@' aktualizr-ca-implicit-prov-creds' if d.getVar('SOTA_DEPLOY_CREDENTIALS', True) == '1' else ''}" |
14 | 13 | ||
diff --git a/recipes-sota/aktualizr/aktualizr-hsm-prov.bb b/recipes-sota/aktualizr/aktualizr-hsm-prov.bb index 7947edd..465b280 100644 --- a/recipes-sota/aktualizr/aktualizr-hsm-prov.bb +++ b/recipes-sota/aktualizr/aktualizr-hsm-prov.bb | |||
@@ -5,6 +5,8 @@ SECTION = "base" | |||
5 | LICENSE = "MPL-2.0" | 5 | LICENSE = "MPL-2.0" |
6 | LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MPL-2.0;md5=815ca599c9df247a0c7f619bab123dad" | 6 | LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MPL-2.0;md5=815ca599c9df247a0c7f619bab123dad" |
7 | 7 | ||
8 | inherit allarch | ||
9 | |||
8 | DEPENDS = "aktualizr aktualizr-native" | 10 | DEPENDS = "aktualizr aktualizr-native" |
9 | RDEPENDS_${PN}_append = "${@' aktualizr-ca-implicit-prov-creds softhsm-testtoken' if d.getVar('SOTA_DEPLOY_CREDENTIALS', True) == '1' else ''}" | 11 | RDEPENDS_${PN}_append = "${@' aktualizr-ca-implicit-prov-creds softhsm-testtoken' if d.getVar('SOTA_DEPLOY_CREDENTIALS', True) == '1' else ''}" |
10 | 12 | ||
diff --git a/recipes-sota/aktualizr/aktualizr-uboot-env-rollback.bb b/recipes-sota/aktualizr/aktualizr-uboot-env-rollback.bb index 305b5e5..d962876 100644 --- a/recipes-sota/aktualizr/aktualizr-uboot-env-rollback.bb +++ b/recipes-sota/aktualizr/aktualizr-uboot-env-rollback.bb | |||
@@ -3,12 +3,14 @@ HOMEPAGE = "https://github.com/advancedtelematic/aktualizr" | |||
3 | SECTION = "base" | 3 | SECTION = "base" |
4 | LICENSE = "MPL-2.0" | 4 | LICENSE = "MPL-2.0" |
5 | LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MPL-2.0;md5=815ca599c9df247a0c7f619bab123dad" | 5 | LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MPL-2.0;md5=815ca599c9df247a0c7f619bab123dad" |
6 | |||
7 | inherit allarch | ||
8 | |||
6 | DEPENDS = "aktualizr-native" | 9 | DEPENDS = "aktualizr-native" |
7 | RDEPENDS_${PN} = "aktualizr" | 10 | RDEPENDS_${PN} = "aktualizr" |
8 | 11 | ||
9 | SRC_URI = "" | 12 | SRC_URI = "" |
10 | 13 | ||
11 | |||
12 | do_install() { | 14 | do_install() { |
13 | install -m 0700 -d ${D}${libdir}/sota/conf.d | 15 | install -m 0700 -d ${D}${libdir}/sota/conf.d |
14 | install -m 0644 ${STAGING_DIR_NATIVE}${libdir}/sota/sota_uboot_env.toml ${D}${libdir}/sota/conf.d/30-rollback.toml | 16 | install -m 0644 ${STAGING_DIR_NATIVE}${libdir}/sota/sota_uboot_env.toml ${D}${libdir}/sota/conf.d/30-rollback.toml |
diff --git a/recipes-sota/aktualizr/aktualizr_git.bb b/recipes-sota/aktualizr/aktualizr_git.bb index a8f40d6..3759c39 100755 --- a/recipes-sota/aktualizr/aktualizr_git.bb +++ b/recipes-sota/aktualizr/aktualizr_git.bb | |||
@@ -5,40 +5,51 @@ SECTION = "base" | |||
5 | LICENSE = "MPL-2.0" | 5 | LICENSE = "MPL-2.0" |
6 | LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=9741c346eef56131163e13b9db1241b3" | 6 | LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=9741c346eef56131163e13b9db1241b3" |
7 | 7 | ||
8 | require garage-sign-version.inc | ||
9 | |||
10 | DEPENDS = "boost curl openssl libarchive libsodium sqlite3 asn1c-native" | 8 | DEPENDS = "boost curl openssl libarchive libsodium sqlite3 asn1c-native" |
11 | RDEPENDS_${PN}_class-target = "aktualizr-check-discovery aktualizr-configs lshw" | 9 | DEPENDS_append = "${@bb.utils.contains('PTEST_ENABLED', '1', ' coreutils-native ostree-native aktualizr-native ', '', d)}" |
12 | RDEPENDS_${PN}-secondary = "aktualizr-check-discovery" | 10 | RDEPENDS_${PN}_class-target = "aktualizr-configs lshw" |
13 | RDEPENDS_${PN}-host-tools = "aktualizr aktualizr-repo aktualizr-cert-provider ${@bb.utils.contains('PACKAGECONFIG', 'sota-tools', 'garage-deploy garage-push', '', d)}" | 11 | RDEPENDS_${PN}-host-tools = "aktualizr aktualizr-repo aktualizr-cert-provider ${@bb.utils.contains('PACKAGECONFIG', 'sota-tools', 'garage-deploy garage-push', '', d)}" |
14 | 12 | ||
13 | RDEPENDS_${PN}-ptest += "bash cmake curl python3-misc python3-modules sqlite3 valgrind" | ||
14 | |||
15 | PV = "1.0+git${SRCPV}" | 15 | PV = "1.0+git${SRCPV}" |
16 | PR = "7" | 16 | PR = "7" |
17 | 17 | ||
18 | GARAGE_SIGN_PV = "0.6.0-18-g5b8b259" | ||
19 | |||
18 | SRC_URI = " \ | 20 | SRC_URI = " \ |
19 | gitsm://github.com/advancedtelematic/aktualizr;branch=${BRANCH} \ | 21 | gitsm://github.com/advancedtelematic/aktualizr;branch=${BRANCH} \ |
22 | file://run-ptest \ | ||
20 | file://aktualizr.service \ | 23 | file://aktualizr.service \ |
21 | file://aktualizr-secondary.service \ | 24 | file://aktualizr-secondary.service \ |
22 | file://aktualizr-secondary.socket \ | 25 | file://aktualizr-secondary.socket \ |
23 | file://aktualizr-serialcan.service \ | 26 | file://aktualizr-serialcan.service \ |
27 | file://10-resource-control.conf \ | ||
28 | ${@ d.expand("https://ats-tuf-cli-releases.s3-eu-central-1.amazonaws.com/cli-${GARAGE_SIGN_PV}.tgz;unpack=0") if d.getVar('GARAGE_SIGN_AUTOVERSION') != '1' else ''} \ | ||
24 | " | 29 | " |
25 | 30 | ||
26 | SRCREV = "c71ec0a320d85a3e75ba37bff7dc40ad02e9d655" | 31 | # for garage-sign archive |
32 | SRC_URI[md5sum] = "c5e9968dfe78a7264ab9a8338c11725d" | ||
33 | SRC_URI[sha256sum] = "3a19258d7a1825a308aca0da82f7a337985bec05e8951355c4c95f0fcf2444f4" | ||
34 | |||
35 | SRCREV = "c50feb37034eceb1254429d3e3ed38e5b8a0dc60" | ||
27 | BRANCH ?= "master" | 36 | BRANCH ?= "master" |
28 | 37 | ||
29 | S = "${WORKDIR}/git" | 38 | S = "${WORKDIR}/git" |
30 | 39 | ||
31 | inherit pkgconfig cmake systemd | 40 | inherit cmake pkgconfig ptest systemd |
41 | |||
42 | # disable ptest by default as it slows down builds quite a lot | ||
43 | # can be enabled manually by setting 'PTEST_ENABLED_pn-aktualizr' to '1' in local.conf | ||
44 | PTEST_ENABLED = "0" | ||
32 | 45 | ||
33 | SYSTEMD_PACKAGES = "${PN} ${PN}-secondary" | 46 | SYSTEMD_PACKAGES = "${PN} ${PN}-secondary" |
34 | SYSTEMD_SERVICE_${PN} = "aktualizr.service" | 47 | SYSTEMD_SERVICE_${PN} = "aktualizr.service" |
35 | SYSTEMD_SERVICE_${PN}-secondary = "aktualizr-secondary.socket" | 48 | SYSTEMD_SERVICE_${PN}-secondary = "aktualizr-secondary.socket" |
36 | 49 | ||
37 | EXTRA_OECMAKE = "-DCMAKE_BUILD_TYPE=Release -DAKTUALIZR_VERSION=${PV}" | 50 | EXTRA_OECMAKE = "-DCMAKE_BUILD_TYPE=Release -DAKTUALIZR_VERSION=${PV} ${@bb.utils.contains('PTEST_ENABLED', '1', '-DTESTSUITE_VALGRIND=on', '', d)}" |
38 | 51 | ||
39 | GARAGE_SIGN_OPS = "${@ '-DGARAGE_SIGN_VERSION=%s' % d.getVar('GARAGE_SIGN_VERSION') if d.getVar('GARAGE_SIGN_VERSION') is not None else ''} \ | 52 | GARAGE_SIGN_OPS = "${@ d.expand('-DGARAGE_SIGN_ARCHIVE=${WORKDIR}/cli-${GARAGE_SIGN_PV}.tgz') if d.getVar('GARAGE_SIGN_AUTOVERSION') != '1' else ''}" |
40 | ${@ '-DGARAGE_SIGN_SHA256=%s' % d.getVar('GARAGE_SIGN_SHA256') if d.getVar('GARAGE_SIGN_SHA256') is not None else ''} \ | ||
41 | " | ||
42 | 53 | ||
43 | PACKAGECONFIG ?= "ostree ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} ${@bb.utils.filter('SOTA_CLIENT_FEATURES', 'hsm serialcan ubootenv', d)}" | 54 | PACKAGECONFIG ?= "ostree ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} ${@bb.utils.filter('SOTA_CLIENT_FEATURES', 'hsm serialcan ubootenv', d)}" |
44 | PACKAGECONFIG_class-native = "sota-tools" | 55 | PACKAGECONFIG_class-native = "sota-tools" |
@@ -51,6 +62,35 @@ PACKAGECONFIG[load-tests] = "-DBUILD_LOAD_TESTS=ON,-DBUILD_LOAD_TESTS=OFF," | |||
51 | PACKAGECONFIG[serialcan] = ",,,slcand-start" | 62 | PACKAGECONFIG[serialcan] = ",,,slcand-start" |
52 | PACKAGECONFIG[ubootenv] = ",,,u-boot-fw-utils aktualizr-uboot-env-rollback" | 63 | PACKAGECONFIG[ubootenv] = ",,,u-boot-fw-utils aktualizr-uboot-env-rollback" |
53 | 64 | ||
65 | # can be overriden in configuration with `RESOURCE_xxx_pn-aktualizr` | ||
66 | # see `man systemd.resource-control` for details | ||
67 | |||
68 | # can be used to lower aktualizr priority, default is 100 | ||
69 | RESOURCE_CPU_WEIGHT = "100" | ||
70 | # will be slowed down when it reaches 'high', killed when it reaches 'max' | ||
71 | RESOURCE_MEMORY_HIGH = "100M" | ||
72 | RESOURCE_MEMORY_MAX = "80%" | ||
73 | |||
74 | do_compile_ptest() { | ||
75 | cmake_runcmake_build --target build_tests "-- ${PARALLEL_MAKE}" | ||
76 | } | ||
77 | |||
78 | do_install_ptest() { | ||
79 | # copy the complete source directory (contains build) | ||
80 | cp -r ${B}/ ${D}/${PTEST_PATH}/build | ||
81 | cp -r ${S}/ ${D}/${PTEST_PATH}/src | ||
82 | |||
83 | # remove huge external unused repository | ||
84 | rm -rf ${D}/${PTEST_PATH}/src/partial/extern/RIOT | ||
85 | |||
86 | # remove huge build artifacts | ||
87 | find ${D}/${PTEST_PATH}/build/src -name "*.a" -delete | ||
88 | |||
89 | # fix the absolute paths | ||
90 | find ${D}/${PTEST_PATH}/build -name "CMakeFiles" | xargs rm -rf | ||
91 | find ${D}/${PTEST_PATH}/build -name "*.cmake" -or -name "DartConfiguration.tcl" -or -name "run-valgrind" | xargs sed -e "s|${S}|${PTEST_PATH}/src|g" -e "s|${B}|${PTEST_PATH}/build|g" -e "s|\"--gtest_output[^\"]*\"||g" -i | ||
92 | } | ||
93 | |||
54 | do_install_append () { | 94 | do_install_append () { |
55 | install -d ${D}${libdir}/sota | 95 | install -d ${D}${libdir}/sota |
56 | install -m 0644 ${S}/config/sota_autoprov.toml ${D}/${libdir}/sota/sota_autoprov.toml | 96 | install -m 0644 ${S}/config/sota_autoprov.toml ${D}/${libdir}/sota/sota_autoprov.toml |
@@ -66,14 +106,14 @@ do_install_append () { | |||
66 | install -m 0700 -d ${D}${sysconfdir}/sota/conf.d | 106 | install -m 0700 -d ${D}${sysconfdir}/sota/conf.d |
67 | 107 | ||
68 | if [ -n "${SOTA_HARDWARE_ID}" ]; then | 108 | if [ -n "${SOTA_HARDWARE_ID}" ]; then |
69 | echo "[provision]\nprimary_ecu_hardware_id = ${SOTA_HARDWARE_ID}\n" > ${D}${libdir}/sota/conf.d/40-hardware-id.toml | 109 | printf "[provision]\nprimary_ecu_hardware_id = ${SOTA_HARDWARE_ID}\n" > ${D}${libdir}/sota/conf.d/40-hardware-id.toml |
70 | fi | 110 | fi |
71 | 111 | ||
72 | if [ -n "${SOTA_SECONDARY_CONFIG_DIR}" ]; then | 112 | if [ -n "${SOTA_SECONDARY_CONFIG_DIR}" ]; then |
73 | if [ -d "${SOTA_SECONDARY_CONFIG_DIR}" ]; then | 113 | if [ -d "${SOTA_SECONDARY_CONFIG_DIR}" ]; then |
74 | install -m 0700 -d ${D}${sysconfdir}/sota/ecus | 114 | install -m 0700 -d ${D}${sysconfdir}/sota/ecus |
75 | install -m 0644 "${SOTA_SECONDARY_CONFIG_DIR}"/* ${D}${sysconfdir}/sota/ecus/ | 115 | install -m 0644 "${SOTA_SECONDARY_CONFIG_DIR}"/* ${D}${sysconfdir}/sota/ecus/ |
76 | echo "[uptane]\nsecondary_configs_dir = /etc/sota/ecus/\n" > ${D}${libdir}/sota/conf.d/30-secondary-configs-dir.toml | 116 | printf "[uptane]\nsecondary_configs_dir = /etc/sota/ecus/\n" > ${D}${libdir}/sota/conf.d/30-secondary-configs-dir.toml |
77 | else | 117 | else |
78 | bbwarn "SOTA_SECONDARY_CONFIG_DIR is set to an invalid directory (${SOTA_SECONDARY_CONFIG_DIR})" | 118 | bbwarn "SOTA_SECONDARY_CONFIG_DIR is set to an invalid directory (${SOTA_SECONDARY_CONFIG_DIR})" |
79 | fi | 119 | fi |
@@ -87,6 +127,15 @@ do_install_append () { | |||
87 | install -m 0755 ${B}/src/sota_tools/garage-sign/bin/* ${D}${bindir} | 127 | install -m 0755 ${B}/src/sota_tools/garage-sign/bin/* ${D}${bindir} |
88 | install -m 0644 ${B}/src/sota_tools/garage-sign/lib/* ${D}${libdir} | 128 | install -m 0644 ${B}/src/sota_tools/garage-sign/lib/* ${D}${libdir} |
89 | fi | 129 | fi |
130 | |||
131 | # resource control | ||
132 | install -d ${D}/${systemd_system_unitdir}/aktualizr.service.d | ||
133 | install -m 0644 ${WORKDIR}/10-resource-control.conf ${D}/${systemd_system_unitdir}/aktualizr.service.d | ||
134 | |||
135 | sed -i -e 's|@CPU_WEIGHT@|${RESOURCE_CPU_WEIGHT}|g' \ | ||
136 | -e 's|@MEMORY_HIGH@|${RESOURCE_MEMORY_HIGH}|g' \ | ||
137 | -e 's|@MEMORY_MAX@|${RESOURCE_MEMORY_MAX}|g' \ | ||
138 | ${D}${systemd_system_unitdir}/aktualizr.service.d/10-resource-control.conf | ||
90 | } | 139 | } |
91 | 140 | ||
92 | PACKAGESPLITFUNCS_prepend = "split_hosttools_packages " | 141 | PACKAGESPLITFUNCS_prepend = "split_hosttools_packages " |
@@ -101,7 +150,7 @@ python split_hosttools_packages () { | |||
101 | 150 | ||
102 | PACKAGES_DYNAMIC = "^aktualizr-.* ^garage-.*" | 151 | PACKAGES_DYNAMIC = "^aktualizr-.* ^garage-.*" |
103 | 152 | ||
104 | PACKAGES =+ "${PN}-examples ${PN}-secondary ${PN}-configs ${PN}-host-tools" | 153 | PACKAGES =+ "${PN}-resource-control ${PN}-examples ${PN}-secondary ${PN}-configs ${PN}-host-tools" |
105 | 154 | ||
106 | ALLOW_EMPTY_${PN}-host-tools = "1" | 155 | ALLOW_EMPTY_${PN}-host-tools = "1" |
107 | 156 | ||
@@ -111,6 +160,10 @@ FILES_${PN} = " \ | |||
111 | ${systemd_unitdir}/system/aktualizr.service \ | 160 | ${systemd_unitdir}/system/aktualizr.service \ |
112 | " | 161 | " |
113 | 162 | ||
163 | FILES_${PN}-resource-control = " \ | ||
164 | ${systemd_system_unitdir}/aktualizr.service.d/10-resource-control.conf \ | ||
165 | " | ||
166 | |||
114 | FILES_${PN}-configs = " \ | 167 | FILES_${PN}-configs = " \ |
115 | ${sysconfdir}/sota/* \ | 168 | ${sysconfdir}/sota/* \ |
116 | ${libdir}/sota/* \ | 169 | ${libdir}/sota/* \ |
@@ -126,6 +179,7 @@ FILES_${PN}-secondary = " \ | |||
126 | ${systemd_unitdir}/system/aktualizr-secondary.socket \ | 179 | ${systemd_unitdir}/system/aktualizr-secondary.socket \ |
127 | ${systemd_unitdir}/system/aktualizr-secondary.service \ | 180 | ${systemd_unitdir}/system/aktualizr-secondary.service \ |
128 | " | 181 | " |
182 | |||
129 | BBCLASSEXTEND = "native" | 183 | BBCLASSEXTEND = "native" |
130 | 184 | ||
131 | # vim:set ts=4 sw=4 sts=4 expandtab: | 185 | # vim:set ts=4 sw=4 sts=4 expandtab: |
diff --git a/recipes-sota/aktualizr/files/10-resource-control.conf b/recipes-sota/aktualizr/files/10-resource-control.conf new file mode 100644 index 0000000..254713c --- /dev/null +++ b/recipes-sota/aktualizr/files/10-resource-control.conf | |||
@@ -0,0 +1,6 @@ | |||
1 | [Service] | ||
2 | CPUAccounting=true | ||
3 | CPUWeight=@CPU_WEIGHT@ | ||
4 | MemoryAccounting=true | ||
5 | MemoryHigh=@MEMORY_HIGH@ | ||
6 | MemoryMax=@MEMORY_MAX@ | ||
diff --git a/recipes-sota/aktualizr/files/run-ptest b/recipes-sota/aktualizr/files/run-ptest new file mode 100755 index 0000000..ff441f9 --- /dev/null +++ b/recipes-sota/aktualizr/files/run-ptest | |||
@@ -0,0 +1,18 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | set -eu | ||
4 | |||
5 | AKTUALIZR_PTEST_PARALLEL_LEVEL=${AKTUALIZR_PTEST_PARALLEL_LEVEL:-2} | ||
6 | |||
7 | filter_logs() { | ||
8 | awk '/^.*Test[[:space:]]*#[[:digit:]]+:/ { | ||
9 | a = gensub(/^.*Test[[:space:]]*#[[:digit:]]+:[[:space:]]*([^[:space:]]+).*(Passed|Skipped|Not Run|Failed|Timeout|Exception)[[:space:]:].*$/, "\\2: \\1", "g"); | ||
10 | a = gensub(/^Passed/, "PASS", "g", a); | ||
11 | a = gensub(/^(Skipped|Disabled)/, "SKIP", "g", a); | ||
12 | a = gensub(/^(Not Run|Failed|Timeout|Exception)/, "FAIL", "g", a); | ||
13 | print a; | ||
14 | }' | ||
15 | } | ||
16 | |||
17 | cd build | ||
18 | ctest -j "$AKTUALIZR_PTEST_PARALLEL_LEVEL" -O /tmp/aktualizr-ptest.log --output-on-failure -LE 'noptest' 2> /dev/null | filter_logs | ||
diff --git a/recipes-sota/aktualizr/garage-sign-version.inc b/recipes-sota/aktualizr/garage-sign-version.inc deleted file mode 100644 index 1b89a3d..0000000 --- a/recipes-sota/aktualizr/garage-sign-version.inc +++ /dev/null | |||
@@ -1,36 +0,0 @@ | |||
1 | |||
2 | python () { | ||
3 | if d.getVar("GARAGE_SIGN_VERSION", True) or not d.getVar("SOTA_PACKED_CREDENTIALS", True): | ||
4 | return | ||
5 | import json | ||
6 | import urllib.request | ||
7 | import zipfile | ||
8 | with zipfile.ZipFile(d.getVar("SOTA_PACKED_CREDENTIALS", True), 'r') as zip_ref: | ||
9 | try: | ||
10 | with zip_ref.open('tufrepo.url', mode='r') as url_file: | ||
11 | url = url_file.read().decode().strip(' \t\n') + '/health/version' | ||
12 | except (KeyError, ValueError, RuntimeError): | ||
13 | return | ||
14 | connected = False | ||
15 | tries = 3 | ||
16 | for i in range(tries): | ||
17 | try: | ||
18 | r = urllib.request.urlopen(url) | ||
19 | if r.code == 200: | ||
20 | connected = True | ||
21 | break | ||
22 | else: | ||
23 | print('Bad return code from server ' + url + ': ' + str(r.code) + | ||
24 | ' (attempt ' + str(i + 1) + ' of ' + str(tries) + ')') | ||
25 | except urllib.error.URLError as e: | ||
26 | print('Error connecting to server ' + url + ': ' + str(e) + | ||
27 | ' (attempt ' + str(i + 1) + ' of ' + str(tries) + ')') | ||
28 | if not connected: | ||
29 | return | ||
30 | resp = r.read().decode('utf-8') | ||
31 | j = json.loads(resp) | ||
32 | version = 'cli-' + j['version'] + '.tgz' | ||
33 | d.setVar("GARAGE_SIGN_VERSION", version) | ||
34 | } | ||
35 | |||
36 | # vim:set ts=4 sw=4 sts=4 expandtab: | ||