[Scons-dev] proposed change to _SConscript

Bill Deegan bill at baddogconsulting.com
Mon Jan 28 19:07:25 EST 2019


Do you have a simple sample script (Without parts) to demonstrate glob not
working as you describe?
Seems like if that wasn't working you might've brought it to our attention?
;)

Also simple (non parts) script to demonstrate how you were trying to do
this with sconscript and repository?

On Mon, Jan 28, 2019 at 2:00 PM Jason Kenny <dragon512 at live.com> wrote:

> No,
>
>
>
> I was trying to see if I could achieve this via Repository(), however I
> discovered it failed because Glob() does not seem to work correctly with
> the Repostory() and VariantDir() logic when I recurse search file Files (
> As I do with Pattern() api in Parts… it goes in to a death loop of variant
> directory recursion on itself ☹ ). So instead I am looking having Parts
> detect that a “vcs” object was used and if the checkout directory and the
> .part file directory are different then pass the checkout directory via
> src_dir to the SConscript() call.
>
>
>
> I should note that the _SConscript code still needs a fix to handle more
> than one Repository(). It looks like that a loop has to be added. However
> this seems like a non-trival change.
>
>
>
> Jason
>
>
>
> *From:* Scons-dev <scons-dev-bounces at scons.org> *On Behalf Of *Bill Deegan
> *Sent:* Monday, January 28, 2019 1:03 PM
> *To:* SCons developer list <scons-dev at scons.org>
> *Subject:* Re: [Scons-dev] proposed change to _SConscript
>
>
>
> are you using Repository to achieve this?
>
>
>
> On Mon, Jan 28, 2019 at 11:01 AM Jason Kenny <dragon512 at live.com> wrote:
>
> Hi,
>
>
>
> I would like to make a proposal to for a small change to _SConscript
> function.
>
>
>
> The change is related to code around line 260. ie this section of code:
>
>
>
> try:
>
>                         fs.chdir(ldir, change_os_dir=sconscript_chdir)
>
>                     except OSError:
>
>                         # There was no local directory, so we should be
>
>                         # able to chdir to the Repository directory.
>
>                         # Note that we do this directly, not through
>
>                         # fs.chdir(), because we still need to
>
>                         # interpret the stuff within the SConscript file
>
>                         # relative to where we are logically.
>
>                         fs.chdir(ldir, change_os_dir=0)
>
>
>                         os.chdir(actual.dir.get_abspath())
>
>
>
>
>
> I would like to change the os.chdir(actual.dir.get_abspath()) to
> os.chdir(ldir.srcnode().abspath)
>
>
>
> I believe this code is more correct and solve an issue I would like to
> correct when calling scons on "out of  source" builds.
>
>
>
> What this changes as documented, should be nothing. What it changes/fixes
> is use of the src_dir keyword in the SConscript() call ( which was
> documented a long time ago).
>
>
>
> What this fixes for me is the ability define a build file that is not in a
> source tree, as if it was in the source tree. In the case Parts I can
> define a Parts that would checkout or used some code checked out via
> another means as if the build file was part of the source tree. The value
> of this is:
>
>
>
> 1) may not have the ability to add new builds files to an existing project
>
> 2) may want to show how a new build system ( as Scons) would add value to
> an existing setup, without having to get build files checked in.
>
> 3) want to build an external project as if the build file was part of the
> project.
>
> 4) other logic related to the above...
>
>
>
> This is basically like an CMake external project for me in Parts as I can
> tell Parts to checkout some code and build it via having a Part file that
> can build it directly or via having it call the native build system via
> Command() or some custom builder.
>
>
>
> This line change would allow for build file to pretend that it exists in
> the source location. It would also allow me to define three basic concepts
> in Parts:
>
>
>
> 1) build/Variant directory ( where we do the build actions)
>
> 2) build file/part_dir directory ( ie the directory in which the build
> file exists)
>
> 3) Source/src_dir directory ( ie where the source exists)
>
>
>
> most of this time the src_dir==part_dir except of out of source cases.
>
>
>
> I wanted to ask about this to make sure there is nothing I might be
> missing that would cause concerns
>
>
>
> If this is fine I would like to make a patch for this for Scons ( vs me
> monkey patching it in Parts)
>
>
>
> Jason
>
>
>
> _______________________________________________
> Scons-dev mailing list
> Scons-dev at scons.org
> https://pairlist2.pair.net/mailman/listinfo/scons-dev
> <https://apc01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpairlist2.pair.net%2Fmailman%2Flistinfo%2Fscons-dev&data=02%7C01%7C%7C6b0a5875d5084ea75e3408d68554274d%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636842993811578067&sdata=N1Vvh3n2Vd81F2qLBEIfMgts4VuScR57a8K4zU9Fp8k%3D&reserved=0>
>
> _______________________________________________
> Scons-dev mailing list
> Scons-dev at scons.org
> https://pairlist2.pair.net/mailman/listinfo/scons-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist2.pair.net/pipermail/scons-dev/attachments/20190128/9f252d39/attachment-0001.html>


More information about the Scons-dev mailing list