[Scons-users] Can't get Delete Action to delete a directory.
William Deegan
bill at baddogconsulting.com
Thu Feb 7 00:36:41 EST 2013
On 02/06/2013 09:02 PM, M Busche wrote:
> Bill,
>
> That didn't seem to help. Same result. Actually I'm now even more
> confused because I don't understand why specifying Dir('$TARGET') as
> the source doesn't produce a complaint about circular dependencies.
>
> Why does my test program work for a file but not for a directory? Why
> are they so different?
Directories (for SCons) by default depend on all their contents. So
that's a non-trivial difference.
>
> No, I don't want Execute as I explain now.
>
> This problem is part of my effort to improve my bundler/packager which
> you (and Gary) have helped me with before: in an earlier posting to
> this group (a week or two ago) you'll note that I was asking how to
> run a Mkdir command without any sources. That now works just fine.
> But to do things right I also need to be able to remove a directory.
>
> The specific scenario is as follows.
>
> 1) I have an empty directory named "out" in my source code directory
> structure that I want to copy to my software distribution directory
> for bundling. (Perhaps it's an output directory for test programs or
> something -- whatever.)
> 2) I run scons and the distribution directory gets created including
> this directory named "out".
> 3) Now I decide I don't like the name "out" and rename it "output" in
> my source code directory tree.
> 4) I run scons again and the new directory "output" gets created, but
> the packager also recognizes that the directory "out" is no longer
> needed and so wants to delete it. I'm trying to issue a command to
> delete this directory. I guess I could use Excute, but this operation
> is REALLY part of the software distribution generation step and
> shouldn't be run until all unit tests have completed. I've got that
> dependency working for everything else by issuing the single directory
> level dependency:
Seems like the best way to avoid this is to clean the packaging
directory and recreated it?
>
> Depends(Dir("dist"), Dir("test"))
>
> Because the Delete target is a directory under "dist", I would expect
> this delete directory request to also be made appropriately contingent
> upon the successful build of all targets under directory "test" by the
> above dependency declaration.
-Bill
>
> I hope that helps.
>
> Matt
>
>
> ------------------------------------------------------------------------
> *From:* William Deegan <bill at baddogconsulting.com>
> *To:* scons-users at scons.org
> *Sent:* Wednesday, February 6, 2013 9:13 PM
> *Subject:* Re: [Scons-users] Can't get Delete Action to delete a
> directory.
>
> Matt,
>
>
> On 02/06/2013 04:13 PM, M Busche wrote:
>> I was still hoping for some help with this.
>>
>> Is my Ubuntu command line capture incomprehensible? The trace below
>> shows how a 2-line SConstruct file will remove a simple file, but not
>> a directory. I don't get it.
>
> Likely the issue is the source you specify for the command.
> It's always up to date, thus:
>
> $ scons -Q tgt=bar
> scons: `.' is up to date.
>
> t = Command(tgt, [], [Delete("$TARGET")])
>
> Perhaps try:
>
> t = Command(tgt,Dir('$TARGET'),[Delete("$TARGET"))
>
> Though this logic is a bit curious, what are you trying to do?
> Perhaps you really want to use Execute()?
>
> -Bill
>
>
>>
>> Thanks for any insight you can offer into this unexpected behavior.
>>
>> Matt
>>
>>
>> ------------------------------------------------------------------------
>> *From:* M Busche <spammymatt94 at yahoo.com> <mailto:spammymatt94 at yahoo.com>
>> *To:* "scons-users at scons.org" <mailto:scons-users at scons.org>
>> <scons-users at scons.org> <mailto:scons-users at scons.org>
>> *Sent:* Friday, February 1, 2013 10:30 PM
>> *Subject:* [Scons-users] Can't get Delete Action to delete a directory.
>>
>> Here's my very simple test:
>>
>> $ ls -a
>> . .. SConstruct
>> $ cat SConstruct
>> tgt = ARGUMENTS.get('tgt', '')
>> t = Command(tgt, [], [Delete("$TARGET")])
>> $ touch foo
>> $ ls -a
>> . .. foo SConstruct
>> $ scons -Q tgt=foo
>> Delete("foo")
>> $ ls -a
>> . .. .sconsign.dblite SConstruct
>> $ mkdir bar
>> $ scons -Q tgt=bar
>> scons: `.' is up to date.
>> $ ls -a
>> . .. bar .sconsign.dblite SConstruct
>> $
>>
>> I must be missing something. Can someone explain why Delete won't
>> delete directory bar when the man page clearly states that the Delete
>> factory works for both files and directory trees?
>>
>> Thanks,
>> Matt
>>
>
>
> _______________________________________________
> Scons-users mailing list
> Scons-users at scons.org <mailto:Scons-users at scons.org>
> http://four.pairlist.net/mailman/listinfo/scons-users
>
>
>
>
> _______________________________________________
> 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/20130206/bd1b8ca4/attachment.htm>
More information about the Scons-users
mailing list