On Sat, Oct 26, 2019 at 01:09:28AM +0200, Ladislav Michl wrote:
> On Fri, Oct 25, 2019 at 09:55:59AM +0200, Michael Olbrich wrote:
> > > 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.
>
> See quick attempt bellow. Problem with SCons is that install stage
> has to be called with exactly the same env as build stage, otherwise
> package is rebuild. Alternatively we can leave everything to install
> stage.
This looks good. Or maybe just drop pkg_install_env. It's deprecated
anyways do no need to use it for a new conf tool.
<PKG>_MAKE_ENV was introduced exactly to share the same environment for
compile and install.
Michael
> From: Ladislav Michl <[email protected]>
> Subject: [PATCH 1/2] add scons conf tool
>
> 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 | 7 ++++++-
> scripts/lib/ptxd_make_world_compile.sh | 8 ++++++++
> scripts/lib/ptxd_make_world_install.sh | 11 +++++++++++
> scripts/lib/ptxd_make_world_prepare.sh | 7 ++++++-
> 4 files changed, 31 insertions(+), 2 deletions(-)
>
> diff --git a/scripts/lib/ptxd_make_world_common.sh
> b/scripts/lib/ptxd_make_world_common.sh
> index dc601cc05..c277304c7 100644
> --- a/scripts/lib/ptxd_make_world_common.sh
> +++ b/scripts/lib/ptxd_make_world_common.sh
> @@ -319,6 +319,11 @@ ptxd_make_world_init() {
> pkg_make_env="${pkg_conf_env:-${!env_ptr}}"
> pkg_make_opt="${pkg_make_opt:-build}"
> ;;
> + scons)
> + local env_ptr="ptx_conf_env_${pkg_type}"
> + pkg_make_env="${pkg_conf_env:-${!env_ptr}}"
> + pkg_make_opt="${pkg_conf_opt}"
> + ;;
> meson)
> local
> conf_opt_ptr="ptx_conf_opt_${pkg_conf_tool}_${pkg_type}${conf_opt_ext}"
> local conf_env_ptr="ptx_conf_env_${pkg_conf_tool}_${pkg_type}"
> @@ -428,7 +433,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..f55786fb6 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_make_env}" \
> + scons -C "${pkg_build_dir}" \
> + "${pkg_make_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..1d9f08782 100644
> --- a/scripts/lib/ptxd_make_world_install.sh
> +++ b/scripts/lib/ptxd_make_world_install.sh
> @@ -98,6 +98,17 @@ ptxd_make_world_install() {
> -j1 \
> )
> ;;
> + scons)
> + cmd=( \
> + "${pkg_path}" \
> + "${pkg_env}" \
> + "${pkg_make_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]