package: consolidate get_packages logic

Refactor get_package logic.
With this refactoring, code like
"if is_ubuntu; then install_package xxx elif is_fedora..."
can be simplified later.

Change-Id: I489bfd4cc12cc6b0b8201837f2bfb78c6881c82c
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
This commit is contained in:
Isaku Yamahata 2013-02-12 22:30:56 +09:00
parent 555ecd07b0
commit 8c43809ef6
3 changed files with 20 additions and 26 deletions

View File

@ -117,20 +117,32 @@ function get_field() {
} }
function _get_package_dir() {
local pkg_dir
if is_ubuntu; then
pkg_dir=$FILES/apts
elif is_fedora; then
pkg_dir=$FILES/rpms
elif is_suse; then
pkg_dir=$FILES/rpms-suse
else
exit_distro_not_supported "list of packages"
fi
echo "$pkg_dir"
}
# get_packages() collects a list of package names of any type from the # get_packages() collects a list of package names of any type from the
# prerequisite files in ``files/{apts|rpms}``. The list is intended # prerequisite files in ``files/{apts|rpms}``. The list is intended
# to be passed to a package installer such as apt or yum. # to be passed to a package installer such as apt or yum.
# #
# Only packages required for the services in ``ENABLED_SERVICES`` will be # Only packages required for the services in 1st argument will be
# included. Two bits of metadata are recognized in the prerequisite files: # included. Two bits of metadata are recognized in the prerequisite files:
# - ``# NOPRIME`` defers installation to be performed later in stack.sh # - ``# NOPRIME`` defers installation to be performed later in stack.sh
# - ``# dist:DISTRO`` or ``dist:DISTRO1,DISTRO2`` limits the selection # - ``# dist:DISTRO`` or ``dist:DISTRO1,DISTRO2`` limits the selection
# of the package to the distros listed. The distro names are case insensitive. # of the package to the distros listed. The distro names are case insensitive.
#
# Uses globals ``ENABLED_SERVICES``
# get_packages dir
function get_packages() { function get_packages() {
local package_dir=$1 local services=$1
local package_dir=$(_get_package_dir)
local file_to_parse local file_to_parse
local service local service
@ -141,7 +153,7 @@ function get_packages() {
if [[ -z "$DISTRO" ]]; then if [[ -z "$DISTRO" ]]; then
GetDistro GetDistro
fi fi
for service in general ${ENABLED_SERVICES//,/ }; do for service in general ${services//,/ }; do
# Allow individual services to specify dependencies # Allow individual services to specify dependencies
if [[ -e ${package_dir}/${service} ]]; then if [[ -e ${package_dir}/${service} ]]; then
file_to_parse="${file_to_parse} $service" file_to_parse="${file_to_parse} $service"

View File

@ -88,17 +88,7 @@ done
# - We are going to check packages only for the services needed. # - We are going to check packages only for the services needed.
# - We are parsing the packages files and detecting metadatas. # - We are parsing the packages files and detecting metadatas.
if is_ubuntu; then for p in $(get_packages $ENABLED_SERVICES); do
PKG_DIR=$FILES/apts
elif is_fedora; then
PKG_DIR=$FILES/rpms
elif is_suse; then
PKG_DIR=$FILES/rpms-suse
else
exit_distro_not_supported "list of packages"
fi
for p in $(get_packages $PKG_DIR); do
if [[ "$os_PACKAGE" = "deb" ]]; then if [[ "$os_PACKAGE" = "deb" ]]; then
ver=$(dpkg -s $p 2>/dev/null | grep '^Version: ' | cut -d' ' -f2) ver=$(dpkg -s $p 2>/dev/null | grep '^Version: ' | cut -d' ' -f2)
elif [[ "$os_PACKAGE" = "rpm" ]]; then elif [[ "$os_PACKAGE" = "rpm" ]]; then

View File

@ -54,15 +54,7 @@ export_proxy_variables
# ================ # ================
# Install package requirements # Install package requirements
if is_ubuntu; then install_package $(get_packages $ENABLED_SERVICES)
install_package $(get_packages $FILES/apts)
elif is_fedora; then
install_package $(get_packages $FILES/rpms)
elif is_suse; then
install_package $(get_packages $FILES/rpms-suse)
else
exit_distro_not_supported "list of packages"
fi
if [[ -n "$SYSLOG" && "$SYSLOG" != "False" ]]; then if [[ -n "$SYSLOG" && "$SYSLOG" != "False" ]]; then
if is_ubuntu || is_fedora; then if is_ubuntu || is_fedora; then