Browse Source

mender_convert_config: Refactor deb packages install into a function

Do not repeat yourself...

Changelog: None

Signed-off-by: Lluis Campos <lluis.campos@northern.tech>
(cherry picked from commit 423686a44b)
2.5.x^2
Lluis Campos 3 years ago
committed by Mender
parent
commit
27f4a5cafb
  1. 52
      mender-convert-modify
  2. 39
      modules/deb.sh

52
mender-convert-modify

@ -97,36 +97,14 @@ mkdir -p work/rootfs
sudo mount ${boot_part} work/boot sudo mount ${boot_part} work/boot
sudo mount ${root_part} work/rootfs sudo mount ${root_part} work/rootfs
mkdir -p work/deb-packages
log_info "Installing Mender client and related files" log_info "Installing Mender client and related files"
deb_arch=$(probe_debian_arch_name)
deb_distro=$(probe_debian_distro_name)
deb_codename=$(probe_debian_distro_codename)
if ! [[ "$MENDER_APT_REPO_DISTS" == *"${deb_distro}/${deb_codename}"* ]]; then
deb_distro="debian"
deb_codename="buster"
fi
if [ "${MENDER_CLIENT_INSTALL}" = "y" ]; then if [ "${MENDER_CLIENT_INSTALL}" = "y" ]; then
log_info "Installing Mender client version ${MENDER_CLIENT_VERSION}" log_info "Installing Mender client version ${MENDER_CLIENT_VERSION}"
deb_get_and_install_pacakge mender-client "${MENDER_CLIENT_VERSION}"
if [ "${MENDER_CLIENT_VERSION}" = "latest" ]; then
deb_name=$(deb_from_repo_dist_get "work/deb-packages" ${MENDER_APT_REPO_URL} ${deb_arch} "${deb_distro}/${deb_codename}/stable" "mender-client")
elif [ "${MENDER_CLIENT_VERSION}" = "master" ]; then
deb_name=$(deb_from_repo_dist_get "work/deb-packages" ${MENDER_APT_REPO_URL} ${deb_arch} "${deb_distro}/${deb_codename}/experimental" "mender-client")
else
DEBIAN_REVISION="-1+${deb_distro}+${deb_codename}"
deb_name=$(deb_from_repo_pool_get "work/deb-packages" ${MENDER_APT_REPO_URL} ${deb_arch} "mender-client" "${MENDER_CLIENT_VERSION}${DEBIAN_REVISION}")
fi
deb_extract_package "work/deb-packages/${deb_name}" "work/rootfs/"
# Save installed client version for tests in Yocto variable format # Save installed client version for tests in Yocto variable format
testscfg_add "PREFERRED_VERSION_mender-client" "$(echo ${deb_name} | sed -r 's/.*_([0-9]+\.[0-9]+\.[0-9]+).*/\1/')" testscfg_add "PREFERRED_VERSION_mender-client" "$(echo ${DEB_NAME} | sed -r 's/.*_([0-9]+\.[0-9]+\.[0-9]+).*/\1/')"
fi fi
if [ "${MENDER_ENABLE_SYSTEMD}" == "y" ]; then if [ "${MENDER_ENABLE_SYSTEMD}" == "y" ]; then
@ -135,38 +113,16 @@ if [ "${MENDER_ENABLE_SYSTEMD}" == "y" ]; then
fi fi
if [ "${MENDER_ADDON_CONNECT_INSTALL}" = "y" ]; then if [ "${MENDER_ADDON_CONNECT_INSTALL}" = "y" ]; then
log_info "Installing Mender Connect addon" log_info "Installing Mender Connect addon"
deb_get_and_install_pacakge mender-connect "${MENDER_ADDON_CONNECT_VERSION}"
if [ "${MENDER_ADDON_CONNECT_VERSION}" = "latest" ]; then
deb_name=$(deb_from_repo_dist_get "work/deb-packages" ${MENDER_APT_REPO_URL} ${deb_arch} "${deb_distro}/${deb_codename}/stable" "mender-connect")
elif [ "${MENDER_ADDON_CONNECT_VERSION}" = "master" ]; then
deb_name=$(deb_from_repo_dist_get "work/deb-packages" ${MENDER_APT_REPO_URL} ${deb_arch} "${deb_distro}/${deb_codename}/experimental" "mender-connect")
else
DEBIAN_REVISION="-1+${deb_distro}+${deb_codename}"
deb_name=$(deb_from_repo_pool_get "work/deb-packages" ${MENDER_APT_REPO_URL} ${deb_arch} "mender-connect" "${MENDER_ADDON_CONNECT_VERSION}${DEBIAN_REVISION}")
fi
deb_extract_package "work/deb-packages/${deb_name}" "work/rootfs/"
run_and_log_cmd "sudo ln -sf /lib/systemd/system/mender-connect.service \ run_and_log_cmd "sudo ln -sf /lib/systemd/system/mender-connect.service \
work/rootfs/etc/systemd/system/multi-user.target.wants/mender-connect.service" work/rootfs/etc/systemd/system/multi-user.target.wants/mender-connect.service"
fi fi
if [ "${MENDER_ADDON_CONFIGURE_INSTALL}" = "y" ]; then if [ "${MENDER_ADDON_CONFIGURE_INSTALL}" = "y" ]; then
log_info "Installing Mender Configure addon" log_info "Installing Mender Configure addon"
deb_get_and_install_pacakge mender-configure "${MENDER_ADDON_CONFIGURE_VERSION}"
if [ "${MENDER_ADDON_CONFIGURE_VERSION}" = "latest" ]; then
deb_name=$(deb_from_repo_dist_get "work/deb-packages" ${MENDER_APT_REPO_URL} ${deb_arch} "${deb_distro}/${deb_codename}/stable" "mender-configure")
elif [ "${MENDER_ADDON_CONFIGURE_VERSION}" = "master" ]; then
deb_name=$(deb_from_repo_dist_get "work/deb-packages" ${MENDER_APT_REPO_URL} ${deb_arch} "${deb_distro}/${deb_codename}/experimental" "mender-configure")
else
DEBIAN_REVISION="-1+${deb_distro}+${deb_codename}"
deb_name=$(deb_from_repo_pool_get "work/deb-packages" ${MENDER_APT_REPO_URL} ${deb_arch} "mender-configure" "${MENDER_ADDON_CONFIGURE_VERSION}${DEBIAN_REVISION}")
fi
deb_extract_package "work/deb-packages/${deb_name}" "work/rootfs/"
fi fi
# Do this unconditionally even if not installing mender-configure. The reason is # Do this unconditionally even if not installing mender-configure. The reason is

