diff --git a/Pmodules/libpbuild.bash b/Pmodules/libpbuild.bash index 4149896..8d74950 100644 --- a/Pmodules/libpbuild.bash +++ b/Pmodules/libpbuild.bash @@ -563,9 +563,11 @@ pbuild::post_configure() { : } pbuild::configure() { + local -- src_dir="${SRC_DIR}" + [[ -n "${ModuleConfig['src_dir']}" ]] && src_dir+="/${ModuleConfig['src_dir']}" case "${configure_with}" in autotools ) - if [[ ! -r "${SRC_DIR}/configure" ]]; then + if [[ ! -r "${src_dir}/configure" ]]; then std::die 3 \ "%s " "${module_name}/${module_version}:" \ "${FUNCNAME[0]}:" \ @@ -573,7 +575,7 @@ pbuild::configure() { fi ;; cmake ) - if [[ ! -r "${SRC_DIR}/CMakeLists.txt" ]]; then + if [[ ! -r "${src_dir}/CMakeLists.txt" ]]; then std::die 3 \ "%s " "${module_name}/${module_version}:" \ "${FUNCNAME[0]}:" \ @@ -586,24 +588,24 @@ pbuild::configure() { for arg in "${CONFIGURE_ARGS[@]}"; do config_args+=( "$(envsubst <<<"${arg}")" ) done - if [[ -r "${SRC_DIR}/configure" ]] && \ + if [[ -r "${src_dir}/configure" ]] && \ [[ "${configure_with}" == 'auto' ]] || \ [[ "${configure_with}" == 'autotools' ]]; then - std::info "%s " "${SRC_DIR}/configure --prefix=${PREFIX} ${config_args[@]}" - "${SRC_DIR}/configure" \ + std::info "%s " "${src_dir}/configure --prefix=${PREFIX} ${config_args[@]}" + "${src_dir}/configure" \ --prefix="${PREFIX}" \ "${config_args[@]}" || \ std::die 3 \ "%s " "${module_name}/${module_version}:" \ "configure failed" - elif [[ -r "${SRC_DIR}/CMakeLists.txt" ]] && \ + elif [[ -r "${src_dir}/CMakeLists.txt" ]] && \ [[ "${configure_with}" == 'auto' ]] || \ [[ "${configure_with}" == "cmake" ]]; then # note: in most/many cases a cmake module is used! cmake \ -DCMAKE_INSTALL_PREFIX="${PREFIX}" \ "${config_args[@]}" \ - "${SRC_DIR}" || \ + "${src_dir}" || \ std::die 3 \ "%s " "${module_name}/${module_version}:" \ "cmake failed" diff --git a/Pmodules/modbuild.in b/Pmodules/modbuild.in index 2d5e27d..614237b 100644 --- a/Pmodules/modbuild.in +++ b/Pmodules/modbuild.in @@ -487,6 +487,7 @@ declare -A Yaml_default_config=( ['relstage']='unstable' # !!str ['runtime_deps']='' # !!seq of strings ['script']='build' # !!str + ['src_dir']='' # !!str ['sub_packages']='' # !!map ['suffix']='' # !!str ['systems']='' # !!seq of strings @@ -716,7 +717,7 @@ build_modules_yaml_v1(){ ;; esac ;; - default_variant | download_dir | group | modulefile | overlay | script | suffix ) + default_variant | download_dir | group | modulefile | overlay | script | src_dir | suffix ) yml::get_value \ value \ yaml_input \