[Scons-users] Provide default Import to SConscript

Hua Yanghao huayanghao at gmail.com
Sat Feb 17 13:45:48 EST 2018


It varies a lot, ranging from 0 (yes, no source files at all) to a few
dozen (didn't really count, see statistics below).

Here is an example Linux kernel driver sub-module Makefile:

linux/drivers/sn/Makefile:
  1 #
  2 # Makefile for the Altix device drivers.
  3 #
  4 #
  5
  6 obj-$(CONFIG_SGI_IOC3) += ioc3.o

I want to replicate this kind of simplicity in scons.

I actually have implemented almost the same thing in scons, but all
those SConscript files have to start with Import("my_func") ... which
is pretty annoying. I know I need it in every single SConscript, and I
have to repeat it ... and this is so anti-pattern.
I have get rid of the Return() part already, but getting rid of the
Import() part seems not that straightforward.

hua at huyangha-mobl:~/git/usw $ find . -iname "SConscript" | wc
    121     121    5953

At the moment the project supports 4 different CPU architectures, a
little less than 1000 C files, 400K+ lines of code.

And this is no small problem (at least for me). If I start working
around it with too much python code, I might end up bypassing a
significant portion of core scons and eventually might find it easier
to just wrap around Makefiles.

Someone thought I was criticizing scons, I actually love scons, but
that doesn't stop me criticizing scons. ;-) Just don't see me as an
enemy I am a serious user of scons since 10 years ago when I was still
in college.

Best Regards,
Yanghao

On Sat, Feb 17, 2018 at 4:46 PM, Bill Deegan <bill at baddogconsulting.com> wrote:
> How many source files per SConscript?
> That's a lot of sconscripts.
> Is this all one project?
> Are all the SConscripts identical?
>
> On Sat, Feb 17, 2018 at 3:05 AM, Hua Yanghao <huayanghao at gmail.com> wrote:
>>
>> Actually I have one and only one import for hundreds of SConscript :)
>>
>> On Sat, Feb 17, 2018 at 01:19 Jonathon Reinhart
>> <jonathon.reinhart at gmail.com> wrote:
>>>
>>> Hua,
>>>
>>> If you are importing lots of variables into SConscripts, then you're
>>> using SCons wrong. Most of your variables should probably be construction
>>> variables (in the environment).
>>>
>>> I've written many, many SConscripts and I've never used more than 3 or 4
>>> Import() statements in a single SConscript. Before you critique a
>>> long-established framework, you might want to consider if you're using it
>>> inappropriately.
>>>
>>> Jonathon
>>>
>>>
>>>
>>> On Fri, Feb 16, 2018 at 6:02 PM, Hua Yanghao <huayanghao at gmail.com>
>>> wrote:
>>>>
>>>> Will do. It is really not good if a particular framework force user to
>>>> create repeated code. In comparison kbuild can easily create a one line make
>>>> file for a module.
>>>>
>>>> I am using localized scons anyway if not accepted will just use it on my
>>>> own.
>>>>
>>>> On Fri, Feb 16, 2018 at 22:46 Bill Deegan <bill at baddogconsulting.com>
>>>> wrote:
>>>>>
>>>>> Feel free to make a pull request, though I can't promise that it will
>>>>> be accepted.
>>>>>
>>>>> Is it really that much of an inconvenience?
>>>>> -Bill
>>>>>
>>>>>
>>>>> On Fri, Feb 16, 2018 at 3:20 PM, Hua Yanghao <huayanghao at gmail.com>
>>>>> wrote:
>>>>>>
>>>>>> Hi Bill,
>>>>>> Do you think if it is useful to add a new keyword for
>>>>>> env.SConscript(default_imports=[xyz,abc,...])?
>>>>>> For return I think I can abuse some global variables. This can really
>>>>>> make the SConscript clean/minimal.
>>>>>>
>>>>>> Best Regards,
>>>>>> Yanghao
>>>>>>
>>>>>> On Fri, Feb 16, 2018 at 9:09 PM, Bill Deegan
>>>>>> <bill at baddogconsulting.com> wrote:
>>>>>> > No, there is no way without hacking the core code.
>>>>>> >
>>>>>> > It is the way it is by design.
>>>>>> >
>>>>>> > -Bill
>>>>>> > SCons Project Co-Manager
>>>>>> >
>>>>>> > On Fri, Feb 16, 2018 at 2:28 PM, Hua Yanghao <huayanghao at gmail.com>
>>>>>> > wrote:
>>>>>> >>
>>>>>> >> Does anyone know in scons there are ways to implicitly make a
>>>>>> >> object
>>>>>> >> (e.g. xyz) available for SConscript without explicity Import(xyz)?
>>>>>> >>
>>>>>> >> Just want to eliminate the annoying repeated Import(xyz) in every
>>>>>> >> single SConscript.
>>>>>> >>
>>>>>> >> And what about implicit Return()? e.g. xyz() returns a list of
>>>>>> >> object,
>>>>>> >> then in every SConscript if the top level SConstruct want to
>>>>>> >> collect
>>>>>> >> the complete list of object returned from every single SConscript.
>>>>>> >>
>>>>>> >> For example:
>>>>>> >> SConscript-1:
>>>>>> >> Import("xyz")
>>>>>> >>
>>>>>> >> ret = xyz(...)
>>>>>> >>
>>>>>> >> Return("ret")
>>>>>> >>
>>>>>> >> Would ideally become:
>>>>>> >> SConscript-2:
>>>>>> >> xyz(...)
>>>>>> >>
>>>>>> >> Thanks,
>>>>>> >> Yanghao
>>>>>> >> _______________________________________________
>>>>>> >> Scons-users mailing list
>>>>>> >> Scons-users at scons.org
>>>>>> >> https://pairlist4.pair.net/mailman/listinfo/scons-users
>>>>>> >
>>>>>> >
>>>>>> >
>>>>>> > _______________________________________________
>>>>>> > Scons-users mailing list
>>>>>> > Scons-users at scons.org
>>>>>> > https://pairlist4.pair.net/mailman/listinfo/scons-users
>>>>>> >
>>>>>> _______________________________________________
>>>>>> Scons-users mailing list
>>>>>> Scons-users at scons.org
>>>>>> https://pairlist4.pair.net/mailman/listinfo/scons-users
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Scons-users mailing list
>>>>> Scons-users at scons.org
>>>>> https://pairlist4.pair.net/mailman/listinfo/scons-users
>>>>
>>>>
>>>> _______________________________________________
>>>> Scons-users mailing list
>>>> Scons-users at scons.org
>>>> https://pairlist4.pair.net/mailman/listinfo/scons-users
>>>>
>>>
>>> _______________________________________________
>>> Scons-users mailing list
>>> Scons-users at scons.org
>>> https://pairlist4.pair.net/mailman/listinfo/scons-users
>>
>>
>> _______________________________________________
>> Scons-users mailing list
>> Scons-users at scons.org
>> https://pairlist4.pair.net/mailman/listinfo/scons-users
>>
>
>
> _______________________________________________
> Scons-users mailing list
> Scons-users at scons.org
> https://pairlist4.pair.net/mailman/listinfo/scons-users
>


More information about the Scons-users mailing list