[Scons-users] Setting environment variables for scons to use globally on my system

Björn Pollex bjoern.pollex at googlemail.com
Thu May 15 09:27:23 EDT 2014


On Thu, May 15, 2014 at 2:23 PM, Benjamin Lindley <benjameslindley at gmail.com

> wrote:



> On 5/15/2014 5:01 AM, Russel Winder wrote:

>

>> On Thu, 2014-05-15 at 04:31 -0500, Benjamin Lindley wrote:

>>

>>> That will probably help, if I can figure out one more thing. This is

>>> more of a Python question though, so sorry if it's off topic (but maybe

>>> there's a scons specific answer). I guess I need to figure out how (if

>>> it's even possible) to change the default arguments to the Environment

>>> constructor. So, for example, if the SConstruct file has this:

>>>

>>> env = Environment()

>>>

>>> I want it to be as if it says this:

>>>

>>> env = Environment(tools = ['mingw'])

>>>

>>> Thanks for the help.

>>>

>> You are probably looking at having a "feature variable". I am not a fan

>> of command line options when working with SCons, so I tend to write in a

>> local.build.scons file (or some such)

>>

>> local.build.scons:

>>

>> tool_chooser = False

>>

>> Then in the SConstruct:

>>

>> tool_chooser = True

>>

>> with open('local.build.scons') as f:

>> exec(f.read().strip())

>>

>>

>>

>> if tool_chooser:

>> env = Environment(tools = ['mingw'])

>> else:

>> env = Environment()

>>

>> then the SConstruct is programmed with the options and a default, and

>> the local file contains the selector that needs to be edited.

>>

>> It's not a great solution, but it works.

>>

>>

> No, that does not solve my problem, unless I can count on everybody

> creating their SConstruct files like that. The point is to have a build

> system where the person writing the build file does not need to have any

> concern about what tool-chain is being used. I will describe a hypothetical

> situation, perhaps that will help.

>

> You create a program, written in portable C++. You use SCons as your build

> system. You successfully compile and run it on your system, let's say you

> use Linux with GCC. But you don't use any specific configurations, just the

> default Environment(). That works fine for you, because GCC is what SCons

> assumes on Linux. You upload the source code, along with the build files

> onto GitHub. I fork the project on my Windows machine. I try to build it,

> and it fails because it assumes, because I'm on Windows, that I want to use

> VC++. But I don't have VC++ installed. I use MinGW. I can fix this problem,

> but I have to modify the SConstruct file, telling it to use MinGW, and also

> telling it the path where my MinGW installation can be found. The project

> is now tailored very specifically to my system setup, oddly containing

> references to paths which are only applicable to my filesystem.

>

> This is all wrong, in my opinion. What I would like to be able to do is

> create SCons projects which contain no references to tool-chains or their

> locations. In my own environment, separate from my projects, I should be

> able to determine things such as which compiler to use for C++, rather than

> having SCons make an assumption for me. The assumptions are fine to be used

> by default, but I should have some way to override them globally, without

> specifying it in every project I make. And then when I download someone

> else's project, as long as it is written in portable C++, I should be able

> to build it right away without making any modifications. Isn't that how a

> cross platform build system is supposed to work?

>

> Well, any globals you create in site_init.py will be available in your

SConstruct. There are variaous ways you could use this to initialize a
portable environment.

Regards,

Björn Pollex


> _______________________________________________

> Scons-users mailing list

> Scons-users at scons.org

> http://four.pairlist.net/mailman/listinfo/scons-users

>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://four.pairlist.net/pipermail/scons-users/attachments/20140515/03d586d8/attachment.html


More information about the Scons-users mailing list