39
modules/deb.sh

@ -1,5 +1,5 @@
# #
# Copyright 2020 Northern.tech AS # Copyright 2022 Northern.tech AS
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -14,6 +14,7 @@
# limitations under the License. # limitations under the License.
source modules/log.sh source modules/log.sh
source modules/probe.sh .
# Download of latest deb package for the given distribution of an APT repository # Download of latest deb package for the given distribution of an APT repository
# #
@ -111,3 +112,39 @@ function deb_extract_package() {
log_info "Successfully installed $(basename ${deb_package}) into ${dest_dir}" log_info "Successfully installed $(basename ${deb_package}) into ${dest_dir}"
} }
# Download and install the binary files of a deb package into work/deb-packages
# This is the main entry point of deb.sh
# Defines variable DEB_NAME with the actual filename installed
#
# $1 - Package name
# $2 - Package version
#
function deb_get_and_install_pacakge() {
if [[ $# -ne 2 ]]; then
log_fatal "deb_get_and_install_pacakge() requires 2 arguments"
fi
local package="$1"
local version="$2"
mkdir -p work/deb-packages
local deb_arch=$(probe_debian_arch_name)
local deb_distro=$(probe_debian_distro_name)
local deb_codename=$(probe_debian_distro_codename)
if ! [[ "$MENDER_APT_REPO_DISTS" == *"${deb_distro}/${deb_codename}"* ]]; then
deb_distro="debian"
deb_codename="buster"
fi
DEB_NAME=""
if [ "${version}" = "latest" ]; then
DEB_NAME=$(deb_from_repo_dist_get "work/deb-packages" ${MENDER_APT_REPO_URL} ${deb_arch} "${deb_distro}/${deb_codename}/stable" "${package}")
elif [ "${version}" = "master" ]; then
DEB_NAME=$(deb_from_repo_dist_get "work/deb-packages" ${MENDER_APT_REPO_URL} ${deb_arch} "${deb_distro}/${deb_codename}/experimental" "${package}")
else
local debian_version="-1+${deb_distro}+${deb_codename}"
DEB_NAME=$(deb_from_repo_pool_get "work/deb-packages" ${MENDER_APT_REPO_URL} ${deb_arch} "${package}" "${version}${debian_version}")
fi
deb_extract_package "work/deb-packages/${DEB_NAME}" "work/rootfs/"
}

Loading…
Cancel
Save