[Scons-dev] First Pillar of Future SCons Tools
Kenny, Jason L
jason.l.kenny at intel.com
Tue Sep 30 09:32:47 EDT 2014
Thanks
Yes it could be made to read complexly from a data file. There could be value to do that. At the moment I did not want to write a parser to some formatted data when I could say it all in python. I am pretty sure that there are some tweak that need to made. For example allow for the addition of use_env like logic as this is a common case that is needed when adding new toolchains ( tend to happen a lot at work as we get a lot of prototype setup to build under)
Jason
-----Original Message-----
From: Scons-dev [mailto:scons-dev-bounces at scons.org] On Behalf Of anatoly techtonik
Sent: Tuesday, September 30, 2014 7:16 AM
To: SCons developer list
Subject: Re: [Scons-dev] First Pillar of Future SCons Tools
That's a really good starting point. Parts is awesome. Need to merge that part with backward compatibility.
gxx.Register(
# we assume that the system has the correct libraies installed to do a cross build
# or that the user add the extra check for the stuff the need
hosts=[SystemPlatform('posix','x86'),SystemPlatform('posix','x86_64')],
targets=[SystemPlatform('posix','x86'),SystemPlatform('posix','x86_64')],
info=[
GnuInfo(
#standard location, however there might be
# some posix offshoot that might tweak this directory
# so we allow this to be set
install_scanner=[
PathFinder(['/usr/bin'])
],
opt_dirs=[
'/opt/'
],
script=None,
subst_vars={},
shell_vars={'PATH':'${GXX.INSTALL_ROOT}'},
test_file='g++',
opt_pattern='gcc\-?([0-9]+\.[0-9]+\.[0-9]*|[0-9]+\.[0-9]+|[0-9]+)'
)
]
)
Interesting if it is possible to make it completely data oriented, like:
---
- name: gxx
platform:
buildhost: posix 32, posix 64
target: posix 32, posix 64
info:
- type: GnuInfo
search_paths:
- /usr/bin
opt_dirs:
- /opt
test_file: g++
shell_vars:
PATH: '${GXX.INSTALL_ROOT}'
opt_pattern: 'gcc\-?([0-9]+\.[0-9]+\.[0-9]*|[0-9]+\.[0-9]+|[0-9]+)'
On Fri, Sep 26, 2014 at 6:21 PM, Kenny, Jason L <jason.l.kenny at intel.com> wrote:
> I believe this is what I tried to achieve in Parts.
>
> For example look at this file
> http://parts.tigris.org/source/browse/parts/trunk/parts/parts/tools/Gn
> uCommon/gxx.py?view=markup
>
> You see the different version, platforms ( and cross platform support) for g++ on posix, windows, darwin ,solaris and android for x86, x86_64, ia64, phi cards, and some arm cases.
>
> The system decides based on the host and target we are building for in a given environment what set to use to find and configure the env with.
>
> I found this to be a great too way to support different tools as it "easy" for people to see what is going on, and easy to add support for a new version of some tool.
>
> Jason
>
> -----Original Message-----
> From: Scons-dev [mailto:scons-dev-bounces at scons.org] On Behalf Of
> anatoly techtonik
> Sent: Friday, September 26, 2014 8:01 AM
> To: SCons Development
> Subject: [Scons-dev] First Pillar of Future SCons Tools
>
> Hi,
>
> While patching Ansible stat module, the idea stormed me.
>
> The information that SCons collects about Tool should be passed declarative and static.
>
> There are some more sparks that feature-creep over it.
>
> Tool info should be declarative for better user experience while debugging and writing.
> Tool info should be static data.
> SCons itself decides how to combine tools based on static data that tool provides.
>
> Right now Tools `monkeypatch` SCons Environment dynamically, that's why it is SO HARD to understand what tool really provides. This in turn makes it REALLY HARD to study all tools to see common patterns.
> This in turn makes it ALMOST IMPOSSIBLE to squeeze all tools into mind
> to derive common abstract model for them without loosing possible (and
> crucial) details. And without abstract model we can not effectively communicate practical models and exchange ideas. The basic model for a tool should be static - what tool provides, if it exists or not.
>
> If Tool needs to hack SCons deeper, it should be done in a separate method.
> Monkeypatching of anything in SCons should be totally visible and accessible if needed.
> SCons level of application objects should be separated on the next level over Python objects.
>
> Better stop now. Hopefully at least the first part is clear. In summary - tool info should be readable as YAML.
> --
> anatoly t.
> _______________________________________________
> Scons-dev mailing list
> Scons-dev at scons.org
> https://pairlist2.pair.net/mailman/listinfo/scons-dev
> _______________________________________________
> Scons-dev mailing list
> Scons-dev at scons.org
> https://pairlist2.pair.net/mailman/listinfo/scons-dev
--
anatoly t.
_______________________________________________
Scons-dev mailing list
Scons-dev at scons.org
https://pairlist2.pair.net/mailman/listinfo/scons-dev
More information about the Scons-dev
mailing list