mirror of
https://github.com/Pmodules/Pmodules.git
synced 2026-06-28 02:19:39 +02:00
modbuild: better support for build modules in overlays
A new configuration file has been added to map human readable overlay
names to the corresponding directory. The overlay can be specified
with the --overlay option. The passed string can be either a name or a
directory. If a name is passed, this name must map to directory in the
configuration file ${PMODULES_ROOT}/config/overlays.conf. The name is
also used as to select the variant files 'files/variants.name'. The
selection of variant files can be overriden with the --system
option.
This commit is contained in:
@@ -764,12 +764,12 @@ pbuild::make_all() {
|
||||
fi
|
||||
|
||||
modulefile_dir=$(join_by '/' \
|
||||
"${overlay}/${GROUP}/${PMODULES_MODULEFILES_DIR}" \
|
||||
"${overlay_dir}/${GROUP}/${PMODULES_MODULEFILES_DIR}" \
|
||||
"${names[@]}" \
|
||||
"${module_name}")
|
||||
modulefile_name="${modulefile_dir}/${module_version}"
|
||||
|
||||
PREFIX="${overlay}/${GROUP}/${module_name}/${module_version}"
|
||||
PREFIX="${overlay_dir}/${GROUP}/${module_name}/${module_version}"
|
||||
local -i i=0
|
||||
for ((i=${#names[@]}-1; i >= 0; i--)); do
|
||||
PREFIX+="/${names[i]}"
|
||||
@@ -1479,7 +1479,7 @@ pbuild.bootstrap() {
|
||||
|
||||
MODULECMD=$(which true)
|
||||
GROUP='Tools'
|
||||
PREFIX="${overlay}/${GROUP}/Pmodules/${PMODULES_VERSION}"
|
||||
PREFIX="${overlay_dir}/${GROUP}/Pmodules/${PMODULES_VERSION}"
|
||||
|
||||
C_INCLUDE_PATH="${PREFIX}/include"
|
||||
CPLUS_INCLUDE_PATH="${PREFIX}/include"
|
||||
|
||||
+54
-8
@@ -154,7 +154,7 @@ declare opt_verbose='no'
|
||||
# array collecting all modules specified on the command line via '--with=module'
|
||||
declare -a opt_with_modules=()
|
||||
|
||||
declare overlay=''
|
||||
declare opt_overlay_name_or_dir=''
|
||||
|
||||
|
||||
parse_args() {
|
||||
@@ -259,10 +259,10 @@ parse_args() {
|
||||
opt_update_modulefiles='yes'
|
||||
;;
|
||||
--overlay )
|
||||
overlay=$2
|
||||
opt_overlay_name_or_dir=$2
|
||||
;;
|
||||
--overlay=* )
|
||||
overlay=${1/*=}
|
||||
opt_overlay_name_or_dir=${1/*=}
|
||||
;;
|
||||
-- )
|
||||
:
|
||||
@@ -366,7 +366,6 @@ build_modules() {
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
local variants=()
|
||||
local variants_files=()
|
||||
for f in "${files[@]}"; do
|
||||
@@ -408,15 +407,64 @@ build_modules() {
|
||||
done
|
||||
}
|
||||
|
||||
declare -r OVERLAY_CONF="${PMODULES_ROOT}/${PMODULES_CONFIG_DIR}/overlays.conf"
|
||||
|
||||
get_overlay_name_and_dir() {
|
||||
local "$1"
|
||||
local "$2"
|
||||
if [[ -r "${OVERLAY_CONF}" ]]; then
|
||||
local toks=()
|
||||
while read -a toks; do
|
||||
if [[ ${toks[0]} == $3 ]] || [[ ${toks[1]} == $3 ]]; then
|
||||
std::upvar $1 "${toks[0]}"
|
||||
std::upvar $2 "${toks[1]}"
|
||||
return 0
|
||||
fi
|
||||
done < "${OVERLAY_CONF}"
|
||||
fi
|
||||
return 1
|
||||
}
|
||||
|
||||
#.............................................................................
|
||||
# main
|
||||
|
||||
parse_args "$@"
|
||||
|
||||
if [[ -z "${opt_system}" ]]; then
|
||||
opt_system=$(std::get_os_release)
|
||||
#
|
||||
# --overlay=name
|
||||
# lookup overlay directory, system name equivalent to overlay name
|
||||
# --overlay=name --system=sysname
|
||||
# lookup name, use given system name
|
||||
# --overlay=dir
|
||||
# use given overlay dir and default system name
|
||||
# --system=name
|
||||
# lookup name, set overlay_dir of found confi
|
||||
declare overlay_name=''
|
||||
declare overlay_dir=''
|
||||
if [[ -n "${opt_overlay_name_or_dir}" ]]; then
|
||||
if ! get_overlay_name_and_dir overlay_name overlay_dir "${opt_overlay_name_or_dir}"; then
|
||||
# not found in config
|
||||
if [[ ${opt_overlay_name_or_dir:0:1} == / ]]; then
|
||||
overlay_dir="${opt_overlay_name_or_dir}"
|
||||
else
|
||||
std::die 1 "Invalid overlay name -- ${opt_overlay_name_or_dir}"
|
||||
fi
|
||||
fi
|
||||
if [[ -z "${opt_system}" ]] && [[ -n "${overlay_name}" ]]; then
|
||||
opt_system="${overlay_name}"
|
||||
fi
|
||||
elif [[ -n "${opt_system}" ]]; then
|
||||
get_overlay_name_and_dir overlay_name overlay_dir "${opt_system}" || :
|
||||
fi
|
||||
|
||||
[[ -z "${overlay_name}" ]] && overlay_name='unknown'
|
||||
[[ -z "${overlay_dir}" ]] && overlay_dir="${PMODULES_ROOT}"
|
||||
[[ -z "${opt_system}" ]] && opt_system=$(std::get_os_release)
|
||||
|
||||
echo overlay_name=$overlay_name
|
||||
echo overlay_dir=$overlay_dir
|
||||
echo opt_system=$opt_system
|
||||
|
||||
pbuild.jobs "${opt_jobs}"
|
||||
pbuild.force_rebuild "${opt_force_rebuild}"
|
||||
pbuild.build_target "${opt_build_target}"
|
||||
@@ -441,8 +489,6 @@ fi
|
||||
source "${opt_build_config}" || \
|
||||
std::die 3 "Oops: Cannot source configuration file -- '$_'"
|
||||
|
||||
[[ -z "${overlay}" ]] && overlay=${PMODULES_ROOT}
|
||||
|
||||
# :FIXME: should go dist files to
|
||||
# ${PMODULES_ROOT}/var/distfiles
|
||||
# or
|
||||
|
||||
Reference in New Issue
Block a user