Browse Source

Split deb_from_repo_get into two functions

Making more explicit the two different use cases that the previous
optional arguments were trying to support.

Changelog: None

Signed-off-by: Lluis Campos <lluis.campos@northern.tech>
2.3.x
Lluis Campos 4 years ago
parent
commit
6b66b9c334
  1. 12
      mender-convert-modify
  2. 64
      modules/deb.sh

12
mender-convert-modify

@ -103,12 +103,12 @@ log_info "Installing Mender client and related files"
deb_arch=$(probe_debian_arch_name) deb_arch=$(probe_debian_arch_name)
if [ "${MENDER_CLIENT_VERSION}" = "latest" ]; then if [ "${MENDER_CLIENT_VERSION}" = "latest" ]; then
deb_name=$(deb_from_repo_get "work/deb-packages" ${MENDER_APT_REPO_URL} ${deb_arch} "stable" "mender-client" "latest") deb_name=$(deb_from_repo_dist_get "work/deb-packages" ${MENDER_APT_REPO_URL} ${deb_arch} "stable" "mender-client")
elif [ "${MENDER_CLIENT_VERSION}" = "master" ]; then elif [ "${MENDER_CLIENT_VERSION}" = "master" ]; then
deb_name=$(deb_from_repo_get "work/deb-packages" ${MENDER_APT_REPO_URL} ${deb_arch} "experimental" "mender-client" "latest") deb_name=$(deb_from_repo_dist_get "work/deb-packages" ${MENDER_APT_REPO_URL} ${deb_arch} "experimental" "mender-client")
else else
DEBIAN_REVISION="-1" DEBIAN_REVISION="-1"
deb_name=$(deb_from_repo_get "work/deb-packages" ${MENDER_APT_REPO_URL} ${deb_arch} "experimental" "mender-client" "${MENDER_CLIENT_VERSION}${DEBIAN_REVISION}") deb_name=$(deb_from_repo_pool_get "work/deb-packages" ${MENDER_APT_REPO_URL} ${deb_arch} "mender-client" "${MENDER_CLIENT_VERSION}${DEBIAN_REVISION}")
fi fi
deb_extract_package "work/deb-packages/${deb_name}" "work/rootfs/" deb_extract_package "work/deb-packages/${deb_name}" "work/rootfs/"
@ -123,12 +123,12 @@ if [ "${MENDER_ADDON_SHELL_INSTALL}" = "y" ]; then
log_info "Installing Mender Shell addon" log_info "Installing Mender Shell addon"
if [ "${MENDER_ADDON_SHELL_VERSION}" = "latest" ]; then if [ "${MENDER_ADDON_SHELL_VERSION}" = "latest" ]; then
deb_name=$(deb_from_repo_get "work/deb-packages" ${MENDER_APT_REPO_URL} ${deb_arch} "stable" "mender-shell" "latest") deb_name=$(deb_from_repo_dist_get "work/deb-packages" ${MENDER_APT_REPO_URL} ${deb_arch} "stable" "mender-shell")
elif [ "${MENDER_ADDON_SHELL_VERSION}" = "master" ]; then elif [ "${MENDER_ADDON_SHELL_VERSION}" = "master" ]; then
deb_name=$(deb_from_repo_get "work/deb-packages" ${MENDER_APT_REPO_URL} ${deb_arch} "experimental" "mender-shell" "latest") deb_name=$(deb_from_repo_dist_get "work/deb-packages" ${MENDER_APT_REPO_URL} ${deb_arch} "experimental" "mender-shell")
else else
DEBIAN_REVISION="-1" DEBIAN_REVISION="-1"
deb_name=$(deb_from_repo_get "work/deb-packages" ${MENDER_APT_REPO_URL} ${deb_arch} "experimental" "mender-shell" "${MENDER_ADDON_SHELL_VERSION}${DEBIAN_REVISION}") deb_name=$(deb_from_repo_pool_get "work/deb-packages" ${MENDER_APT_REPO_URL} ${deb_arch} "mender-shell" "${MENDER_ADDON_SHELL_VERSION}${DEBIAN_REVISION}")
fi fi
deb_extract_package "work/deb-packages/${deb_name}" "work/rootfs/" deb_extract_package "work/deb-packages/${deb_name}" "work/rootfs/"

