On Fri, Oct 25, 2019 at 09:34:26AM +0200, Ladislav Michl wrote:
> SCons is a tool of constant reconfiguration. Almost each call
> means performing the configure tests, therefore it does not fit
> into PTXDist stages too well. Thus configuration and building
> is done in compile stage, while install stage is using
> --config=cache in hope it will not rebuild everything.
> Also note that SCons does not enforce any standard targets nor
> variable names, athough most projects seems to support DESTDIR
> environment variable and install target.
>
> Signed-off-by: Ladislav Michl <[email protected]>
> ---
> scripts/lib/ptxd_make_world_common.sh | 4 ++--
> scripts/lib/ptxd_make_world_compile.sh | 8 ++++++++
> scripts/lib/ptxd_make_world_install.sh | 10 ++++++++++
> scripts/lib/ptxd_make_world_prepare.sh | 7 ++++++-
> 4 files changed, 26 insertions(+), 3 deletions(-)
>
> diff --git a/scripts/lib/ptxd_make_world_common.sh
> b/scripts/lib/ptxd_make_world_common.sh
> index dc601cc05..a759739b8 100644
> --- a/scripts/lib/ptxd_make_world_common.sh
> +++ b/scripts/lib/ptxd_make_world_common.sh
> @@ -298,7 +298,7 @@ ptxd_make_world_init() {
> fi
>
> case "${pkg_conf_tool}" in
> - autoconf|cmake|qmake|kconfig|perl)
> + autoconf|cmake|qmake|kconfig|perl|scons)
> local
> conf_opt_ptr="ptx_conf_opt_${pkg_conf_tool}_${pkg_type}${conf_opt_ext}"
> local conf_env_ptr="ptx_conf_env_${pkg_type}"
>
> @@ -428,7 +428,7 @@ ptxd_make_world_init() {
> python*)
> pkg_install_opt="${pkg_install_opt} --root=${pkg_pkg_dir}"
> ;;
> - ninja)
> + ninja|scons)
> pkg_env="DESTDIR=\"${pkg_pkg_dir}\" ${pkg_env}"
> ;;
> *)
> diff --git a/scripts/lib/ptxd_make_world_compile.sh
> b/scripts/lib/ptxd_make_world_compile.sh
> index c7093250d..5da79cace 100644
> --- a/scripts/lib/ptxd_make_world_compile.sh
> +++ b/scripts/lib/ptxd_make_world_compile.sh
> @@ -37,6 +37,14 @@ ptxd_make_world_compile() {
> "${pkg_make_opt}" \
> "${pkg_make_par}"
> ;;
> + scons)
> + ptxd_eval \
> + "${pkg_path}" \
> + "${pkg_env}" \
> + "${pkg_conf_env}" \
No, don't use pkg_conf_env here. Take a look at what python is doing in
ptxd_make_world_init()
Otherwise, setting <PKG>_MAKE_ENV in the package has no Effekt.
Michael
> + scons -C "${pkg_build_dir}" \
> + "${pkg_conf_opt}"
> + ;;
> *)
> ptxd_eval \
> "${pkg_path}" \
> diff --git a/scripts/lib/ptxd_make_world_install.sh
> b/scripts/lib/ptxd_make_world_install.sh
> index ba8e2058e..9e5572bc2 100644
> --- a/scripts/lib/ptxd_make_world_install.sh
> +++ b/scripts/lib/ptxd_make_world_install.sh
> @@ -98,6 +98,16 @@ ptxd_make_world_install() {
> -j1 \
> )
> ;;
> + scons)
> + cmd=( \
> + "${pkg_path}" \
> + "${pkg_env}" \
> + "${pkg_install_env}" \
> + scons --config=cache \
> + -C "${pkg_build_dir}"
> + "${pkg_install_opt}"
> + )
> + ;;
> *)
> cmd=( \
> "${pkg_path}" \
> diff --git a/scripts/lib/ptxd_make_world_prepare.sh
> b/scripts/lib/ptxd_make_world_prepare.sh
> index e21a85b0e..38e7f1051 100644
> --- a/scripts/lib/ptxd_make_world_prepare.sh
> +++ b/scripts/lib/ptxd_make_world_prepare.sh
> @@ -204,13 +204,18 @@ ptxd_make_world_prepare() {
> ptxd_bailout "'${pkg_label}' uses '${pkg_conf_tool}' but does
> not select any python"
> fi
> ;;
> + scons)
> + if ! [[ "${pkg_build_deps}" =~ "host-python-${pkg_conf_tool}" ]];
> then
> + ptxd_bailout "'${pkg_label}' uses '${pkg_conf_tool}' but does
> not select 'host-python-${pkg_conf_tool}'"
> + fi
> + ;;
> esac
>
> case "${pkg_conf_tool}" in
> autoconf|cmake|qmake|kconfig|perl|meson)
> cd -- "${pkg_build_dir}" &&
> ptxd_make_world_prepare_"${pkg_conf_tool}" ;;
> - python|python3)
> + python|python3|scons)
> : ;; # nothing to do
> "NO") echo "prepare stage disabled." ;;
> "") echo "No prepare tool found. Do nothing." ;;
> --
> 2.24.0.rc0
>
>
> _______________________________________________
> ptxdist mailing list
> [email protected]
>
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
_______________________________________________
ptxdist mailing list
[email protected]