64
modules/deb.sh

@ -15,44 +15,35 @@
source modules/log.sh source modules/log.sh
# Direct download of a deb package from an APT repository # Download of latest deb package for the given distribution of an APT repository
# #
# $1 - Download directory # $1 - Download directory
# $2 - APT repository url # $2 - APT repository url
# $3 - Debian architecture # $3 - Debian architecture
# $4 - Debian Distribution # $4 - Debian Distribution
# $5 - Package name # $5 - Package name
# $6 - Package version (optional, default "latest") # $6 - Component (optional, default "main")
# $7 - Component (optional, default "main")
# #
# @return - Filename of the downloaded package # @return - Filename of the downloaded package
# #
function deb_from_repo_get () { function deb_from_repo_dist_get () {
if [[ $# -lt 5 || $# -gt 7 ]]; then if [[ $# -lt 5 || $# -gt 7 ]]; then
log_fatal "deb_from_repo_get() requires 5 or 6 arguments" log_fatal "deb_from_repo_dist_get() requires 5 arguments"
fi fi
local -r download_dir="${1}" local -r download_dir="${1}"
local -r repo_url="${2}" local -r repo_url="${2}"
local -r architecture="${3}" local -r architecture="${3}"
local -r distribution="${4}" local -r distribution="${4}"
local -r package="${5}" local -r package="${5}"
local -r version="${6:-latest}" local -r component="${6:-main}"
local -r component="${7:-main}"
local deb_package_path="" # Fetch and parse the packages list of the given distribution to find the latest version
if [ "${version}" = "latest" ]; then local -r packages_url="${repo_url}/dists/${distribution}/${component}/binary-${architecture}/Packages"
# If latest, fetch and parse the packages list of the given distribution to find the latest version run_and_log_cmd "wget -Nq ${packages_url} -P /tmp"
local -r packages_url="${repo_url}/dists/${distribution}/${component}/binary-${architecture}/Packages"
run_and_log_cmd "wget -Nq ${packages_url} -P /tmp"
deb_package_path=$(grep Filename /tmp/Packages | grep ${package}_ | grep ${architecture} | tail -n1 | sed 's/Filename: //') local -r deb_package_path=$(grep Filename /tmp/Packages | grep ${package}_ | grep ${architecture} | tail -n1 | sed 's/Filename: //')
if [ -z "${deb_package_path}" ]; then if [ -z "${deb_package_path}" ]; then
log_fatal "Couldn't fine package ${package} in ${packages_url}" log_fatal "Couldn't find package ${package} in ${packages_url}"
fi
else
# Else, try to download the specified version (ignoring distribution)
local -l initial="$(echo $package | head -c 1)"
deb_package_path="pool/${component}/${initial}/${package}/${package}_${version}_${architecture}.deb"
fi fi
local -r filename=$(basename $deb_package_path) local -r filename=$(basename $deb_package_path)
@ -63,6 +54,39 @@ function deb_from_repo_get () {
echo ${filename} echo ${filename}
} }
# Download a deb package direcrly from the pool of an APT repository
#
# $1 - Download directory
# $2 - APT repository url
# $3 - Debian architecture
# $4 - Package name
# $5 - Package version
# $6 - Component (optional, default "main")
#
# @return - Filename of the downloaded package
#
function deb_from_repo_pool_get () {
if [[ $# -ne 5 ]]; then
log_fatal "deb_from_repo_pool_get() requires 5 arguments"
fi
local -r download_dir="${1}"
local -r repo_url="${2}"
local -r architecture="${3}"
local -r package="${4}"
local -r version="${5}"
local -r component="${6:-main}"
local -r initial="$(echo $package | head -c 1)"
local -r deb_package_path="pool/${component}/${initial}/${package}/${package}_${version}_${architecture}.deb"
local -r filename=$(basename $deb_package_path)
run_and_log_cmd "wget -Nq ${repo_url}/${deb_package_path} -P ${download_dir}"
rm -f /tmp/Packages
log_info "Successfully downloaded ${filename}"
echo ${filename}
}
# Extract the binary files of a deb package into a directory # Extract the binary files of a deb package into a directory
# #
# $1 - Deb package # $1 - Deb package

Loading…
Cancel
Save